in FBDeviceControl/Management/FBAMRestorableDeviceManager.m [38:64]
static void FB_AMRestorableDeviceListenerCallback(AMRestorableDeviceRef device, AMRestorableDeviceNotificationType status, void *context)
{
FBAMRestorableDeviceManager *manager = (__bridge FBAMRestorableDeviceManager *)context;
id<FBControlCoreLogger> logger = manager.logger;
AMRestorableDeviceState deviceState = manager.calls.RestorableDeviceGetState(device);
FBiOSTargetState targetState = [FBAMRestorableDevice targetStateForDeviceState:deviceState];
NSString *identifier = [@(manager.calls.RestorableDeviceGetECID(device)) stringValue];
[logger logFormat:@"%@ %@ in state %@", device, NotificationTypeToString(status), FBiOSTargetStateStringFromState(targetState)];
if (manager.ecidFilter && ![identifier isEqualToString:manager.ecidFilter]) {
[logger logFormat:@"Ignoring %@ as it does not match filter of %@", device, manager.ecidFilter];
return;
}
switch (status) {
case AMRestorableDeviceNotificationTypeConnected: {
NSDictionary<NSString *, id> *info = [manager infoForRestorableDevice:device];
[logger logFormat:@"Caching restorable device values %@", info];
[manager deviceConnected:device identifier:identifier info:info];
return;
}
case AMRestorableDeviceNotificationTypeDisconnected:
[manager deviceDisconnected:device identifier:identifier];
return;
default:
[logger logFormat:@"Unknown Restorable Notification %d", status];
return;
}
}