| |
| typedef struct errorcode_to_id { |
| unsigned int error; |
| const char* id; |
| } errorcode_to_id_t; |
| |
| typedef struct error_id_to_message { |
| const char* id; |
| const char* message; |
| } error_id_to_message_t; |
| |
| // Parts of error code to localization id map is taken from SDMMobileDevice framework. Associated license is bellow. |
| // https://github.com/samdmarshall/SDMMobileDevice/blob/master/Framework/MobileDevice/Error/SDMMD_Error.h |
| // |
| // Copyright (c) 2014, Sam Marshall |
| // All rights reserved. |
| // |
| // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the |
| // following conditions are met: |
| // |
| // 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. |
| // |
| // 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer |
| // in the documentation and/or other materials provided with the distribution. |
| // |
| // 3. Neither the name of Sam Marshall nor the names of its contributors may be used to endorse or promote products derived from this |
| // software without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| // COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| static errorcode_to_id_t errorcode_to_id[] = { |
| { 0xe8000001, "kAMDUndefinedError" }, |
| { 0xe8000002, "kAMDBadHeaderError" }, |
| { 0xe8000003, "kAMDNoResourcesError" }, |
| { 0xe8000004, "kAMDReadError" }, |
| { 0xe8000005, "kAMDWriteError" }, |
| { 0xe8000006, "kAMDUnknownPacketError" }, |
| { 0xe8000007, "kAMDInvalidArgumentError" }, |
| { 0xe8000008, "kAMDNotFoundError" }, |
| { 0xe8000009, "kAMDIsDirectoryError" }, |
| { 0xe800000a, "kAMDPermissionError" }, |
| { 0xe800000b, "kAMDNotConnectedError" }, |
| { 0xe800000c, "kAMDTimeOutError" }, |
| { 0xe800000d, "kAMDOverrunError" }, |
| { 0xe800000e, "kAMDEOFError" }, |
| { 0xe800000f, "kAMDUnsupportedError" }, |
| { 0xe8000010, "kAMDFileExistsError" }, |
| { 0xe8000011, "kAMDBusyError" }, |
| { 0xe8000012, "kAMDCryptoError" }, |
| { 0xe8000013, "kAMDInvalidResponseError" }, |
| { 0xe8000014, "kAMDMissingKeyError" }, |
| { 0xe8000015, "kAMDMissingValueError" }, |
| { 0xe8000016, "kAMDGetProhibitedError" }, |
| { 0xe8000017, "kAMDSetProhibitedError" }, |
| { 0xe8000018, "kAMDRemoveProhibitedError" }, |
| { 0xe8000019, "kAMDImmutableValueError" }, |
| { 0xe800001a, "kAMDPasswordProtectedError" }, |
| { 0xe800001b, "kAMDMissingHostIDError" }, |
| { 0xe800001c, "kAMDInvalidHostIDError" }, |
| { 0xe800001d, "kAMDSessionActiveError" }, |
| { 0xe800001e, "kAMDSessionInactiveError" }, |
| { 0xe800001f, "kAMDMissingSessionIDError" }, |
| { 0xe8000020, "kAMDInvalidSessionIDError" }, |
| { 0xe8000021, "kAMDMissingServiceError" }, |
| { 0xe8000022, "kAMDInvalidServiceError" }, |
| { 0xe8000023, "kAMDInvalidCheckinError" }, |
| { 0xe8000024, "kAMDCheckinTimeoutError" }, |
| { 0xe8000025, "kAMDMissingPairRecordError" }, |
| { 0xe8000026, "kAMDInvalidActivationRecordError" }, |
| { 0xe8000027, "kAMDMissingActivationRecordError" }, |
| { 0xe8000028, "kAMDWrongDroidError" }, |
| { 0xe8000029, "kAMDSUVerificationError" }, |
| { 0xe800002a, "kAMDSUPatchError" }, |
| { 0xe800002b, "kAMDSUFirmwareError" }, |
| { 0xe800002c, "kAMDProvisioningProfileNotValid" }, |
| { 0xe800002d, "kAMDSendMessageError" }, |
| { 0xe800002e, "kAMDReceiveMessageError" }, |
| { 0xe800002f, "kAMDMissingOptionsError" }, |
| { 0xe8000030, "kAMDMissingImageTypeError" }, |
| { 0xe8000031, "kAMDDigestFailedError" }, |
| { 0xe8000032, "kAMDStartServiceError" }, |
| { 0xe8000033, "kAMDInvalidDiskImageError" }, |
| { 0xe8000034, "kAMDMissingDigestError" }, |
| { 0xe8000035, "kAMDMuxError" }, |
| { 0xe8000036, "kAMDApplicationAlreadyInstalledError" }, |
| { 0xe8000037, "kAMDApplicationMoveFailedError" }, |
| { 0xe8000038, "kAMDApplicationSINFCaptureFailedError" }, |
| { 0xe8000039, "kAMDApplicationSandboxFailedError" }, |
| { 0xe800003a, "kAMDApplicationVerificationFailedError" }, |
| { 0xe800003b, "kAMDArchiveDestructionFailedError" }, |
| { 0xe800003c, "kAMDBundleVerificationFailedError" }, |
| { 0xe800003d, "kAMDCarrierBundleCopyFailedError" }, |
| { 0xe800003e, "kAMDCarrierBundleDirectoryCreationFailedError" }, |
| { 0xe800003f, "kAMDCarrierBundleMissingSupportedSIMsError" }, |
| { 0xe8000040, "kAMDCommCenterNotificationFailedError" }, |
| { 0xe8000041, "kAMDContainerCreationFailedError" }, |
| { 0xe8000042, "kAMDContainerP0wnFailedError" }, |
| { 0xe8000043, "kAMDContainerRemovalFailedError" }, |
| { 0xe8000044, "kAMDEmbeddedProfileInstallFailedError" }, |
| { 0xe8000045, "kAMDErrorError" }, |
| { 0xe8000046, "kAMDExecutableTwiddleFailedError" }, |
| { 0xe8000047, "kAMDExistenceCheckFailedError" }, |
| { 0xe8000048, "kAMDInstallMapUpdateFailedError" }, |
| { 0xe8000049, "kAMDManifestCaptureFailedError" }, |
| { 0xe800004a, "kAMDMapGenerationFailedError" }, |
| { 0xe800004b, "kAMDMissingBundleExecutableError" }, |
| { 0xe800004c, "kAMDMissingBundleIdentifierError" }, |
| { 0xe800004d, "kAMDMissingBundlePathError" }, |
| { 0xe800004e, "kAMDMissingContainerError" }, |
| { 0xe800004f, "kAMDNotificationFailedError" }, |
| { 0xe8000050, "kAMDPackageExtractionFailedError" }, |
| { 0xe8000051, "kAMDPackageInspectionFailedError" }, |
| { 0xe8000052, "kAMDPackageMoveFailedError" }, |
| { 0xe8000053, "kAMDPathConversionFailedError" }, |
| { 0xe8000054, "kAMDRestoreContainerFailedError" }, |
| { 0xe8000055, "kAMDSeatbeltProfileRemovalFailedError" }, |
| { 0xe8000056, "kAMDStageCreationFailedError" }, |
| { 0xe8000057, "kAMDSymlinkFailedError" }, |
| { 0xe8000058, "kAMDiTunesArtworkCaptureFailedError" }, |
| { 0xe8000059, "kAMDiTunesMetadataCaptureFailedError" }, |
| { 0xe800005a, "kAMDAlreadyArchivedError" }, |
| { 0xe800005b, "kAMDServiceLimitError" }, |
| { 0xe800005c, "kAMDInvalidPairRecordError" }, |
| { 0xe800005d, "kAMDServiceProhibitedError" }, |
| { 0xe800005e, "kAMDCheckinSetupFailedError" }, |
| { 0xe800005f, "kAMDCheckinConnectionFailedError" }, |
| { 0xe8000060, "kAMDCheckinReceiveFailedError" }, |
| { 0xe8000061, "kAMDCheckinResponseFailedError" }, |
| { 0xe8000062, "kAMDCheckinSendFailedError" }, |
| { 0xe8000063, "kAMDMuxCreateListenerError" }, |
| { 0xe8000064, "kAMDMuxGetListenerError" }, |
| { 0xe8000065, "kAMDMuxConnectError" }, |
| { 0xe8000066, "kAMDUnknownCommandError" }, |
| { 0xe8000067, "kAMDAPIInternalError" }, |
| { 0xe8000068, "kAMDSavePairRecordFailedError" }, |
| { 0xe8000069, "kAMDCheckinOutOfMemoryError" }, |
| { 0xe800006a, "kAMDDeviceTooNewError" }, |
| { 0xe800006b, "kAMDDeviceRefNoGood" }, |
| { 0xe800006c, "kAMDCannotTranslateError" }, |
| { 0xe800006d, "kAMDMobileImageMounterMissingImageSignature" }, |
| { 0xe800006e, "kAMDMobileImageMounterResponseCreationFailed" }, |
| { 0xe800006f, "kAMDMobileImageMounterMissingImageType" }, |
| { 0xe8000070, "kAMDMobileImageMounterMissingImagePath" }, |
| { 0xe8000071, "kAMDMobileImageMounterImageMapLoadFailed" }, |
| { 0xe8000072, "kAMDMobileImageMounterAlreadyMounted" }, |
| { 0xe8000073, "kAMDMobileImageMounterImageMoveFailed" }, |
| { 0xe8000074, "kAMDMobileImageMounterMountPathMissing" }, |
| { 0xe8000075, "kAMDMobileImageMounterMountPathNotEmpty" }, |
| { 0xe8000076, "kAMDMobileImageMounterImageMountFailed" }, |
| { 0xe8000077, "kAMDMobileImageMounterTrustCacheLoadFailed" }, |
| { 0xe8000078, "kAMDMobileImageMounterDigestFailed" }, |
| { 0xe8000079, "kAMDMobileImageMounterDigestCreationFailed" }, |
| { 0xe800007a, "kAMDMobileImageMounterImageVerificationFailed" }, |
| { 0xe800007b, "kAMDMobileImageMounterImageInfoCreationFailed" }, |
| { 0xe800007c, "kAMDMobileImageMounterImageMapStoreFailed" }, |
| { 0xe800007d, "kAMDBonjourSetupError" }, |
| { 0xe800007e, "kAMDDeviceOSVersionTooLow" }, |
| { 0xe800007f, "kAMDNoWifiSyncSupportError" }, |
| { 0xe8000080, "kAMDDeviceFamilyNotSupported" }, |
| { 0xe8000081, "kAMDEscrowLockedError" }, |
| { 0xe8000082, "kAMDPairingProhibitedError" }, |
| { 0xe8000083, "kAMDProhibitedBySupervision" }, |
| { 0xe8000084, "kAMDDeviceDisconnectedError" }, |
| { 0xe8000085, "kAMDTooBigError" }, |
| { 0xe8000086, "kAMDPackagePatchFailedError" }, |
| { 0xe8000087, "kAMDIncorrectArchitectureError" }, |
| { 0xe8000088, "kAMDPluginCopyFailedError" }, |
| { 0xe8000089, "kAMDBreadcrumbFailedError" }, |
| { 0xe800008a, "kAMDBreadcrumbUnlockError" }, |
| { 0xe800008b, "kAMDGeoJSONCaptureFailedError" }, |
| { 0xe800008c, "kAMDNewsstandArtworkCaptureFailedError" }, |
| { 0xe800008d, "kAMDMissingCommandError" }, |
| { 0xe800008e, "kAMDNotEntitledError" }, |
| { 0xe800008f, "kAMDMissingPackagePathError" }, |
| { 0xe8000090, "kAMDMissingContainerPathError" }, |
| { 0xe8000091, "kAMDMissingApplicationIdentifierError" }, |
| { 0xe8000092, "kAMDMissingAttributeValueError" }, |
| { 0xe8000093, "kAMDLookupFailedError" }, |
| { 0xe8000094, "kAMDDictCreationFailedError" }, |
| { 0xe8000095, "kAMDUserDeniedPairingError" }, |
| { 0xe8000096, "kAMDPairingDialogResponsePendingError" }, |
| { 0xe8000097, "kAMDInstallProhibitedError" }, |
| { 0xe8000098, "kAMDUninstallProhibitedError" }, |
| { 0xe8000099, "kAMDFMiPProtectedError" }, |
| { 0xe800009a, "kAMDMCProtected" }, |
| { 0xe800009b, "kAMDMCChallengeRequired" }, |
| { 0xe800009c, "kAMDMissingBundleVersionError" }, |
| |
| // Errors without id->string mapping. |
| { 0xe8008015, "A valid provisioning profile for this executable was not found." }, |
| { 0xe8008016, "The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile." }, |
| { 0xe8008017, "A signed resource has been added, modified, or deleted." }, |
| { 0xe8008018, "The identity used to sign the executable is no longer valid. Please verify that your device’s clock is properly set, and that your signing certificate is not expired." }, |
| { 0xe8008019, "The application does not have a valid signature." }, |
| { 0xe800801c, "No code signature found." }, |
| }; |
| |
| const int errorcode_to_id_count = sizeof(errorcode_to_id) / sizeof(errorcode_to_id_t); |
| |
| // Taken from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/en_GB.lproj/Localizable.strings |
| error_id_to_message_t error_id_to_message[] = { |
| { "kAMDAPIInternalError", "There was an internal API error." }, |
| { "kAMDAlreadyArchivedError", "The application is already archived." }, |
| { "kAMDAppBlacklistedError", "This app is not allowed to be installed on this device." }, |
| { "kAMDApplicationAlreadyInstalledError", "A system application with the given bundle identifier is already installed on the device and cannot be replaced." }, |
| { "kAMDApplicationMoveFailedError", "The application could not be moved into place on the device." }, |
| { "kAMDApplicationSandboxFailedError", "The application could not be sandboxed." }, |
| { "kAMDApplicationVerificationFailedError", "The application could not be verified." }, |
| { "kAMDArchiveDestructionFailedError", "Could not remove the application archive." }, |
| { "kAMDBadHeaderError", "Could not transfer file." }, |
| { "kAMDBreadcrumbFailedError", "Could not write installation breadcrumb." }, |
| { "kAMDBreadcrumbUnlockError", "Could not update installation breadcrumb." }, |
| { "kAMDBundleVerificationFailedError", "The carrier bundle could not be verified." }, |
| { "kAMDBusyError", "The device is busy." }, |
| { "kAMDCannotTranslateError", "Could not translate messages from device" }, |
| { "kAMDCarrierBundleCopyFailedError", "Could not install the carrier bundle." }, |
| { "kAMDCarrierBundleDirectoryCreationFailedError", "Could not create the carrier bundle directory." }, |
| { "kAMDCarrierBundleMissingSupportedSIMsError", "There are no supported SIMs for this carrier bundle." }, |
| { "kAMDCheckinConnectionFailedError", "The service did not start properly on the device." }, |
| { "kAMDCheckinOutOfMemoryError", "The service did not start properly on the device." }, |
| { "kAMDCheckinReceiveFailedError", "The service did not start properly on the device." }, |
| { "kAMDCheckinResponseFailedError", "The service did not start properly on the device." }, |
| { "kAMDCheckinSendFailedError", "The service did not start properly on the device." }, |
| { "kAMDCheckinSetupFailedError", "Could not start service on device" }, |
| { "kAMDCheckinTimeoutError", "The service did not start properly on the device." }, |
| { "kAMDCommCenterNotificationFailedError", "Could not listen for notification from the baseband." }, |
| { "kAMDContainerCreationFailedError", "Could not create application container." }, |
| { "kAMDContainerP0wnFailedError", "Could not repair permissions on application container." }, |
| { "kAMDContainerRemovalFailedError", "Could not remove the application container." }, |
| { "kAMDCryptoError", "Could not establish a secure connection to the device." }, |
| { "kAMDDeviceDisconnectedError", "This device is no longer connected." }, |
| { "kAMDDeviceFamilyNotSupported", "This application does not support this kind of device." }, |
| { "kAMDDeviceOSVersionTooLow", "The device OS version is too low." }, |
| { "kAMDDeviceRefNoGood", "This device is no longer connected." }, |
| { "kAMDDeviceTooNewError", "This application needs to be updated." }, |
| { "kAMDDictCreationFailedError", "Could not extract capabilities from the request." }, |
| { "kAMDDigestFailedError", "Could not read disk image." }, |
| { "kAMDEOFError", "End of file." }, |
| { "kAMDEmbeddedProfileInstallFailedError", "Could not install the embedded provisioning profile." }, |
| { "kAMDErrorError", "An error occurred." }, |
| { "kAMDEscrowLockedError", "Device is not available until first unlock after boot." }, |
| { "kAMDExecutableTwiddleFailedError", "Could not change executable permissions on the application." }, |
| { "kAMDExistenceCheckFailedError", "Could not check to see if the application already exists." }, |
| { "kAMDFMiPProtectedError", "The device is in lost mode." }, |
| { "kAMDFileExistsError", "The file already exists." }, |
| { "kAMDGeoJSONCaptureFailedError", "Could not save the GeoJSON data." }, |
| { "kAMDGetProhibitedError", "Cannot retrieve value from the passcode-locked device." }, |
| { "kAMDImmutableValueError", "This value cannot be changed." }, |
| { "kAMDIncorrectArchitectureError", "This application does not support this device's CPU type." }, |
| { "kAMDInstallMapUpdateFailedError", "Could not update the installed applications list." }, |
| { "kAMDInstallProhibitedError", "Installation of apps is prohibited by a policy on the device." }, |
| { "kAMDInvalidActivationRecordError", "The activation record is not valid." }, |
| { "kAMDInvalidArgumentError", "The argument is invalid." }, |
| { "kAMDInvalidCheckinError", "Could not start service on device" }, |
| { "kAMDInvalidDiskImageError", "The disk image is invalid." }, |
| { "kAMDInvalidHostIDError", "The device does not recognise this host." }, |
| { "kAMDInvalidPairRecordError", "The host is no longer paired with the device." }, |
| { "kAMDInvalidResponseError", "Received an unexpected response from the device." }, |
| { "kAMDInvalidServiceError", "The service is invalid." }, |
| { "kAMDInvalidSessionIDError", "The session ID is invalid." }, |
| { "kAMDIsDirectoryError", "The path is a directory." }, |
| { "kAMDLookupFailedError", "Could not list installed applications." }, |
| { "kAMDMCChallengeRequired", "A policy on the device requires secure pairing." }, |
| { "kAMDMCProtected", "Pairing is prohibited by a policy on the device." }, |
| { "kAMDManifestCaptureFailedError", "Could not save the application manifest." }, |
| { "kAMDMapGenerationFailedError", "Could not generate the map." }, |
| { "kAMDMissingActivationRecordError", "The activation record could not be found." }, |
| { "kAMDMissingApplicationIdentifierError", "Request was missing the application identifier." }, |
| { "kAMDMissingAttributeValueError", "Request was missing a required value." }, |
| { "kAMDMissingBundleExecutableError", "The application bundle does not contain an executable." }, |
| { "kAMDMissingBundleIdentifierError", "The application bundle does not contain a valid identifier." }, |
| { "kAMDMissingBundlePathError", "Could not determine the application bundle path." }, |
| { "kAMDMissingBundleVersionError", "The bundle's Info.plist does not contain a CFBundleVersion key or its value is not a string." }, |
| { "kAMDMissingCommandError", "The request did not contain a command." }, |
| { "kAMDMissingContainerError", "Could not find the container for the installed application." }, |
| { "kAMDMissingContainerPathError", "Request was missing the container path." }, |
| { "kAMDMissingDigestError", "The digest is missing." }, |
| { "kAMDMissingHostIDError", "The device does not recognise this host." }, |
| { "kAMDMissingImageTypeError", "The image is missing." }, |
| { "kAMDMissingKeyError", "The key is missing." }, |
| { "kAMDMissingOptionsError", "The options are missing." }, |
| { "kAMDMissingPackagePathError", "Request was missing the package path." }, |
| { "kAMDMissingPairRecordError", "The host is not paired with the device." }, |
| { "kAMDMissingServiceError", "The service is missing." }, |
| { "kAMDMissingSessionIDError", "The session ID is missing." }, |
| { "kAMDMissingValueError", "The value is missing." }, |
| { "kAMDMobileImageMounterAlreadyMounted", "Could not support development." }, |
| { "kAMDMobileImageMounterDigestCreationFailed", "Could not support development." }, |
| { "kAMDMobileImageMounterDigestFailed", "Could not support development." }, |
| { "kAMDMobileImageMounterImageInfoCreationFailed", "Could not support development." }, |
| { "kAMDMobileImageMounterImageMapLoadFailed", "Could not support development." }, |
| { "kAMDMobileImageMounterImageMapStoreFailed", "Could not support development." }, |
| { "kAMDMobileImageMounterImageMountFailed", "Could not support development." }, |
| { "kAMDMobileImageMounterImageMoveFailed", "Could not support development." }, |
| { "kAMDMobileImageMounterImageVerificationFailed", "Could not support development." }, |
| { "kAMDMobileImageMounterMissingImagePath", "Could not support development." }, |
| { "kAMDMobileImageMounterMissingImageSignature", "Could not support development." }, |
| { "kAMDMobileImageMounterMissingImageType", "Could not support development." }, |
| { "kAMDMobileImageMounterMountPathMissing", "Could not support development." }, |
| { "kAMDMobileImageMounterMountPathNotEmpty", "Could not support development." }, |
| { "kAMDMobileImageMounterResponseCreationFailed", "Could not support development." }, |
| { "kAMDMobileImageMounterTrustCacheLoadFailed", "Could not support development." }, |
| { "kAMDMuxConnectError", "Could not connect to the device." }, |
| { "kAMDMuxCreateListenerError", "Could not listen for USB devices." }, |
| { "kAMDMuxError", "There was an error with the USB device multiplexor." }, |
| { "kAMDMuxGetListenerError", "Could not get the USB listener." }, |
| { "kAMDNewsstandArtworkCaptureFailedError", "Could not save the Newsstand artwork." }, |
| { "kAMDNoResourcesError", "Could not allocate a resource." }, |
| { "kAMDNoWifiSyncSupportError", "Device doesn't support wireless sync." }, |
| { "kAMDNotConnectedError", "Not connected to the device." }, |
| { "kAMDNotEntitledError", "The requesting application is not allowed to make this request." }, |
| { "kAMDNotFoundError", "The file could not be found." }, |
| { "kAMDNotificationFailedError", "Could not post a notification." }, |
| { "kAMDOverrunError", "There was a buffer overrun." }, |
| { "kAMDPackageExtractionFailedError", "Could not open the application package." }, |
| { "kAMDPackageInspectionFailedError", "Could not inspect the application package." }, |
| { "kAMDPackageMoveFailedError", "Could not move the application package into the staging location." }, |
| { "kAMDPackagePatchFailedError", "Could not apply patch update to application." }, |
| { "kAMDPairingDialogResponsePendingError", "The user has not yet responded to the pairing request." }, |
| { "kAMDPairingProhibitedError", "Pairing only allowed over USB." }, |
| { "kAMDPasswordProtectedError", "The device is passcode protected." }, |
| { "kAMDPathConversionFailedError", "Could not convert the path." }, |
| { "kAMDPermissionError", "You do not have permission." }, |
| { "kAMDPluginCopyFailedError", "Could not copy VPN Plug-in into app container." }, |
| { "kAMDProhibitedBySupervision", "Operation prohibited on supervised devices." }, |
| { "kAMDProvisioningProfileNotValid", "The provisioning profile is not valid." }, |
| { "kAMDReadError", "Could not read from the device." }, |
| { "kAMDReceiveMessageError", "Could not receive a message from the device." }, |
| { "kAMDRemoveProhibitedError", "Cannot remove value on device." }, |
| { "kAMDRestoreContainerFailedError", "Could not restore the application container." }, |
| { "kAMDSUFirmwareError", "Could not flash the firmware." }, |
| { "kAMDSUPatchError", "Could not patch the file." }, |
| { "kAMDSUVerificationError", "The software update package could not be verified." }, |
| { "kAMDSavePairRecordFailedError", "Could not save the pairing record." }, |
| { "kAMDSeatbeltProfileRemovalFailedError", "Could not remove the application seatbelt profile." }, |
| { "kAMDSendMessageError", "Could not send a message to the device." }, |
| { "kAMDServiceLimitError", "Too many instances of this service are already running." }, |
| { "kAMDServiceProhibitedError", "The service could not be started on the device." }, |
| { "kAMDSessionActiveError", "The session is active." }, |
| { "kAMDSessionInactiveError", "The session is inactive." }, |
| { "kAMDSetProhibitedError", "Cannot set value on device." }, |
| { "kAMDStageCreationFailedError", "Could not create the staging directory." }, |
| { "kAMDStartServiceError", "The service could not be started." }, |
| { "kAMDSuccess", "There was no error." }, |
| { "kAMDSymlinkFailedError", "Could not create the symlink." }, |
| { "kAMDTimeOutError", "The operation timed out." }, |
| { "kAMDTooBigError", "The message is too big." }, |
| { "kAMDUndefinedError", "An unknown error occurred." }, |
| { "kAMDUninstallProhibitedError", "Uninstallation of apps is prohibited by a policy on the device." }, |
| { "kAMDUnknownCommandError", "The device does not recognise the command." }, |
| { "kAMDUnknownPacketError", "The packet is unknown." }, |
| { "kAMDUnsupportedError", "This operation is unsupported." }, |
| { "kAMDUserDeniedPairingError", "The device rejected the pairing attempt." }, |
| { "kAMDWriteError", "Could not write to the device." }, |
| { "kAMDWrongDroidError", "The device is in recovery mode." }, |
| { "kAMDiTunesArtworkCaptureFailedError", "Could not save the iTunes artwork." }, |
| { "kAMDiTunesMetadataCaptureFailedError", "Could not save the iTunes metadata." }, |
| }; |
| |
| const int error_id_to_message_count = sizeof(error_id_to_message) / sizeof(error_id_to_message_t); |
| |
| const char* get_error_message(unsigned int error) { |
| const char* id = NULL; |
| |
| // Lookup error localization id |
| for (int i = 0; i < errorcode_to_id_count; i++) { |
| if (errorcode_to_id[i].error == error) { |
| id = errorcode_to_id[i].id; |
| break; |
| } |
| } |
| |
| // Lookup error message |
| if (id) { |
| for (int i = 0; i < error_id_to_message_count; i++) |
| if (strcmp(error_id_to_message[i].id, id) == 0) |
| return error_id_to_message[i].message; |
| } |
| |
| // If message is not found, then at least return id if it was found, otherwise NULL |
| return id; |
| }; |