diff --git a/src/darwin/Framework/CHIP/CHIPDeviceController.h b/src/darwin/Framework/CHIP/CHIPDeviceController.h index 88fe674663030a..bd239b55de7cd8 100644 --- a/src/darwin/Framework/CHIP/CHIPDeviceController.h +++ b/src/darwin/Framework/CHIP/CHIPDeviceController.h @@ -56,6 +56,7 @@ typedef void (^CHIPDeviceConnectionCallback)(CHIPDevice * _Nullable device, NSEr - (void)updateDevice:(uint64_t)deviceID fabricId:(uint64_t)fabricId; - (BOOL)isDevicePaired:(uint64_t)deviceID error:(NSError * __autoreleasing *)error; +- (nullable CHIPDevice *)getDeviceBeingCommissioned:(uint64_t)deviceId error:(NSError * __autoreleasing *)error; - (BOOL)getConnectedDevice:(uint64_t)deviceID queue:(dispatch_queue_t)queue completionHandler:(CHIPDeviceConnectionCallback)completionHandler; diff --git a/src/darwin/Framework/CHIP/CHIPDeviceController.mm b/src/darwin/Framework/CHIP/CHIPDeviceController.mm index 1986c664cdbcda..7b3a14afcb55e4 100644 --- a/src/darwin/Framework/CHIP/CHIPDeviceController.mm +++ b/src/darwin/Framework/CHIP/CHIPDeviceController.mm @@ -405,6 +405,25 @@ - (BOOL)isDevicePaired:(uint64_t)deviceID error:(NSError * __autoreleasing *)err return paired; } +- (CHIPDevice *)getDeviceBeingCommissioned:(uint64_t)deviceId error:(NSError * __autoreleasing *)error +{ + CHIP_ERROR errorCode = CHIP_ERROR_INCORRECT_STATE; + if (![self isRunning]) { + [self checkForError:errorCode logMsg:kErrorNotRunning error:error]; + return nil; + } + + chip::CommissioneeDeviceProxy * deviceProxy; + errorCode = self->_cppCommissioner->GetDeviceBeingCommissioned(deviceId, &deviceProxy); + if (errorCode != CHIP_NO_ERROR) { + if (error) { + *error = [CHIPError errorForCHIPErrorCode:errorCode]; + } + return nil; + } + return [[CHIPDevice alloc] initWithDevice:deviceProxy]; +} + - (BOOL)getConnectedDevice:(uint64_t)deviceID queue:(dispatch_queue_t)queue completionHandler:(CHIPDeviceConnectionCallback)completionHandler