diff --git a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm index c29931fd34703f..1aa037e9769efe 100644 --- a/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm +++ b/src/darwin/Framework/CHIP/MTRDevice_Concrete.mm @@ -3759,11 +3759,19 @@ - (void)downloadLogOfType:(MTRDiagnosticLogType)type queue:(dispatch_queue_t)queue completion:(void (^)(NSURL * _Nullable url, NSError * _Nullable error))completion { + MTR_LOG("%@ downloadLogOfType: %lu, timeout: %f", self, static_cast(type), timeout); + auto * baseDevice = [self newBaseDevice]; + + mtr_weakify(self); [baseDevice downloadLogOfType:type timeout:timeout queue:queue - completion:completion]; + completion:^(NSURL * _Nullable url, NSError * _Nullable error) { + mtr_strongify(self); + MTR_LOG("%@ downloadLogOfType %lu completed: %@", self, static_cast(type), error); + completion(url, error); + }]; } #pragma mark - Cache management diff --git a/src/darwin/Framework/CHIP/MTRDiagnosticLogsDownloader.mm b/src/darwin/Framework/CHIP/MTRDiagnosticLogsDownloader.mm index a66bae8ede42e5..270ecd830ade02 100644 --- a/src/darwin/Framework/CHIP/MTRDiagnosticLogsDownloader.mm +++ b/src/darwin/Framework/CHIP/MTRDiagnosticLogsDownloader.mm @@ -23,6 +23,7 @@ #include #include +#import "MTRDeviceControllerFactory_Internal.h" #import "MTRDeviceController_Internal.h" #import "MTRError_Internal.h" #import "MTRLogging_Internal.h" @@ -260,6 +261,7 @@ - (BOOL)matches:(NSString *)fileDesignator - (void)failure:(NSError * _Nullable)error { + MTR_LOG("%@ Diagnostic log transfer failure: %@", self, error); _finalize(error); } @@ -461,6 +463,9 @@ - (void)downloadLogFromNodeWithID:(NSNumber *)nodeID auto err = _bridge->StartBDXTransferTimeout(download, timeoutInSeconds); VerifyOrReturn(CHIP_NO_ERROR == err, [download failure:[MTRError errorForCHIPErrorCode:err]]); } + + MTR_LOG("%@ Started log download attempt for node %016llX-%016llX (%llu)", download, + controller.compressedFabricID.unsignedLongLongValue, nodeID.unsignedLongLongValue, nodeID.unsignedLongLongValue); } - (void)abortDownloadsForController:(MTRDeviceController_Concrete *)controller; @@ -477,9 +482,15 @@ - (void)handleBDXTransferSessionBeginForFileDesignator:(NSString *)fileDesignato abortHandler:(AbortHandler)abortHandler; { assertChipStackLockedByCurrentThread(); - MTR_LOG("BDX Transfer Session Begin for log download: %@", fileDesignator); auto * download = [_downloads get:fileDesignator fabricIndex:fabricIndex nodeID:nodeID]; + + auto * controller = [[MTRDeviceControllerFactory sharedInstance] runningControllerForFabricIndex:fabricIndex.unsignedCharValue]; + + MTR_LOG("%@ BDX Transfer Session Begin for log download: %016llX-%016llX (%llu), %@", download, + controller.compressedFabricID.unsignedLongLongValue, nodeID.unsignedLongLongValue, nodeID.unsignedLongLongValue, + fileDesignator); + VerifyOrReturn(nil != download, completion([MTRError errorForCHIPErrorCode:CHIP_ERROR_NOT_FOUND])); download.abortHandler = abortHandler; @@ -493,9 +504,15 @@ - (void)handleBDXTransferSessionDataForFileDesignator:(NSString *)fileDesignator completion:(MTRStatusCompletion)completion { assertChipStackLockedByCurrentThread(); - MTR_LOG("BDX Transfer Session Data for log download: %@: %@", fileDesignator, data); auto * download = [_downloads get:fileDesignator fabricIndex:fabricIndex nodeID:nodeID]; + + auto * controller = [[MTRDeviceControllerFactory sharedInstance] runningControllerForFabricIndex:fabricIndex.unsignedCharValue]; + + MTR_LOG("%@ BDX Transfer Session Data for log download: %016llX-%016llX (%llu), %@: %@", download, + controller.compressedFabricID.unsignedLongLongValue, nodeID.unsignedLongLongValue, nodeID.unsignedLongLongValue, + fileDesignator, data); + VerifyOrReturn(nil != download, completion([MTRError errorForCHIPErrorCode:CHIP_ERROR_NOT_FOUND])); NSError * error = nil; @@ -511,9 +528,15 @@ - (void)handleBDXTransferSessionEndForFileDesignator:(NSString *)fileDesignator error:(NSError * _Nullable)error { assertChipStackLockedByCurrentThread(); - MTR_LOG("BDX Transfer Session End for log download: %@: %@", fileDesignator, error); auto * download = [_downloads get:fileDesignator fabricIndex:fabricIndex nodeID:nodeID]; + + auto * controller = [[MTRDeviceControllerFactory sharedInstance] runningControllerForFabricIndex:fabricIndex.unsignedCharValue]; + + MTR_LOG("%@ BDX Transfer Session End for log download: %016llX-%016llX (%llu), %@: %@", download, + controller.compressedFabricID.unsignedLongLongValue, nodeID.unsignedLongLongValue, nodeID.unsignedLongLongValue, + fileDesignator, error); + VerifyOrReturn(nil != download); VerifyOrReturn(nil == error, [download failure:error]); @@ -641,6 +664,12 @@ - (void)handleBDXTransferSessionEndForFileDesignator:(NSString *)fileDesignator auto * download = (__bridge MTRDownload *) context; VerifyOrReturn(nil != download); + auto * controller = [[MTRDeviceControllerFactory sharedInstance] runningControllerForFabricIndex:download.fabricIndex.unsignedCharValue]; + + MTR_LOG("%@ Diagnostic log transfer timed out for %016llX-%016llX (%llu), abortHandler: %@", download, + controller.compressedFabricID.unsignedLongLongValue, download.nodeID.unsignedLongLongValue, + download.nodeID.unsignedLongLongValue, download.abortHandler); + // If there is no abortHandler, it means that the BDX transfer has not started. // When a BDX transfer has started we need to abort the transfer and we would error out // at next poll. We would end up calling OnTransferEnd and eventually [download failure:error].