void EnableExtendedLogging(SDMMD_AMDeviceRef device) { sdmmd_return_t result = SDMMD_AMDeviceConnect(device); if (SDM_MD_CallSuccessful(result)) { result = SDMMD_AMDeviceStartSession(device); if (SDM_MD_CallSuccessful(result)) { CFTypeRef value = SDMMD_AMDeviceCopyValue(device, CFSTR(AMSVC_MOBILE_DEBUG), CFSTR(kEnableLockdownExtendedLogging)); if (CFGetTypeID(value) == CFBooleanGetTypeID()) { if (!CFBooleanGetValue(value)) { result = SDMMD_AMDeviceSetValue(device, CFSTR(AMSVC_MOBILE_DEBUG), CFSTR(kEnableLockdownExtendedLogging), kCFBooleanTrue); if (SDM_MD_CallSuccessful(result)) { printf("Enabling extended logging...\n"); } } else { printf("Extended logging already enabled.\n"); } } else { PrintCFType(value); } CFSafeRelease(value); } SDMMD_AMDeviceStopSession(device); SDMMD_AMDeviceDisconnect(device); } }
void SpringboardQuery(char *udid) { SDMMD_AMDeviceRef device = FindDeviceFromUDID(udid); if (device) { //struct SpringboardDeviceInfo *info = CreateSpringboardInfoFromDevice(device); SDMMD_AMConnectionRef springboard = AttachToDeviceAndService(device, AMSVC_SPRINGBOARD_SERVICES); CFMutableDictionaryRef request = SDMMD_create_dict(); CFDictionarySetValue(request, CFSTR(kCommand), CFSTR(kCommandGetIconState)); CFDictionarySetValue(request, CFSTR(kFormatVersion), CFSTR("2")); SocketConnection socket = SDMMD_TranslateConnectionToSocket(springboard); sdmmd_return_t result = SDMMD_ServiceSendMessage(socket, request, kCFPropertyListBinaryFormat_v1_0); if (result == kAMDSuccess) { CFPropertyListRef response = NULL; result = SDMMD_ServiceReceiveMessage(socket, &response); if (result == kAMDSuccess && response) { PrintCFType(response); } } /* CFMutableDictionaryRef setrequest = SDMMD_create_dict(); CFDictionarySetValue(setrequest, CFSTR(kCommand), CFSTR(kCommandSetIconState)); CFDictionarySetValue(setrequest, CFSTR("iconState"), newformat); result = SDMMD_ServiceSendMessage(socket, setrequest, kCFPropertyListBinaryFormat_v1_0); if (result == kAMDSuccess) { CFPropertyListRef response = NULL; result = SDMMD_ServiceReceiveMessage(socket, &response); if (result == kAMDSuccess && response) { PrintCFType(response); } } */ } }
void WhatDoesThisDo(char *udid) { SDMMD_AMDeviceRef device = FindDeviceFromUDID(udid); if (device) { sdmmd_return_t result = kAMDInvalidArgumentError; SDMMD_AMDeviceConnect(device); SDMMD_AMDeviceStartSession(device); CFDictionaryRef dict = NULL; SDMMD_AMConnectionRef conn = SDMMD_AMDServiceConnectionCreate(0, NULL, dict); result = SDMMD_AMDeviceSecureStartService(device, CFSTR(AMSVC_DIAG_RELAY), NULL, &conn); if (result == 0) { CFMutableDictionaryRef optionsDict = SDMMD_create_dict(); CFDictionarySetValue(optionsDict, CFSTR("Request"), CFSTR("GasGauge")); result = SDMMD_ServiceSendMessage(SDMMD_TranslateConnectionToSocket(conn), optionsDict, kCFPropertyListXMLFormat_v1_0); CFMutableDictionaryRef response; result = SDMMD_ServiceReceiveMessage(SDMMD_TranslateConnectionToSocket(conn), (CFPropertyListRef *)&response); if (SDM_MD_CallSuccessful(result)) { PrintCFType(response); } result = SDMMD_ServiceReceiveMessage(SDMMD_TranslateConnectionToSocket(conn), (CFPropertyListRef *)&response); if (SDM_MD_CallSuccessful(result)) { PrintCFType(response); } result = SDMMD_ServiceReceiveMessage(SDMMD_TranslateConnectionToSocket(conn), (CFPropertyListRef *)&response); if (SDM_MD_CallSuccessful(result)) { PrintCFType(response); } } else { printf("%s: Was unable to start the service on the device: %i\n", __FUNCTION__, SDMMD_AMDeviceUSBDeviceID(device)); } } }