From 215bd52352e4dcb3b08b55b52e36e8a4bb6541f9 Mon Sep 17 00:00:00 2001 From: Justin Dickow Date: Wed, 19 Mar 2014 13:03:39 -0400 Subject: [PATCH] Removed SDL_iOS project - pending release of updated mobile libraries and tester app Signed-off-by: Justin Dickow --- .../xcshareddata/SmartDeviceLink.xccheckout | 41 - SDL_iOS/SmartDeviceLinkProxy/Classes/JSON.h | 50 - .../SmartDeviceLinkProxy/Classes/NSObject+SBJSON.h | 68 -- .../SmartDeviceLinkProxy/Classes/NSObject+SBJSON.m | 53 - .../SmartDeviceLinkProxy/Classes/NSString+SBJSON.h | 58 - .../SmartDeviceLinkProxy/Classes/NSString+SBJSON.m | 55 - .../Classes/RPC/SDLAddCommand.h | 19 - .../Classes/RPC/SDLAddCommand.m | 61 - .../Classes/RPC/SDLAddCommandResponse.h | 15 - .../Classes/RPC/SDLAddCommandResponse.m | 20 - .../Classes/RPC/SDLAddSubMenu.h | 18 - .../Classes/RPC/SDLAddSubMenu.m | 56 - .../Classes/RPC/SDLAddSubMenuResponse.h | 15 - .../Classes/RPC/SDLAddSubMenuResponse.m | 20 - .../SmartDeviceLinkProxy/Classes/RPC/SDLAlert.h | 21 - .../SmartDeviceLinkProxy/Classes/RPC/SDLAlert.m | 89 -- .../Classes/RPC/SDLAlertResponse.h | 15 - .../Classes/RPC/SDLAlertResponse.m | 20 - .../RPC/SDLAppInterfaceUnregisteredReason.h | 24 - .../RPC/SDLAppInterfaceUnregisteredReason.m | 118 -- .../Classes/RPC/SDLAudioStreamingState.h | 16 - .../Classes/RPC/SDLAudioStreamingState.m | 46 - .../Classes/RPC/SDLButtonCapabilities.h | 20 - .../Classes/RPC/SDLButtonCapabilities.m | 73 -- .../Classes/RPC/SDLButtonEventMode.h | 16 - .../Classes/RPC/SDLButtonEventMode.m | 46 - .../Classes/RPC/SDLButtonName.h | 29 - .../Classes/RPC/SDLButtonName.m | 163 --- .../Classes/RPC/SDLButtonPressMode.h | 16 - .../Classes/RPC/SDLButtonPressMode.m | 46 - .../Classes/RPC/SDLCharacterSet.h | 18 - .../Classes/RPC/SDLCharacterSet.m | 64 -- .../SmartDeviceLinkProxy/Classes/RPC/SDLChoice.h | 18 - .../SmartDeviceLinkProxy/Classes/RPC/SDLChoice.m | 56 - .../Classes/RPC/SDLCreateInteractionChoiceSet.h | 18 - .../Classes/RPC/SDLCreateInteractionChoiceSet.m | 53 - .../RPC/SDLCreateInteractionChoiceSetResponse.h | 15 - .../RPC/SDLCreateInteractionChoiceSetResponse.m | 20 - .../Classes/RPC/SDLDeleteCommand.h | 16 - .../Classes/RPC/SDLDeleteCommand.m | 32 - .../Classes/RPC/SDLDeleteCommandResponse.h | 15 - .../Classes/RPC/SDLDeleteCommandResponse.m | 20 - .../Classes/RPC/SDLDeleteInteractionChoiceSet.h | 16 - .../Classes/RPC/SDLDeleteInteractionChoiceSet.m | 32 - .../RPC/SDLDeleteInteractionChoiceSetResponse.h | 15 - .../RPC/SDLDeleteInteractionChoiceSetResponse.m | 20 - .../Classes/RPC/SDLDeleteSubMenu.h | 16 - .../Classes/RPC/SDLDeleteSubMenu.m | 32 - .../Classes/RPC/SDLDeleteSubMenuResponse.h | 15 - .../Classes/RPC/SDLDeleteSubMenuResponse.m | 20 - .../Classes/RPC/SDLDisplayCapabilities.h | 21 - .../Classes/RPC/SDLDisplayCapabilities.m | 79 -- .../Classes/RPC/SDLDisplayType.h | 21 - .../Classes/RPC/SDLDisplayType.m | 91 -- .../Classes/RPC/SDLDriverDistractionState.h | 17 - .../Classes/RPC/SDLDriverDistractionState.m | 51 - .../Classes/RPC/SDLEncodedSyncPData.h | 15 - .../Classes/RPC/SDLEncodedSyncPData.m | 33 - .../Classes/RPC/SDLEncodedSyncPDataResponse.h | 15 - .../Classes/RPC/SDLEncodedSyncPDataResponse.m | 20 - .../Classes/RPC/SDLGenericResponse.h | 15 - .../Classes/RPC/SDLGenericResponse.m | 20 - .../Classes/RPC/SDLGlobalProperty.h | 16 - .../Classes/RPC/SDLGlobalProperty.m | 46 - .../SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.h | 18 - .../SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.m | 64 -- .../Classes/RPC/SDLHMIZoneCapabilities.h | 16 - .../Classes/RPC/SDLHMIZoneCapabilities.m | 46 - .../Classes/RPC/SDLInteractionMode.h | 17 - .../Classes/RPC/SDLInteractionMode.m | 55 - .../SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.h | 17 - .../SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.m | 55 - .../Classes/RPC/SDLMediaClockFormat.h | 19 - .../Classes/RPC/SDLMediaClockFormat.m | 73 -- .../Classes/RPC/SDLMenuParams.h | 18 - .../Classes/RPC/SDLMenuParams.m | 56 - .../Classes/RPC/SDLMsgVersion.h | 17 - .../Classes/RPC/SDLMsgVersion.m | 44 - .../Classes/RPC/SDLOnAppInterfaceUnregistered.h | 17 - .../Classes/RPC/SDLOnAppInterfaceUnregistered.m | 37 - .../Classes/RPC/SDLOnButtonEvent.h | 19 - .../Classes/RPC/SDLOnButtonEvent.m | 54 - .../Classes/RPC/SDLOnButtonPress.h | 19 - .../Classes/RPC/SDLOnButtonPress.m | 54 - .../Classes/RPC/SDLOnCommand.h | 18 - .../Classes/RPC/SDLOnCommand.m | 49 - .../Classes/RPC/SDLOnDriverDistraction.h | 17 - .../Classes/RPC/SDLOnDriverDistraction.m | 37 - .../Classes/RPC/SDLOnEncodedSyncPData.h | 15 - .../Classes/RPC/SDLOnEncodedSyncPData.m | 33 - .../Classes/RPC/SDLOnHMIStatus.h | 21 - .../Classes/RPC/SDLOnHMIStatus.m | 71 -- .../Classes/RPC/SDLOnTBTClientState.h | 17 - .../Classes/RPC/SDLOnTBTClientState.m | 37 - .../Classes/RPC/SDLPerformInteraction.h | 26 - .../Classes/RPC/SDLPerformInteraction.m | 136 --- .../Classes/RPC/SDLPerformInteractionResponse.h | 19 - .../Classes/RPC/SDLPerformInteractionResponse.m | 49 - .../Classes/RPC/SDLRegisterAppInterface.h | 24 - .../Classes/RPC/SDLRegisterAppInterface.m | 114 -- .../Classes/RPC/SDLRegisterAppInterfaceResponse.h | 31 - .../Classes/RPC/SDLRegisterAppInterfaceResponse.m | 167 --- .../Classes/RPC/SDLResetGlobalProperties.h | 17 - .../Classes/RPC/SDLResetGlobalProperties.m | 41 - .../Classes/RPC/SDLResetGlobalPropertiesResponse.h | 15 - .../Classes/RPC/SDLResetGlobalPropertiesResponse.m | 20 - .../SmartDeviceLinkProxy/Classes/RPC/SDLResult.h | 36 - .../SmartDeviceLinkProxy/Classes/RPC/SDLResult.m | 226 ---- .../Classes/RPC/SDLSetGlobalProperties.h | 19 - .../Classes/RPC/SDLSetGlobalProperties.m | 62 - .../Classes/RPC/SDLSetGlobalPropertiesResponse.h | 15 - .../Classes/RPC/SDLSetGlobalPropertiesResponse.m | 20 - .../Classes/RPC/SDLSetMediaClockTimer.h | 19 - .../Classes/RPC/SDLSetMediaClockTimer.m | 54 - .../Classes/RPC/SDLSetMediaClockTimerResponse.h | 15 - .../Classes/RPC/SDLSetMediaClockTimerResponse.m | 20 - SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.h | 22 - SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.m | 97 -- .../Classes/RPC/SDLShowResponse.h | 15 - .../Classes/RPC/SDLShowResponse.m | 20 - .../SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.h | 17 - .../SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.m | 41 - .../Classes/RPC/SDLSpeakResponse.h | 15 - .../Classes/RPC/SDLSpeakResponse.m | 20 - .../Classes/RPC/SDLSpeechCapabilities.h | 19 - .../Classes/RPC/SDLSpeechCapabilities.m | 73 -- .../Classes/RPC/SDLStartTime.h | 17 - .../Classes/RPC/SDLStartTime.m | 56 - .../Classes/RPC/SDLSubscribeButton.h | 17 - .../Classes/RPC/SDLSubscribeButton.m | 37 - .../Classes/RPC/SDLSubscribeButtonResponse.h | 15 - .../Classes/RPC/SDLSubscribeButtonResponse.m | 20 - .../Classes/RPC/SDLSystemContext.h | 17 - .../Classes/RPC/SDLSystemContext.m | 55 - .../SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.h | 21 - .../SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.m | 66 -- .../SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.h | 18 - .../SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.m | 49 - .../Classes/RPC/SDLTextAlignment.h | 17 - .../Classes/RPC/SDLTextAlignment.m | 55 - .../Classes/RPC/SDLTextField.h | 21 - .../Classes/RPC/SDLTextField.m | 78 -- .../Classes/RPC/SDLTextFieldName.h | 21 - .../Classes/RPC/SDLTextFieldName.m | 91 -- .../Classes/RPC/SDLTriggerSource.h | 16 - .../Classes/RPC/SDLTriggerSource.m | 46 - .../Classes/RPC/SDLUnregisterAppInterface.h | 13 - .../Classes/RPC/SDLUnregisterAppInterface.m | 20 - .../RPC/SDLUnregisterAppInterfaceResponse.h | 15 - .../RPC/SDLUnregisterAppInterfaceResponse.m | 20 - .../Classes/RPC/SDLUnsubscribeButton.h | 17 - .../Classes/RPC/SDLUnsubscribeButton.m | 37 - .../Classes/RPC/SDLUnsubscribeButtonResponse.h | 15 - .../Classes/RPC/SDLUnsubscribeButtonResponse.m | 20 - .../Classes/RPC/SDLUpdateMode.h | 18 - .../Classes/RPC/SDLUpdateMode.m | 64 -- .../Classes/RPC/SDLVRCapabilities.h | 15 - .../Classes/RPC/SDLVRCapabilities.m | 37 - SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.h | 75 -- SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.m | 212 ---- SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.h | 86 -- SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.m | 78 -- .../SmartDeviceLinkProxy/Classes/SBJsonParser.h | 87 -- .../SmartDeviceLinkProxy/Classes/SBJsonParser.m | 475 -------- .../SmartDeviceLinkProxy/Classes/SBJsonWriter.h | 129 --- .../SmartDeviceLinkProxy/Classes/SBJsonWriter.m | 228 ---- .../Classes/SDLAbstractProtocol.h | 14 - .../Classes/SDLAbstractProtocol.m | 88 -- .../Classes/SDLAbstractTransport.h | 37 - .../Classes/SDLAbstractTransport.m | 137 --- .../SmartDeviceLinkProxy/Classes/SDLBitConverter.h | 12 - .../SmartDeviceLinkProxy/Classes/SDLBitConverter.m | 30 - .../Classes/SDLConsoleController.h | 21 - .../Classes/SDLConsoleController.m | 202 ---- .../Classes/SDLConsoleController.xib | 175 --- .../SmartDeviceLinkProxy/Classes/SDLDebugTool.h | 21 - .../SmartDeviceLinkProxy/Classes/SDLDebugTool.m | 100 -- SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.h | 15 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.m | 22 - .../SmartDeviceLinkProxy/Classes/SDLIAPTransport.h | 32 - .../SmartDeviceLinkProxy/Classes/SDLIAPTransport.m | 352 ------ SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIDecoder.h | 11 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIEncoder.h | 11 - .../SmartDeviceLinkProxy/Classes/SDLIProtocol.h | 23 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIProxy.h | 20 - .../SmartDeviceLinkProxy/Classes/SDLITransport.h | 18 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.h | 15 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.m | 15 - .../SmartDeviceLinkProxy/Classes/SDLJsonDecoder.h | 12 - .../SmartDeviceLinkProxy/Classes/SDLJsonDecoder.m | 29 - .../SmartDeviceLinkProxy/Classes/SDLJsonEncoder.h | 12 - .../SmartDeviceLinkProxy/Classes/SDLJsonEncoder.m | 32 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLNames.h | 166 --- SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.h | 45 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.m | 392 ------- .../Classes/SDLProtocolFrameHeader.h | 51 - .../Classes/SDLProtocolFrameHeader.m | 31 - .../Classes/SDLProtocolFrameHeaderFactory.h | 17 - .../Classes/SDLProtocolFrameHeaderFactory.m | 81 -- .../Classes/SDLProtocolListener.h | 17 - .../Classes/SDLProtocolMessage.h | 31 - .../Classes/SDLProtocolMessage.m | 29 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.h | 39 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.m | 325 ------ .../SmartDeviceLinkProxy/Classes/SDLProxyFactory.h | 14 - .../SmartDeviceLinkProxy/Classes/SDLProxyFactory.m | 40 - .../Classes/SDLProxyListener.h | 69 -- .../SmartDeviceLinkProxy/Classes/SDLRPCMessage.h | 32 - .../SmartDeviceLinkProxy/Classes/SDLRPCMessage.m | 110 -- .../Classes/SDLRPCNotification.h | 10 - .../Classes/SDLRPCNotification.m | 9 - .../SmartDeviceLinkProxy/Classes/SDLRPCRequest.h | 12 - .../SmartDeviceLinkProxy/Classes/SDLRPCRequest.m | 22 - .../Classes/SDLRPCRequestFactory.h | 76 -- .../Classes/SDLRPCRequestFactory.m | 279 ----- .../SmartDeviceLinkProxy/Classes/SDLRPCResponse.h | 17 - .../SmartDeviceLinkProxy/Classes/SDLRPCResponse.m | 63 - .../SmartDeviceLinkProxy/Classes/SDLSiphonServer.h | 19 - .../SmartDeviceLinkProxy/Classes/SDLSiphonServer.m | 470 -------- .../SmartDeviceLinkProxy/Classes/SDLTCPTransport.h | 12 - .../SmartDeviceLinkProxy/Classes/SDLTCPTransport.m | 115 -- .../Classes/SDLTTSChunkFactory.h | 14 - .../Classes/SDLTTSChunkFactory.m | 22 - .../Classes/SDLTransportListener.h | 13 - SDL_iOS/SmartDeviceLinkProxy/Classes/SDLVersion.h | 10 - .../SmartDeviceLinkProxy.xcodeproj/project.pbxproj | 1214 -------------------- .../project.xcworkspace/contents.xcworkspacedata | 7 - .../SmartDeviceLinkProxy_Prefix.pch | 7 - SDL_iOS/SmartDeviceLinkTester/Default-568h@2x.png | Bin 18594 -> 0 bytes .../project.pbxproj | 650 ----------- .../project.xcworkspace/contents.xcworkspacedata | 7 - .../AddCommandViewController.h | 24 - .../AddCommandViewController.m | 103 -- .../AddCommandViewController.xib | 572 --------- .../SmartDeviceLinkTester/AddMenuOption.h | 18 - .../SmartDeviceLinkTester/AddMenuOption.m | 22 - .../AddSubMenuViewController.h | 23 - .../AddSubMenuViewController.m | 72 -- .../AddSubMenuViewController.xib | 482 -------- .../SmartDeviceLinkTester/AlertViewController.h | 25 - .../SmartDeviceLinkTester/AlertViewController.m | 85 -- .../SmartDeviceLinkTester/AlertViewController.xib | 643 ----------- .../SmartDeviceLinkTester/AppDelegate.h | 30 - .../SmartDeviceLinkTester/AppDelegate.m | 112 -- .../SmartDeviceLinkTester/AutoTestViewController.h | 44 - .../SmartDeviceLinkTester/AutoTestViewController.m | 694 ----------- .../AutoTestViewController.xib | 445 ------- .../SmartDeviceLinkTester/Blank-Blackboard-PSD.png | Bin 134620 -> 0 bytes .../SmartDeviceLinkTester/ConsoleViewController.h | 18 - .../SmartDeviceLinkTester/ConsoleViewController.m | 81 -- .../ConsoleViewController.xib | 175 --- .../CreateInteractionChoiceSetViewController.h | 20 - .../CreateInteractionChoiceSetViewController.m | 81 -- .../CreateInteractionChoiceSetViewController.xib | 399 ------- .../DeleteCommandViewController.h | 18 - .../DeleteCommandViewController.m | 130 --- .../DeleteCommandViewController.xib | 177 --- .../DeleteInteractionChoiceSetViewController.h | 16 - .../DeleteInteractionChoiceSetViewController.m | 51 - .../DeleteInteractionChoiceSetViewController.xib | 293 ----- .../DeleteSubMenuViewController.h | 18 - .../DeleteSubMenuViewController.m | 106 -- .../DeleteSubMenuViewController.xib | 177 --- .../EncodedSyncPDataViewController.h | 14 - .../EncodedSyncPDataViewController.m | 60 - .../EncodedSyncPDataViewController.xib | 287 ----- .../PerformInteractionViewController.h | 30 - .../PerformInteractionViewController.m | 119 -- .../PerformInteractionViewController.xib | 988 ---------------- .../SmartDeviceLinkTester/RPCTestViewController.h | 50 - .../SmartDeviceLinkTester/RPCTestViewController.m | 195 ---- .../RPCTestViewController.xib | 113 -- .../ResetGlobalPropertiesViewController.h | 14 - .../ResetGlobalPropertiesViewController.m | 57 - .../ResetGlobalPropertiesViewController.xib | 230 ---- .../SmartDeviceLinkTester/SDLBrain.h | 58 - .../SmartDeviceLinkTester/SDLBrain.m | 420 ------- .../SmartDeviceLinkTester/Sail.mp3 | Bin 325507 -> 0 bytes .../SetGlobalPropertiesViewController.h | 17 - .../SetGlobalPropertiesViewController.m | 61 - .../SetGlobalPropertiesViewController.xib | 349 ------ .../SetMediaClockTimerViewController.h | 22 - .../SetMediaClockTimerViewController.m | 72 -- .../SetMediaClockTimerViewController.xib | 497 -------- .../Settings.bundle/Root.plist | 107 -- .../Settings.bundle/en.lproj/Root.strings | Bin 546 -> 0 bytes .../SmartDeviceLinkTester/ShowViewController.h | 22 - .../SmartDeviceLinkTester/ShowViewController.m | 72 -- .../SmartDeviceLinkTester/ShowViewController.xib | 680 ----------- .../SmartDeviceLinkTester-Info.plist | 97 -- .../SmartDeviceLinkTester-Prefix.pch | 10 - .../SmartDeviceLinkTester/SpeakViewController.h | 17 - .../SmartDeviceLinkTester/SpeakViewController.m | 67 -- .../SmartDeviceLinkTester/SpeakViewController.xib | 356 ------ .../SubscribeButtonViewController.h | 20 - .../SubscribeButtonViewController.m | 141 --- .../SubscribeButtonViewController.xib | 178 --- .../UnregisterAppInterfaceViewController.h | 13 - .../UnregisterAppInterfaceViewController.m | 46 - .../UnregisterAppInterfaceViewController.xib | 191 --- .../UnsubscribeButtonViewController.h | 15 - .../UnsubscribeButtonViewController.m | 140 --- .../UnsubscribeButtonViewController.xib | 176 --- .../SmartDeviceLinkTester/UserTestViewController.h | 27 - .../SmartDeviceLinkTester/UserTestViewController.m | 177 --- .../UserTestViewController.xib | 649 ----------- .../SmartDeviceLinkTester/arrow_down.png | Bin 1348 -> 0 bytes .../SmartDeviceLinkTester/arrow_up.png | Bin 1376 -> 0 bytes .../SmartDeviceLinkTester/arrow_up@2x.png | Bin 1650 -> 0 bytes .../SmartDeviceLinkTester/brief_case.png | Bin 1328 -> 0 bytes .../SmartDeviceLinkTester/cali_speak.jpg | Bin 5523 -> 0 bytes .../SmartDeviceLinkTester/cog_02.png | Bin 1878 -> 0 bytes .../SmartDeviceLinkTester/cog_02@2x.png | Bin 2905 -> 0 bytes .../SmartDeviceLinkTester/colorado_addcmd.jpg | Bin 6484 -> 0 bytes .../SmartDeviceLinkTester/database.png | Bin 1370 -> 0 bytes .../SmartDeviceLinkTester/delaware_show.jpg | Bin 5646 -> 0 bytes .../en.lproj/InfoPlist.strings | 2 - .../SmartDeviceLinkTester/eraser.png | Bin 6653 -> 0 bytes .../SmartDeviceLinkTester/game_controller.png | Bin 1659 -> 0 bytes .../SmartDeviceLinkTester/geogia_alert.jpg | Bin 4431 -> 0 bytes .../SmartDeviceLinkTester/main.m | 14 - .../SmartDeviceLinkTester/pause.png | Bin 1110 -> 0 bytes .../SmartDeviceLinkTester/play.png | Bin 1336 -> 0 bytes 323 files changed, 25203 deletions(-) delete mode 100644 SDL_iOS/SmartDeviceLink/SmartDeviceLink.xcodeproj/project.xcworkspace/xcshareddata/SmartDeviceLink.xccheckout delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/JSON.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/NSObject+SBJSON.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/NSObject+SBJSON.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/NSString+SBJSON.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/NSString+SBJSON.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommand.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommand.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommandResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommandResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenu.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenu.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenuResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenuResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlert.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlert.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlertResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlertResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAppInterfaceUnregisteredReason.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAppInterfaceUnregisteredReason.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAudioStreamingState.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAudioStreamingState.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonCapabilities.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonCapabilities.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonEventMode.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonEventMode.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonName.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonName.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonPressMode.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonPressMode.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCharacterSet.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCharacterSet.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLChoice.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLChoice.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSet.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSet.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSetResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSetResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommand.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommand.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommandResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommandResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSet.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSet.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSetResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSetResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenu.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenu.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenuResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenuResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayCapabilities.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayCapabilities.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayType.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayType.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDriverDistractionState.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDriverDistractionState.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPData.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPData.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPDataResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPDataResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGenericResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGenericResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGlobalProperty.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGlobalProperty.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMIZoneCapabilities.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMIZoneCapabilities.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLInteractionMode.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLInteractionMode.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMediaClockFormat.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMediaClockFormat.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMenuParams.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMenuParams.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMsgVersion.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMsgVersion.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnAppInterfaceUnregistered.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnAppInterfaceUnregistered.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonEvent.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonEvent.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonPress.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonPress.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnCommand.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnCommand.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnDriverDistraction.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnDriverDistraction.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnEncodedSyncPData.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnEncodedSyncPData.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnHMIStatus.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnHMIStatus.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnTBTClientState.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnTBTClientState.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteraction.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteraction.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteractionResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteractionResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterface.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterface.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterfaceResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterfaceResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalProperties.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalProperties.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalPropertiesResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalPropertiesResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResult.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResult.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalProperties.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalProperties.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalPropertiesResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalPropertiesResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimer.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimer.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimerResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimerResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShowResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShowResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeakResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeakResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeechCapabilities.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeechCapabilities.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLStartTime.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLStartTime.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButton.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButton.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButtonResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButtonResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSystemContext.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSystemContext.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextAlignment.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextAlignment.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextField.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextField.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextFieldName.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextFieldName.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTriggerSource.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTriggerSource.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterface.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterface.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterfaceResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterfaceResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButton.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButton.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButtonResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButtonResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUpdateMode.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUpdateMode.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLVRCapabilities.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLVRCapabilities.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonParser.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonParser.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonWriter.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonWriter.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractProtocol.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractProtocol.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractTransport.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractTransport.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLBitConverter.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLBitConverter.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLDebugTool.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLDebugTool.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIAPTransport.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIAPTransport.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIDecoder.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIEncoder.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIProtocol.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIProxy.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLITransport.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonDecoder.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonDecoder.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonEncoder.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonEncoder.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLNames.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeader.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeader.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeaderFactory.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeaderFactory.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolListener.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolMessage.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolMessage.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyFactory.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyFactory.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyListener.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCMessage.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCMessage.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCNotification.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCNotification.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequest.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequest.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequestFactory.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequestFactory.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCResponse.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCResponse.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLSiphonServer.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLSiphonServer.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTCPTransport.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTCPTransport.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTTSChunkFactory.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTTSChunkFactory.m delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTransportListener.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/Classes/SDLVersion.h delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy.xcodeproj/project.pbxproj delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy_Prefix.pch delete mode 100644 SDL_iOS/SmartDeviceLinkTester/Default-568h@2x.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester.xcodeproj/project.pbxproj delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddMenuOption.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddMenuOption.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AppDelegate.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AppDelegate.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Blank-Blackboard-PSD.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ConsoleViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ConsoleViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ConsoleViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SDLBrain.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SDLBrain.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Sail.mp3 delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Settings.bundle/Root.plist delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Settings.bundle/en.lproj/Root.strings delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SmartDeviceLinkTester-Info.plist delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SmartDeviceLinkTester-Prefix.pch delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.h delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.xib delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/arrow_down.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/arrow_up.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/arrow_up@2x.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/brief_case.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/cali_speak.jpg delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/cog_02.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/cog_02@2x.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/colorado_addcmd.jpg delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/database.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/delaware_show.jpg delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/en.lproj/InfoPlist.strings delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/eraser.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/game_controller.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/geogia_alert.jpg delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/main.m delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/pause.png delete mode 100644 SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/play.png diff --git a/SDL_iOS/SmartDeviceLink/SmartDeviceLink.xcodeproj/project.xcworkspace/xcshareddata/SmartDeviceLink.xccheckout b/SDL_iOS/SmartDeviceLink/SmartDeviceLink.xcodeproj/project.xcworkspace/xcshareddata/SmartDeviceLink.xccheckout deleted file mode 100644 index 3e636a7..0000000 --- a/SDL_iOS/SmartDeviceLink/SmartDeviceLink.xcodeproj/project.xcworkspace/xcshareddata/SmartDeviceLink.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - 09FC6942-44A2-49AD-B5EB-365E68ADFC4D - IDESourceControlProjectName - SmartDeviceLink - IDESourceControlProjectOriginsDictionary - - AA333426-E893-4A8E-B836-BF64F2CCF0EF - git://git.projects.genivi.org/smartdevicelink.git - - IDESourceControlProjectPath - SDL_iOS/SmartDeviceLink/SmartDeviceLink.xcodeproj/project.xcworkspace - IDESourceControlProjectRelativeInstallPathDictionary - - AA333426-E893-4A8E-B836-BF64F2CCF0EF - ../../../.. - - IDESourceControlProjectURL - git://git.projects.genivi.org/smartdevicelink.git - IDESourceControlProjectVersion - 110 - IDESourceControlProjectWCCIdentifier - AA333426-E893-4A8E-B836-BF64F2CCF0EF - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - AA333426-E893-4A8E-B836-BF64F2CCF0EF - IDESourceControlWCCName - smartdevicelink - - - - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/JSON.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/JSON.h deleted file mode 100644 index 1e58c9a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/JSON.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -/** - @mainpage A strict JSON parser and generator for Objective-C - - JSON (JavaScript Object Notation) is a lightweight data-interchange - format. This framework provides two apis for parsing and generating - JSON. One standard object-based and a higher level api consisting of - categories added to existing Objective-C classes. - - Learn more on the http://code.google.com/p/json-framework project site. - - This framework does its best to be as strict as possible, both in what it - accepts and what it generates. For example, it does not support trailing commas - in arrays or objects. Nor does it support embedded comments, or - anything else not in the JSON specification. This is considered a feature. - -*/ - -#import "SBJSON.h" -#import "NSObject+SBJSON.h" -#import "NSString+SBJSON.h" - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/NSObject+SBJSON.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/NSObject+SBJSON.h deleted file mode 100644 index ecf0ee4..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/NSObject+SBJSON.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import - - -/** - @brief Adds JSON generation to Foundation classes - - This is a category on NSObject that adds methods for returning JSON representations - of standard objects to the objects themselves. This means you can call the - -JSONRepresentation method on an NSArray object and it'll do what you want. - */ -@interface NSObject (NSObject_SBJSON) - -/** - @brief Returns a string containing the receiver encoded as a JSON fragment. - - This method is added as a category on NSObject but is only actually - supported for the following objects: - @li NSDictionary - @li NSArray - @li NSString - @li NSNumber (also used for booleans) - @li NSNull - - @deprecated Given we bill ourselves as a "strict" JSON library, this method should be removed. - */ -- (NSString *)JSONFragment; - -/** - @brief Returns a string containing the receiver encoded in JSON. - - This method is added as a category on NSObject but is only actually - supported for the following objects: - @li NSDictionary - @li NSArray - */ -- (NSString *)JSONRepresentation; - -@end - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/NSObject+SBJSON.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/NSObject+SBJSON.m deleted file mode 100644 index 20b084b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/NSObject+SBJSON.m +++ /dev/null @@ -1,53 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import "NSObject+SBJSON.h" -#import "SBJsonWriter.h" - -@implementation NSObject (NSObject_SBJSON) - -- (NSString *)JSONFragment { - SBJsonWriter *jsonWriter = [SBJsonWriter new]; - NSString *json = [jsonWriter stringWithFragment:self]; - if (!json) - NSLog(@"-JSONFragment failed. Error trace is: %@", [jsonWriter errorTrace]); - [jsonWriter release]; - return json; -} - -- (NSString *)JSONRepresentation { - SBJsonWriter *jsonWriter = [SBJsonWriter new]; - NSString *json = [jsonWriter stringWithObject:self]; - if (!json) - NSLog(@"-JSONRepresentation failed. Error trace is: %@", [jsonWriter errorTrace]); - [jsonWriter release]; - return json; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/NSString+SBJSON.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/NSString+SBJSON.h deleted file mode 100644 index fad7179..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/NSString+SBJSON.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import - -/** - @brief Adds JSON parsing methods to NSString - -This is a category on NSString that adds methods for parsing the target string. -*/ -@interface NSString (NSString_SBJSON) - - -/** - @brief Returns the object represented in the receiver, or nil on error. - - Returns a a scalar object represented by the string's JSON fragment representation. - - @deprecated Given we bill ourselves as a "strict" JSON library, this method should be removed. - */ -- (id)JSONFragmentValue; - -/** - @brief Returns the NSDictionary or NSArray represented by the current string's JSON representation. - - Returns the dictionary or array represented in the receiver, or nil on error. - - Returns the NSDictionary or NSArray represented by the current string's JSON representation. - */ -- (id)JSONValue; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/NSString+SBJSON.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/NSString+SBJSON.m deleted file mode 100644 index 41a5a85..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/NSString+SBJSON.m +++ /dev/null @@ -1,55 +0,0 @@ -/* - Copyright (C) 2007-2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import "NSString+SBJSON.h" -#import "SBJsonParser.h" - -@implementation NSString (NSString_SBJSON) - -- (id)JSONFragmentValue -{ - SBJsonParser *jsonParser = [SBJsonParser new]; - id repr = [jsonParser fragmentWithString:self]; - if (!repr) - NSLog(@"-JSONFragmentValue failed. Error trace is: %@", [jsonParser errorTrace]); - [jsonParser release]; - return repr; -} - -- (id)JSONValue -{ - SBJsonParser *jsonParser = [SBJsonParser new]; - id repr = [jsonParser objectWithString:self]; - if (!repr) - NSLog(@"-JSONValue failed. Error trace is: %@", [jsonParser errorTrace]); - [jsonParser release]; - return repr; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommand.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommand.h deleted file mode 100644 index a3a8237..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommand.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLMenuParams.h" - -@interface SDLAddCommand : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* cmdID; -@property(assign) SDLMenuParams* menuParams; -@property(assign) NSMutableArray* vrCommands; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommand.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommand.m deleted file mode 100644 index 41c4d73..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommand.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAddCommand.h" -#import "SDLNames.h" - -@implementation SDLAddCommand - --(id) init { - if (self = [super initWithName:NAMES_AddCommand]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setCmdID:(NSNumber*) cmdID { - if (cmdID != nil) { - [parameters setObject:cmdID forKey:NAMES_cmdID]; - } else { - [parameters removeObjectForKey:NAMES_cmdID]; - } -} - --(NSNumber*) cmdID { - return [parameters objectForKey:NAMES_cmdID]; -} - --(void) setMenuParams:(SDLMenuParams*) menuParams { - if (menuParams != nil) { - [parameters setObject:menuParams forKey:NAMES_menuParams]; - } else { - [parameters removeObjectForKey:NAMES_menuParams]; - } -} - --(SDLMenuParams*) menuParams { - NSObject* obj = [parameters objectForKey:NAMES_menuParams]; - if ([obj isKindOfClass:SDLMenuParams.class]) { - return (SDLMenuParams*)obj; - } else { - return [[[SDLMenuParams alloc] initWithDictionary:(NSMutableDictionary*)obj] autorelease]; - } -} - --(void) setVrCommands:(NSMutableArray*) vrCommands { - if (vrCommands != nil) { - [parameters setObject:vrCommands forKey:NAMES_vrCommands]; - } else { - [parameters removeObjectForKey:NAMES_vrCommands]; - } -} - --(NSMutableArray*) vrCommands { - return [parameters objectForKey:NAMES_vrCommands]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommandResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommandResponse.h deleted file mode 100644 index 8c8247f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommandResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLAddCommandResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommandResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommandResponse.m deleted file mode 100644 index 7b22565..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddCommandResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAddCommandResponse.h" -#import "SDLNames.h" - -@implementation SDLAddCommandResponse - --(id) init { - if (self = [super initWithName:NAMES_AddCommand]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenu.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenu.h deleted file mode 100644 index 4f2df07..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenu.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - - -@interface SDLAddSubMenu : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* menuID; -@property(assign) NSNumber* position; -@property(assign) NSString* menuName; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenu.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenu.m deleted file mode 100644 index 9189032..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenu.m +++ /dev/null @@ -1,56 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAddSubMenu.h" -#import "SDLNames.h" - -@implementation SDLAddSubMenu - --(id) init { - if (self = [super initWithName:NAMES_AddSubMenu]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setMenuID:(NSNumber*) menuID { - if (menuID != nil) { - [parameters setObject:menuID forKey:NAMES_menuID]; - } else { - [parameters removeObjectForKey:NAMES_menuID]; - } -} - --(NSNumber*) menuID { - return [parameters objectForKey:NAMES_menuID]; -} - --(void) setPosition:(NSNumber*) position { - if (position != nil) { - [parameters setObject:position forKey:NAMES_position]; - } else { - [parameters removeObjectForKey:NAMES_position]; - } -} - --(NSNumber*) position { - return [parameters objectForKey:NAMES_position]; -} - --(void) setMenuName:(NSString*) menuName { - if (menuName != nil) { - [parameters setObject:menuName forKey:NAMES_menuName]; - } else { - [parameters removeObjectForKey:NAMES_menuName]; - } -} - --(NSString*) menuName { - return [parameters objectForKey:NAMES_menuName]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenuResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenuResponse.h deleted file mode 100644 index d86d19f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenuResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLAddSubMenuResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenuResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenuResponse.m deleted file mode 100644 index ac10e73..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAddSubMenuResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAddSubMenuResponse.h" -#import "SDLNames.h" - -@implementation SDLAddSubMenuResponse - --(id) init { - if (self = [super initWithName:NAMES_AddSubMenu]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlert.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlert.h deleted file mode 100644 index 3c2313b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlert.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLTTSChunk.h" - -@interface SDLAlert : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSString* alertText1; -@property(assign) NSString* alertText2; -@property(assign) NSMutableArray* ttsChunks; -@property(assign) NSNumber* duration; -@property(assign) NSNumber* playTone; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlert.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlert.m deleted file mode 100644 index 13a8a40..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlert.m +++ /dev/null @@ -1,89 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAlert.h" -#import "SDLNames.h" - -@implementation SDLAlert - --(id) init { - if (self = [super initWithName:NAMES_Alert]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setAlertText1:(NSString*) alertText1 { - if (alertText1 != nil) { - [parameters setObject:alertText1 forKey:NAMES_alertText1]; - } else { - [parameters removeObjectForKey:NAMES_alertText1]; - } -} - --(NSString*) alertText1 { - return [parameters objectForKey:NAMES_alertText1]; -} - --(void) setAlertText2:(NSString*) alertText2 { - if (alertText2 != nil) { - [parameters setObject:alertText2 forKey:NAMES_alertText2]; - } else { - [parameters removeObjectForKey:NAMES_alertText2]; - } -} - --(NSString*) alertText2 { - return [parameters objectForKey:NAMES_alertText2]; -} - --(void) setTtsChunks:(NSMutableArray*) ttsChunks { - if (ttsChunks != nil) { - [parameters setObject:ttsChunks forKey:NAMES_ttsChunks]; - } else { - [parameters removeObjectForKey:NAMES_ttsChunks]; - } -} - --(NSMutableArray*) ttsChunks { - NSMutableArray* array = [parameters objectForKey:NAMES_ttsChunks]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLTTSChunk.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLTTSChunk alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - --(void) setDuration:(NSNumber*) duration { - if (duration != nil) { - [parameters setObject:duration forKey:NAMES_duration]; - } else { - [parameters removeObjectForKey:NAMES_duration]; - } -} - --(NSNumber*) duration { - return [parameters objectForKey:NAMES_duration]; -} - --(void) setPlayTone:(NSNumber*) playTone { - if (playTone != nil) { - [parameters setObject:playTone forKey:NAMES_playTone]; - } else { - [parameters removeObjectForKey:NAMES_playTone]; - } -} - --(NSNumber*) playTone { - return [parameters objectForKey:NAMES_playTone]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlertResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlertResponse.h deleted file mode 100644 index 3cd96fb..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlertResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLAlertResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlertResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlertResponse.m deleted file mode 100644 index 86c2b5f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAlertResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAlertResponse.h" -#import "SDLNames.h" - -@implementation SDLAlertResponse - --(id) init { - if (self = [super initWithName:NAMES_Alert]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAppInterfaceUnregisteredReason.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAppInterfaceUnregisteredReason.h deleted file mode 100644 index 851188d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAppInterfaceUnregisteredReason.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLAppInterfaceUnregisteredReason : SDLEnum {} - -+(SDLAppInterfaceUnregisteredReason*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLAppInterfaceUnregisteredReason*) USER_EXIT; -+(SDLAppInterfaceUnregisteredReason*) IGNITION_OFF; -+(SDLAppInterfaceUnregisteredReason*) BLUETOOTH_OFF; -+(SDLAppInterfaceUnregisteredReason*) USB_DISCONNECTED; -+(SDLAppInterfaceUnregisteredReason*) REQUEST_WHILE_IN_NONE_HMI_LEVEL; -+(SDLAppInterfaceUnregisteredReason*) TOO_MANY_REQUESTS; -+(SDLAppInterfaceUnregisteredReason*) DRIVER_DISTRACTION_VIOLATION; -+(SDLAppInterfaceUnregisteredReason*) LANGUAGE_CHANGE; -+(SDLAppInterfaceUnregisteredReason*) MASTER_RESET; -+(SDLAppInterfaceUnregisteredReason*) FACTORY_DEFAULTS; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAppInterfaceUnregisteredReason.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAppInterfaceUnregisteredReason.m deleted file mode 100644 index 1e71380..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAppInterfaceUnregisteredReason.m +++ /dev/null @@ -1,118 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAppInterfaceUnregisteredReason.h" - -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_USER_EXIT = nil; -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_IGNITION_OFF = nil; -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_BLUETOOTH_OFF = nil; -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_USB_DISCONNECTED = nil; -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_REQUEST_WHILE_IN_NONE_HMI_LEVEL = nil; -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_TOO_MANY_REQUESTS = nil; -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_DRIVER_DISTRACTION_VIOLATION = nil; -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_LANGUAGE_CHANGE = nil; -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_MASTER_RESET = nil; -SDLAppInterfaceUnregisteredReason* SDLAppInterfaceUnregisteredReason_FACTORY_DEFAULTS = nil; - -NSMutableArray* SDLAppInterfaceUnregisteredReason_values = nil; -@implementation SDLAppInterfaceUnregisteredReason - -+(SDLAppInterfaceUnregisteredReason*) valueOf:(NSString*) value { - for (SDLAppInterfaceUnregisteredReason* item in SDLAppInterfaceUnregisteredReason.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLAppInterfaceUnregisteredReason_values == nil) { - SDLAppInterfaceUnregisteredReason_values = [[NSMutableArray alloc] initWithObjects: - SDLAppInterfaceUnregisteredReason.USER_EXIT, - SDLAppInterfaceUnregisteredReason.IGNITION_OFF, - SDLAppInterfaceUnregisteredReason.BLUETOOTH_OFF, - SDLAppInterfaceUnregisteredReason.USB_DISCONNECTED, - SDLAppInterfaceUnregisteredReason.REQUEST_WHILE_IN_NONE_HMI_LEVEL, - SDLAppInterfaceUnregisteredReason.TOO_MANY_REQUESTS, - SDLAppInterfaceUnregisteredReason.DRIVER_DISTRACTION_VIOLATION, - SDLAppInterfaceUnregisteredReason.LANGUAGE_CHANGE, - SDLAppInterfaceUnregisteredReason.MASTER_RESET, - SDLAppInterfaceUnregisteredReason.FACTORY_DEFAULTS, - nil]; - } - return SDLAppInterfaceUnregisteredReason_values; -} - -+(SDLAppInterfaceUnregisteredReason*) USER_EXIT { - if (SDLAppInterfaceUnregisteredReason_USER_EXIT == nil) { - SDLAppInterfaceUnregisteredReason_USER_EXIT = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"USER_EXIT"]; - } - return SDLAppInterfaceUnregisteredReason_USER_EXIT; -} - -+(SDLAppInterfaceUnregisteredReason*) IGNITION_OFF { - if (SDLAppInterfaceUnregisteredReason_IGNITION_OFF == nil) { - SDLAppInterfaceUnregisteredReason_IGNITION_OFF = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"IGNITION_OFF"]; - } - return SDLAppInterfaceUnregisteredReason_IGNITION_OFF; -} - -+(SDLAppInterfaceUnregisteredReason*) BLUETOOTH_OFF { - if (SDLAppInterfaceUnregisteredReason_BLUETOOTH_OFF == nil) { - SDLAppInterfaceUnregisteredReason_BLUETOOTH_OFF = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"BLUETOOTH_OFF"]; - } - return SDLAppInterfaceUnregisteredReason_BLUETOOTH_OFF; -} - -+(SDLAppInterfaceUnregisteredReason*) USB_DISCONNECTED { - if (SDLAppInterfaceUnregisteredReason_USB_DISCONNECTED == nil) { - SDLAppInterfaceUnregisteredReason_USB_DISCONNECTED = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"USB_DISCONNECTED"]; - } - return SDLAppInterfaceUnregisteredReason_USB_DISCONNECTED; -} - -+(SDLAppInterfaceUnregisteredReason*) REQUEST_WHILE_IN_NONE_HMI_LEVEL { - if (SDLAppInterfaceUnregisteredReason_REQUEST_WHILE_IN_NONE_HMI_LEVEL == nil) { - SDLAppInterfaceUnregisteredReason_REQUEST_WHILE_IN_NONE_HMI_LEVEL = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"REQUEST_WHILE_IN_NONE_HMI_LEVEL"]; - } - return SDLAppInterfaceUnregisteredReason_REQUEST_WHILE_IN_NONE_HMI_LEVEL; -} - -+(SDLAppInterfaceUnregisteredReason*) TOO_MANY_REQUESTS { - if (SDLAppInterfaceUnregisteredReason_TOO_MANY_REQUESTS == nil) { - SDLAppInterfaceUnregisteredReason_TOO_MANY_REQUESTS = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"TOO_MANY_REQUESTS"]; - } - return SDLAppInterfaceUnregisteredReason_TOO_MANY_REQUESTS; -} - -+(SDLAppInterfaceUnregisteredReason*) DRIVER_DISTRACTION_VIOLATION { - if (SDLAppInterfaceUnregisteredReason_DRIVER_DISTRACTION_VIOLATION == nil) { - SDLAppInterfaceUnregisteredReason_DRIVER_DISTRACTION_VIOLATION = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"DRIVER_DISTRACTION_VIOLATION"]; - } - return SDLAppInterfaceUnregisteredReason_DRIVER_DISTRACTION_VIOLATION; -} - -+(SDLAppInterfaceUnregisteredReason*) LANGUAGE_CHANGE { - if (SDLAppInterfaceUnregisteredReason_LANGUAGE_CHANGE == nil) { - SDLAppInterfaceUnregisteredReason_LANGUAGE_CHANGE = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"LANGUAGE_CHANGE"]; - } - return SDLAppInterfaceUnregisteredReason_LANGUAGE_CHANGE; -} - -+(SDLAppInterfaceUnregisteredReason*) MASTER_RESET { - if (SDLAppInterfaceUnregisteredReason_MASTER_RESET == nil) { - SDLAppInterfaceUnregisteredReason_MASTER_RESET = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"MASTER_RESET"]; - } - return SDLAppInterfaceUnregisteredReason_MASTER_RESET; -} - -+(SDLAppInterfaceUnregisteredReason*) FACTORY_DEFAULTS { - if (SDLAppInterfaceUnregisteredReason_FACTORY_DEFAULTS == nil) { - SDLAppInterfaceUnregisteredReason_FACTORY_DEFAULTS = [[SDLAppInterfaceUnregisteredReason alloc] initWithValue:@"FACTORY_DEFAULTS"]; - } - return SDLAppInterfaceUnregisteredReason_FACTORY_DEFAULTS; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAudioStreamingState.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAudioStreamingState.h deleted file mode 100644 index af4bf53..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAudioStreamingState.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLAudioStreamingState : SDLEnum {} - -+(SDLAudioStreamingState*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLAudioStreamingState*) AUDIBLE; -+(SDLAudioStreamingState*) NOT_AUDIBLE; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAudioStreamingState.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAudioStreamingState.m deleted file mode 100644 index fee5a4b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLAudioStreamingState.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAudioStreamingState.h" - -SDLAudioStreamingState* SDLAudioStreamingState_AUDIBLE = nil; -SDLAudioStreamingState* SDLAudioStreamingState_NOT_AUDIBLE = nil; - -NSMutableArray* SDLAudioStreamingState_values = nil; -@implementation SDLAudioStreamingState - -+(SDLAudioStreamingState*) valueOf:(NSString*) value { - for (SDLAudioStreamingState* item in SDLAudioStreamingState.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLAudioStreamingState_values == nil) { - SDLAudioStreamingState_values = [[NSMutableArray alloc] initWithObjects: - SDLAudioStreamingState.AUDIBLE, - SDLAudioStreamingState.NOT_AUDIBLE, - nil]; - } - return SDLAudioStreamingState_values; -} - -+(SDLAudioStreamingState*) AUDIBLE { - if (SDLAudioStreamingState_AUDIBLE == nil) { - SDLAudioStreamingState_AUDIBLE = [[SDLAudioStreamingState alloc] initWithValue:@"AUDIBLE"]; - } - return SDLAudioStreamingState_AUDIBLE; -} - -+(SDLAudioStreamingState*) NOT_AUDIBLE { - if (SDLAudioStreamingState_NOT_AUDIBLE == nil) { - SDLAudioStreamingState_NOT_AUDIBLE = [[SDLAudioStreamingState alloc] initWithValue:@"NOT_AUDIBLE"]; - } - return SDLAudioStreamingState_NOT_AUDIBLE; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonCapabilities.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonCapabilities.h deleted file mode 100644 index f78243b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonCapabilities.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - -#import "SDLButtonName.h" - -@interface SDLButtonCapabilities : SDLRPCStruct {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLButtonName* name; -@property(assign) NSNumber* shortPressAvailable; -@property(assign) NSNumber* longPressAvailable; -@property(assign) NSNumber* upDownAvailable; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonCapabilities.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonCapabilities.m deleted file mode 100644 index 76b236b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonCapabilities.m +++ /dev/null @@ -1,73 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLButtonCapabilities.h" -#import "SDLNames.h" - -@implementation SDLButtonCapabilities - --(id) init { - if (self = [super init]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setName:(SDLButtonName*) name { - if (name != nil) { - [store setObject:name forKey:NAMES_name]; - } else { - [store removeObjectForKey:NAMES_name]; - } -} - --(SDLButtonName*) name { - NSObject* obj = [store objectForKey:NAMES_name]; - if ([obj isKindOfClass:SDLButtonName.class]) { - return (SDLButtonName*)obj; - } else { - return [SDLButtonName valueOf:(NSString*)obj]; - } -} - --(void) setShortPressAvailable:(NSNumber*) shortPressAvailable { - if (shortPressAvailable != nil) { - [store setObject:shortPressAvailable forKey:NAMES_shortPressAvailable]; - } else { - [store removeObjectForKey:NAMES_shortPressAvailable]; - } -} - --(NSNumber*) shortPressAvailable { - return [store objectForKey:NAMES_shortPressAvailable]; -} - --(void) setLongPressAvailable:(NSNumber*) longPressAvailable { - if (longPressAvailable != nil) { - [store setObject:longPressAvailable forKey:NAMES_longPressAvailable]; - } else { - [store removeObjectForKey:NAMES_longPressAvailable]; - } -} - --(NSNumber*) longPressAvailable { - return [store objectForKey:NAMES_longPressAvailable]; -} - --(void) setUpDownAvailable:(NSNumber*) upDownAvailable { - if (upDownAvailable != nil) { - [store setObject:upDownAvailable forKey:NAMES_upDownAvailable]; - } else { - [store removeObjectForKey:NAMES_upDownAvailable]; - } -} - --(NSNumber*) upDownAvailable { - return [store objectForKey:NAMES_upDownAvailable]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonEventMode.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonEventMode.h deleted file mode 100644 index 8f001dd..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonEventMode.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLButtonEventMode : SDLEnum {} - -+(SDLButtonEventMode*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLButtonEventMode*) BUTTONUP; -+(SDLButtonEventMode*) BUTTONDOWN; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonEventMode.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonEventMode.m deleted file mode 100644 index e1989f5..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonEventMode.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLButtonEventMode.h" - -SDLButtonEventMode* SDLButtonEventMode_BUTTONUP = nil; -SDLButtonEventMode* SDLButtonEventMode_BUTTONDOWN = nil; - -NSMutableArray* SDLButtonEventMode_values = nil; -@implementation SDLButtonEventMode - -+(SDLButtonEventMode*) valueOf:(NSString*) value { - for (SDLButtonEventMode* item in SDLButtonEventMode.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLButtonEventMode_values == nil) { - SDLButtonEventMode_values = [[NSMutableArray alloc] initWithObjects: - SDLButtonEventMode.BUTTONUP, - SDLButtonEventMode.BUTTONDOWN, - nil]; - } - return SDLButtonEventMode_values; -} - -+(SDLButtonEventMode*) BUTTONUP { - if (SDLButtonEventMode_BUTTONUP == nil) { - SDLButtonEventMode_BUTTONUP = [[SDLButtonEventMode alloc] initWithValue:@"BUTTONUP"]; - } - return SDLButtonEventMode_BUTTONUP; -} - -+(SDLButtonEventMode*) BUTTONDOWN { - if (SDLButtonEventMode_BUTTONDOWN == nil) { - SDLButtonEventMode_BUTTONDOWN = [[SDLButtonEventMode alloc] initWithValue:@"BUTTONDOWN"]; - } - return SDLButtonEventMode_BUTTONDOWN; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonName.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonName.h deleted file mode 100644 index 4556042..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonName.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLButtonName : SDLEnum {} - -+(SDLButtonName*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLButtonName*) OK; -+(SDLButtonName*) SEEKLEFT; -+(SDLButtonName*) SEEKRIGHT; -+(SDLButtonName*) TUNEUP; -+(SDLButtonName*) TUNEDOWN; -+(SDLButtonName*) PRESET_0; -+(SDLButtonName*) PRESET_1; -+(SDLButtonName*) PRESET_2; -+(SDLButtonName*) PRESET_3; -+(SDLButtonName*) PRESET_4; -+(SDLButtonName*) PRESET_5; -+(SDLButtonName*) PRESET_6; -+(SDLButtonName*) PRESET_7; -+(SDLButtonName*) PRESET_8; -+(SDLButtonName*) PRESET_9; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonName.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonName.m deleted file mode 100644 index 7e35b86..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonName.m +++ /dev/null @@ -1,163 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLButtonName.h" - -SDLButtonName* SDLButtonName_OK = nil; -SDLButtonName* SDLButtonName_SEEKLEFT = nil; -SDLButtonName* SDLButtonName_SEEKRIGHT = nil; -SDLButtonName* SDLButtonName_TUNEUP = nil; -SDLButtonName* SDLButtonName_TUNEDOWN = nil; -SDLButtonName* SDLButtonName_PRESET_0 = nil; -SDLButtonName* SDLButtonName_PRESET_1 = nil; -SDLButtonName* SDLButtonName_PRESET_2 = nil; -SDLButtonName* SDLButtonName_PRESET_3 = nil; -SDLButtonName* SDLButtonName_PRESET_4 = nil; -SDLButtonName* SDLButtonName_PRESET_5 = nil; -SDLButtonName* SDLButtonName_PRESET_6 = nil; -SDLButtonName* SDLButtonName_PRESET_7 = nil; -SDLButtonName* SDLButtonName_PRESET_8 = nil; -SDLButtonName* SDLButtonName_PRESET_9 = nil; - -NSMutableArray* SDLButtonName_values = nil; -@implementation SDLButtonName - -+(SDLButtonName*) valueOf:(NSString*) value { - for (SDLButtonName* item in SDLButtonName.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLButtonName_values == nil) { - SDLButtonName_values = [[NSMutableArray alloc] initWithObjects: - SDLButtonName.OK, - SDLButtonName.SEEKLEFT, - SDLButtonName.SEEKRIGHT, - SDLButtonName.TUNEUP, - SDLButtonName.TUNEDOWN, - SDLButtonName.PRESET_0, - SDLButtonName.PRESET_1, - SDLButtonName.PRESET_2, - SDLButtonName.PRESET_3, - SDLButtonName.PRESET_4, - SDLButtonName.PRESET_5, - SDLButtonName.PRESET_6, - SDLButtonName.PRESET_7, - SDLButtonName.PRESET_8, - SDLButtonName.PRESET_9, - nil]; - } - return SDLButtonName_values; -} - -+(SDLButtonName*) OK { - if (SDLButtonName_OK == nil) { - SDLButtonName_OK = [[SDLButtonName alloc] initWithValue:@"OK"]; - } - return SDLButtonName_OK; -} - -+(SDLButtonName*) SEEKLEFT { - if (SDLButtonName_SEEKLEFT == nil) { - SDLButtonName_SEEKLEFT = [[SDLButtonName alloc] initWithValue:@"SEEKLEFT"]; - } - return SDLButtonName_SEEKLEFT; -} - -+(SDLButtonName*) SEEKRIGHT { - if (SDLButtonName_SEEKRIGHT == nil) { - SDLButtonName_SEEKRIGHT = [[SDLButtonName alloc] initWithValue:@"SEEKRIGHT"]; - } - return SDLButtonName_SEEKRIGHT; -} - -+(SDLButtonName*) TUNEUP { - if (SDLButtonName_TUNEUP == nil) { - SDLButtonName_TUNEUP = [[SDLButtonName alloc] initWithValue:@"TUNEUP"]; - } - return SDLButtonName_TUNEUP; -} - -+(SDLButtonName*) TUNEDOWN { - if (SDLButtonName_TUNEDOWN == nil) { - SDLButtonName_TUNEDOWN = [[SDLButtonName alloc] initWithValue:@"TUNEDOWN"]; - } - return SDLButtonName_TUNEDOWN; -} - -+(SDLButtonName*) PRESET_0 { - if (SDLButtonName_PRESET_0 == nil) { - SDLButtonName_PRESET_0 = [[SDLButtonName alloc] initWithValue:@"PRESET_0"]; - } - return SDLButtonName_PRESET_0; -} - -+(SDLButtonName*) PRESET_1 { - if (SDLButtonName_PRESET_1 == nil) { - SDLButtonName_PRESET_1 = [[SDLButtonName alloc] initWithValue:@"PRESET_1"]; - } - return SDLButtonName_PRESET_1; -} - -+(SDLButtonName*) PRESET_2 { - if (SDLButtonName_PRESET_2 == nil) { - SDLButtonName_PRESET_2 = [[SDLButtonName alloc] initWithValue:@"PRESET_2"]; - } - return SDLButtonName_PRESET_2; -} - -+(SDLButtonName*) PRESET_3 { - if (SDLButtonName_PRESET_3 == nil) { - SDLButtonName_PRESET_3 = [[SDLButtonName alloc] initWithValue:@"PRESET_3"]; - } - return SDLButtonName_PRESET_3; -} - -+(SDLButtonName*) PRESET_4 { - if (SDLButtonName_PRESET_4 == nil) { - SDLButtonName_PRESET_4 = [[SDLButtonName alloc] initWithValue:@"PRESET_4"]; - } - return SDLButtonName_PRESET_4; -} - -+(SDLButtonName*) PRESET_5 { - if (SDLButtonName_PRESET_5 == nil) { - SDLButtonName_PRESET_5 = [[SDLButtonName alloc] initWithValue:@"PRESET_5"]; - } - return SDLButtonName_PRESET_5; -} - -+(SDLButtonName*) PRESET_6 { - if (SDLButtonName_PRESET_6 == nil) { - SDLButtonName_PRESET_6 = [[SDLButtonName alloc] initWithValue:@"PRESET_6"]; - } - return SDLButtonName_PRESET_6; -} - -+(SDLButtonName*) PRESET_7 { - if (SDLButtonName_PRESET_7 == nil) { - SDLButtonName_PRESET_7 = [[SDLButtonName alloc] initWithValue:@"PRESET_7"]; - } - return SDLButtonName_PRESET_7; -} - -+(SDLButtonName*) PRESET_8 { - if (SDLButtonName_PRESET_8 == nil) { - SDLButtonName_PRESET_8 = [[SDLButtonName alloc] initWithValue:@"PRESET_8"]; - } - return SDLButtonName_PRESET_8; -} - -+(SDLButtonName*) PRESET_9 { - if (SDLButtonName_PRESET_9 == nil) { - SDLButtonName_PRESET_9 = [[SDLButtonName alloc] initWithValue:@"PRESET_9"]; - } - return SDLButtonName_PRESET_9; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonPressMode.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonPressMode.h deleted file mode 100644 index 40891e0..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonPressMode.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLButtonPressMode : SDLEnum {} - -+(SDLButtonPressMode*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLButtonPressMode*) LONG; -+(SDLButtonPressMode*) SHORT; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonPressMode.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonPressMode.m deleted file mode 100644 index 7c0719c..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLButtonPressMode.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLButtonPressMode.h" - -SDLButtonPressMode* SDLButtonPressMode_LONG = nil; -SDLButtonPressMode* SDLButtonPressMode_SHORT = nil; - -NSMutableArray* SDLButtonPressMode_values = nil; -@implementation SDLButtonPressMode - -+(SDLButtonPressMode*) valueOf:(NSString*) value { - for (SDLButtonPressMode* item in SDLButtonPressMode.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLButtonPressMode_values == nil) { - SDLButtonPressMode_values = [[NSMutableArray alloc] initWithObjects: - SDLButtonPressMode.LONG, - SDLButtonPressMode.SHORT, - nil]; - } - return SDLButtonPressMode_values; -} - -+(SDLButtonPressMode*) LONG { - if (SDLButtonPressMode_LONG == nil) { - SDLButtonPressMode_LONG = [[SDLButtonPressMode alloc] initWithValue:@"LONG"]; - } - return SDLButtonPressMode_LONG; -} - -+(SDLButtonPressMode*) SHORT { - if (SDLButtonPressMode_SHORT == nil) { - SDLButtonPressMode_SHORT = [[SDLButtonPressMode alloc] initWithValue:@"SHORT"]; - } - return SDLButtonPressMode_SHORT; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCharacterSet.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCharacterSet.h deleted file mode 100644 index 048aaf0..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCharacterSet.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLCharacterSet : SDLEnum {} - -+(SDLCharacterSet*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLCharacterSet*) TYPE2SET; -+(SDLCharacterSet*) TYPE5SET; -+(SDLCharacterSet*) CID1SET; -+(SDLCharacterSet*) CID2SET; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCharacterSet.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCharacterSet.m deleted file mode 100644 index 03ff2d4..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCharacterSet.m +++ /dev/null @@ -1,64 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLCharacterSet.h" - -SDLCharacterSet* SDLCharacterSet_TYPE2SET = nil; -SDLCharacterSet* SDLCharacterSet_TYPE5SET = nil; -SDLCharacterSet* SDLCharacterSet_CID1SET = nil; -SDLCharacterSet* SDLCharacterSet_CID2SET = nil; - -NSMutableArray* SDLCharacterSet_values = nil; -@implementation SDLCharacterSet - -+(SDLCharacterSet*) valueOf:(NSString*) value { - for (SDLCharacterSet* item in SDLCharacterSet.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLCharacterSet_values == nil) { - SDLCharacterSet_values = [[NSMutableArray alloc] initWithObjects: - SDLCharacterSet.TYPE2SET, - SDLCharacterSet.TYPE5SET, - SDLCharacterSet.CID1SET, - SDLCharacterSet.CID2SET, - nil]; - } - return SDLCharacterSet_values; -} - -+(SDLCharacterSet*) TYPE2SET { - if (SDLCharacterSet_TYPE2SET == nil) { - SDLCharacterSet_TYPE2SET = [[SDLCharacterSet alloc] initWithValue:@"TYPE2SET"]; - } - return SDLCharacterSet_TYPE2SET; -} - -+(SDLCharacterSet*) TYPE5SET { - if (SDLCharacterSet_TYPE5SET == nil) { - SDLCharacterSet_TYPE5SET = [[SDLCharacterSet alloc] initWithValue:@"TYPE5SET"]; - } - return SDLCharacterSet_TYPE5SET; -} - -+(SDLCharacterSet*) CID1SET { - if (SDLCharacterSet_CID1SET == nil) { - SDLCharacterSet_CID1SET = [[SDLCharacterSet alloc] initWithValue:@"CID1SET"]; - } - return SDLCharacterSet_CID1SET; -} - -+(SDLCharacterSet*) CID2SET { - if (SDLCharacterSet_CID2SET == nil) { - SDLCharacterSet_CID2SET = [[SDLCharacterSet alloc] initWithValue:@"CID2SET"]; - } - return SDLCharacterSet_CID2SET; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLChoice.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLChoice.h deleted file mode 100644 index 85cdb22..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLChoice.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - - -@interface SDLChoice : SDLRPCStruct {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* choiceID; -@property(assign) NSString* menuName; -@property(assign) NSMutableArray* vrCommands; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLChoice.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLChoice.m deleted file mode 100644 index 20d5b17..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLChoice.m +++ /dev/null @@ -1,56 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLChoice.h" -#import "SDLNames.h" - -@implementation SDLChoice - --(id) init { - if (self = [super init]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setChoiceID:(NSNumber*) choiceID { - if (choiceID != nil) { - [store setObject:choiceID forKey:NAMES_choiceID]; - } else { - [store removeObjectForKey:NAMES_choiceID]; - } -} - --(NSNumber*) choiceID { - return [store objectForKey:NAMES_choiceID]; -} - --(void) setMenuName:(NSString*) menuName { - if (menuName != nil) { - [store setObject:menuName forKey:NAMES_menuName]; - } else { - [store removeObjectForKey:NAMES_menuName]; - } -} - --(NSString*) menuName { - return [store objectForKey:NAMES_menuName]; -} - --(void) setVrCommands:(NSMutableArray*) vrCommands { - if (vrCommands != nil) { - [store setObject:vrCommands forKey:NAMES_vrCommands]; - } else { - [store removeObjectForKey:NAMES_vrCommands]; - } -} - --(NSMutableArray*) vrCommands { - return [store objectForKey:NAMES_vrCommands]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSet.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSet.h deleted file mode 100644 index b2d83cc..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSet.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLChoice.h" - -@interface SDLCreateInteractionChoiceSet : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* interactionChoiceSetID; -@property(assign) NSMutableArray* choiceSet; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSet.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSet.m deleted file mode 100644 index dadccb7..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSet.m +++ /dev/null @@ -1,53 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLCreateInteractionChoiceSet.h" -#import "SDLNames.h" - -@implementation SDLCreateInteractionChoiceSet - --(id) init { - if (self = [super initWithName:NAMES_CreateInteractionChoiceSet]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setInteractionChoiceSetID:(NSNumber*) interactionChoiceSetID { - if (interactionChoiceSetID != nil) { - [parameters setObject:interactionChoiceSetID forKey:NAMES_interactionChoiceSetID]; - } else { - [parameters removeObjectForKey:NAMES_interactionChoiceSetID]; - } -} - --(NSNumber*) interactionChoiceSetID { - return [parameters objectForKey:NAMES_interactionChoiceSetID]; -} - --(void) setChoiceSet:(NSMutableArray*) choiceSet { - if (choiceSet != nil) { - [parameters setObject:choiceSet forKey:NAMES_choiceSet]; - } else { - [parameters removeObjectForKey:NAMES_choiceSet]; - } -} - --(NSMutableArray*) choiceSet { - NSMutableArray* array = [parameters objectForKey:NAMES_choiceSet]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLChoice.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLChoice alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSetResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSetResponse.h deleted file mode 100644 index b9c2bb2..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSetResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLCreateInteractionChoiceSetResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSetResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSetResponse.m deleted file mode 100644 index dae54fb..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLCreateInteractionChoiceSetResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLCreateInteractionChoiceSetResponse.h" -#import "SDLNames.h" - -@implementation SDLCreateInteractionChoiceSetResponse - --(id) init { - if (self = [super initWithName:NAMES_CreateInteractionChoiceSet]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommand.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommand.h deleted file mode 100644 index c9630c0..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommand.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - - -@interface SDLDeleteCommand : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* cmdID; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommand.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommand.m deleted file mode 100644 index 99225e4..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommand.m +++ /dev/null @@ -1,32 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDeleteCommand.h" -#import "SDLNames.h" - -@implementation SDLDeleteCommand - --(id) init { - if (self = [super initWithName:NAMES_DeleteCommand]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setCmdID:(NSNumber*) cmdID { - if (cmdID != nil) { - [parameters setObject:cmdID forKey:NAMES_cmdID]; - } else { - [parameters removeObjectForKey:NAMES_cmdID]; - } -} - --(NSNumber*) cmdID { - return [parameters objectForKey:NAMES_cmdID]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommandResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommandResponse.h deleted file mode 100644 index f9a38b0..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommandResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLDeleteCommandResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommandResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommandResponse.m deleted file mode 100644 index 61cfb44..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteCommandResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDeleteCommandResponse.h" -#import "SDLNames.h" - -@implementation SDLDeleteCommandResponse - --(id) init { - if (self = [super initWithName:NAMES_DeleteCommand]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSet.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSet.h deleted file mode 100644 index 34c7696..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSet.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - - -@interface SDLDeleteInteractionChoiceSet : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* interactionChoiceSetID; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSet.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSet.m deleted file mode 100644 index ba8e03d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSet.m +++ /dev/null @@ -1,32 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDeleteInteractionChoiceSet.h" -#import "SDLNames.h" - -@implementation SDLDeleteInteractionChoiceSet - --(id) init { - if (self = [super initWithName:NAMES_DeleteInteractionChoiceSet]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setInteractionChoiceSetID:(NSNumber*) interactionChoiceSetID { - if (interactionChoiceSetID != nil) { - [parameters setObject:interactionChoiceSetID forKey:NAMES_interactionChoiceSetID]; - } else { - [parameters removeObjectForKey:NAMES_interactionChoiceSetID]; - } -} - --(NSNumber*) interactionChoiceSetID { - return [parameters objectForKey:NAMES_interactionChoiceSetID]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSetResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSetResponse.h deleted file mode 100644 index c57c916..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSetResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLDeleteInteractionChoiceSetResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSetResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSetResponse.m deleted file mode 100644 index 133b20a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteInteractionChoiceSetResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDeleteInteractionChoiceSetResponse.h" -#import "SDLNames.h" - -@implementation SDLDeleteInteractionChoiceSetResponse - --(id) init { - if (self = [super initWithName:NAMES_DeleteInteractionChoiceSet]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenu.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenu.h deleted file mode 100644 index 4f47dc4..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenu.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - - -@interface SDLDeleteSubMenu : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* menuID; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenu.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenu.m deleted file mode 100644 index ab6441e..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenu.m +++ /dev/null @@ -1,32 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDeleteSubMenu.h" -#import "SDLNames.h" - -@implementation SDLDeleteSubMenu - --(id) init { - if (self = [super initWithName:NAMES_DeleteSubMenu]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setMenuID:(NSNumber*) menuID { - if (menuID != nil) { - [parameters setObject:menuID forKey:NAMES_menuID]; - } else { - [parameters removeObjectForKey:NAMES_menuID]; - } -} - --(NSNumber*) menuID { - return [parameters objectForKey:NAMES_menuID]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenuResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenuResponse.h deleted file mode 100644 index 5f3729e..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenuResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLDeleteSubMenuResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenuResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenuResponse.m deleted file mode 100644 index b16021d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDeleteSubMenuResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDeleteSubMenuResponse.h" -#import "SDLNames.h" - -@implementation SDLDeleteSubMenuResponse - --(id) init { - if (self = [super initWithName:NAMES_DeleteSubMenu]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayCapabilities.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayCapabilities.h deleted file mode 100644 index 9719040..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayCapabilities.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - -#import "SDLDisplayType.h" -#import "SDLTextField.h" -#import "SDLMediaClockFormat.h" - -@interface SDLDisplayCapabilities : SDLRPCStruct {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLDisplayType* displayType; -@property(assign) NSMutableArray* textFields; -@property(assign) NSMutableArray* mediaClockFormats; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayCapabilities.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayCapabilities.m deleted file mode 100644 index e65da0f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayCapabilities.m +++ /dev/null @@ -1,79 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDisplayCapabilities.h" -#import "SDLNames.h" - -@implementation SDLDisplayCapabilities - --(id) init { - if (self = [super init]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setDisplayType:(SDLDisplayType*) displayType { - if (displayType != nil) { - [store setObject:displayType forKey:NAMES_displayType]; - } else { - [store removeObjectForKey:NAMES_displayType]; - } -} - --(SDLDisplayType*) displayType { - NSObject* obj = [store objectForKey:NAMES_displayType]; - if ([obj isKindOfClass:SDLDisplayType.class]) { - return (SDLDisplayType*)obj; - } else { - return [SDLDisplayType valueOf:(NSString*)obj]; - } -} - --(void) setTextFields:(NSMutableArray*) textFields { - if (textFields != nil) { - [store setObject:textFields forKey:NAMES_textFields]; - } else { - [store removeObjectForKey:NAMES_textFields]; - } -} - --(NSMutableArray*) textFields { - NSMutableArray* array = [store objectForKey:NAMES_textFields]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLTextField.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLTextField alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - --(void) setMediaClockFormats:(NSMutableArray*) mediaClockFormats { - if (mediaClockFormats != nil) { - [store setObject:mediaClockFormats forKey:NAMES_mediaClockFormats]; - } else { - [store removeObjectForKey:NAMES_mediaClockFormats]; - } -} - --(NSMutableArray*) mediaClockFormats { - NSMutableArray* array = [store objectForKey:NAMES_mediaClockFormats]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLMediaClockFormat.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSString* enumString in array) { - [newList addObject:[SDLMediaClockFormat valueOf:enumString]]; - } - return newList; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayType.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayType.h deleted file mode 100644 index 0da0221..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayType.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLDisplayType : SDLEnum {} - -+(SDLDisplayType*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLDisplayType*) CID; -+(SDLDisplayType*) TYPE2; -+(SDLDisplayType*) TYPE5; -+(SDLDisplayType*) NGN; -+(SDLDisplayType*) GEN2_4_DMA; -+(SDLDisplayType*) GEN2_8_DMA; -+(SDLDisplayType*) GEN2_4_HUD; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayType.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayType.m deleted file mode 100644 index 5684b15..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDisplayType.m +++ /dev/null @@ -1,91 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDisplayType.h" - -SDLDisplayType* SDLDisplayType_CID = nil; -SDLDisplayType* SDLDisplayType_TYPE2 = nil; -SDLDisplayType* SDLDisplayType_TYPE5 = nil; -SDLDisplayType* SDLDisplayType_NGN = nil; -SDLDisplayType* SDLDisplayType_GEN2_4_DMA = nil; -SDLDisplayType* SDLDisplayType_GEN2_8_DMA = nil; -SDLDisplayType* SDLDisplayType_GEN2_4_HUD = nil; - -NSMutableArray* SDLDisplayType_values = nil; -@implementation SDLDisplayType - -+(SDLDisplayType*) valueOf:(NSString*) value { - for (SDLDisplayType* item in SDLDisplayType.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLDisplayType_values == nil) { - SDLDisplayType_values = [[NSMutableArray alloc] initWithObjects: - SDLDisplayType.CID, - SDLDisplayType.TYPE2, - SDLDisplayType.TYPE5, - SDLDisplayType.NGN, - SDLDisplayType.GEN2_4_DMA, - SDLDisplayType.GEN2_8_DMA, - SDLDisplayType.GEN2_4_HUD, - nil]; - } - return SDLDisplayType_values; -} - -+(SDLDisplayType*) CID { - if (SDLDisplayType_CID == nil) { - SDLDisplayType_CID = [[SDLDisplayType alloc] initWithValue:@"CID"]; - } - return SDLDisplayType_CID; -} - -+(SDLDisplayType*) TYPE2 { - if (SDLDisplayType_TYPE2 == nil) { - SDLDisplayType_TYPE2 = [[SDLDisplayType alloc] initWithValue:@"TYPE2"]; - } - return SDLDisplayType_TYPE2; -} - -+(SDLDisplayType*) TYPE5 { - if (SDLDisplayType_TYPE5 == nil) { - SDLDisplayType_TYPE5 = [[SDLDisplayType alloc] initWithValue:@"TYPE5"]; - } - return SDLDisplayType_TYPE5; -} - -+(SDLDisplayType*) NGN { - if (SDLDisplayType_NGN == nil) { - SDLDisplayType_NGN = [[SDLDisplayType alloc] initWithValue:@"NGN"]; - } - return SDLDisplayType_NGN; -} - -+(SDLDisplayType*) GEN2_4_DMA { - if (SDLDisplayType_GEN2_4_DMA == nil) { - SDLDisplayType_GEN2_4_DMA = [[SDLDisplayType alloc] initWithValue:@"GEN2_4_DMA"]; - } - return SDLDisplayType_GEN2_4_DMA; -} - -+(SDLDisplayType*) GEN2_8_DMA { - if (SDLDisplayType_GEN2_8_DMA == nil) { - SDLDisplayType_GEN2_8_DMA = [[SDLDisplayType alloc] initWithValue:@"GEN2_8_DMA"]; - } - return SDLDisplayType_GEN2_8_DMA; -} - -+(SDLDisplayType*) GEN2_4_HUD { - if (SDLDisplayType_GEN2_4_HUD == nil) { - SDLDisplayType_GEN2_4_HUD = [[SDLDisplayType alloc] initWithValue:@"GEN2_4_HUD"]; - } - return SDLDisplayType_GEN2_4_HUD; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDriverDistractionState.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDriverDistractionState.h deleted file mode 100644 index 7423792..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDriverDistractionState.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLDriverDistractionState : SDLEnum{} - -+(SDLDriverDistractionState*) valueOf:(NSString*) value; - -+(NSMutableArray*) values; - -+(SDLDriverDistractionState*) DD_ON; -+(SDLDriverDistractionState*) DD_OFF; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDriverDistractionState.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDriverDistractionState.m deleted file mode 100644 index e00a68d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLDriverDistractionState.m +++ /dev/null @@ -1,51 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDriverDistractionState.h" - -SDLDriverDistractionState* SDLDriverDistractionState_DD_ON = nil; -SDLDriverDistractionState* SDLDriverDistractionState_DD_OFF = nil; - -NSMutableArray* SDLDriverDistractionState_values = nil; - -@implementation SDLDriverDistractionState - -+(SDLDriverDistractionState*) valueOf:(NSString*) value { - for (SDLDriverDistractionState* item in SDLDriverDistractionState.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray *) values { - if (SDLDriverDistractionState_values == nil) { - SDLDriverDistractionState_values = [[NSMutableArray alloc] initWithObjects: - SDLDriverDistractionState.DD_ON, - SDLDriverDistractionState.DD_OFF, - nil]; - - } - return SDLDriverDistractionState_values; -} - -+(SDLDriverDistractionState*) DD_ON { - if (SDLDriverDistractionState_DD_ON == nil) { - SDLDriverDistractionState_DD_ON = [[SDLDriverDistractionState alloc] initWithValue:@"DD_ON"]; - } - return SDLDriverDistractionState_DD_ON; - -} - -+(SDLDriverDistractionState*) DD_OFF { - if (SDLDriverDistractionState_DD_OFF == nil) { - SDLDriverDistractionState_DD_OFF = [[SDLDriverDistractionState alloc] initWithValue:@"DD_OFF"]; - } - return SDLDriverDistractionState_DD_OFF; -} - -@end - - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPData.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPData.h deleted file mode 100644 index ba7d4ac..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPData.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -@interface SDLEncodedSyncPData: SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSMutableArray* data; - -@end \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPData.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPData.m deleted file mode 100644 index c665e47..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPData.m +++ /dev/null @@ -1,33 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLEncodedSyncPData.h" -#import "SDLNames.h" - -@implementation SDLEncodedSyncPData - --(id) init { - if (self = [super initWithName:NAMES_EncodedSyncPData]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setData:(NSMutableArray*) data { - if (data != nil) { - [parameters setObject:data forKey:NAMES_data]; - } else { - [parameters removeObjectForKey:NAMES_data]; - } -} - --(NSMutableArray*) data { - NSMutableArray* obj = [parameters objectForKey:NAMES_data]; - return (NSMutableArray*)obj; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPDataResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPDataResponse.h deleted file mode 100644 index b9225fc..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPDataResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLEncodedSyncPDataResponse: SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPDataResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPDataResponse.m deleted file mode 100644 index cffeeaa..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLEncodedSyncPDataResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLEncodedSyncPDataResponse.h" -#import "SDLNames.h" - -@implementation SDLEncodedSyncPDataResponse - --(id) init { - if (self = [super initWithName:NAMES_EncodedSyncPData]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGenericResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGenericResponse.h deleted file mode 100644 index de5be0f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGenericResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLGenericResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGenericResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGenericResponse.m deleted file mode 100644 index e062b2d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGenericResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLGenericResponse.h" -#import "SDLNames.h" - -@implementation SDLGenericResponse - --(id) init { - if (self = [super initWithName:NAMES_GenericResponse]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGlobalProperty.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGlobalProperty.h deleted file mode 100644 index 4323286..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGlobalProperty.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLGlobalProperty : SDLEnum {} - -+(SDLGlobalProperty*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLGlobalProperty*) HELPPROMPT; -+(SDLGlobalProperty*) TIMEOUTPROMPT; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGlobalProperty.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGlobalProperty.m deleted file mode 100644 index aab2940..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLGlobalProperty.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLGlobalProperty.h" - -SDLGlobalProperty* SDLGlobalProperty_HELPPROMPT = nil; -SDLGlobalProperty* SDLGlobalProperty_TIMEOUTPROMPT = nil; - -NSMutableArray* SDLGlobalProperty_values = nil; -@implementation SDLGlobalProperty - -+(SDLGlobalProperty*) valueOf:(NSString*) value { - for (SDLGlobalProperty* item in SDLGlobalProperty.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLGlobalProperty_values == nil) { - SDLGlobalProperty_values = [[NSMutableArray alloc] initWithObjects: - SDLGlobalProperty.HELPPROMPT, - SDLGlobalProperty.TIMEOUTPROMPT, - nil]; - } - return SDLGlobalProperty_values; -} - -+(SDLGlobalProperty*) HELPPROMPT { - if (SDLGlobalProperty_HELPPROMPT == nil) { - SDLGlobalProperty_HELPPROMPT = [[SDLGlobalProperty alloc] initWithValue:@"HELPPROMPT"]; - } - return SDLGlobalProperty_HELPPROMPT; -} - -+(SDLGlobalProperty*) TIMEOUTPROMPT { - if (SDLGlobalProperty_TIMEOUTPROMPT == nil) { - SDLGlobalProperty_TIMEOUTPROMPT = [[SDLGlobalProperty alloc] initWithValue:@"TIMEOUTPROMPT"]; - } - return SDLGlobalProperty_TIMEOUTPROMPT; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.h deleted file mode 100644 index 17bf942..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLHMILevel : SDLEnum {} - -+(SDLHMILevel*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLHMILevel*) HMI_FULL; -+(SDLHMILevel*) HMI_LIMITED; -+(SDLHMILevel*) HMI_BACKGROUND; -+(SDLHMILevel*) HMI_NONE; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.m deleted file mode 100644 index 4959af0..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMILevel.m +++ /dev/null @@ -1,64 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLHMILevel.h" - -SDLHMILevel* SDLHMILevel_HMI_FULL = nil; -SDLHMILevel* SDLHMILevel_HMI_LIMITED = nil; -SDLHMILevel* SDLHMILevel_HMI_BACKGROUND = nil; -SDLHMILevel* SDLHMILevel_HMI_NONE = nil; - -NSMutableArray* SDLHMILevel_values = nil; -@implementation SDLHMILevel - -+(SDLHMILevel*) valueOf:(NSString*) value { - for (SDLHMILevel* item in SDLHMILevel.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLHMILevel_values == nil) { - SDLHMILevel_values = [[NSMutableArray alloc] initWithObjects: - SDLHMILevel.HMI_FULL, - SDLHMILevel.HMI_LIMITED, - SDLHMILevel.HMI_BACKGROUND, - SDLHMILevel.HMI_NONE, - nil]; - } - return SDLHMILevel_values; -} - -+(SDLHMILevel*) HMI_FULL { - if (SDLHMILevel_HMI_FULL == nil) { - SDLHMILevel_HMI_FULL = [[SDLHMILevel alloc] initWithValue:@"FULL"]; - } - return SDLHMILevel_HMI_FULL; -} - -+(SDLHMILevel*) HMI_LIMITED { - if (SDLHMILevel_HMI_LIMITED == nil) { - SDLHMILevel_HMI_LIMITED = [[SDLHMILevel alloc] initWithValue:@"LIMITED"]; - } - return SDLHMILevel_HMI_LIMITED; -} - -+(SDLHMILevel*) HMI_BACKGROUND { - if (SDLHMILevel_HMI_BACKGROUND == nil) { - SDLHMILevel_HMI_BACKGROUND = [[SDLHMILevel alloc] initWithValue:@"BACKGROUND"]; - } - return SDLHMILevel_HMI_BACKGROUND; -} - -+(SDLHMILevel*) HMI_NONE { - if (SDLHMILevel_HMI_NONE == nil) { - SDLHMILevel_HMI_NONE = [[SDLHMILevel alloc] initWithValue:@"NONE"]; - } - return SDLHMILevel_HMI_NONE; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMIZoneCapabilities.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMIZoneCapabilities.h deleted file mode 100644 index 16a833e..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMIZoneCapabilities.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLHMIZoneCapabilities : SDLEnum {} - -+(SDLHMIZoneCapabilities*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLHMIZoneCapabilities*) FRONT; -+(SDLHMIZoneCapabilities*) BACK; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMIZoneCapabilities.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMIZoneCapabilities.m deleted file mode 100644 index 33da65a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLHMIZoneCapabilities.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLHMIZoneCapabilities.h" - -SDLHMIZoneCapabilities* SDLHMIZoneCapabilities_FRONT = nil; -SDLHMIZoneCapabilities* SDLHMIZoneCapabilities_BACK = nil; - -NSMutableArray* SDLHMIZoneCapabilities_values = nil; -@implementation SDLHMIZoneCapabilities - -+(SDLHMIZoneCapabilities*) valueOf:(NSString*) value { - for (SDLHMIZoneCapabilities* item in SDLHMIZoneCapabilities.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLHMIZoneCapabilities_values == nil) { - SDLHMIZoneCapabilities_values = [[NSMutableArray alloc] initWithObjects: - SDLHMIZoneCapabilities.FRONT, - SDLHMIZoneCapabilities.BACK, - nil]; - } - return SDLHMIZoneCapabilities_values; -} - -+(SDLHMIZoneCapabilities*) FRONT { - if (SDLHMIZoneCapabilities_FRONT == nil) { - SDLHMIZoneCapabilities_FRONT = [[SDLHMIZoneCapabilities alloc] initWithValue:@"FRONT"]; - } - return SDLHMIZoneCapabilities_FRONT; -} - -+(SDLHMIZoneCapabilities*) BACK { - if (SDLHMIZoneCapabilities_BACK == nil) { - SDLHMIZoneCapabilities_BACK = [[SDLHMIZoneCapabilities alloc] initWithValue:@"BACK"]; - } - return SDLHMIZoneCapabilities_BACK; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLInteractionMode.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLInteractionMode.h deleted file mode 100644 index 44f4ba7..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLInteractionMode.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLInteractionMode : SDLEnum {} - -+(SDLInteractionMode*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLInteractionMode*) MANUAL_ONLY; -+(SDLInteractionMode*) VR_ONLY; -+(SDLInteractionMode*) BOTH; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLInteractionMode.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLInteractionMode.m deleted file mode 100644 index aed6f9a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLInteractionMode.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLInteractionMode.h" - -SDLInteractionMode* SDLInteractionMode_MANUAL_ONLY = nil; -SDLInteractionMode* SDLInteractionMode_VR_ONLY = nil; -SDLInteractionMode* SDLInteractionMode_BOTH = nil; - -NSMutableArray* SDLInteractionMode_values = nil; -@implementation SDLInteractionMode - -+(SDLInteractionMode*) valueOf:(NSString*) value { - for (SDLInteractionMode* item in SDLInteractionMode.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLInteractionMode_values == nil) { - SDLInteractionMode_values = [[NSMutableArray alloc] initWithObjects: - SDLInteractionMode.MANUAL_ONLY, - SDLInteractionMode.VR_ONLY, - SDLInteractionMode.BOTH, - nil]; - } - return SDLInteractionMode_values; -} - -+(SDLInteractionMode*) MANUAL_ONLY { - if (SDLInteractionMode_MANUAL_ONLY == nil) { - SDLInteractionMode_MANUAL_ONLY = [[SDLInteractionMode alloc] initWithValue:@"MANUAL_ONLY"]; - } - return SDLInteractionMode_MANUAL_ONLY; -} - -+(SDLInteractionMode*) VR_ONLY { - if (SDLInteractionMode_VR_ONLY == nil) { - SDLInteractionMode_VR_ONLY = [[SDLInteractionMode alloc] initWithValue:@"VR_ONLY"]; - } - return SDLInteractionMode_VR_ONLY; -} - -+(SDLInteractionMode*) BOTH { - if (SDLInteractionMode_BOTH == nil) { - SDLInteractionMode_BOTH = [[SDLInteractionMode alloc] initWithValue:@"BOTH"]; - } - return SDLInteractionMode_BOTH; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.h deleted file mode 100644 index 3b28ed8..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLLanguage : SDLEnum {} - -+(SDLLanguage*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLLanguage*) EN_US; -+(SDLLanguage*) ES_MX; -+(SDLLanguage*) FR_CA; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.m deleted file mode 100644 index da684c7..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLLanguage.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLLanguage.h" - -SDLLanguage* SDLLanguage_EN_US = nil; -SDLLanguage* SDLLanguage_ES_MX = nil; -SDLLanguage* SDLLanguage_FR_CA = nil; - -NSMutableArray* SDLLanguage_values = nil; -@implementation SDLLanguage - -+(SDLLanguage*) valueOf:(NSString*) value { - for (SDLLanguage* item in SDLLanguage.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLLanguage_values == nil) { - SDLLanguage_values = [[NSMutableArray alloc] initWithObjects: - SDLLanguage.EN_US, - SDLLanguage.ES_MX, - SDLLanguage.FR_CA, - nil]; - } - return SDLLanguage_values; -} - -+(SDLLanguage*) EN_US { - if (SDLLanguage_EN_US == nil) { - SDLLanguage_EN_US = [[SDLLanguage alloc] initWithValue:@"EN-US"]; - } - return SDLLanguage_EN_US; -} - -+(SDLLanguage*) ES_MX { - if (SDLLanguage_ES_MX == nil) { - SDLLanguage_ES_MX = [[SDLLanguage alloc] initWithValue:@"ES-MX"]; - } - return SDLLanguage_ES_MX; -} - -+(SDLLanguage*) FR_CA { - if (SDLLanguage_FR_CA == nil) { - SDLLanguage_FR_CA = [[SDLLanguage alloc] initWithValue:@"FR-CA"]; - } - return SDLLanguage_FR_CA; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMediaClockFormat.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMediaClockFormat.h deleted file mode 100644 index b993983..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMediaClockFormat.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLMediaClockFormat : SDLEnum {} - -+(SDLMediaClockFormat*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLMediaClockFormat*) CLOCK1; -+(SDLMediaClockFormat*) CLOCK2; -+(SDLMediaClockFormat*) CLOCKTEXT1; -+(SDLMediaClockFormat*) CLOCKTEXT2; -+(SDLMediaClockFormat*) CLOCKTEXT3; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMediaClockFormat.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMediaClockFormat.m deleted file mode 100644 index 3b4472a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMediaClockFormat.m +++ /dev/null @@ -1,73 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLMediaClockFormat.h" - -SDLMediaClockFormat* SDLMediaClockFormat_CLOCK1 = nil; -SDLMediaClockFormat* SDLMediaClockFormat_CLOCK2 = nil; -SDLMediaClockFormat* SDLMediaClockFormat_CLOCKTEXT1 = nil; -SDLMediaClockFormat* SDLMediaClockFormat_CLOCKTEXT2 = nil; -SDLMediaClockFormat* SDLMediaClockFormat_CLOCKTEXT3 = nil; - -NSMutableArray* SDLMediaClockFormat_values = nil; -@implementation SDLMediaClockFormat - -+(SDLMediaClockFormat*) valueOf:(NSString*) value { - for (SDLMediaClockFormat* item in SDLMediaClockFormat.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLMediaClockFormat_values == nil) { - SDLMediaClockFormat_values = [[NSMutableArray alloc] initWithObjects: - SDLMediaClockFormat.CLOCK1, - SDLMediaClockFormat.CLOCK2, - SDLMediaClockFormat.CLOCKTEXT1, - SDLMediaClockFormat.CLOCKTEXT2, - SDLMediaClockFormat.CLOCKTEXT3, - nil]; - } - return SDLMediaClockFormat_values; -} - -+(SDLMediaClockFormat*) CLOCK1 { - if (SDLMediaClockFormat_CLOCK1 == nil) { - SDLMediaClockFormat_CLOCK1 = [[SDLMediaClockFormat alloc] initWithValue:@"CLOCK1"]; - } - return SDLMediaClockFormat_CLOCK1; -} - -+(SDLMediaClockFormat*) CLOCK2 { - if (SDLMediaClockFormat_CLOCK2 == nil) { - SDLMediaClockFormat_CLOCK2 = [[SDLMediaClockFormat alloc] initWithValue:@"CLOCK2"]; - } - return SDLMediaClockFormat_CLOCK2; -} - -+(SDLMediaClockFormat*) CLOCKTEXT1 { - if (SDLMediaClockFormat_CLOCKTEXT1 == nil) { - SDLMediaClockFormat_CLOCKTEXT1 = [[SDLMediaClockFormat alloc] initWithValue:@"CLOCKTEXT1"]; - } - return SDLMediaClockFormat_CLOCKTEXT1; -} - -+(SDLMediaClockFormat*) CLOCKTEXT2 { - if (SDLMediaClockFormat_CLOCKTEXT2 == nil) { - SDLMediaClockFormat_CLOCKTEXT2 = [[SDLMediaClockFormat alloc] initWithValue:@"CLOCKTEXT2"]; - } - return SDLMediaClockFormat_CLOCKTEXT2; -} - -+(SDLMediaClockFormat*) CLOCKTEXT3 { - if (SDLMediaClockFormat_CLOCKTEXT3 == nil) { - SDLMediaClockFormat_CLOCKTEXT3 = [[SDLMediaClockFormat alloc] initWithValue:@"CLOCKTEXT3"]; - } - return SDLMediaClockFormat_CLOCKTEXT3; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMenuParams.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMenuParams.h deleted file mode 100644 index d9b8e66..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMenuParams.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - - -@interface SDLMenuParams : SDLRPCStruct {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* parentID; -@property(assign) NSNumber* position; -@property(assign) NSString* menuName; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMenuParams.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMenuParams.m deleted file mode 100644 index 200f9bb..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMenuParams.m +++ /dev/null @@ -1,56 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLMenuParams.h" -#import "SDLNames.h" - -@implementation SDLMenuParams - --(id) init { - if (self = [super init]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setParentID:(NSNumber*) parentID { - if (parentID != nil) { - [store setObject:parentID forKey:NAMES_parentID]; - } else { - [store removeObjectForKey:NAMES_parentID]; - } -} - --(NSNumber*) parentID { - return [store objectForKey:NAMES_parentID]; -} - --(void) setPosition:(NSNumber*) position { - if (position != nil) { - [store setObject:position forKey:NAMES_position]; - } else { - [store removeObjectForKey:NAMES_position]; - } -} - --(NSNumber*) position { - return [store objectForKey:NAMES_position]; -} - --(void) setMenuName:(NSString*) menuName { - if (menuName != nil) { - [store setObject:menuName forKey:NAMES_menuName]; - } else { - [store removeObjectForKey:NAMES_menuName]; - } -} - --(NSString*) menuName { - return [store objectForKey:NAMES_menuName]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMsgVersion.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMsgVersion.h deleted file mode 100644 index 96f591f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMsgVersion.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - - -@interface SDLMsgVersion : SDLRPCStruct {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* majorVersion; -@property(assign) NSNumber* minorVersion; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMsgVersion.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMsgVersion.m deleted file mode 100644 index fe88d07..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLMsgVersion.m +++ /dev/null @@ -1,44 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLMsgVersion.h" -#import "SDLNames.h" - -@implementation SDLMsgVersion - --(id) init { - if (self = [super init]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setMajorVersion:(NSNumber*) majorVersion { - if (majorVersion != nil) { - [store setObject:majorVersion forKey:NAMES_majorVersion]; - } else { - [store removeObjectForKey:NAMES_majorVersion]; - } -} - --(NSNumber*) majorVersion { - return [store objectForKey:NAMES_majorVersion]; -} - --(void) setMinorVersion:(NSNumber*) minorVersion { - if (minorVersion != nil) { - [store setObject:minorVersion forKey:NAMES_minorVersion]; - } else { - [store removeObjectForKey:NAMES_minorVersion]; - } -} - --(NSNumber*) minorVersion { - return [store objectForKey:NAMES_minorVersion]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnAppInterfaceUnregistered.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnAppInterfaceUnregistered.h deleted file mode 100644 index 2e0f8ad..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnAppInterfaceUnregistered.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCNotification.h" - -#import "SDLAppInterfaceUnregisteredReason.h" - -@interface SDLOnAppInterfaceUnregistered : SDLRPCNotification {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLAppInterfaceUnregisteredReason* reason; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnAppInterfaceUnregistered.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnAppInterfaceUnregistered.m deleted file mode 100644 index a2e4fd3..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnAppInterfaceUnregistered.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLOnAppInterfaceUnregistered.h" -#import "SDLNames.h" - -@implementation SDLOnAppInterfaceUnregistered - --(id) init { - if (self = [super initWithName:NAMES_OnAppInterfaceUnregistered]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setReason:(SDLAppInterfaceUnregisteredReason*) reason { - if (reason != nil) { - [parameters setObject:reason forKey:NAMES_reason]; - } else { - [parameters removeObjectForKey:NAMES_reason]; - } -} - --(SDLAppInterfaceUnregisteredReason*) reason { - NSObject* obj = [parameters objectForKey:NAMES_reason]; - if ([obj isKindOfClass:SDLAppInterfaceUnregisteredReason.class]) { - return (SDLAppInterfaceUnregisteredReason*)obj; - } else { - return [SDLAppInterfaceUnregisteredReason valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonEvent.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonEvent.h deleted file mode 100644 index 0a4ed61..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonEvent.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCNotification.h" - -#import "SDLButtonName.h" -#import "SDLButtonEventMode.h" - -@interface SDLOnButtonEvent : SDLRPCNotification {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLButtonName* buttonName; -@property(assign) SDLButtonEventMode* buttonEventMode; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonEvent.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonEvent.m deleted file mode 100644 index 3e0e53c..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonEvent.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLOnButtonEvent.h" -#import "SDLNames.h" - -@implementation SDLOnButtonEvent - --(id) init { - if (self = [super initWithName:NAMES_OnButtonEvent]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setButtonName:(SDLButtonName*) buttonName { - if (buttonName != nil) { - [parameters setObject:buttonName forKey:NAMES_buttonName]; - } else { - [parameters removeObjectForKey:NAMES_buttonName]; - } -} - --(SDLButtonName*) buttonName { - NSObject* obj = [parameters objectForKey:NAMES_buttonName]; - if ([obj isKindOfClass:SDLButtonName.class]) { - return (SDLButtonName*)obj; - } else { - return [SDLButtonName valueOf:(NSString*)obj]; - } -} - --(void) setButtonEventMode:(SDLButtonEventMode*) buttonEventMode { - if (buttonEventMode != nil) { - [parameters setObject:buttonEventMode forKey:NAMES_buttonEventMode]; - } else { - [parameters removeObjectForKey:NAMES_buttonEventMode]; - } -} - --(SDLButtonEventMode*) buttonEventMode { - NSObject* obj = [parameters objectForKey:NAMES_buttonEventMode]; - if ([obj isKindOfClass:SDLButtonEventMode.class]) { - return (SDLButtonEventMode*)obj; - } else { - return [SDLButtonEventMode valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonPress.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonPress.h deleted file mode 100644 index 972f571..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonPress.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCNotification.h" - -#import "SDLButtonName.h" -#import "SDLButtonPressMode.h" - -@interface SDLOnButtonPress : SDLRPCNotification {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLButtonName* buttonName; -@property(assign) SDLButtonPressMode* buttonPressMode; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonPress.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonPress.m deleted file mode 100644 index c5a9f37..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnButtonPress.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLOnButtonPress.h" -#import "SDLNames.h" - -@implementation SDLOnButtonPress - --(id) init { - if (self = [super initWithName:NAMES_OnButtonPress]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setButtonName:(SDLButtonName*) buttonName { - if (buttonName != nil) { - [parameters setObject:buttonName forKey:NAMES_buttonName]; - } else { - [parameters removeObjectForKey:NAMES_buttonName]; - } -} - --(SDLButtonName*) buttonName { - NSObject* obj = [parameters objectForKey:NAMES_buttonName]; - if ([obj isKindOfClass:SDLButtonName.class]) { - return (SDLButtonName*)obj; - } else { - return [SDLButtonName valueOf:(NSString*)obj]; - } -} - --(void) setButtonPressMode:(SDLButtonPressMode*) buttonPressMode { - if (buttonPressMode != nil) { - [parameters setObject:buttonPressMode forKey:NAMES_buttonPressMode]; - } else { - [parameters removeObjectForKey:NAMES_buttonPressMode]; - } -} - --(SDLButtonPressMode*) buttonPressMode { - NSObject* obj = [parameters objectForKey:NAMES_buttonPressMode]; - if ([obj isKindOfClass:SDLButtonPressMode.class]) { - return (SDLButtonPressMode*)obj; - } else { - return [SDLButtonPressMode valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnCommand.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnCommand.h deleted file mode 100644 index cf258b1..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnCommand.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCNotification.h" - -#import "SDLTriggerSource.h" - -@interface SDLOnCommand : SDLRPCNotification {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* cmdID; -@property(assign) SDLTriggerSource* triggerSource; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnCommand.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnCommand.m deleted file mode 100644 index 4e08675..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnCommand.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLOnCommand.h" -#import "SDLNames.h" - -@implementation SDLOnCommand - --(id) init { - if (self = [super initWithName:NAMES_OnCommand]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setCmdID:(NSNumber*) cmdID { - if (cmdID != nil) { - [parameters setObject:cmdID forKey:NAMES_cmdID]; - } else { - [parameters removeObjectForKey:NAMES_cmdID]; - } -} - --(NSNumber*) cmdID { - return [parameters objectForKey:NAMES_cmdID]; -} - --(void) setTriggerSource:(SDLTriggerSource*) triggerSource { - if (triggerSource != nil) { - [parameters setObject:triggerSource forKey:NAMES_triggerSource]; - } else { - [parameters removeObjectForKey:NAMES_triggerSource]; - } -} - --(SDLTriggerSource*) triggerSource { - NSObject* obj = [parameters objectForKey:NAMES_triggerSource]; - if ([obj isKindOfClass:SDLTriggerSource.class]) { - return (SDLTriggerSource*)obj; - } else { - return [SDLTriggerSource valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnDriverDistraction.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnDriverDistraction.h deleted file mode 100644 index 17420a8..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnDriverDistraction.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCNotification.h" -#import "SDLDriverDistractionState.h" - -@interface SDLOnDriverDistraction: SDLRPCNotification {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLDriverDistractionState* state; - -@end - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnDriverDistraction.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnDriverDistraction.m deleted file mode 100644 index 1e3e4b5..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnDriverDistraction.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLOnDriverDistraction.h" -#import "SDLNames.h" - -@implementation SDLOnDriverDistraction - --(id) init { - if (self = [super initWithName:NAMES_OnDriverDistraction]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setState:(SDLDriverDistractionState*) state { - if (state != nil) { - [parameters setObject:state forKey:NAMES_state]; - } else { - [parameters removeObjectForKey:NAMES_state]; - } -} - --(SDLDriverDistractionState*) state { - NSObject* obj = [parameters objectForKey:NAMES_state]; - if ([obj isKindOfClass:SDLDriverDistractionState.class]) { - return (SDLDriverDistractionState*)obj; - } else { - return [SDLDriverDistractionState valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnEncodedSyncPData.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnEncodedSyncPData.h deleted file mode 100644 index 5f89766..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnEncodedSyncPData.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCNotification.h" - -@interface SDLOnEncodedSyncPData: SDLRPCNotification {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSMutableArray* data; - -@end \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnEncodedSyncPData.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnEncodedSyncPData.m deleted file mode 100644 index d2a524a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnEncodedSyncPData.m +++ /dev/null @@ -1,33 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLOnEncodedSyncPData.h" -#import "SDLNames.h" - -@implementation SDLOnEncodedSyncPData - --(id) init { - if (self = [super initWithName:NAMES_OnEncodedSyncPData]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setData:(NSMutableArray*) data { - if (data != nil) { - [parameters setObject:data forKey:NAMES_data]; - } else { - [parameters removeObjectForKey:NAMES_data]; - } -} - --(NSMutableArray*) data { - NSMutableArray* obj = [parameters objectForKey:NAMES_data]; - return (NSMutableArray*)obj; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnHMIStatus.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnHMIStatus.h deleted file mode 100644 index 4ab4549..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnHMIStatus.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCNotification.h" - -#import "SDLHMILevel.h" -#import "SDLAudioStreamingState.h" -#import "SDLSystemContext.h" - -@interface SDLOnHMIStatus : SDLRPCNotification {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLHMILevel* hmiLevel; -@property(assign) SDLAudioStreamingState* audioStreamingState; -@property(assign) SDLSystemContext* systemContext; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnHMIStatus.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnHMIStatus.m deleted file mode 100644 index a591dd0..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnHMIStatus.m +++ /dev/null @@ -1,71 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLOnHMIStatus.h" -#import "SDLNames.h" - -@implementation SDLOnHMIStatus - --(id) init { - if (self = [super initWithName:NAMES_OnHMIStatus]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setHmiLevel:(SDLHMILevel*) hmiLevel { - if (hmiLevel != nil) { - [parameters setObject:hmiLevel forKey:NAMES_hmiLevel]; - } else { - [parameters removeObjectForKey:NAMES_hmiLevel]; - } -} - --(SDLHMILevel*) hmiLevel { - NSObject* obj = [parameters objectForKey:NAMES_hmiLevel]; - if ([obj isKindOfClass:SDLHMILevel.class]) { - return (SDLHMILevel*)obj; - } else { - return [SDLHMILevel valueOf:(NSString*)obj]; - } -} - --(void) setAudioStreamingState:(SDLAudioStreamingState*) audioStreamingState { - if (audioStreamingState != nil) { - [parameters setObject:audioStreamingState forKey:NAMES_audioStreamingState]; - } else { - [parameters removeObjectForKey:NAMES_audioStreamingState]; - } -} - --(SDLAudioStreamingState*) audioStreamingState { - NSObject* obj = [parameters objectForKey:NAMES_audioStreamingState]; - if ([obj isKindOfClass:SDLAudioStreamingState.class]) { - return (SDLAudioStreamingState*)obj; - } else { - return [SDLAudioStreamingState valueOf:(NSString*)obj]; - } -} - --(void) setSystemContext:(SDLSystemContext*) systemContext { - if (systemContext != nil) { - [parameters setObject:systemContext forKey:NAMES_systemContext]; - } else { - [parameters removeObjectForKey:NAMES_systemContext]; - } -} - --(SDLSystemContext*) systemContext { - NSObject* obj = [parameters objectForKey:NAMES_systemContext]; - if ([obj isKindOfClass:SDLSystemContext.class]) { - return (SDLSystemContext*)obj; - } else { - return [SDLSystemContext valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnTBTClientState.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnTBTClientState.h deleted file mode 100644 index 1aee4f3..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnTBTClientState.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCNotification.h" -#import "SDLTBTState.h" - -@interface SDLOnTBTClientState: SDLRPCNotification {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLTBTState* state; - -@end - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnTBTClientState.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnTBTClientState.m deleted file mode 100644 index 329f63f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLOnTBTClientState.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLOnTBTClientState.h" -#import "SDLNames.h" - -@implementation SDLOnTBTClientState - --(id) init { - if (self = [super initWithName:NAMES_OnTBTClientState]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setState:(SDLTBTState*) state { - if (state != nil) { - [parameters setObject:state forKey:NAMES_state]; - } else { - [parameters removeObjectForKey:NAMES_state]; - } -} - --(SDLTBTState*) state { - NSObject* obj = [parameters objectForKey:NAMES_state]; - if ([obj isKindOfClass:SDLTBTState.class]) { - return (SDLTBTState*)obj; - } else { - return [SDLTBTState valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteraction.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteraction.h deleted file mode 100644 index 0056abe..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteraction.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLTTSChunk.h" -#import "SDLInteractionMode.h" -#import "SDLTTSChunk.h" -#import "SDLTTSChunk.h" - -@interface SDLPerformInteraction : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSString* initialText; -@property(assign) NSMutableArray* initialPrompt; -@property(assign) SDLInteractionMode* interactionMode; -@property(assign) NSMutableArray* interactionChoiceSetIDList; -@property(assign) NSMutableArray* helpPrompt; -@property(assign) NSMutableArray* timeoutPrompt; -@property(assign) NSNumber* timeout; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteraction.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteraction.m deleted file mode 100644 index 4274d93..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteraction.m +++ /dev/null @@ -1,136 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLPerformInteraction.h" -#import "SDLNames.h" - -@implementation SDLPerformInteraction - --(id) init { - if (self = [super initWithName:NAMES_PerformInteraction]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setInitialText:(NSString*) initialText { - if (initialText != nil) { - [parameters setObject:initialText forKey:NAMES_initialText]; - } else { - [parameters removeObjectForKey:NAMES_initialText]; - } -} - --(NSString*) initialText { - return [parameters objectForKey:NAMES_initialText]; -} - --(void) setInitialPrompt:(NSMutableArray*) initialPrompt { - if (initialPrompt != nil) { - [parameters setObject:initialPrompt forKey:NAMES_initialPrompt]; - } else { - [parameters removeObjectForKey:NAMES_initialPrompt]; - } -} - --(NSMutableArray*) initialPrompt { - NSMutableArray* array = [parameters objectForKey:NAMES_initialPrompt]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLTTSChunk.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLTTSChunk alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - --(void) setInteractionMode:(SDLInteractionMode*) interactionMode { - if (interactionMode != nil) { - [parameters setObject:interactionMode forKey:NAMES_interactionMode]; - } else { - [parameters removeObjectForKey:NAMES_interactionMode]; - } -} - --(SDLInteractionMode*) interactionMode { - NSObject* obj = [parameters objectForKey:NAMES_interactionMode]; - if ([obj isKindOfClass:SDLInteractionMode.class]) { - return (SDLInteractionMode*)obj; - } else { - return [SDLInteractionMode valueOf:(NSString*)obj]; - } -} - --(void) setInteractionChoiceSetIDList:(NSMutableArray*) interactionChoiceSetIDList { - if (interactionChoiceSetIDList != nil) { - [parameters setObject:interactionChoiceSetIDList forKey:NAMES_interactionChoiceSetIDList]; - } else { - [parameters removeObjectForKey:NAMES_interactionChoiceSetIDList]; - } -} - --(NSMutableArray*) interactionChoiceSetIDList { - return [parameters objectForKey:NAMES_interactionChoiceSetIDList]; -} - --(void) setHelpPrompt:(NSMutableArray*) helpPrompt { - if (helpPrompt != nil) { - [parameters setObject:helpPrompt forKey:NAMES_helpPrompt]; - } else { - [parameters removeObjectForKey:NAMES_helpPrompt]; - } -} - --(NSMutableArray*) helpPrompt { - NSMutableArray* array = [parameters objectForKey:NAMES_helpPrompt]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLTTSChunk.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLTTSChunk alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - --(void) setTimeoutPrompt:(NSMutableArray*) timeoutPrompt { - if (timeoutPrompt != nil) { - [parameters setObject:timeoutPrompt forKey:NAMES_timeoutPrompt]; - } else { - [parameters removeObjectForKey:NAMES_timeoutPrompt]; - } -} - --(NSMutableArray*) timeoutPrompt { - NSMutableArray* array = [parameters objectForKey:NAMES_timeoutPrompt]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLTTSChunk.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLTTSChunk alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - --(void) setTimeout:(NSNumber*) timeout { - if (timeout != nil) { - [parameters setObject:timeout forKey:NAMES_timeout]; - } else { - [parameters removeObjectForKey:NAMES_timeout]; - } -} - --(NSNumber*) timeout { - return [parameters objectForKey:NAMES_timeout]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteractionResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteractionResponse.h deleted file mode 100644 index 9107f80..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteractionResponse.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" -#import "SDLTriggerSource.h" - -@interface SDLPerformInteractionResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* choiceID; -@property(assign) SDLTriggerSource* triggerSource; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteractionResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteractionResponse.m deleted file mode 100644 index 7adafb9..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLPerformInteractionResponse.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLPerformInteractionResponse.h" -#import "SDLNames.h" - -@implementation SDLPerformInteractionResponse - --(id) init { - if (self = [super initWithName:NAMES_PerformInteraction]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setChoiceID:(NSNumber*) choiceID { - if (choiceID != nil) { - [parameters setObject:choiceID forKey:NAMES_choiceID]; - } else { - [parameters removeObjectForKey:NAMES_choiceID]; - } -} - --(NSNumber*) choiceID { - return [parameters objectForKey:NAMES_choiceID]; -} - --(void) setTriggerSource:(SDLTriggerSource*) triggerSource { - if (triggerSource != nil) { - [parameters setObject:triggerSource forKey:NAMES_triggerSource]; - } else { - [parameters removeObjectForKey:NAMES_triggerSource]; - } -} - --(SDLTriggerSource*) triggerSource { - NSObject* obj = [parameters objectForKey:NAMES_triggerSource]; - if ([obj isKindOfClass:SDLTriggerSource.class]) { - return (SDLTriggerSource*)obj; - } else { - return [SDLTriggerSource valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterface.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterface.h deleted file mode 100644 index a26b213..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterface.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLMsgVersion.h" -#import "SDLLanguage.h" - -@interface SDLRegisterAppInterface : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLMsgVersion* syncMsgVersion; -@property(assign) NSString* appName; -@property(assign) NSString* ngnMediaScreenAppName; -@property(assign) NSMutableArray* vrSynonyms; -@property(assign) NSNumber* isMediaApplication; -@property(assign) SDLLanguage* languageDesired; -@property(assign) NSString* autoActivateID; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterface.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterface.m deleted file mode 100644 index 6b0e043..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterface.m +++ /dev/null @@ -1,114 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLRegisterAppInterface.h" -#import "SDLNames.h" - -@implementation SDLRegisterAppInterface - --(id) init { - if (self = [super initWithName:NAMES_RegisterAppInterface]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setSyncMsgVersion:(SDLMsgVersion*) syncMsgVersion { - if (syncMsgVersion != nil) { - [parameters setObject:syncMsgVersion forKey:NAMES_syncMsgVersion]; - } else { - [parameters removeObjectForKey:NAMES_syncMsgVersion]; - } -} - --(SDLMsgVersion*) syncMsgVersion { - NSObject* obj = [parameters objectForKey:NAMES_syncMsgVersion]; - if ([obj isKindOfClass:SDLMsgVersion.class]) { - return (SDLMsgVersion*)obj; - } else { - return [[[SDLMsgVersion alloc] initWithDictionary:(NSMutableDictionary*)obj] autorelease]; - } -} - --(void) setAppName:(NSString*) appName { - if (appName != nil) { - [parameters setObject:appName forKey:NAMES_appName]; - } else { - [parameters removeObjectForKey:NAMES_appName]; - } -} - --(NSString*) appName { - return [parameters objectForKey:NAMES_appName]; -} - --(void) setNgnMediaScreenAppName:(NSString*) ngnMediaScreenAppName { - if (ngnMediaScreenAppName != nil) { - [parameters setObject:ngnMediaScreenAppName forKey:NAMES_ngnMediaScreenAppName]; - } else { - [parameters removeObjectForKey:NAMES_ngnMediaScreenAppName]; - } -} - --(NSString*) ngnMediaScreenAppName { - return [parameters objectForKey:NAMES_ngnMediaScreenAppName]; -} - --(void) setVrSynonyms:(NSMutableArray*) vrSynonyms { - if (vrSynonyms != nil) { - [parameters setObject:vrSynonyms forKey:NAMES_vrSynonyms]; - } else { - [parameters removeObjectForKey:NAMES_vrSynonyms]; - } -} - --(NSMutableArray*) vrSynonyms { - return [parameters objectForKey:NAMES_vrSynonyms]; -} - --(void) setIsMediaApplication:(NSNumber*) isMediaApplication { - if (isMediaApplication != nil) { - [parameters setObject:isMediaApplication forKey:NAMES_isMediaApplication]; - } else { - [parameters removeObjectForKey:NAMES_isMediaApplication]; - } -} - --(NSNumber*) isMediaApplication { - return [parameters objectForKey:NAMES_isMediaApplication]; -} - --(void) setLanguageDesired:(SDLLanguage*) languageDesired { - if (languageDesired != nil) { - [parameters setObject:languageDesired forKey:NAMES_languageDesired]; - } else { - [parameters removeObjectForKey:NAMES_languageDesired]; - } -} - --(SDLLanguage*) languageDesired { - NSObject* obj = [parameters objectForKey:NAMES_languageDesired]; - if ([obj isKindOfClass:SDLLanguage.class]) { - return (SDLLanguage*)obj; - } else { - return [SDLLanguage valueOf:(NSString*)obj]; - } -} - --(void) setAutoActivateID:(NSString*) autoActivateID { - if (autoActivateID != nil) { - [parameters setObject:autoActivateID forKey:NAMES_autoActivateID]; - } else { - [parameters removeObjectForKey:NAMES_autoActivateID]; - } -} - --(NSString*) autoActivateID { - return [parameters objectForKey:NAMES_autoActivateID]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterfaceResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterfaceResponse.h deleted file mode 100644 index 5b0010e..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterfaceResponse.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" -#import "SDLMsgVersion.h" -#import "SDLLanguage.h" -#import "SDLDisplayCapabilities.h" -#import "SDLButtonCapabilities.h" -#import "SDLHMIZoneCapabilities.h" -#import "SDLSpeechCapabilities.h" -#import "SDLVRCapabilities.h" - -@interface SDLRegisterAppInterfaceResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLMsgVersion* syncMsgVersion; -@property(assign) NSString* autoActivateID; -@property(assign) SDLLanguage* language; -@property(assign) SDLDisplayCapabilities* displayCapabilities; -@property(assign) NSMutableArray* buttonCapabilities; -@property(assign) NSMutableArray* hmiZoneCapabilities; -@property(assign) NSMutableArray* speechCapabilities; -@property(assign) NSMutableArray* vrCapabilities; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterfaceResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterfaceResponse.m deleted file mode 100644 index 9a6d640..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLRegisterAppInterfaceResponse.m +++ /dev/null @@ -1,167 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLRegisterAppInterfaceResponse.h" -#import "SDLNames.h" - -@implementation SDLRegisterAppInterfaceResponse - --(id) init { - if (self = [super initWithName:NAMES_RegisterAppInterface]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setSyncMsgVersion:(SDLMsgVersion*) syncMsgVersion { - if (syncMsgVersion != nil) { - [parameters setObject:syncMsgVersion forKey:NAMES_syncMsgVersion]; - } else { - [parameters removeObjectForKey:NAMES_syncMsgVersion]; - } -} - --(SDLMsgVersion*) syncMsgVersion { - NSObject* obj = [parameters objectForKey:NAMES_syncMsgVersion]; - if ([obj isKindOfClass:SDLMsgVersion.class]) { - return (SDLMsgVersion*)obj; - } else { - return [[[SDLMsgVersion alloc] initWithDictionary:(NSMutableDictionary*)obj] autorelease]; - } -} - --(void) setAutoActivateID:(NSString*) autoActivateID { - if (autoActivateID != nil) { - [parameters setObject:autoActivateID forKey:NAMES_autoActivateID]; - } else { - [parameters removeObjectForKey:NAMES_autoActivateID]; - } -} - --(NSString*) autoActivateID { - return [parameters objectForKey:NAMES_autoActivateID]; -} - --(void) setLanguage:(SDLLanguage*) language { - if (language != nil) { - [parameters setObject:language forKey:NAMES_language]; - } else { - [parameters removeObjectForKey:NAMES_language]; - } -} - --(SDLLanguage*) language { - NSObject* obj = [parameters objectForKey:NAMES_language]; - if ([obj isKindOfClass:SDLLanguage.class]) { - return (SDLLanguage*)obj; - } else { - return [SDLLanguage valueOf:(NSString*)obj]; - } -} - --(void) setDisplayCapabilities:(SDLDisplayCapabilities*) displayCapabilities { - if (displayCapabilities != nil) { - [parameters setObject:displayCapabilities forKey:NAMES_displayCapabilities]; - } else { - [parameters removeObjectForKey:NAMES_displayCapabilities]; - } -} - --(SDLDisplayCapabilities*) displayCapabilities { - NSObject* obj = [parameters objectForKey:NAMES_displayCapabilities]; - if ([obj isKindOfClass:SDLDisplayCapabilities.class]) { - return (SDLDisplayCapabilities*)obj; - } else { - return [[[SDLDisplayCapabilities alloc] initWithDictionary:(NSMutableDictionary*)obj] autorelease]; - } -} - --(void) setButtonCapabilities:(NSMutableArray*) buttonCapabilities { - if (buttonCapabilities != nil) { - [parameters setObject:buttonCapabilities forKey:NAMES_buttonCapabilities]; - } else { - [parameters removeObjectForKey:NAMES_buttonCapabilities]; - } -} - --(NSMutableArray*) buttonCapabilities { - NSMutableArray* array = [parameters objectForKey:NAMES_buttonCapabilities]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLButtonCapabilities.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLButtonCapabilities alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - --(void) setHmiZoneCapabilities:(NSMutableArray*) hmiZoneCapabilities { - if (hmiZoneCapabilities != nil) { - [parameters setObject:hmiZoneCapabilities forKey:NAMES_hmiZoneCapabilities]; - } else { - [parameters removeObjectForKey:NAMES_hmiZoneCapabilities]; - } -} - --(NSMutableArray*) hmiZoneCapabilities { - NSMutableArray* array = [parameters objectForKey:NAMES_hmiZoneCapabilities]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLHMIZoneCapabilities.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSString* enumString in array) { - [newList addObject:[SDLHMIZoneCapabilities valueOf:enumString]]; - } - return newList; - } -} - --(void) setSpeechCapabilities:(NSMutableArray*) speechCapabilities { - if (speechCapabilities != nil) { - [parameters setObject:speechCapabilities forKey:NAMES_speechCapabilities]; - } else { - [parameters removeObjectForKey:NAMES_speechCapabilities]; - } -} - --(NSMutableArray*) speechCapabilities { - NSMutableArray* array = [parameters objectForKey:NAMES_speechCapabilities]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLSpeechCapabilities.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSString* enumString in array) { - [newList addObject:[SDLSpeechCapabilities valueOf:enumString]]; - } - return newList; - } -} - --(void) setVrCapabilities:(NSMutableArray*) vrCapabilities { - if (vrCapabilities != nil) { - [parameters setObject:vrCapabilities forKey:NAMES_vrCapabilities]; - } else { - [parameters removeObjectForKey:NAMES_vrCapabilities]; - } -} - --(NSMutableArray*) vrCapabilities { - NSMutableArray* array = [parameters objectForKey:NAMES_vrCapabilities]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLVRCapabilities.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSString* enumString in array) { - [newList addObject:[SDLVRCapabilities valueOf:enumString]]; - } - return newList; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalProperties.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalProperties.h deleted file mode 100644 index 2a542be..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalProperties.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLGlobalProperty.h" - -@interface SDLResetGlobalProperties : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSMutableArray* properties; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalProperties.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalProperties.m deleted file mode 100644 index fa4757d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalProperties.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLResetGlobalProperties.h" -#import "SDLNames.h" - -@implementation SDLResetGlobalProperties - --(id) init { - if (self = [super initWithName:NAMES_ResetGlobalProperties]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setProperties:(NSMutableArray*) properties { - if (properties != nil) { - [parameters setObject:properties forKey:NAMES_properties]; - } else { - [parameters removeObjectForKey:NAMES_properties]; - } -} - --(NSMutableArray*) properties { - NSMutableArray* array = [parameters objectForKey:NAMES_properties]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLGlobalProperty.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSString* enumString in array) { - [newList addObject:[SDLGlobalProperty valueOf:enumString]]; - } - return newList; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalPropertiesResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalPropertiesResponse.h deleted file mode 100644 index a714fd5..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalPropertiesResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLResetGlobalPropertiesResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalPropertiesResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalPropertiesResponse.m deleted file mode 100644 index 8cf3e30..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResetGlobalPropertiesResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLResetGlobalPropertiesResponse.h" -#import "SDLNames.h" - -@implementation SDLResetGlobalPropertiesResponse - --(id) init { - if (self = [super initWithName:NAMES_ResetGlobalProperties]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResult.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResult.h deleted file mode 100644 index 8c357e2..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResult.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLResult : SDLEnum {} - -+(SDLResult*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLResult*) SUCCESS; -+(SDLResult*) INVALID_DATA; -+(SDLResult*) UNSUPPORTED_REQUEST; -+(SDLResult*) OUT_OF_MEMORY; -+(SDLResult*) TOO_MANY_PENDING_REQUESTS; -+(SDLResult*) INVALID_ID; -+(SDLResult*) DUPLICATE_NAME; -+(SDLResult*) TOO_MANY_APPLICATIONS; -+(SDLResult*) APPLICATION_REGISTERED_ALREADY; -+(SDLResult*) UNSUPPORTED_VERSION; -+(SDLResult*) WRONG_LANGUAGE; -+(SDLResult*) APPLICATION_NOT_REGISTERED; -+(SDLResult*) IN_USE; -+(SDLResult*) SUBSCRIBED_ALREADY; -+(SDLResult*) VEHICLE_DATA_NOT_ALLOWED; -+(SDLResult*) VEHICLE_DATA_NOT_AVAILABLE; -+(SDLResult*) REJECTED; -+(SDLResult*) ABORTED; -+(SDLResult*) IGNORED; -+(SDLResult*) UNSUPPORTED_BUTTON; -+(SDLResult*) FILE_NOT_FOUND; -+(SDLResult*) GENERIC_ERROR; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResult.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResult.m deleted file mode 100644 index 0957964..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLResult.m +++ /dev/null @@ -1,226 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLResult.h" - -SDLResult* SDLResult_SUCCESS = nil; -SDLResult* SDLResult_INVALID_DATA = nil; -SDLResult* SDLResult_UNSUPPORTED_REQUEST = nil; -SDLResult* SDLResult_OUT_OF_MEMORY = nil; -SDLResult* SDLResult_TOO_MANY_PENDING_REQUESTS = nil; -SDLResult* SDLResult_INVALID_ID = nil; -SDLResult* SDLResult_DUPLICATE_NAME = nil; -SDLResult* SDLResult_TOO_MANY_APPLICATIONS = nil; -SDLResult* SDLResult_APPLICATION_REGISTERED_ALREADY = nil; -SDLResult* SDLResult_UNSUPPORTED_VERSION = nil; -SDLResult* SDLResult_WRONG_LANGUAGE = nil; -SDLResult* SDLResult_APPLICATION_NOT_REGISTERED = nil; -SDLResult* SDLResult_IN_USE = nil; -SDLResult* SDLResult_SUBSCRIBED_ALREADY = nil; -SDLResult* SDLResult_VEHICLE_DATA_NOT_ALLOWED = nil; -SDLResult* SDLResult_VEHICLE_DATA_NOT_AVAILABLE = nil; -SDLResult* SDLResult_REJECTED = nil; -SDLResult* SDLResult_ABORTED = nil; -SDLResult* SDLResult_IGNORED = nil; -SDLResult* SDLResult_UNSUPPORTED_BUTTON = nil; -SDLResult* SDLResult_FILE_NOT_FOUND = nil; -SDLResult* SDLResult_GENERIC_ERROR = nil; - -NSMutableArray* SDLResult_values = nil; -@implementation SDLResult - -+(SDLResult*) valueOf:(NSString*) value { - for (SDLResult* item in SDLResult.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLResult_values == nil) { - SDLResult_values = [[NSMutableArray alloc] initWithObjects: - SDLResult.SUCCESS, - SDLResult.INVALID_DATA, - SDLResult.UNSUPPORTED_REQUEST, - SDLResult.OUT_OF_MEMORY, - SDLResult.TOO_MANY_PENDING_REQUESTS, - SDLResult.INVALID_ID, - SDLResult.DUPLICATE_NAME, - SDLResult.TOO_MANY_APPLICATIONS, - SDLResult.APPLICATION_REGISTERED_ALREADY, - SDLResult.UNSUPPORTED_VERSION, - SDLResult.WRONG_LANGUAGE, - SDLResult.APPLICATION_NOT_REGISTERED, - SDLResult.IN_USE, - SDLResult.SUBSCRIBED_ALREADY, - SDLResult.VEHICLE_DATA_NOT_ALLOWED, - SDLResult.VEHICLE_DATA_NOT_AVAILABLE, - SDLResult.REJECTED, - SDLResult.ABORTED, - SDLResult.IGNORED, - SDLResult.UNSUPPORTED_BUTTON, - SDLResult.FILE_NOT_FOUND, - SDLResult.GENERIC_ERROR, - nil]; - } - return SDLResult_values; -} - -+(SDLResult*) SUCCESS { - if (SDLResult_SUCCESS == nil) { - SDLResult_SUCCESS = [[SDLResult alloc] initWithValue:@"SUCCESS"]; - } - return SDLResult_SUCCESS; -} - -+(SDLResult*) INVALID_DATA { - if (SDLResult_INVALID_DATA == nil) { - SDLResult_INVALID_DATA = [[SDLResult alloc] initWithValue:@"INVALID_DATA"]; - } - return SDLResult_INVALID_DATA; -} - -+(SDLResult*) UNSUPPORTED_REQUEST { - if (SDLResult_UNSUPPORTED_REQUEST == nil) { - SDLResult_UNSUPPORTED_REQUEST = [[SDLResult alloc] initWithValue:@"UNSUPPORTED_REQUEST"]; - } - return SDLResult_UNSUPPORTED_REQUEST; -} - -+(SDLResult*) OUT_OF_MEMORY { - if (SDLResult_OUT_OF_MEMORY == nil) { - SDLResult_OUT_OF_MEMORY = [[SDLResult alloc] initWithValue:@"OUT_OF_MEMORY"]; - } - return SDLResult_OUT_OF_MEMORY; -} - -+(SDLResult*) TOO_MANY_PENDING_REQUESTS { - if (SDLResult_TOO_MANY_PENDING_REQUESTS == nil) { - SDLResult_TOO_MANY_PENDING_REQUESTS = [[SDLResult alloc] initWithValue:@"TOO_MANY_PENDING_REQUESTS"]; - } - return SDLResult_TOO_MANY_PENDING_REQUESTS; -} - -+(SDLResult*) INVALID_ID { - if (SDLResult_INVALID_ID == nil) { - SDLResult_INVALID_ID = [[SDLResult alloc] initWithValue:@"INVALID_ID"]; - } - return SDLResult_INVALID_ID; -} - -+(SDLResult*) DUPLICATE_NAME { - if (SDLResult_DUPLICATE_NAME == nil) { - SDLResult_DUPLICATE_NAME = [[SDLResult alloc] initWithValue:@"DUPLICATE_NAME"]; - } - return SDLResult_DUPLICATE_NAME; -} - -+(SDLResult*) TOO_MANY_APPLICATIONS { - if (SDLResult_TOO_MANY_APPLICATIONS == nil) { - SDLResult_TOO_MANY_APPLICATIONS = [[SDLResult alloc] initWithValue:@"TOO_MANY_APPLICATIONS"]; - } - return SDLResult_TOO_MANY_APPLICATIONS; -} - -+(SDLResult*) APPLICATION_REGISTERED_ALREADY { - if (SDLResult_APPLICATION_REGISTERED_ALREADY == nil) { - SDLResult_APPLICATION_REGISTERED_ALREADY = [[SDLResult alloc] initWithValue:@"APPLICATION_REGISTERED_ALREADY"]; - } - return SDLResult_APPLICATION_REGISTERED_ALREADY; -} - -+(SDLResult*) UNSUPPORTED_VERSION { - if (SDLResult_UNSUPPORTED_VERSION == nil) { - SDLResult_UNSUPPORTED_VERSION = [[SDLResult alloc] initWithValue:@"UNSUPPORTED_VERSION"]; - } - return SDLResult_UNSUPPORTED_VERSION; -} - -+(SDLResult*) WRONG_LANGUAGE { - if (SDLResult_WRONG_LANGUAGE == nil) { - SDLResult_WRONG_LANGUAGE = [[SDLResult alloc] initWithValue:@"WRONG_LANGUAGE"]; - } - return SDLResult_WRONG_LANGUAGE; -} - -+(SDLResult*) APPLICATION_NOT_REGISTERED { - if (SDLResult_APPLICATION_NOT_REGISTERED == nil) { - SDLResult_APPLICATION_NOT_REGISTERED = [[SDLResult alloc] initWithValue:@"APPLICATION_NOT_REGISTERED"]; - } - return SDLResult_APPLICATION_NOT_REGISTERED; -} - -+(SDLResult*) IN_USE { - if (SDLResult_IN_USE == nil) { - SDLResult_IN_USE = [[SDLResult alloc] initWithValue:@"IN_USE"]; - } - return SDLResult_IN_USE; -} - -+(SDLResult*) SUBSCRIBED_ALREADY { - if (SDLResult_SUBSCRIBED_ALREADY == nil) { - SDLResult_SUBSCRIBED_ALREADY = [[SDLResult alloc] initWithValue:@"SUBSCRIBED_ALREADY"]; - } - return SDLResult_SUBSCRIBED_ALREADY; -} - -+(SDLResult*) VEHICLE_DATA_NOT_ALLOWED { - if (SDLResult_VEHICLE_DATA_NOT_ALLOWED == nil) { - SDLResult_VEHICLE_DATA_NOT_ALLOWED = [[SDLResult alloc] initWithValue:@"VEHICLE_DATA_NOT_ALLOWED"]; - } - return SDLResult_VEHICLE_DATA_NOT_ALLOWED; -} - -+(SDLResult*) VEHICLE_DATA_NOT_AVAILABLE { - if (SDLResult_VEHICLE_DATA_NOT_AVAILABLE == nil) { - SDLResult_VEHICLE_DATA_NOT_AVAILABLE = [[SDLResult alloc] initWithValue:@"VEHICLE_DATA_NOT_AVAILABLE"]; - } - return SDLResult_VEHICLE_DATA_NOT_AVAILABLE; -} - -+(SDLResult*) REJECTED { - if (SDLResult_REJECTED == nil) { - SDLResult_REJECTED = [[SDLResult alloc] initWithValue:@"REJECTED"]; - } - return SDLResult_REJECTED; -} - -+(SDLResult*) ABORTED { - if (SDLResult_ABORTED == nil) { - SDLResult_ABORTED = [[SDLResult alloc] initWithValue:@"ABORTED"]; - } - return SDLResult_ABORTED; -} - -+(SDLResult*) IGNORED { - if (SDLResult_IGNORED == nil) { - SDLResult_IGNORED = [[SDLResult alloc] initWithValue:@"IGNORED"]; - } - return SDLResult_IGNORED; -} - -+(SDLResult*) UNSUPPORTED_BUTTON { - if (SDLResult_UNSUPPORTED_BUTTON == nil) { - SDLResult_UNSUPPORTED_BUTTON = [[SDLResult alloc] initWithValue:@"UNSUPPORTED_BUTTON"]; - } - return SDLResult_UNSUPPORTED_BUTTON; -} - -+(SDLResult*) FILE_NOT_FOUND { - if (SDLResult_FILE_NOT_FOUND == nil) { - SDLResult_FILE_NOT_FOUND = [[SDLResult alloc] initWithValue:@"FILE_NOT_FOUND"]; - } - return SDLResult_FILE_NOT_FOUND; -} - -+(SDLResult*) GENERIC_ERROR { - if (SDLResult_GENERIC_ERROR == nil) { - SDLResult_GENERIC_ERROR = [[SDLResult alloc] initWithValue:@"GENERIC_ERROR"]; - } - return SDLResult_GENERIC_ERROR; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalProperties.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalProperties.h deleted file mode 100644 index 0f2455d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalProperties.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLTTSChunk.h" -#import "SDLTTSChunk.h" - -@interface SDLSetGlobalProperties : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSMutableArray* helpPrompt; -@property(assign) NSMutableArray* timeoutPrompt; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalProperties.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalProperties.m deleted file mode 100644 index 3f55d02..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalProperties.m +++ /dev/null @@ -1,62 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSetGlobalProperties.h" -#import "SDLNames.h" - -@implementation SDLSetGlobalProperties - --(id) init { - if (self = [super initWithName:NAMES_SetGlobalProperties]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setHelpPrompt:(NSMutableArray*) helpPrompt { - if (helpPrompt != nil) { - [parameters setObject:helpPrompt forKey:NAMES_helpPrompt]; - } else { - [parameters removeObjectForKey:NAMES_helpPrompt]; - } -} - --(NSMutableArray*) helpPrompt { - NSMutableArray* array = [parameters objectForKey:NAMES_helpPrompt]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLTTSChunk.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLTTSChunk alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - --(void) setTimeoutPrompt:(NSMutableArray*) timeoutPrompt { - if (timeoutPrompt != nil) { - [parameters setObject:timeoutPrompt forKey:NAMES_timeoutPrompt]; - } else { - [parameters removeObjectForKey:NAMES_timeoutPrompt]; - } -} - --(NSMutableArray*) timeoutPrompt { - NSMutableArray* array = [parameters objectForKey:NAMES_timeoutPrompt]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLTTSChunk.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLTTSChunk alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalPropertiesResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalPropertiesResponse.h deleted file mode 100644 index 07e3b6a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalPropertiesResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLSetGlobalPropertiesResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalPropertiesResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalPropertiesResponse.m deleted file mode 100644 index 92ab8d2..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetGlobalPropertiesResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSetGlobalPropertiesResponse.h" -#import "SDLNames.h" - -@implementation SDLSetGlobalPropertiesResponse - --(id) init { - if (self = [super initWithName:NAMES_SetGlobalProperties]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimer.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimer.h deleted file mode 100644 index 9c3d19f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLStartTime.h" -#import "SDLUpdateMode.h" - -@interface SDLSetMediaClockTimer : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLStartTime* startTime; -@property(assign) SDLUpdateMode* updateMode; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimer.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimer.m deleted file mode 100644 index d845699..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimer.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSetMediaClockTimer.h" -#import "SDLNames.h" - -@implementation SDLSetMediaClockTimer - --(id) init { - if (self = [super initWithName:NAMES_SetMediaClockTimer]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setStartTime:(SDLStartTime*) startTime { - if (startTime != nil) { - [parameters setObject:startTime forKey:NAMES_startTime]; - } else { - [parameters removeObjectForKey:NAMES_startTime]; - } -} - --(SDLStartTime*) startTime { - NSObject* obj = [parameters objectForKey:NAMES_startTime]; - if ([obj isKindOfClass:SDLStartTime.class]) { - return (SDLStartTime*)obj; - } else { - return [[[SDLStartTime alloc] initWithDictionary:(NSMutableDictionary*)obj] autorelease]; - } -} - --(void) setUpdateMode:(SDLUpdateMode*) updateMode { - if (updateMode != nil) { - [parameters setObject:updateMode forKey:NAMES_updateMode]; - } else { - [parameters removeObjectForKey:NAMES_updateMode]; - } -} - --(SDLUpdateMode*) updateMode { - NSObject* obj = [parameters objectForKey:NAMES_updateMode]; - if ([obj isKindOfClass:SDLUpdateMode.class]) { - return (SDLUpdateMode*)obj; - } else { - return [SDLUpdateMode valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimerResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimerResponse.h deleted file mode 100644 index c5531dc..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimerResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLSetMediaClockTimerResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimerResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimerResponse.m deleted file mode 100644 index 0989bd1..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSetMediaClockTimerResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSetMediaClockTimerResponse.h" -#import "SDLNames.h" - -@implementation SDLSetMediaClockTimerResponse - --(id) init { - if (self = [super initWithName:NAMES_SetMediaClockTimer]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.h deleted file mode 100644 index 41c4f7b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLTextAlignment.h" - -@interface SDLShow : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSString* mainField1; -@property(assign) NSString* mainField2; -@property(assign) SDLTextAlignment* alignment; -@property(assign) NSString* statusBar; -@property(assign) NSString* mediaClock; -@property(assign) NSString* mediaTrack; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.m deleted file mode 100644 index cd388e8..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShow.m +++ /dev/null @@ -1,97 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLShow.h" -#import "SDLNames.h" - -@implementation SDLShow - --(id) init { - if (self = [super initWithName:NAMES_Show]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setMainField1:(NSString*) mainField1 { - if (mainField1 != nil) { - [parameters setObject:mainField1 forKey:NAMES_mainField1]; - } else { - [parameters removeObjectForKey:NAMES_mainField1]; - } -} - --(NSString*) mainField1 { - return [parameters objectForKey:NAMES_mainField1]; -} - --(void) setMainField2:(NSString*) mainField2 { - if (mainField2 != nil) { - [parameters setObject:mainField2 forKey:NAMES_mainField2]; - } else { - [parameters removeObjectForKey:NAMES_mainField2]; - } -} - --(NSString*) mainField2 { - return [parameters objectForKey:NAMES_mainField2]; -} - --(void) setAlignment:(SDLTextAlignment*) alignment { - if (alignment != nil) { - [parameters setObject:alignment forKey:NAMES_alignment]; - } else { - [parameters removeObjectForKey:NAMES_alignment]; - } -} - --(SDLTextAlignment*) alignment { - NSObject* obj = [parameters objectForKey:NAMES_alignment]; - if ([obj isKindOfClass:SDLTextAlignment.class]) { - return (SDLTextAlignment*)obj; - } else { - return [SDLTextAlignment valueOf:(NSString*)obj]; - } -} - --(void) setStatusBar:(NSString*) statusBar { - if (statusBar != nil) { - [parameters setObject:statusBar forKey:NAMES_statusBar]; - } else { - [parameters removeObjectForKey:NAMES_statusBar]; - } -} - --(NSString*) statusBar { - return [parameters objectForKey:NAMES_statusBar]; -} - --(void) setMediaClock:(NSString*) mediaClock { - if (mediaClock != nil) { - [parameters setObject:mediaClock forKey:NAMES_mediaClock]; - } else { - [parameters removeObjectForKey:NAMES_mediaClock]; - } -} - --(NSString*) mediaClock { - return [parameters objectForKey:NAMES_mediaClock]; -} - --(void) setMediaTrack:(NSString*) mediaTrack { - if (mediaTrack != nil) { - [parameters setObject:mediaTrack forKey:NAMES_mediaTrack]; - } else { - [parameters removeObjectForKey:NAMES_mediaTrack]; - } -} - --(NSString*) mediaTrack { - return [parameters objectForKey:NAMES_mediaTrack]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShowResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShowResponse.h deleted file mode 100644 index 982f0cc..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShowResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLShowResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShowResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShowResponse.m deleted file mode 100644 index 3286ce2..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLShowResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLShowResponse.h" -#import "SDLNames.h" - -@implementation SDLShowResponse - --(id) init { - if (self = [super initWithName:NAMES_Show]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.h deleted file mode 100644 index 1a83261..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLTTSChunk.h" - -@interface SDLSpeak : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSMutableArray* ttsChunks; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.m deleted file mode 100644 index 8cc3f0a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeak.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSpeak.h" -#import "SDLNames.h" - -@implementation SDLSpeak - --(id) init { - if (self = [super initWithName:NAMES_Speak]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setTtsChunks:(NSMutableArray*) ttsChunks { - if (ttsChunks != nil) { - [parameters setObject:ttsChunks forKey:NAMES_ttsChunks]; - } else { - [parameters removeObjectForKey:NAMES_ttsChunks]; - } -} - --(NSMutableArray*) ttsChunks { - NSMutableArray* array = [parameters objectForKey:NAMES_ttsChunks]; - if ([array count] < 1 || [[array objectAtIndex:0] isKindOfClass:SDLTTSChunk.class]) { - return array; - } else { - NSMutableArray* newList = [NSMutableArray arrayWithCapacity:[array count]]; - for (NSDictionary* dict in array) { - [newList addObject:[[[SDLTTSChunk alloc] initWithDictionary:(NSMutableDictionary*)dict] autorelease]]; - } - return newList; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeakResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeakResponse.h deleted file mode 100644 index f354d69..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeakResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLSpeakResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeakResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeakResponse.m deleted file mode 100644 index cac9da1..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeakResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSpeakResponse.h" -#import "SDLNames.h" - -@implementation SDLSpeakResponse - --(id) init { - if (self = [super initWithName:NAMES_Speak]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeechCapabilities.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeechCapabilities.h deleted file mode 100644 index 20af2a3..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeechCapabilities.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLSpeechCapabilities : SDLEnum {} - -+(SDLSpeechCapabilities*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLSpeechCapabilities*) TEXT; -+(SDLSpeechCapabilities*) SAPI_PHONEMES; -+(SDLSpeechCapabilities*) LHPLUS_PHONEMES; -+(SDLSpeechCapabilities*) PRE_RECORDED; -+(SDLSpeechCapabilities*) SILENCE; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeechCapabilities.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeechCapabilities.m deleted file mode 100644 index cfa0366..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSpeechCapabilities.m +++ /dev/null @@ -1,73 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSpeechCapabilities.h" - -SDLSpeechCapabilities* SDLSpeechCapabilities_TEXT = nil; -SDLSpeechCapabilities* SDLSpeechCapabilities_SAPI_PHONEMES = nil; -SDLSpeechCapabilities* SDLSpeechCapabilities_LHPLUS_PHONEMES = nil; -SDLSpeechCapabilities* SDLSpeechCapabilities_PRE_RECORDED = nil; -SDLSpeechCapabilities* SDLSpeechCapabilities_SILENCE = nil; - -NSMutableArray* SDLSpeechCapabilities_values = nil; -@implementation SDLSpeechCapabilities - -+(SDLSpeechCapabilities*) valueOf:(NSString*) value { - for (SDLSpeechCapabilities* item in SDLSpeechCapabilities.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLSpeechCapabilities_values == nil) { - SDLSpeechCapabilities_values = [[NSMutableArray alloc] initWithObjects: - SDLSpeechCapabilities.TEXT, - SDLSpeechCapabilities.SAPI_PHONEMES, - SDLSpeechCapabilities.LHPLUS_PHONEMES, - SDLSpeechCapabilities.PRE_RECORDED, - SDLSpeechCapabilities.SILENCE, - nil]; - } - return SDLSpeechCapabilities_values; -} - -+(SDLSpeechCapabilities*) TEXT { - if (SDLSpeechCapabilities_TEXT == nil) { - SDLSpeechCapabilities_TEXT = [[SDLSpeechCapabilities alloc] initWithValue:@"TEXT"]; - } - return SDLSpeechCapabilities_TEXT; -} - -+(SDLSpeechCapabilities*) SAPI_PHONEMES { - if (SDLSpeechCapabilities_SAPI_PHONEMES == nil) { - SDLSpeechCapabilities_SAPI_PHONEMES = [[SDLSpeechCapabilities alloc] initWithValue:@"SAPI_PHONEMES"]; - } - return SDLSpeechCapabilities_SAPI_PHONEMES; -} - -+(SDLSpeechCapabilities*) LHPLUS_PHONEMES { - if (SDLSpeechCapabilities_LHPLUS_PHONEMES == nil) { - SDLSpeechCapabilities_LHPLUS_PHONEMES = [[SDLSpeechCapabilities alloc] initWithValue:@"LHPLUS_PHONEMES"]; - } - return SDLSpeechCapabilities_LHPLUS_PHONEMES; -} - -+(SDLSpeechCapabilities*) PRE_RECORDED { - if (SDLSpeechCapabilities_PRE_RECORDED == nil) { - SDLSpeechCapabilities_PRE_RECORDED = [[SDLSpeechCapabilities alloc] initWithValue:@"PRE_RECORDED"]; - } - return SDLSpeechCapabilities_PRE_RECORDED; -} - -+(SDLSpeechCapabilities*) SILENCE { - if (SDLSpeechCapabilities_SILENCE == nil) { - SDLSpeechCapabilities_SILENCE = [[SDLSpeechCapabilities alloc] initWithValue:@"SILENCE"]; - } - return SDLSpeechCapabilities_SILENCE; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLStartTime.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLStartTime.h deleted file mode 100644 index 30c7c75..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLStartTime.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - -@interface SDLStartTime : SDLRPCStruct {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSNumber* hours; -@property(assign) NSNumber* minutes; -@property(assign) NSNumber* seconds; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLStartTime.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLStartTime.m deleted file mode 100644 index 78d8265..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLStartTime.m +++ /dev/null @@ -1,56 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLStartTime.h" -#import "SDLNames.h" - -@implementation SDLStartTime - --(id) init { - if (self = [super init]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setHours:(NSNumber*) hours { - if (hours != nil) { - [store setObject:hours forKey:NAMES_hours]; - } else { - [store removeObjectForKey:NAMES_hours]; - } -} - --(NSNumber*) hours { - return [store objectForKey:NAMES_hours]; -} - --(void) setMinutes:(NSNumber*) minutes { - if (minutes != nil) { - [store setObject:minutes forKey:NAMES_minutes]; - } else { - [store removeObjectForKey:NAMES_minutes]; - } -} - --(NSNumber*) minutes { - return [store objectForKey:NAMES_minutes]; -} - --(void) setSeconds:(NSNumber*) seconds { - if (seconds != nil) { - [store setObject:seconds forKey:NAMES_seconds]; - } else { - [store removeObjectForKey:NAMES_seconds]; - } -} - --(NSNumber*) seconds { - return [store objectForKey:NAMES_seconds]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButton.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButton.h deleted file mode 100644 index 2446300..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButton.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLButtonName.h" - -@interface SDLSubscribeButton : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLButtonName* buttonName; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButton.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButton.m deleted file mode 100644 index fa9fdf8..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButton.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSubscribeButton.h" -#import "SDLNames.h" - -@implementation SDLSubscribeButton - --(id) init { - if (self = [super initWithName:NAMES_SubscribeButton]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setButtonName:(SDLButtonName*) buttonName { - if (buttonName != nil) { - [parameters setObject:buttonName forKey:NAMES_buttonName]; - } else { - [parameters removeObjectForKey:NAMES_buttonName]; - } -} - --(SDLButtonName*) buttonName { - NSObject* obj = [parameters objectForKey:NAMES_buttonName]; - if ([obj isKindOfClass:SDLButtonName.class]) { - return (SDLButtonName*)obj; - } else { - return [SDLButtonName valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButtonResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButtonResponse.h deleted file mode 100644 index 1fc3d2b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButtonResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLSubscribeButtonResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButtonResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButtonResponse.m deleted file mode 100644 index ebeb318..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSubscribeButtonResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSubscribeButtonResponse.h" -#import "SDLNames.h" - -@implementation SDLSubscribeButtonResponse - --(id) init { - if (self = [super initWithName:NAMES_SubscribeButton]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSystemContext.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSystemContext.h deleted file mode 100644 index 6fa1b1f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSystemContext.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLSystemContext : SDLEnum {} - -+(SDLSystemContext*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLSystemContext*) SYSCTXT_MAIN; -+(SDLSystemContext*) SYSCTXT_VRSESSION; -+(SDLSystemContext*) SYSCTXT_MENU; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSystemContext.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSystemContext.m deleted file mode 100644 index f89aa0d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLSystemContext.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLSystemContext.h" - -SDLSystemContext* SDLSystemContext_SYSCTXT_MAIN = nil; -SDLSystemContext* SDLSystemContext_SYSCTXT_VRSESSION = nil; -SDLSystemContext* SDLSystemContext_SYSCTXT_MENU = nil; - -NSMutableArray* SDLSystemContext_values = nil; -@implementation SDLSystemContext - -+(SDLSystemContext*) valueOf:(NSString*) value { - for (SDLSystemContext* item in SDLSystemContext.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLSystemContext_values == nil) { - SDLSystemContext_values = [[NSMutableArray alloc] initWithObjects: - SDLSystemContext.SYSCTXT_MAIN, - SDLSystemContext.SYSCTXT_VRSESSION, - SDLSystemContext.SYSCTXT_MENU, - nil]; - } - return SDLSystemContext_values; -} - -+(SDLSystemContext*) SYSCTXT_MAIN { - if (SDLSystemContext_SYSCTXT_MAIN == nil) { - SDLSystemContext_SYSCTXT_MAIN = [[SDLSystemContext alloc] initWithValue:@"MAIN"]; - } - return SDLSystemContext_SYSCTXT_MAIN; -} - -+(SDLSystemContext*) SYSCTXT_VRSESSION { - if (SDLSystemContext_SYSCTXT_VRSESSION == nil) { - SDLSystemContext_SYSCTXT_VRSESSION = [[SDLSystemContext alloc] initWithValue:@"VRSESSION"]; - } - return SDLSystemContext_SYSCTXT_VRSESSION; -} - -+(SDLSystemContext*) SYSCTXT_MENU { - if (SDLSystemContext_SYSCTXT_MENU == nil) { - SDLSystemContext_SYSCTXT_MENU = [[SDLSystemContext alloc] initWithValue:@"MENU"]; - } - return SDLSystemContext_SYSCTXT_MENU; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.h deleted file mode 100644 index 65c5096..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLTBTState : SDLEnum{} - -+(SDLTBTState*) valueOf:(NSString*) value; - -+(NSMutableArray*) values; - -+(SDLTBTState*) ROUTE_UPDATE_REQUEST; -+(SDLTBTState*) ROUTE_ACCEPTED; -+(SDLTBTState*) ROUTE_REFUSED; -+(SDLTBTState*) ROUTE_CANCELLED; - -@end - - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.m deleted file mode 100644 index 8d0ea2d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTBTState.m +++ /dev/null @@ -1,66 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLTBTState.h" - -SDLTBTState* SDLTBTState_ROUTE_UPDATE_REQUEST = nil; -SDLTBTState* SDLTBTState_ROUTE_ACCEPTED = nil; -SDLTBTState* SDLTBTState_ROUTE_REFUSED = nil; -SDLTBTState* SDLTBTState_ROUTE_CANCELLED = nil; -NSMutableArray* SDLTBTState_values = nil; - -@implementation SDLTBTState - -+(SDLTBTState*) valueOf:(NSString*) value { - for (SDLTBTState* item in SDLTBTState.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray *) values { - if (SDLTBTState_values == nil) { - SDLTBTState_values = [[NSMutableArray alloc] initWithObjects: - SDLTBTState.ROUTE_UPDATE_REQUEST, - SDLTBTState.ROUTE_ACCEPTED, - SDLTBTState.ROUTE_REFUSED, - SDLTBTState.ROUTE_CANCELLED, - nil]; - } - return SDLTBTState_values; -} - -+(SDLTBTState*) ROUTE_UPDATE_REQUEST { - if (SDLTBTState_ROUTE_UPDATE_REQUEST == nil) { - SDLTBTState_ROUTE_UPDATE_REQUEST = [[SDLTBTState alloc] initWithValue:@"ROUTE_UPDATE_REQUEST"]; - } - return SDLTBTState_ROUTE_UPDATE_REQUEST; -} - -+(SDLTBTState*) ROUTE_ACCEPTED { - if (SDLTBTState_ROUTE_ACCEPTED == nil) { - SDLTBTState_ROUTE_ACCEPTED = [[SDLTBTState alloc] initWithValue:@"ROUTE_ACCEPTED"]; - } - return SDLTBTState_ROUTE_ACCEPTED; -} - -+(SDLTBTState*) ROUTE_REFUSED { - if (SDLTBTState_ROUTE_REFUSED == nil) { - SDLTBTState_ROUTE_REFUSED = [[SDLTBTState alloc] initWithValue:@"ROUTE_REFUSED"]; - } - return SDLTBTState_ROUTE_REFUSED; -} - -+(SDLTBTState*) ROUTE_CANCELLED { - if (SDLTBTState_ROUTE_CANCELLED == nil) { - SDLTBTState_ROUTE_CANCELLED = [[SDLTBTState alloc] initWithValue:@"ROUTE_CANCELLED "]; - } - return SDLTBTState_ROUTE_CANCELLED; -} - -@end - - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.h deleted file mode 100644 index 1b209f5..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - -#import "SDLSpeechCapabilities.h" - -@interface SDLTTSChunk : SDLRPCStruct {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) NSString* text; -@property(assign) SDLSpeechCapabilities* type; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.m deleted file mode 100644 index 072e08c..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTTSChunk.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLTTSChunk.h" -#import "SDLNames.h" - -@implementation SDLTTSChunk - --(id) init { - if (self = [super init]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setText:(NSString*) text { - if (text != nil) { - [store setObject:text forKey:NAMES_text]; - } else { - [store removeObjectForKey:NAMES_text]; - } -} - --(NSString*) text { - return [store objectForKey:NAMES_text]; -} - --(void) setType:(SDLSpeechCapabilities*) type { - if (type != nil) { - [store setObject:type forKey:NAMES_type]; - } else { - [store removeObjectForKey:NAMES_type]; - } -} - --(SDLSpeechCapabilities*) type { - NSObject* obj = [store objectForKey:NAMES_type]; - if ([obj isKindOfClass:SDLSpeechCapabilities.class]) { - return (SDLSpeechCapabilities*)obj; - } else { - return [SDLSpeechCapabilities valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextAlignment.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextAlignment.h deleted file mode 100644 index 4a26037..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextAlignment.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLTextAlignment : SDLEnum {} - -+(SDLTextAlignment*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLTextAlignment*) LEFT_ALIGNED; -+(SDLTextAlignment*) RIGHT_ALIGNED; -+(SDLTextAlignment*) CENTERED; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextAlignment.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextAlignment.m deleted file mode 100644 index ae34bd6..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextAlignment.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLTextAlignment.h" - -SDLTextAlignment* SDLTextAlignment_LEFT_ALIGNED = nil; -SDLTextAlignment* SDLTextAlignment_RIGHT_ALIGNED = nil; -SDLTextAlignment* SDLTextAlignment_CENTERED = nil; - -NSMutableArray* SDLTextAlignment_values = nil; -@implementation SDLTextAlignment - -+(SDLTextAlignment*) valueOf:(NSString*) value { - for (SDLTextAlignment* item in SDLTextAlignment.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLTextAlignment_values == nil) { - SDLTextAlignment_values = [[NSMutableArray alloc] initWithObjects: - SDLTextAlignment.LEFT_ALIGNED, - SDLTextAlignment.RIGHT_ALIGNED, - SDLTextAlignment.CENTERED, - nil]; - } - return SDLTextAlignment_values; -} - -+(SDLTextAlignment*) LEFT_ALIGNED { - if (SDLTextAlignment_LEFT_ALIGNED == nil) { - SDLTextAlignment_LEFT_ALIGNED = [[SDLTextAlignment alloc] initWithValue:@"LEFT_ALIGNED"]; - } - return SDLTextAlignment_LEFT_ALIGNED; -} - -+(SDLTextAlignment*) RIGHT_ALIGNED { - if (SDLTextAlignment_RIGHT_ALIGNED == nil) { - SDLTextAlignment_RIGHT_ALIGNED = [[SDLTextAlignment alloc] initWithValue:@"RIGHT_ALIGNED"]; - } - return SDLTextAlignment_RIGHT_ALIGNED; -} - -+(SDLTextAlignment*) CENTERED { - if (SDLTextAlignment_CENTERED == nil) { - SDLTextAlignment_CENTERED = [[SDLTextAlignment alloc] initWithValue:@"CENTERED"]; - } - return SDLTextAlignment_CENTERED; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextField.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextField.h deleted file mode 100644 index 3359d9b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextField.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - -#import "SDLTextFieldName.h" -#import "SDLCharacterSet.h" - -@interface SDLTextField : SDLRPCStruct {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLTextFieldName* name; -@property(assign) SDLCharacterSet* characterSet; -@property(assign) NSNumber* width; -@property(assign) NSNumber* rows; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextField.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextField.m deleted file mode 100644 index a21bb96..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextField.m +++ /dev/null @@ -1,78 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLTextField.h" -#import "SDLNames.h" - -@implementation SDLTextField - --(id) init { - if (self = [super init]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setName:(SDLTextFieldName*) name { - if (name != nil) { - [store setObject:name forKey:NAMES_name]; - } else { - [store removeObjectForKey:NAMES_name]; - } -} - --(SDLTextFieldName*) name { - NSObject* obj = [store objectForKey:NAMES_name]; - if ([obj isKindOfClass:SDLTextFieldName.class]) { - return (SDLTextFieldName*)obj; - } else { - return [SDLTextFieldName valueOf:(NSString*)obj]; - } -} - --(void) setCharacterSet:(SDLCharacterSet*) characterSet { - if (characterSet != nil) { - [store setObject:characterSet forKey:NAMES_characterSet]; - } else { - [store removeObjectForKey:NAMES_characterSet]; - } -} - --(SDLCharacterSet*) characterSet { - NSObject* obj = [store objectForKey:NAMES_characterSet]; - if ([obj isKindOfClass:SDLCharacterSet.class]) { - return (SDLCharacterSet*)obj; - } else { - return [SDLCharacterSet valueOf:(NSString*)obj]; - } -} - --(void) setWidth:(NSNumber*) width { - if (width != nil) { - [store setObject:width forKey:NAMES_width]; - } else { - [store removeObjectForKey:NAMES_width]; - } -} - --(NSNumber*) width { - return [store objectForKey:NAMES_width]; -} - --(void) setRows:(NSNumber*) rows { - if (rows != nil) { - [store setObject:rows forKey:NAMES_rows]; - } else { - [store removeObjectForKey:NAMES_rows]; - } -} - --(NSNumber*) rows { - return [store objectForKey:NAMES_rows]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextFieldName.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextFieldName.h deleted file mode 100644 index 880e954..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextFieldName.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLTextFieldName : SDLEnum {} - -+(SDLTextFieldName*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLTextFieldName*) mainField1; -+(SDLTextFieldName*) mainField2; -+(SDLTextFieldName*) statusBar; -+(SDLTextFieldName*) mediaClock; -+(SDLTextFieldName*) mediaTrack; -+(SDLTextFieldName*) alertText1; -+(SDLTextFieldName*) alertText2; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextFieldName.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextFieldName.m deleted file mode 100644 index ee7f014..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTextFieldName.m +++ /dev/null @@ -1,91 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLTextFieldName.h" - -SDLTextFieldName* SDLTextFieldName_mainField1 = nil; -SDLTextFieldName* SDLTextFieldName_mainField2 = nil; -SDLTextFieldName* SDLTextFieldName_statusBar = nil; -SDLTextFieldName* SDLTextFieldName_mediaClock = nil; -SDLTextFieldName* SDLTextFieldName_mediaTrack = nil; -SDLTextFieldName* SDLTextFieldName_alertText1 = nil; -SDLTextFieldName* SDLTextFieldName_alertText2 = nil; - -NSMutableArray* SDLTextFieldName_values = nil; -@implementation SDLTextFieldName - -+(SDLTextFieldName*) valueOf:(NSString*) value { - for (SDLTextFieldName* item in SDLTextFieldName.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLTextFieldName_values == nil) { - SDLTextFieldName_values = [[NSMutableArray alloc] initWithObjects: - SDLTextFieldName.mainField1, - SDLTextFieldName.mainField2, - SDLTextFieldName.statusBar, - SDLTextFieldName.mediaClock, - SDLTextFieldName.mediaTrack, - SDLTextFieldName.alertText1, - SDLTextFieldName.alertText2, - nil]; - } - return SDLTextFieldName_values; -} - -+(SDLTextFieldName*) mainField1 { - if (SDLTextFieldName_mainField1 == nil) { - SDLTextFieldName_mainField1 = [[SDLTextFieldName alloc] initWithValue:@"mainField1"]; - } - return SDLTextFieldName_mainField1; -} - -+(SDLTextFieldName*) mainField2 { - if (SDLTextFieldName_mainField2 == nil) { - SDLTextFieldName_mainField2 = [[SDLTextFieldName alloc] initWithValue:@"mainField2"]; - } - return SDLTextFieldName_mainField2; -} - -+(SDLTextFieldName*) statusBar { - if (SDLTextFieldName_statusBar == nil) { - SDLTextFieldName_statusBar = [[SDLTextFieldName alloc] initWithValue:@"statusBar"]; - } - return SDLTextFieldName_statusBar; -} - -+(SDLTextFieldName*) mediaClock { - if (SDLTextFieldName_mediaClock == nil) { - SDLTextFieldName_mediaClock = [[SDLTextFieldName alloc] initWithValue:@"mediaClock"]; - } - return SDLTextFieldName_mediaClock; -} - -+(SDLTextFieldName*) mediaTrack { - if (SDLTextFieldName_mediaTrack == nil) { - SDLTextFieldName_mediaTrack = [[SDLTextFieldName alloc] initWithValue:@"mediaTrack"]; - } - return SDLTextFieldName_mediaTrack; -} - -+(SDLTextFieldName*) alertText1 { - if (SDLTextFieldName_alertText1 == nil) { - SDLTextFieldName_alertText1 = [[SDLTextFieldName alloc] initWithValue:@"alertText1"]; - } - return SDLTextFieldName_alertText1; -} - -+(SDLTextFieldName*) alertText2 { - if (SDLTextFieldName_alertText2 == nil) { - SDLTextFieldName_alertText2 = [[SDLTextFieldName alloc] initWithValue:@"alertText2"]; - } - return SDLTextFieldName_alertText2; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTriggerSource.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTriggerSource.h deleted file mode 100644 index 59d1586..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTriggerSource.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLTriggerSource : SDLEnum {} - -+(SDLTriggerSource*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLTriggerSource*) TS_MENU; -+(SDLTriggerSource*) TS_VR; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTriggerSource.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTriggerSource.m deleted file mode 100644 index 77981ea..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLTriggerSource.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLTriggerSource.h" - -SDLTriggerSource* SDLTriggerSource_TS_MENU = nil; -SDLTriggerSource* SDLTriggerSource_TS_VR = nil; - -NSMutableArray* SDLTriggerSource_values = nil; -@implementation SDLTriggerSource - -+(SDLTriggerSource*) valueOf:(NSString*) value { - for (SDLTriggerSource* item in SDLTriggerSource.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLTriggerSource_values == nil) { - SDLTriggerSource_values = [[NSMutableArray alloc] initWithObjects: - SDLTriggerSource.TS_MENU, - SDLTriggerSource.TS_VR, - nil]; - } - return SDLTriggerSource_values; -} - -+(SDLTriggerSource*) TS_MENU { - if (SDLTriggerSource_TS_MENU == nil) { - SDLTriggerSource_TS_MENU = [[SDLTriggerSource alloc] initWithValue:@"MENU"]; - } - return SDLTriggerSource_TS_MENU; -} - -+(SDLTriggerSource*) TS_VR { - if (SDLTriggerSource_TS_VR == nil) { - SDLTriggerSource_TS_VR = [[SDLTriggerSource alloc] initWithValue:@"VR"]; - } - return SDLTriggerSource_TS_VR; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterface.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterface.h deleted file mode 100644 index 24feaf0..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterface.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -@interface SDLUnregisterAppInterface : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterface.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterface.m deleted file mode 100644 index a63a250..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterface.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLUnregisterAppInterface.h" -#import "SDLNames.h" - -@implementation SDLUnregisterAppInterface - --(id) init { - if (self = [super initWithName:NAMES_UnregisterAppInterface]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterfaceResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterfaceResponse.h deleted file mode 100644 index 11c382f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterfaceResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLUnregisterAppInterfaceResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterfaceResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterfaceResponse.m deleted file mode 100644 index d8bab3b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnregisterAppInterfaceResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLUnregisterAppInterfaceResponse.h" -#import "SDLNames.h" - -@implementation SDLUnregisterAppInterfaceResponse - --(id) init { - if (self = [super initWithName:NAMES_UnregisterAppInterface]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButton.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButton.h deleted file mode 100644 index 25d2ed6..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButton.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCRequest.h" - -#import "SDLButtonName.h" - -@interface SDLUnsubscribeButton : SDLRPCRequest {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(assign) SDLButtonName* buttonName; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButton.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButton.m deleted file mode 100644 index cc7e46c..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButton.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLUnsubscribeButton.h" -#import "SDLNames.h" - -@implementation SDLUnsubscribeButton - --(id) init { - if (self = [super initWithName:NAMES_UnsubscribeButton]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - --(void) setButtonName:(SDLButtonName*) buttonName { - if (buttonName != nil) { - [parameters setObject:buttonName forKey:NAMES_buttonName]; - } else { - [parameters removeObjectForKey:NAMES_buttonName]; - } -} - --(SDLButtonName*) buttonName { - NSObject* obj = [parameters objectForKey:NAMES_buttonName]; - if ([obj isKindOfClass:SDLButtonName.class]) { - return (SDLButtonName*)obj; - } else { - return [SDLButtonName valueOf:(NSString*)obj]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButtonResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButtonResponse.h deleted file mode 100644 index 1f6d45d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButtonResponse.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCResponse.h" - -#import "SDLResult.h" - -@interface SDLUnsubscribeButtonResponse : SDLRPCResponse {} - --(id) init; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButtonResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButtonResponse.m deleted file mode 100644 index abf1e01..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUnsubscribeButtonResponse.m +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLUnsubscribeButtonResponse.h" -#import "SDLNames.h" - -@implementation SDLUnsubscribeButtonResponse - --(id) init { - if (self = [super initWithName:NAMES_UnsubscribeButton]) {} - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) {} - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUpdateMode.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUpdateMode.h deleted file mode 100644 index 33e2872..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUpdateMode.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLUpdateMode : SDLEnum {} - -+(SDLUpdateMode*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLUpdateMode*) COUNTUP; -+(SDLUpdateMode*) COUNTDOWN; -+(SDLUpdateMode*) PAUSE; -+(SDLUpdateMode*) RESUME; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUpdateMode.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUpdateMode.m deleted file mode 100644 index 6db2850..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLUpdateMode.m +++ /dev/null @@ -1,64 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLUpdateMode.h" - -SDLUpdateMode* SDLUpdateMode_COUNTUP = nil; -SDLUpdateMode* SDLUpdateMode_COUNTDOWN = nil; -SDLUpdateMode* SDLUpdateMode_PAUSE = nil; -SDLUpdateMode* SDLUpdateMode_RESUME = nil; - -NSMutableArray* SDLUpdateMode_values = nil; -@implementation SDLUpdateMode - -+(SDLUpdateMode*) valueOf:(NSString*) value { - for (SDLUpdateMode* item in SDLUpdateMode.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLUpdateMode_values == nil) { - SDLUpdateMode_values = [[NSMutableArray alloc] initWithObjects: - SDLUpdateMode.COUNTUP, - SDLUpdateMode.COUNTDOWN, - SDLUpdateMode.PAUSE, - SDLUpdateMode.RESUME, - nil]; - } - return SDLUpdateMode_values; -} - -+(SDLUpdateMode*) COUNTUP { - if (SDLUpdateMode_COUNTUP == nil) { - SDLUpdateMode_COUNTUP = [[SDLUpdateMode alloc] initWithValue:@"COUNTUP"]; - } - return SDLUpdateMode_COUNTUP; -} - -+(SDLUpdateMode*) COUNTDOWN { - if (SDLUpdateMode_COUNTDOWN == nil) { - SDLUpdateMode_COUNTDOWN = [[SDLUpdateMode alloc] initWithValue:@"COUNTDOWN"]; - } - return SDLUpdateMode_COUNTDOWN; -} - -+(SDLUpdateMode*) PAUSE { - if (SDLUpdateMode_PAUSE == nil) { - SDLUpdateMode_PAUSE = [[SDLUpdateMode alloc] initWithValue:@"PAUSE"]; - } - return SDLUpdateMode_PAUSE; -} - -+(SDLUpdateMode*) RESUME { - if (SDLUpdateMode_RESUME == nil) { - SDLUpdateMode_RESUME = [[SDLUpdateMode alloc] initWithValue:@"RESUME"]; - } - return SDLUpdateMode_RESUME; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLVRCapabilities.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLVRCapabilities.h deleted file mode 100644 index 4aa2a47..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLVRCapabilities.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLVRCapabilities : SDLEnum {} - -+(SDLVRCapabilities*) valueOf:(NSString*) value; -+(NSMutableArray*) values; - -+(SDLVRCapabilities*) Text; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLVRCapabilities.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLVRCapabilities.m deleted file mode 100644 index 2cab853..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/RPC/SDLVRCapabilities.m +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLVRCapabilities.h" - -SDLVRCapabilities* SDLVRCapabilities_Text = nil; - -NSMutableArray* SDLVRCapabilities_values = nil; -@implementation SDLVRCapabilities - -+(SDLVRCapabilities*) valueOf:(NSString*) value { - for (SDLVRCapabilities* item in SDLVRCapabilities.values) { - if ([item.value isEqualToString:value]) { - return item; - } - } - return nil; -} - -+(NSMutableArray*) values { - if (SDLVRCapabilities_values == nil) { - SDLVRCapabilities_values = [[NSMutableArray alloc] initWithObjects: - SDLVRCapabilities.Text, - nil]; - } - return SDLVRCapabilities_values; -} - -+(SDLVRCapabilities*) Text { - if (SDLVRCapabilities_Text == nil) { - SDLVRCapabilities_Text = [[SDLVRCapabilities alloc] initWithValue:@"Text"]; - } - return SDLVRCapabilities_Text; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.h deleted file mode 100644 index 43d63c3..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - Copyright (C) 2007-2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import -#import "SBJsonParser.h" -#import "SBJsonWriter.h" - -/** - @brief Facade for SBJsonWriter/SBJsonParser. - - Requests are forwarded to instances of SBJsonWriter and SBJsonParser. - */ -@interface SBJSON : SBJsonBase { - -@private - SBJsonParser *jsonParser; - SBJsonWriter *jsonWriter; -} - - -/// Return the fragment represented by the given string -- (id)fragmentWithString:(NSString*)jsonrep - error:(NSError**)error; - -/// Return the object represented by the given string -- (id)objectWithString:(NSString*)jsonrep - error:(NSError**)error; - -/// Parse the string and return the represented object (or scalar) -- (id)objectWithString:(id)value - allowScalar:(BOOL)x - error:(NSError**)error; - - -/// Return JSON representation of an array or dictionary -- (NSString*)stringWithObject:(id)value - error:(NSError**)error; - -/// Return JSON representation of any legal JSON value -- (NSString*)stringWithFragment:(id)value - error:(NSError**)error; - -/// Return JSON representation (or fragment) for the given object -- (NSString*)stringWithObject:(id)value - allowScalar:(BOOL)x - error:(NSError**)error; - - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.m deleted file mode 100644 index 2a30f1a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJSON.m +++ /dev/null @@ -1,212 +0,0 @@ -/* - Copyright (C) 2007-2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import "SBJSON.h" - -@implementation SBJSON - -- (id)init { - self = [super init]; - if (self) { - jsonWriter = [SBJsonWriter new]; - jsonParser = [SBJsonParser new]; - [self setMaxDepth:512]; - - } - return self; -} - -- (void)dealloc { - [jsonWriter release]; - [jsonParser release]; - [super dealloc]; -} - -#pragma mark Writer - - -- (NSString *)stringWithObject:(id)obj { - NSString *repr = [jsonWriter stringWithObject:obj]; - if (repr) - return repr; - - [errorTrace release]; - errorTrace = [[jsonWriter errorTrace] mutableCopy]; - return nil; -} - -/** - Returns a string containing JSON representation of the passed in value, or nil on error. - If nil is returned and @p error is not NULL, @p *error can be interrogated to find the cause of the error. - - @param value any instance that can be represented as a JSON fragment - @param allowScalar wether to return json fragments for scalar objects - @param error used to return an error by reference (pass NULL if this is not desired) - -@deprecated Given we bill ourselves as a "strict" JSON library, this method should be removed. - */ -- (NSString*)stringWithObject:(id)value allowScalar:(BOOL)allowScalar error:(NSError**)error { - - NSString *json = allowScalar ? [jsonWriter stringWithFragment:value] : [jsonWriter stringWithObject:value]; - if (json) - return json; - - [errorTrace release]; - errorTrace = [[jsonWriter errorTrace] mutableCopy]; - - if (error) - *error = [errorTrace lastObject]; - return nil; -} - -/** - Returns a string containing JSON representation of the passed in value, or nil on error. - If nil is returned and @p error is not NULL, @p error can be interrogated to find the cause of the error. - - @param value any instance that can be represented as a JSON fragment - @param error used to return an error by reference (pass NULL if this is not desired) - - @deprecated Given we bill ourselves as a "strict" JSON library, this method should be removed. - */ -- (NSString*)stringWithFragment:(id)value error:(NSError**)error { - return [self stringWithObject:value - allowScalar:YES - error:error]; -} - -/** - Returns a string containing JSON representation of the passed in value, or nil on error. - If nil is returned and @p error is not NULL, @p error can be interrogated to find the cause of the error. - - @param value a NSDictionary or NSArray instance - @param error used to return an error by reference (pass NULL if this is not desired) - */ -- (NSString*)stringWithObject:(id)value error:(NSError**)error { - return [self stringWithObject:value - allowScalar:NO - error:error]; -} - -#pragma mark Parsing - -- (id)objectWithString:(NSString *)repr { - id obj = [jsonParser objectWithString:repr]; - if (obj) - return obj; - - [errorTrace release]; - errorTrace = [[jsonParser errorTrace] mutableCopy]; - - return nil; -} - -/** - Returns the object represented by the passed-in string or nil on error. The returned object can be - a string, number, boolean, null, array or dictionary. - - @param value the json string to parse - @param allowScalar whether to return objects for JSON fragments - @param error used to return an error by reference (pass NULL if this is not desired) - - @deprecated Given we bill ourselves as a "strict" JSON library, this method should be removed. - */ -- (id)objectWithString:(id)value allowScalar:(BOOL)allowScalar error:(NSError**)error { - - id obj = allowScalar ? [jsonParser fragmentWithString:value] : [jsonParser objectWithString:value]; - if (obj) - return obj; - - [errorTrace release]; - errorTrace = [[jsonParser errorTrace] mutableCopy]; - - if (error) - *error = [errorTrace lastObject]; - return nil; -} - -/** - Returns the object represented by the passed-in string or nil on error. The returned object can be - a string, number, boolean, null, array or dictionary. - - @param repr the json string to parse - @param error used to return an error by reference (pass NULL if this is not desired) - - @deprecated Given we bill ourselves as a "strict" JSON library, this method should be removed. - */ -- (id)fragmentWithString:(NSString*)repr error:(NSError**)error { - return [self objectWithString:repr - allowScalar:YES - error:error]; -} - -/** - Returns the object represented by the passed-in string or nil on error. The returned object - will be either a dictionary or an array. - - @param repr the json string to parse - @param error used to return an error by reference (pass NULL if this is not desired) - */ -- (id)objectWithString:(NSString*)repr error:(NSError**)error { - return [self objectWithString:repr - allowScalar:NO - error:error]; -} - - - -#pragma mark Properties - parsing - -- (NSUInteger)maxDepth { - return jsonParser.maxDepth; -} - -- (void)setMaxDepth:(NSUInteger)d { - jsonWriter.maxDepth = jsonParser.maxDepth = d; -} - - -#pragma mark Properties - writing - -- (BOOL)humanReadable { - return jsonWriter.humanReadable; -} - -- (void)setHumanReadable:(BOOL)x { - jsonWriter.humanReadable = x; -} - -- (BOOL)sortKeys { - return jsonWriter.sortKeys; -} - -- (void)setSortKeys:(BOOL)x { - jsonWriter.sortKeys = x; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.h deleted file mode 100644 index 7b10844..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import - -extern NSString * SBJSONErrorDomain; - - -enum { - EUNSUPPORTED = 1, - EPARSENUM, - EPARSE, - EFRAGMENT, - ECTRL, - EUNICODE, - EDEPTH, - EESCAPE, - ETRAILCOMMA, - ETRAILGARBAGE, - EEOF, - EINPUT -}; - -/** - @brief Common base class for parsing & writing. - - This class contains the common error-handling code and option between the parser/writer. - */ -@interface SBJsonBase : NSObject { - NSMutableArray *errorTrace; - -@protected - NSUInteger depth, maxDepth; -} - -/** - @brief The maximum recursing depth. - - Defaults to 512. If the input is nested deeper than this the input will be deemed to be - malicious and the parser returns nil, signalling an error. ("Nested too deep".) You can - turn off this security feature by setting the maxDepth value to 0. - */ -@property NSUInteger maxDepth; - -/** - @brief Return an error trace, or nil if there was no errors. - - Note that this method returns the trace of the last method that failed. - You need to check the return value of the call you're making to figure out - if the call actually failed, before you know call this method. - */ - @property(copy,readonly) NSArray* errorTrace; - -/// @internal for use in subclasses to add errors to the stack trace -- (void)addErrorWithCode:(NSUInteger)code description:(NSString*)str; - -/// @internal for use in subclasess to clear the error before a new parsing attempt -- (void)clearErrorTrace; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.m deleted file mode 100644 index 6684325..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonBase.m +++ /dev/null @@ -1,78 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import "SBJsonBase.h" -NSString * SBJSONErrorDomain = @"org.brautaset.JSON.ErrorDomain"; - - -@implementation SBJsonBase - -@synthesize errorTrace; -@synthesize maxDepth; - -- (id)init { - self = [super init]; - if (self) - self.maxDepth = 512; - return self; -} - -- (void)dealloc { - [errorTrace release]; - [super dealloc]; -} - -- (void)addErrorWithCode:(NSUInteger)code description:(NSString*)str { - NSDictionary *userInfo; - if (!errorTrace) { - errorTrace = [NSMutableArray new]; - userInfo = [NSDictionary dictionaryWithObject:str forKey:NSLocalizedDescriptionKey]; - - } else { - userInfo = [NSDictionary dictionaryWithObjectsAndKeys: - str, NSLocalizedDescriptionKey, - [errorTrace lastObject], NSUnderlyingErrorKey, - nil]; - } - - NSError *error = [NSError errorWithDomain:SBJSONErrorDomain code:code userInfo:userInfo]; - - [self willChangeValueForKey:@"errorTrace"]; - [errorTrace addObject:error]; - [self didChangeValueForKey:@"errorTrace"]; -} - -- (void)clearErrorTrace { - [self willChangeValueForKey:@"errorTrace"]; - [errorTrace release]; - errorTrace = nil; - [self didChangeValueForKey:@"errorTrace"]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonParser.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonParser.h deleted file mode 100644 index e95304d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonParser.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import -#import "SBJsonBase.h" - -/** - @brief Options for the parser class. - - This exists so the SBJSON facade can implement the options in the parser without having to re-declare them. - */ -@protocol SBJsonParser - -/** - @brief Return the object represented by the given string. - - Returns the object represented by the passed-in string or nil on error. The returned object can be - a string, number, boolean, null, array or dictionary. - - @param repr the json string to parse - */ -- (id)objectWithString:(NSString *)repr; - -@end - - -/** - @brief The JSON parser class. - - JSON is mapped to Objective-C types in the following way: - - @li Null -> NSNull - @li String -> NSMutableString - @li Array -> NSMutableArray - @li Object -> NSMutableDictionary - @li Boolean -> NSNumber (initialised with -initWithBool:) - @li Number -> NSDecimalNumber - - Since Objective-C doesn't have a dedicated class for boolean values, these turns into NSNumber - instances. These are initialised with the -initWithBool: method, and - round-trip back to JSON properly. (They won't silently suddenly become 0 or 1; they'll be - represented as 'true' and 'false' again.) - - JSON numbers turn into NSDecimalNumber instances, - as we can thus avoid any loss of precision. (JSON allows ridiculously large numbers.) - - */ -@interface SBJsonParser : SBJsonBase { - -@private - const char *c; -} - -@end - -// don't use - exists for backwards compatibility with 2.1.x only. Will be removed in 2.3. -@interface SBJsonParser (Private) -- (id)fragmentWithString:(id)repr; -@end - - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonParser.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonParser.m deleted file mode 100644 index 0fdfb36..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonParser.m +++ /dev/null @@ -1,475 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import "SBJsonParser.h" - -@interface SBJsonParser () - -- (BOOL)scanValue:(NSObject **)o; - -- (BOOL)scanRestOfArray:(NSMutableArray **)o; -- (BOOL)scanRestOfDictionary:(NSMutableDictionary **)o; -- (BOOL)scanRestOfNull:(NSNull **)o; -- (BOOL)scanRestOfFalse:(NSNumber **)o; -- (BOOL)scanRestOfTrue:(NSNumber **)o; -- (BOOL)scanRestOfString:(NSMutableString **)o; - -// Cannot manage without looking at the first digit -- (BOOL)scanNumber:(NSNumber **)o; - -- (BOOL)scanHexQuad:(unichar *)x; -- (BOOL)scanUnicodeChar:(unichar *)x; - -- (BOOL)scanIsAtEnd; - -@end - -#define skipWhitespace(c) while (isspace(*c)) c++ -#define skipDigits(c) while (isdigit(*c)) c++ - - -@implementation SBJsonParser - -static char ctrl[0x22]; - -+ (void)initialize -{ - ctrl[0] = '\"'; - ctrl[1] = '\\'; - for (int i = 1; i < 0x20; i++) - ctrl[i+1] = i; - ctrl[0x21] = 0; -} - -/** - @deprecated This exists in order to provide fragment support in older APIs in one more version. - It should be removed in the next major version. - */ -- (id)fragmentWithString:(id)repr { - [self clearErrorTrace]; - - if (!repr) { - [self addErrorWithCode:EINPUT description:@"Input was 'nil'"]; - return nil; - } - - depth = 0; - c = [repr UTF8String]; - - id o; - if (![self scanValue:&o]) { - return nil; - } - - // We found some valid JSON. But did it also contain something else? - if (![self scanIsAtEnd]) { - [self addErrorWithCode:ETRAILGARBAGE description:@"Garbage after JSON"]; - return nil; - } - - NSAssert1(o, @"Should have a valid object from %@", repr); - return o; -} - -- (id)objectWithString:(NSString *)repr { - - id o = [self fragmentWithString:repr]; - if (!o) - return nil; - - // Check that the object we've found is a valid JSON container. - if (![o isKindOfClass:[NSDictionary class]] && ![o isKindOfClass:[NSArray class]]) { - [self addErrorWithCode:EFRAGMENT description:@"Valid fragment, but not JSON"]; - return nil; - } - - return o; -} - -/* - In contrast to the public methods, it is an error to omit the error parameter here. - */ -- (BOOL)scanValue:(NSObject **)o -{ - skipWhitespace(c); - - switch (*c++) { - case '{': - return [self scanRestOfDictionary:(NSMutableDictionary **)o]; - break; - case '[': - return [self scanRestOfArray:(NSMutableArray **)o]; - break; - case '"': - return [self scanRestOfString:(NSMutableString **)o]; - break; - case 'f': - return [self scanRestOfFalse:(NSNumber **)o]; - break; - case 't': - return [self scanRestOfTrue:(NSNumber **)o]; - break; - case 'n': - return [self scanRestOfNull:(NSNull **)o]; - break; - case '-': - case '0'...'9': - c--; // cannot verify number correctly without the first character - return [self scanNumber:(NSNumber **)o]; - break; - case '+': - [self addErrorWithCode:EPARSENUM description: @"Leading + disallowed in number"]; - return NO; - break; - case 0x0: - [self addErrorWithCode:EEOF description:@"Unexpected end of string"]; - return NO; - break; - default: - [self addErrorWithCode:EPARSE description: @"Unrecognised leading character"]; - return NO; - break; - } - - NSAssert(0, @"Should never get here"); - return NO; -} - -- (BOOL)scanRestOfTrue:(NSNumber **)o -{ - if (!strncmp(c, "rue", 3)) { - c += 3; - *o = [NSNumber numberWithBool:YES]; - return YES; - } - [self addErrorWithCode:EPARSE description:@"Expected 'true'"]; - return NO; -} - -- (BOOL)scanRestOfFalse:(NSNumber **)o -{ - if (!strncmp(c, "alse", 4)) { - c += 4; - *o = [NSNumber numberWithBool:NO]; - return YES; - } - [self addErrorWithCode:EPARSE description: @"Expected 'false'"]; - return NO; -} - -- (BOOL)scanRestOfNull:(NSNull **)o { - if (!strncmp(c, "ull", 3)) { - c += 3; - *o = [NSNull null]; - return YES; - } - [self addErrorWithCode:EPARSE description: @"Expected 'null'"]; - return NO; -} - -- (BOOL)scanRestOfArray:(NSMutableArray **)o { - if (maxDepth && ++depth > maxDepth) { - [self addErrorWithCode:EDEPTH description: @"Nested too deep"]; - return NO; - } - - *o = [NSMutableArray arrayWithCapacity:8]; - - for (; *c ;) { - id v; - - skipWhitespace(c); - if (*c == ']' && c++) { - depth--; - return YES; - } - - if (![self scanValue:&v]) { - [self addErrorWithCode:EPARSE description:@"Expected value while parsing array"]; - return NO; - } - - [*o addObject:v]; - - skipWhitespace(c); - if (*c == ',' && c++) { - skipWhitespace(c); - if (*c == ']') { - [self addErrorWithCode:ETRAILCOMMA description: @"Trailing comma disallowed in array"]; - return NO; - } - } - } - - [self addErrorWithCode:EEOF description: @"End of input while parsing array"]; - return NO; -} - -- (BOOL)scanRestOfDictionary:(NSMutableDictionary **)o -{ - if (maxDepth && ++depth > maxDepth) { - [self addErrorWithCode:EDEPTH description: @"Nested too deep"]; - return NO; - } - - *o = [NSMutableDictionary dictionaryWithCapacity:7]; - - for (; *c ;) { - id k, v; - - skipWhitespace(c); - if (*c == '}' && c++) { - depth--; - return YES; - } - - if (!(*c == '\"' && c++ && [self scanRestOfString:&k])) { - [self addErrorWithCode:EPARSE description: @"Object key string expected"]; - return NO; - } - - skipWhitespace(c); - if (*c != ':') { - [self addErrorWithCode:EPARSE description: @"Expected ':' separating key and value"]; - return NO; - } - - c++; - if (![self scanValue:&v]) { - NSString *string = [NSString stringWithFormat:@"Object value expected for key: %@", k]; - [self addErrorWithCode:EPARSE description: string]; - return NO; - } - - [*o setObject:v forKey:k]; - - skipWhitespace(c); - if (*c == ',' && c++) { - skipWhitespace(c); - if (*c == '}') { - [self addErrorWithCode:ETRAILCOMMA description: @"Trailing comma disallowed in object"]; - return NO; - } - } - } - - [self addErrorWithCode:EEOF description: @"End of input while parsing object"]; - return NO; -} - -- (BOOL)scanRestOfString:(NSMutableString **)o -{ - *o = [NSMutableString stringWithCapacity:16]; - do { - // First see if there's a portion we can grab in one go. - // Doing this caused a massive speedup on the long string. - size_t len = strcspn(c, ctrl); - if (len) { - // check for - id t = [[NSString alloc] initWithBytesNoCopy:(char*)c - length:len - encoding:NSUTF8StringEncoding - freeWhenDone:NO]; - if (t) { - [*o appendString:t]; - [t release]; - c += len; - } - } - - if (*c == '"') { - c++; - return YES; - - } else if (*c == '\\') { - unichar uc = *++c; - switch (uc) { - case '\\': - case '/': - case '"': - break; - - case 'b': uc = '\b'; break; - case 'n': uc = '\n'; break; - case 'r': uc = '\r'; break; - case 't': uc = '\t'; break; - case 'f': uc = '\f'; break; - - case 'u': - c++; - if (![self scanUnicodeChar:&uc]) { - [self addErrorWithCode:EUNICODE description: @"Broken unicode character"]; - return NO; - } - c--; // hack. - break; - default: - [self addErrorWithCode:EESCAPE description: [NSString stringWithFormat:@"Illegal escape sequence '0x%x'", uc]]; - return NO; - break; - } - CFStringAppendCharacters((CFMutableStringRef)*o, &uc, 1); - c++; - - } else if (*c < 0x20) { - [self addErrorWithCode:ECTRL description: [NSString stringWithFormat:@"Unescaped control character '0x%x'", *c]]; - return NO; - - } else { - NSLog(@"should not be able to get here"); - } - } while (*c); - - [self addErrorWithCode:EEOF description:@"Unexpected EOF while parsing string"]; - return NO; -} - -- (BOOL)scanUnicodeChar:(unichar *)x -{ - unichar hi, lo; - - if (![self scanHexQuad:&hi]) { - [self addErrorWithCode:EUNICODE description: @"Missing hex quad"]; - return NO; - } - - if (hi >= 0xd800) { // high surrogate char? - if (hi < 0xdc00) { // yes - expect a low char - - if (!(*c == '\\' && ++c && *c == 'u' && ++c && [self scanHexQuad:&lo])) { - [self addErrorWithCode:EUNICODE description: @"Missing low character in surrogate pair"]; - return NO; - } - - if (lo < 0xdc00 || lo >= 0xdfff) { - [self addErrorWithCode:EUNICODE description:@"Invalid low surrogate char"]; - return NO; - } - - hi = (hi - 0xd800) * 0x400 + (lo - 0xdc00) + 0x10000; - - } else if (hi < 0xe000) { - [self addErrorWithCode:EUNICODE description:@"Invalid high character in surrogate pair"]; - return NO; - } - } - - *x = hi; - return YES; -} - -- (BOOL)scanHexQuad:(unichar *)x -{ - *x = 0; - for (int i = 0; i < 4; i++) { - unichar uc = *c; - c++; - int d = (uc >= '0' && uc <= '9') - ? uc - '0' : (uc >= 'a' && uc <= 'f') - ? (uc - 'a' + 10) : (uc >= 'A' && uc <= 'F') - ? (uc - 'A' + 10) : -1; - if (d == -1) { - [self addErrorWithCode:EUNICODE description:@"Missing hex digit in quad"]; - return NO; - } - *x *= 16; - *x += d; - } - return YES; -} - -- (BOOL)scanNumber:(NSNumber **)o -{ - const char *ns = c; - - // The logic to test for validity of the number formatting is relicensed - // from JSON::XS with permission from its author Marc Lehmann. - // (Available at the CPAN: http://search.cpan.org/dist/JSON-XS/ .) - - if ('-' == *c) - c++; - - if ('0' == *c && c++) { - if (isdigit(*c)) { - [self addErrorWithCode:EPARSENUM description: @"Leading 0 disallowed in number"]; - return NO; - } - - } else if (!isdigit(*c) && c != ns) { - [self addErrorWithCode:EPARSENUM description: @"No digits after initial minus"]; - return NO; - - } else { - skipDigits(c); - } - - // Fractional part - if ('.' == *c && c++) { - - if (!isdigit(*c)) { - [self addErrorWithCode:EPARSENUM description: @"No digits after decimal point"]; - return NO; - } - skipDigits(c); - } - - // Exponential part - if ('e' == *c || 'E' == *c) { - c++; - - if ('-' == *c || '+' == *c) - c++; - - if (!isdigit(*c)) { - [self addErrorWithCode:EPARSENUM description: @"No digits after exponent"]; - return NO; - } - skipDigits(c); - } - - id str = [[NSString alloc] initWithBytesNoCopy:(char*)ns - length:c - ns - encoding:NSUTF8StringEncoding - freeWhenDone:NO]; - [str autorelease]; - if (str && (*o = [NSDecimalNumber decimalNumberWithString:str])) - return YES; - - [self addErrorWithCode:EPARSENUM description: @"Failed creating decimal instance"]; - return NO; -} - -- (BOOL)scanIsAtEnd -{ - skipWhitespace(c); - return !*c; -} - - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonWriter.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonWriter.h deleted file mode 100644 index f6f5e17..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonWriter.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import -#import "SBJsonBase.h" - -/** - @brief Options for the writer class. - - This exists so the SBJSON facade can implement the options in the writer without having to re-declare them. - */ -@protocol SBJsonWriter - -/** - @brief Whether we are generating human-readable (multiline) JSON. - - Set whether or not to generate human-readable JSON. The default is NO, which produces - JSON without any whitespace. (Except inside strings.) If set to YES, generates human-readable - JSON with linebreaks after each array value and dictionary key/value pair, indented two - spaces per nesting level. - */ -@property BOOL humanReadable; - -/** - @brief Whether or not to sort the dictionary keys in the output. - - If this is set to YES, the dictionary keys in the JSON output will be in sorted order. - (This is useful if you need to compare two structures, for example.) The default is NO. - */ -@property BOOL sortKeys; - -/** - @brief Return JSON representation (or fragment) for the given object. - - Returns a string containing JSON representation of the passed in value, or nil on error. - If nil is returned and @p error is not NULL, @p *error can be interrogated to find the cause of the error. - - @param value any instance that can be represented as a JSON fragment - - */ -- (NSString*)stringWithObject:(id)value; - -@end - - -/** - @brief The JSON writer class. - - Objective-C types are mapped to JSON types in the following way: - - @li NSNull -> Null - @li NSString -> String - @li NSArray -> Array - @li NSDictionary -> Object - @li NSNumber (-initWithBool:) -> Boolean - @li NSNumber -> Number - - In JSON the keys of an object must be strings. NSDictionary keys need - not be, but attempting to convert an NSDictionary with non-string keys - into JSON will throw an exception. - - NSNumber instances created with the +initWithBool: method are - converted into the JSON boolean "true" and "false" values, and vice - versa. Any other NSNumber instances are converted to a JSON number the - way you would expect. - - */ -@interface SBJsonWriter : SBJsonBase { - -@private - BOOL sortKeys, humanReadable; -} - -@end - -// don't use - exists for backwards compatibility. Will be removed in 2.3. -@interface SBJsonWriter (Private) -- (NSString*)stringWithFragment:(id)value; -@end - -/** - @brief Allows generation of JSON for otherwise unsupported classes. - - If you have a custom class that you want to create a JSON representation for you can implement - this method in your class. It should return a representation of your object defined - in terms of objects that can be translated into JSON. For example, a Person - object might implement it like this: - - @code - - (id)jsonProxyObject { - return [NSDictionary dictionaryWithObjectsAndKeys: - name, @"name", - phone, @"phone", - email, @"email", - nil]; - } - @endcode - - */ -@interface NSObject (SBProxyForJson) -- (id)proxyForJson; -@end - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonWriter.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonWriter.m deleted file mode 100644 index 03718b9..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SBJsonWriter.m +++ /dev/null @@ -1,228 +0,0 @@ -/* - Copyright (C) 2009 Stig Brautaset. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * 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. - - * Neither the name of the author 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 OWNER 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. - */ - -#import "SBJsonWriter.h" - -@interface SBJsonWriter () - -- (BOOL)appendValue:(id)fragment into:(NSMutableString*)json; -- (BOOL)appendArray:(NSArray*)fragment into:(NSMutableString*)json; -- (BOOL)appendDictionary:(NSDictionary*)fragment into:(NSMutableString*)json; -- (BOOL)appendString:(NSString*)fragment into:(NSMutableString*)json; - -- (NSString*)indent; - -@end - -@implementation SBJsonWriter - -@synthesize sortKeys; -@synthesize humanReadable; - -/** - @deprecated This exists in order to provide fragment support in older APIs in one more version. - It should be removed in the next major version. - */ -- (NSString*)stringWithFragment:(id)value { - [self clearErrorTrace]; - depth = 0; - NSMutableString *json = [NSMutableString stringWithCapacity:128]; - - if ([self appendValue:value into:json]) - return json; - - return nil; -} - - -- (NSString*)stringWithObject:(id)value { - - if ([value isKindOfClass:[NSDictionary class]] || [value isKindOfClass:[NSArray class]]) { - return [self stringWithFragment:value]; - } - - [self clearErrorTrace]; - [self addErrorWithCode:EFRAGMENT description:@"Not valid type for JSON"]; - return nil; -} - - -- (NSString*)indent { - return [@"\n" stringByPaddingToLength:1 + 2 * depth withString:@" " startingAtIndex:0]; -} - -- (BOOL)appendValue:(id)fragment into:(NSMutableString*)json { - if ([fragment isKindOfClass:[NSDictionary class]]) { - if (![self appendDictionary:fragment into:json]) - return NO; - - } else if ([fragment isKindOfClass:[NSArray class]]) { - if (![self appendArray:fragment into:json]) - return NO; - - } else if ([fragment isKindOfClass:[NSString class]]) { - if (![self appendString:fragment into:json]) - return NO; - - } else if ([fragment isKindOfClass:[NSNumber class]]) { - if ('c' == *[fragment objCType]) - [json appendString:[fragment boolValue] ? @"true" : @"false"]; - else - [json appendString:[fragment stringValue]]; - - } else if ([fragment isKindOfClass:[NSNull class]]) { - [json appendString:@"null"]; - } else if ([fragment respondsToSelector:@selector(proxyForJson)]) { - [self appendValue:[fragment proxyForJson] into:json]; - - } else { - [self addErrorWithCode:EUNSUPPORTED description:[NSString stringWithFormat:@"JSON serialisation not supported for %@", [fragment class]]]; - return NO; - } - return YES; -} - -- (BOOL)appendArray:(NSArray*)fragment into:(NSMutableString*)json { - if (maxDepth && ++depth > maxDepth) { - [self addErrorWithCode:EDEPTH description: @"Nested too deep"]; - return NO; - } - [json appendString:@"["]; - - BOOL addComma = NO; - for (id value in fragment) { - if (addComma) - [json appendString:@","]; - else - addComma = YES; - - if ([self humanReadable]) - [json appendString:[self indent]]; - - if (![self appendValue:value into:json]) { - return NO; - } - } - - depth--; - if ([self humanReadable] && [fragment count]) - [json appendString:[self indent]]; - [json appendString:@"]"]; - return YES; -} - -- (BOOL)appendDictionary:(NSDictionary*)fragment into:(NSMutableString*)json { - if (maxDepth && ++depth > maxDepth) { - [self addErrorWithCode:EDEPTH description: @"Nested too deep"]; - return NO; - } - [json appendString:@"{"]; - - NSString *colon = [self humanReadable] ? @" : " : @":"; - BOOL addComma = NO; - NSArray *keys = [fragment allKeys]; - if (self.sortKeys) - keys = [keys sortedArrayUsingSelector:@selector(compare:)]; - - for (id value in keys) { - if (addComma) - [json appendString:@","]; - else - addComma = YES; - - if ([self humanReadable]) - [json appendString:[self indent]]; - - if (![value isKindOfClass:[NSString class]]) { - [self addErrorWithCode:EUNSUPPORTED description: @"JSON object key must be string"]; - return NO; - } - - if (![self appendString:value into:json]) - return NO; - - [json appendString:colon]; - if (![self appendValue:[fragment objectForKey:value] into:json]) { - [self addErrorWithCode:EUNSUPPORTED description:[NSString stringWithFormat:@"Unsupported value for key %@ in object", value]]; - return NO; - } - } - - depth--; - if ([self humanReadable] && [fragment count]) - [json appendString:[self indent]]; - [json appendString:@"}"]; - return YES; -} - -- (BOOL)appendString:(NSString*)fragment into:(NSMutableString*)json { - - static NSMutableCharacterSet *kEscapeChars; - if( ! kEscapeChars ) { - kEscapeChars = [[NSMutableCharacterSet characterSetWithRange: NSMakeRange(0,32)] retain]; - [kEscapeChars addCharactersInString: @"\"\\"]; - } - - [json appendString:@"\""]; - - NSRange esc = [fragment rangeOfCharacterFromSet:kEscapeChars]; - if ( !esc.length ) { - // No special chars -- can just add the raw string: - [json appendString:fragment]; - - } else { - NSUInteger length = [fragment length]; - for (NSUInteger i = 0; i < length; i++) { - unichar uc = [fragment characterAtIndex:i]; - switch (uc) { - case '"': [json appendString:@"\\\""]; break; - case '\\': [json appendString:@"\\\\"]; break; - case '\t': [json appendString:@"\\t"]; break; - case '\n': [json appendString:@"\\n"]; break; - case '\r': [json appendString:@"\\r"]; break; - case '\b': [json appendString:@"\\b"]; break; - case '\f': [json appendString:@"\\f"]; break; - default: - if (uc < 0x20) { - [json appendFormat:@"\\u%04x", uc]; - } else { - CFStringAppendCharacters((CFMutableStringRef)json, &uc, 1); - } - break; - - } - } - } - - [json appendString:@"\""]; - return YES; -} - - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractProtocol.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractProtocol.h deleted file mode 100644 index 28e0a0c..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractProtocol.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLITransport.h" -#import "SDLIProtocol.h" - -@interface SDLAbstractProtocol : NSObject { - NSObject* transport; - NSMutableArray* protocolListeners; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractProtocol.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractProtocol.m deleted file mode 100644 index 1bd8d3d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractProtocol.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAbstractProtocol.h" -#import "SDLDebugTool.h" - -@implementation SDLAbstractProtocol - --(void) sendStartSessionWithType:(SDLSessionType) sessionType { - [self doesNotRecognizeSelector:_cmd]; -} - --(void) sendEndSessionWithType:(SDLSessionType)sessionType sessionID:(Byte)sessionID { - [self doesNotRecognizeSelector:_cmd]; -} - --(void) sendData:(NSData*) data sessionType:(SDLSessionType)sessionType sessionID:(Byte)sessionID { - [self doesNotRecognizeSelector:_cmd]; -} - --(void) handleBytesFromTransport:(Byte *)receivedBytes length:(long)receivedBytesLength { - [self doesNotRecognizeSelector:_cmd]; -} - --(id) init { - if (self = [super init]) { - protocolListeners = [[NSMutableArray alloc] initWithCapacity:1]; - } - return self; -} - --(void) addProtocolListener:(NSObject*)listener { - @synchronized (protocolListeners) { - [protocolListeners addObject:listener]; - } -} - --(void) removeProtocolListener:(NSObject*)listener { - @synchronized (protocolListeners) { - [protocolListeners removeObject:listener]; - } -} - --(void) setTransport:(NSObject*) theTransport { - transport = theTransport; -} - --(NSObject*) transport { - return transport; -} - -- (void) onTransportConnected { - NSArray* localListeners = nil; - - @synchronized(protocolListeners) { - localListeners = [protocolListeners copy]; - } - - for (NSObject* listener in localListeners) { - - [listener onProtocolOpened]; - } - [localListeners release]; -} - -- (void) onTransportDisconnected {NSArray* localListeners = nil; - @synchronized(protocolListeners) { - localListeners = [protocolListeners copy]; - } - - for (NSObject* listener in localListeners) { - - [listener onProtocolClosed]; - } - [localListeners release]; -} - -- (void) onBytesReceived:(Byte*)bytes length:(long) length { - [self handleBytesFromTransport:(Byte*)bytes length:length]; -} - --(void) dealloc { - [protocolListeners release]; - [super dealloc]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractTransport.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractTransport.h deleted file mode 100644 index 83f10de..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractTransport.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLITransport.h" - -@interface SDLAbstractTransport : NSObject { - NSString* guid; - NSString* endpointName; - NSString* endpointParam; - bool isSecure; - bool isConnected; - NSMutableArray* transportListeners; - - UInt8* accumBuf; - long accumBufWritePos; - long accumBufLength; - NSLock* accumBufLock; - - int mtuSize; -} - -@property (readonly) NSString* guid; -@property (readonly) NSString* endpointName; -@property (readonly) NSString* endpointParam; -@property (assign) bool isSecure; -@property (assign) bool isConnected; - -@property(assign) int mtuSize; - -- (id) initWithEndpoint:(NSString*) endpoint endpointParam:(NSString*) endointParam; -- (void) notifyTransportConnected; -- (void) notifyTransportDisconnected; -- (void) handleBytesReceivedFromTransport:(Byte*) receivedBytes length:(int) receivedBytesLength; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractTransport.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractTransport.m deleted file mode 100644 index 482ae65..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLAbstractTransport.m +++ /dev/null @@ -1,137 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLAbstractTransport.h" -#import "SDLTransportListener.h" -#import "SDLDebugTool.h" - -@interface SDLAbstractTransport () - -+ (id) createMutableArrayUsingWeakReferences; - -@end - -@implementation SDLAbstractTransport - -@synthesize endpointName; -@synthesize endpointParam; -@synthesize guid; -@synthesize isSecure; -@synthesize isConnected; - -@synthesize mtuSize; - -- (id) initWithEndpoint:(NSString*) endpoint endpointParam:(NSString*) param { - if (self = [super init]) { - endpointName = [endpoint retain]; - endpointParam = [param retain]; - - NSMutableString* tempGuid = [[NSMutableString alloc] initWithFormat: @"%x", arc4random()]; - for (int i=0; i < 3; i++) { - [tempGuid appendFormat:@"%x", arc4random()]; - } - guid = tempGuid; - - transportListeners = [SDLAbstractTransport createMutableArrayUsingWeakReferences]; - - accumBufLength = 4096; - accumBuf = (UInt8*)malloc(accumBufLength * sizeof(UInt8)); - accumBufWritePos = 0; - accumBufLock = [[NSLock alloc] init]; - - return self; - } - return self; -} - -- (void) dealloc { - [endpointName release]; - [endpointParam release]; - [transportListeners release]; - [guid release]; - [accumBufLock release]; - free(accumBuf); - - [super dealloc]; -} - -// This follows the create rule, meaning that the caller of this method owns the returned instance -+ (id) createMutableArrayUsingWeakReferences { - CFArrayCallBacks callbacks = {0, NULL, NULL, CFCopyDescription, CFEqual}; - return (id)(CFArrayCreateMutable(0, 0, &callbacks)); -} - -- (void) addTransportListener:(NSObject*)listener { - - @synchronized (transportListeners) { - [transportListeners addObject:listener]; // If this array isn't released, it's objects will not be released either - } -} - -- (void) removeTransportListener:(NSObject*)listener { - @synchronized (transportListeners) { - [transportListeners removeObject:listener]; - } -} - -- (void) notifyTransportConnected { - self.isConnected = YES; - - NSArray *localListeners = nil; - @synchronized (transportListeners) { - localListeners = [transportListeners copy]; - } - - for (NSObject* listener in localListeners) { - [listener onTransportConnected]; - } - [localListeners release]; -} - -- (void) notifyTransportDisconnected { - if (self.isConnected) { - self.isConnected = NO; - - NSArray *localListeners = nil; - @synchronized (transportListeners) { - localListeners = [transportListeners copy]; - } - - for (NSObject* listener in localListeners) { - [listener onTransportDisconnected]; - } - [localListeners release]; - } -} - -- (void) handleBytesReceivedFromTransport:(Byte*) receivedBytes length:(int) receivedBytesLength { - - NSArray *localListeners = nil; - @synchronized (transportListeners) { - localListeners = [transportListeners copy]; - } - - for (NSObject* listener in localListeners) { - [listener onBytesReceived:receivedBytes length:receivedBytesLength]; - } - [localListeners release]; - -} // end-message - -- (bool) sendBytes:(NSData*) msgBytes { - [self doesNotRecognizeSelector:_cmd]; - return NO; -} - -- (void) disconnect { - [self doesNotRecognizeSelector:_cmd]; -} - -- (bool) connect { - [self doesNotRecognizeSelector:_cmd]; - return NO; -} - - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLBitConverter.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLBitConverter.h deleted file mode 100644 index c47d430..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLBitConverter.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -@interface SDLBitConverter : NSObject {} - -+(NSData*) intToByteArray:(UInt32) value; -+(UInt32) intFromByteArray:(Byte*) sizeBuf offset:(UInt32) offset; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLBitConverter.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLBitConverter.m deleted file mode 100644 index f3bf052..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLBitConverter.m +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLBitConverter.h" - -@implementation SDLBitConverter - -+(NSData*) intToByteArray:(UInt32) value { - void* bufPtr = malloc(4); - assert(bufPtr); - NSData* ret = [NSData dataWithBytesNoCopy:bufPtr length:4]; - Byte* bytePtr = (Byte*)ret.bytes; - bytePtr[0] = (Byte)(value >> 24); - bytePtr[1] = (Byte)(value >> 16); - bytePtr[2] = (Byte)(value >> 8); - bytePtr[3] = (Byte)value; - return ret; -} - -+(UInt32) intFromByteArray:(Byte*) sizeBuf offset:(UInt32)offset { - UInt32 ret = 0; - for (UInt32 i = offset; i < offset + 4; i++) { - ret <<= 8; - ret |= 0xFF & sizeBuf[i]; - } - return ret; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.h deleted file mode 100644 index 209a2cc..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" -#import "SDLDebugTool.h" - -@interface SDLConsoleController : UITableViewController { - NSMutableArray* messageList; - BOOL atBottom; -} - -@property (readonly) NSMutableArray *messageList; - --(id) initWithTableView:(UITableView*) tableView; - --(void) appendString:(NSString*) toAppend; --(void) appendMessage:(SDLRPCMessage*) toAppend; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.m deleted file mode 100644 index a610807..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.m +++ /dev/null @@ -1,202 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLConsoleController.h" -#import "SDLJSONEncoder.h" -#import "SDLDebugTool.h" -#import "SDLRPCResponse.h" - -@implementation SDLConsoleController - -@synthesize messageList; - --(id) initWithTableView:(UITableView*) tableView { - if (self = [super initWithStyle:UITableViewStylePlain]) { - self.tableView = tableView; - self.tableView.delegate = self; - self.tableView.dataSource = self; - [self viewDidLoad]; - } - return self; -} - - --(void) append:(id) toAppend { - //Insert the new data - [messageList addObject:toAppend]; - NSIndexPath *newIndex = [NSIndexPath indexPathForRow:(messageList.count - 1) inSection:0]; - [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndex] withRowAnimation:UITableViewRowAnimationBottom]; - - //If we were at the bottom, scroll to the new bottom. - if (atBottom) { - [self.tableView scrollToRowAtIndexPath:newIndex atScrollPosition:UITableViewScrollPositionBottom animated:YES]; - } -} - --(BOOL) isLastRowVisible { - if (messageList.count == 0) { - return YES; - } else { - NSIndexPath *lastIndex = [NSIndexPath indexPathForRow:(messageList.count - 1) inSection:0]; - - NSArray* visibleRowIndexes = [self.tableView indexPathsForVisibleRows]; - for (NSIndexPath* aPath in visibleRowIndexes) { - if ([aPath compare:lastIndex] == NSOrderedSame) { - return YES; - } - } - } - return NO; - -} - --(void) appendString:(NSString*) toAppend { - [self append:toAppend]; -} --(void) appendMessage:(SDLRPCMessage*) toAppend{ - [self append:toAppend]; -} - -#pragma mark - -#pragma mark View lifecycle - - -- (void)viewDidLoad { - [super viewDidLoad]; - atBottom = YES; - - messageList = [[NSMutableArray alloc] initWithCapacity:100]; - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; -} - -#pragma mark - -#pragma mark Scroll View Delegate - --(void) updateWhetherScrolledToBottom { - if ([self isLastRowVisible]) { - atBottom = YES; - } else { - atBottom = NO; - } -} - --(void) scrollViewDidEndDecelerating:(UIScrollView*) scrollView { - [self updateWhetherScrolledToBottom]; -} - --(void) scrollViewDidEndDragging:(UIScrollView*) scrollView willDecelerate:(BOOL) willDecelerate { - [self updateWhetherScrolledToBottom]; -} - -#pragma mark - -#pragma mark Table view data source - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - // Return the number of sections. - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - // Return the number of rows in the section. - return messageList.count; -} - -// Customize the appearance of table view cells. -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - - static NSString *CellIdentifier = @"Cell"; - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; - } - - // Configure the cell... - id msg = [messageList objectAtIndex:indexPath.row]; - if ([msg isKindOfClass:SDLRPCMessage.class]) { - SDLRPCMessage *rpc = msg; - - NSString* title = [NSString stringWithFormat:@"%@ (%@)", rpc.name, rpc.messageType]; - cell.textLabel.text = title; - - NSString* detail; - if ([rpc.messageType isEqualToString:@"response"]) { - SDLRPCResponse* response = (SDLRPCResponse*) rpc; - detail = [NSString stringWithFormat:@"%@: %@", [response resultCode], [response info]]; - } else { - detail = @""; - } - - cell.detailTextLabel.text = detail; - } else { - cell.textLabel.text = msg; - cell.detailTextLabel.text = @""; - } - return cell; -} - -#pragma mark - -#pragma mark Table view delegate - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - id obj = [messageList objectAtIndex:indexPath.row]; - NSString* alertText = nil; - if ([obj isKindOfClass:SDLRPCMessage.class]) { - SDLRPCMessage *rpc = obj; - NSData *jsonData = [[SDLJsonEncoder instance] encodeDictionary:[rpc serializeAsDictionary]]; - alertText = [[[NSString alloc] initWithBytes:jsonData.bytes length:jsonData.length encoding:NSUTF8StringEncoding] autorelease]; - - } else { - alertText = [NSString stringWithFormat:@"%@",obj]; - } - - - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"RPCMessage" message:alertText delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; - [alertView show]; - [alertView release]; - - [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; - - // Navigation logic may go here. Create and push another view controller. - /* - <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil]; - // ... - // Pass the selected object to the new view controller. - [self.navigationController pushViewController:detailViewController animated:YES]; - [detailViewController release]; - */ -} - --(void) logInfo:(NSString*) info { - [self appendString:info]; -} - --(void) logException:(NSException*) ex withMessage:(NSString*) message { - [self appendString:message]; - [self append:[ex description]]; -} - -#pragma mark - -#pragma mark Memory management - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Relinquish ownership any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. - // For example: self.myOutlet = nil; -} - -- (void)dealloc { - [messageList release]; - [super dealloc]; -} - -@end - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.xib b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.xib deleted file mode 100644 index 7e34442..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLConsoleController.xib +++ /dev/null @@ -1,175 +0,0 @@ - - - - 1024 - 10F569 - 804 - 1038.29 - 461.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 123 - - - YES - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - {320, 460} - - 3 - MQA - - NO - YES - NO - - IBCocoaTouchFramework - NO - 1 - 0 - YES - 44 - 22 - 22 - - - - - YES - - - view - - - - 5 - - - - dataSource - - - - 6 - - - - delegate - - - - 7 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 4.IBEditorWindowLastContentRect - 4.IBPluginDependency - - - YES - FMConsoleController - UIResponder - {{329, 504}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 7 - - - - YES - - FMConsoleController - UIViewController - - IBUserSource - - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - - 3 - 123 - - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLDebugTool.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLDebugTool.h deleted file mode 100644 index 4200de8..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLDebugTool.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -@protocol SDLDebugToolConsole - --(void) logInfo:(NSString*) info; --(void) logException:(NSException*) ex withMessage:(NSString*) message; - -@end - -@interface SDLDebugTool : NSObject {} - -+(void) addConsole:(NSObject*) aConsole; -+(void) removeConsole:(NSObject*) aConsole; -+(void) logInfo:(NSString*) sdlt, ... ; // NS_FORMAT_FUNCTION(1,2); -+(void) logException:(NSException*) ex withMessage:(NSString*) sdlt, ... ; // NS_FORMAT_FUNCTION(2,3); - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLDebugTool.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLDebugTool.m deleted file mode 100644 index 17aeb90..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLDebugTool.m +++ /dev/null @@ -1,100 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLDebugTool.h" -#import "SDLSiphonServer.h" -#import "SDLVersion.h" - -#define LOG_INFO_ENABLED -#define LOG_ERROR_ENABLED - -static NSMutableArray* debugToolConsoleList = nil; - -@implementation SDLDebugTool - -+(NSMutableArray*) getConsoleList { - if (debugToolConsoleList == nil) { - debugToolConsoleList = [[NSMutableArray alloc] initWithCapacity:2]; - } - return debugToolConsoleList; -} - - -+(void) addConsole:(NSObject*) aConsole { - [[SDLDebugTool getConsoleList] addObject:aConsole]; -} - -+(void) removeConsole:(NSObject*) aConsole { - [[SDLDebugTool getConsoleList] removeObject:aConsole]; -} - -+(void) logInfo:(NSString*) sdlt, ... { - NSString* toOutRaw = nil; - - va_list args; - va_start(args, sdlt); - - toOutRaw = [[NSString alloc] initWithFormat:sdlt arguments:args]; - - NSMutableString *toOut = [[NSMutableString alloc] initWithFormat:@"SDLDebugTool: "]; - - [toOut appendString:toOutRaw]; - - [toOutRaw release]; - - va_end(args); - - [SDLSiphonServer init]; - bool dataLogged = [SDLSiphonServer _siphonNSLogData:toOut]; - - -#ifdef LOG_INFO_ENABLED - if(!dataLogged){ - NSLog(@"%@", toOut); - } -#endif - - for (NSObject* console in debugToolConsoleList) { - [console logInfo:toOut]; - } - - [toOut release]; -} - -+(void) logException:(NSException*) ex withMessage:(NSString*) sdlt, ... { - NSString* toOutRaw = nil; - - va_list args; - va_start(args, sdlt); - - toOutRaw = [[NSString alloc] initWithFormat:sdlt arguments:args]; - - NSMutableString *toOut = [[NSMutableString alloc] initWithFormat:@"%@: ", VERSION_STRING]; - [toOut appendString:toOutRaw]; - - [toOutRaw release]; - - va_end(args); - - [SDLSiphonServer init]; - bool dataLogged = [SDLSiphonServer _siphonNSLogData:toOut]; - if (dataLogged) { - dataLogged = [SDLSiphonServer _siphonNSLogData:[ex reason]]; - } // end-if - - -#ifdef LOG_ERROR_ENABLED - if (!dataLogged) { - NSLog(@"%@: %@", toOut, ex); - } -#endif - - for (NSObject* console in debugToolConsoleList) { - [console logException:ex withMessage:toOut]; - } - - [toOut release]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.h deleted file mode 100644 index 708e43e..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -@interface SDLEnum : NSObject { - NSString* value; -} - --(id) initWithValue:(NSString*) value; - -@property(readonly) NSString* value; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.m deleted file mode 100644 index 40a3292..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLEnum.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLEnum.h" - -@implementation SDLEnum - -@synthesize value; - --(id) initWithValue:(NSString*) aValue { - if (self = [super init]) { - value = aValue; - } - return self; -} - --(NSString*) description { - return value; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIAPTransport.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIAPTransport.h deleted file mode 100644 index 5dfd12f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIAPTransport.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLAbstractTransport.h" -#import - -@interface SDLIAPTransport : SDLAbstractTransport { - EASession* session; - NSInputStream* inStream; - NSOutputStream* outStream; - NSObject* transportLock; - - NSMutableArray* writeQueue; - - BOOL spaceAvailable; - - BOOL registeredForNotifications; - BOOL appInBackground; - BOOL transportUsable; - - EAAccessory *connectedHeadUnitAccessory; -} - -@property(nonatomic, retain) EASession* session; -@property(nonatomic, retain) NSStream* inStream; -@property(nonatomic, retain) NSStream* outStream; - --(void) checkConnectedHeadUnitAccessory; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIAPTransport.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIAPTransport.m deleted file mode 100644 index 32e7cc2..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIAPTransport.m +++ /dev/null @@ -1,352 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLIAPTransport.h" -#import "SDLDebugTool.h" -#import "SDLSiphonServer.h" - -#define SYNC_PROTOCOL_STRING @"com.ford.sync.prot0" - - -@interface SDLIAPTransport () - --(void) accessoryConnected:(NSNotification*) connectNotification; --(void) accessoryDisconnected:(NSNotification*) connectNotification; --(NSString*) stringForEventCode:(NSStreamEvent) eventCode; - -@end - -@implementation SDLIAPTransport -@synthesize session; -@synthesize inStream; -@synthesize outStream; - --(id) init { - if (self = [super initWithEndpoint:nil endpointParam:nil]) { - transportLock = [[NSObject alloc] init]; - writeQueue = [[NSMutableArray alloc] initWithCapacity:10]; - spaceAvailable = NO; - - if (!registeredForNotifications) { - registeredForNotifications = YES; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryConnected:) name:EAAccessoryDidConnectNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryDisconnected:) name:EAAccessoryDidDisconnectNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground:) name:UIApplicationWillEnterForegroundNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; - } - - if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) { - appInBackground = YES; - } else { - appInBackground = NO; - } - - [self checkConnectedHeadUnitAccessory]; - - transportUsable = YES; - [SDLSiphonServer init]; - } - return self; -} - -- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode { - [SDLDebugTool logInfo:@"IAPTransport: stream:handleEvent: begins (eventCode = %@)", [self stringForEventCode:eventCode]]; - if (aStream == inStream) { - if (eventCode == NSStreamEventHasBytesAvailable || eventCode == NSStreamEventOpenCompleted) { - UInt8 buf[1024]; - while (YES) { - int bytesRead = [inStream read:buf maxLength:1024]; - - [SDLSiphonServer _siphonRawTransportDataFromSync:buf msgBytesLength:bytesRead]; - - if (bytesRead > 0) { - [self handleBytesReceivedFromTransport:buf length:bytesRead]; - } else { - break; - } - - } - } else if (eventCode == NSStreamEventEndEncountered) { - [self disconnect]; - } - } else if (aStream == outStream) { - if (eventCode == NSStreamEventHasSpaceAvailable) { - if (writeQueue.count > 0) { - @synchronized(transportLock) { - NSData* msgBytes = [writeQueue objectAtIndex:0]; - - spaceAvailable = NO; - - int bytesWritten = [outStream write:msgBytes.bytes maxLength:msgBytes.length]; - - [SDLSiphonServer _siphonRawTransportDataFromApp:msgBytes.bytes msgBytesLength:bytesWritten]; - - if (bytesWritten < msgBytes.length) { - NSData* leftover = [NSData dataWithBytes:msgBytes.bytes + bytesWritten length:msgBytes.length - bytesWritten]; - //Insert the leftover bytes at the front of the queue - [writeQueue insertObject:leftover atIndex:0]; - } - [writeQueue removeObjectAtIndex:0]; - } - } else { - spaceAvailable = YES; - } - } else if (eventCode == NSStreamEventOpenCompleted) { - [self notifyTransportConnected]; - } else if (eventCode == NSStreamEventEndEncountered) { - //[self handleTransportDisconnected]; - } - } -} - --(NSString*) stringForEventCode:(NSStreamEvent) eventCode { - switch (eventCode) { - case NSStreamEventOpenCompleted: - return @"OpenCompleted"; - break; - case NSStreamEventHasSpaceAvailable: - return @"HasSpaceAvailable"; - break; - case NSStreamEventEndEncountered: - return @"EndEncountered"; - break; - case NSStreamEventErrorOccurred: - return @"ErrorOccurred"; - break; - case NSStreamEventHasBytesAvailable: - return @"HasBytesAvailable"; - break; - default: - break; - } - return nil; -} - -- (BOOL)connect:(EAAccessory*)accessoryItem usedProtocol:(NSString*)protocolName -{ - @synchronized (transportLock) { - // Select the first accessory: - self.session = [[[EASession alloc] initWithAccessory:accessoryItem forProtocol:protocolName] autorelease]; - - if(accessoryItem != nil && self.session != nil) { - self.inStream = self.session.inputStream; - self.outStream = self.session.outputStream; - - @try { - // Initialize and schedule the input stream: - if(self.inStream != nil) { - [SDLDebugTool logInfo:@"IAPTransport: connect:usedProtocol: Initializing input steam"]; - self.inStream.delegate = self; - [self.inStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; - [self.inStream open]; - } else { - return NO; - } - - // Initialize and schedule the output stream: - if(self.outStream != nil) { - [SDLDebugTool logInfo:@"IAPTransport: connect:usedProtocol: Initializing output steam"]; - self.outStream.delegate = self; - [self.outStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; - [self.outStream open]; - } else { - return NO; - } - } - @catch (id streamEx) { - return NO; - }//end catch - } else { - [SDLDebugTool logInfo:@"IAPTransport: connect:usedProtocol: Session and Accessory not set"]; - return NO; - } - } - return YES; -}//end connect - -- (bool) connect { - if (connectedHeadUnitAccessory != nil) { - [self connect:connectedHeadUnitAccessory usedProtocol:SYNC_PROTOCOL_STRING]; - } else { - [self checkConnectedHeadUnitAccessory]; - if (connectedHeadUnitAccessory != nil) { - [self connect:connectedHeadUnitAccessory usedProtocol:SYNC_PROTOCOL_STRING]; - } else { - return NO; - } - } - return YES; -} - --(void) checkConnectedHeadUnitAccessory { - for (EAAccessory* anAccessory in [[EAAccessoryManager sharedAccessoryManager] connectedAccessories]) { - [SDLDebugTool logInfo:@"accessory name: %@", anAccessory.name]; - for (NSString *aProtocolString in [anAccessory protocolStrings]) { - [SDLDebugTool logInfo:@"IAPTransport: Found protocol string: %@", aProtocolString]; - if ([aProtocolString isEqualToString:SYNC_PROTOCOL_STRING]) { - [SDLDebugTool logInfo:@"IAPTransport: Found accessory: %@", anAccessory.name]; - - if (connectedHeadUnitAccessory != nil) { - [connectedHeadUnitAccessory release]; - connectedHeadUnitAccessory = nil; - } - - connectedHeadUnitAccessory = [anAccessory retain]; - return; - break; - } - } - } -} - --(void)applicationDidBecomeActive:(NSNotification *) notification { - [self connect]; -} - --(void)applicationWillEnterForeground:(NSNotification *)notification { - appInBackground = NO; - [self connect]; -} - --(void)applicationDidEnterBackground:(NSNotification *)notification { - appInBackground = YES; -} - --(EAAccessory*) getHeadUnitAccessoryFromNotification:(NSNotification*) notification { - EAAccessory *accessory = [[notification userInfo] objectForKey:EAAccessoryKey]; - - for (NSString *protocolString in [accessory protocolStrings]) { - if ([protocolString isEqualToString:SYNC_PROTOCOL_STRING]) { - return accessory; - } - } - - return nil; -} - --(void) accessoryConnected:(NSNotification*) connectNotification { - EAAccessory *connectedAccessory = [self getHeadUnitAccessoryFromNotification:connectNotification]; - - if(connectedAccessory == nil) { - // connectedAccessory is not a Head Unit accessory - return; - } - - // We're assuming connectedHeadUnitAccessory will be nil - if (connectedHeadUnitAccessory != nil) { - [connectedHeadUnitAccessory release]; - connectedHeadUnitAccessory = nil; - } - - connectedHeadUnitAccessory = [connectedAccessory retain]; - [self connect]; - -} - --(void) accessoryDisconnected:(NSNotification*) connectNotification { - EAAccessory *disconnectedAccessory = [self getHeadUnitAccessoryFromNotification:connectNotification]; - - if(disconnectedAccessory == nil) { - // disconnectedAccessory is not a SYNC accessory - return; - } - - if ([disconnectedAccessory connectionID] == [connectedHeadUnitAccessory connectionID]) { - if (session != nil) { - [self disconnect]; - } - - [connectedHeadUnitAccessory release]; - connectedHeadUnitAccessory = nil; - } -} - --(NSString*) getHexString:(UInt8*)bytes length:(int) length { - NSMutableString* ret = [NSMutableString stringWithCapacity:(length * 2)]; - for (int i = 0; i < length; i++) { - [ret appendFormat:@"%02X", ((Byte*)bytes)[i]]; - } - return ret; -} - --(NSString*) getHexString:(NSData*) data { - return [self getHexString:(Byte*)data.bytes length:data.length]; -} - - --(void) queueData:(NSData*) msgBytes { - @synchronized (transportLock) { - if (spaceAvailable) { - spaceAvailable = NO; - - int bytesWritten = [outStream write:msgBytes.bytes maxLength:msgBytes.length]; - - [SDLSiphonServer _siphonRawTransportDataFromApp:msgBytes.bytes msgBytesLength:bytesWritten]; - - if (bytesWritten < msgBytes.length) { - [writeQueue insertObject:[NSData dataWithBytes:msgBytes.bytes + bytesWritten length:msgBytes.length - bytesWritten] atIndex:0]; - } - - } else { - [writeQueue addObject:msgBytes]; - } - } -} - -- (bool) sendBytes:(NSData*) msgBytes { - [self queueData:msgBytes]; - return YES; -} - -- (void) disconnect { - @synchronized (transportLock) { - - transportUsable = NO; - - if (session != nil) { - [self notifyTransportDisconnected]; - - [outStream close]; - [outStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; - [outStream setDelegate:nil]; - [outStream release]; - outStream = nil; - - [inStream close]; - [inStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; - [inStream setDelegate:nil]; - [inStream release]; - inStream = nil; - - [session release]; - session = nil; - - [writeQueue release]; - writeQueue = nil; - } - } -} - -- (void) dealloc { - if (registeredForNotifications) { - [[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidConnectNotification - object:nil]; - [[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidDisconnectNotification - object:nil]; - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil]; - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillEnterForegroundNotification object:nil]; - registeredForNotifications = NO; - } - - [connectedHeadUnitAccessory release]; - connectedHeadUnitAccessory = nil; - - [self disconnect]; - [transportLock release]; - - [super dealloc]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIDecoder.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIDecoder.h deleted file mode 100644 index 3b7193b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIDecoder.h +++ /dev/null @@ -1,11 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -@protocol SDLIDecoder - --(NSDictionary*) decode:(NSData*) msgBytes; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIEncoder.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIEncoder.h deleted file mode 100644 index ccddb79..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIEncoder.h +++ /dev/null @@ -1,11 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -@protocol SDLIEncoder - --(NSData*) encodeDictionary:(NSDictionary*) dict; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIProtocol.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIProtocol.h deleted file mode 100644 index e281b5e..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIProtocol.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLProtocolListener.h" -#import "SDLProtocolMessage.h" -#import "SDLITransport.h" - -@protocol SDLIProtocol - --(void) handleBytesFromTransport:(Byte*) receivedBytes length:(long) receivedBytesLength; - --(void) sendStartSessionWithType:(SDLSessionType) sessionType; --(void) sendEndSessionWithType:(SDLSessionType)sessionType sessionID:(Byte)sessionID; --(void) sendData:(NSData*) data sessionType:(SDLSessionType)sessionType sessionID:(Byte)sessionID; - -@property(assign) NSObject* transport; - --(void) addProtocolListener:(NSObject*) listener; --(void) removeProtocolListener:(NSObject*) listener; - -@end \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIProxy.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIProxy.h deleted file mode 100644 index 85ae9e4..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLIProxy.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLITransport.h" -#import "SDLProxyListener.h" -#import "SDLRPCMessage.h" -#import "SDLIProtocol.h" - -@protocol SDLIProxy --(id) initWithTransport:(NSObject*) transport protocol:(NSObject*) protocol delegate:(NSObject*) delegate; - --(void) dispose; --(void) addDelegate:(NSObject*) delegate; - --(void) sendRPCRequest:(SDLRPCMessage*) msg; --(void) handleRpcMessage:(NSDictionary*) msg; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLITransport.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLITransport.h deleted file mode 100644 index 2cced81..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLITransport.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLTransportListener.h" - -@protocol SDLITransport - -@property(assign) int mtuSize; - -- (bool) connect; -- (void) disconnect; -- (bool) sendBytes:(NSData*) msg; -- (void) addTransportListener:(NSObject*) transListener; -- (void) removeTransportListener:(NSObject*) transListener; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.h deleted file mode 100644 index 30fbd85..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -@interface SDLJingle : NSObject {} - -+(NSString*) NEGATIVE_JINGLE; -+(NSString*) POSITIVE_JINGLE; -+(NSString*) LISTEN_JINGLE; -+(NSString*) INITIAL_JINGLE; -+(NSString*) HELP_JINGLE; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.m deleted file mode 100644 index 3c0ac6a..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJingle.m +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLJingle.h" - -@implementation SDLJingle - -+(NSString*) NEGATIVE_JINGLE { return @"NEGATIVE_JINGLE"; } -+(NSString*) POSITIVE_JINGLE { return @"POSITIVE_JINGLE"; } -+(NSString*) LISTEN_JINGLE { return @"LISTEN_JINGLE"; } -+(NSString*) INITIAL_JINGLE { return @"INITIAL_JINGLE"; } -+(NSString*) HELP_JINGLE { return @"HELP_JINGLE"; } - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonDecoder.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonDecoder.h deleted file mode 100644 index 24baa0f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonDecoder.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLIDecoder.h" - -@interface SDLJsonDecoder : NSObject {} - -+(NSObject*) instance; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonDecoder.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonDecoder.m deleted file mode 100644 index 99575f1..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonDecoder.m +++ /dev/null @@ -1,29 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLJsonDecoder.h" -#import "SDLNames.h" -#import "JSON.h" - -@implementation SDLJsonDecoder - -static NSObject* jsonDecoderInstance; - -+(NSObject*) instance { - if (jsonDecoderInstance == nil) { - jsonDecoderInstance = [[SDLJsonDecoder alloc] init]; - } - return jsonDecoderInstance; -} - --(NSDictionary*) decode:(NSData*) msgBytes{ - NSString* jsonString = [[[NSString alloc] initWithData:msgBytes encoding:NSUTF8StringEncoding] autorelease]; - SBJSON* sbjson = [SBJSON new]; - NSError* error; - NSDictionary* jsonObject = [sbjson objectWithString:jsonString error:&error]; - [sbjson release]; - return jsonObject; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonEncoder.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonEncoder.h deleted file mode 100644 index 184a8d6..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonEncoder.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLIEncoder.h" - -@interface SDLJsonEncoder : NSObject {} - -+(NSObject*) instance; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonEncoder.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonEncoder.m deleted file mode 100644 index b91dd76..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLJsonEncoder.m +++ /dev/null @@ -1,32 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLJsonEncoder.h" -#import "SDLNames.h" -#import "JSON.h" -#import "SDLDebugTool.h" - -@implementation SDLJsonEncoder - -static NSObject* jsonEncoderInstance; - -+(NSObject*) instance { - if (jsonEncoderInstance == nil) { - jsonEncoderInstance = [[SDLJsonEncoder alloc] init]; - } - return jsonEncoderInstance; -} - --(NSData*) encodeDictionary:(NSDictionary*) dict { - NSData* ret = nil; - SBJSON* sbjson = [SBJSON new]; - NSError* error; - NSString* jsonString = [sbjson stringWithObject:dict error:&error]; - [sbjson release]; - - ret = [jsonString dataUsingEncoding: NSUTF8StringEncoding]; - return ret; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLNames.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLNames.h deleted file mode 100644 index e953fc9..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLNames.h +++ /dev/null @@ -1,166 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -#define NAMES_request @"request" -#define NAMES_response @"response" -#define NAMES_notification @"notification" -#define NAMES_operation_name @"name" -#define NAMES_parameters @"parameters" - -#define NAMES_RegisterAppInterface @"RegisterAppInterface" -#define NAMES_UnregisterAppInterface @"UnregisterAppInterface" -#define NAMES_Alert @"Alert" -#define NAMES_Show @"Show" -#define NAMES_Speak @"Speak" -#define NAMES_AddCommand @"AddCommand" -#define NAMES_EncodedSyncPData @"EncodedSyncPData" -#define NAMES_DeleteCommand @"DeleteCommand" -#define NAMES_AddSubMenu @"AddSubMenu" -#define NAMES_DeleteSubMenu @"DeleteSubMenu" -#define NAMES_CreateInteractionChoiceSet @"CreateInteractionChoiceSet" -#define NAMES_DeleteInteractionChoiceSet @"DeleteInteractionChoiceSet" -#define NAMES_PerformInteraction @"PerformInteraction" -#define NAMES_DialNumber @"DialNumber" -#define NAMES_SubscribeButton @"SubscribeButton" -#define NAMES_UnsubscribeButton @"UnsubscribeButton" -#define NAMES_Subscribe @"Subscribe" -#define NAMES_Unsubscribe @"Unsubscribe" -#define NAMES_SetMediaClockTimer @"SetMediaClockTimer" -#define NAMES_SetGlobalProperties @"SetGlobalProperties" -#define NAMES_ResetGlobalProperties @"ResetGlobalProperties" -#define NAMES_GetDID @"GetDID" -#define NAMES_GetDTCs @"GetDTCs" -#define NAMES_GetFile @"GetFile" -#define NAMES_PutFile @"PutFile" -#define NAMES_EndAudioCapture @"EndAudioCapture" -#define NAMES_OnHMIStatus @"OnHMIStatus" -#define NAMES_OnEncodedSyncPData @"OnEncodedSyncPData" -#define NAMES_OnTBTClientState @"OnTBTClientState" -#define NAMES_OnDriverDistraction @"OnDriverDistraction" -#define NAMES_OnButtonEvent @"OnButtonEvent" -#define NAMES_OnButtonPress @"OnButtonPress" -#define NAMES_OnCommand @"OnCommand" -#define NAMES_OnAppInterfaceUnregistered @"OnAppInterfaceUnregistered" -#define NAMES_PerformAudioCapture @"PerformAudioCapture" -#define NAMES_GenericResponse @"GenericResponse" - -#define NAMES_success @"success" -#define NAMES_resultCode @"resultCode" -#define NAMES_info @"info" - -#define NAMES_reason @"reason" -#define NAMES_state @"state" -#define NAMES_cmdID @"cmdID" -#define NAMES_choiceID @"choiceID" -#define NAMES_menuParams @"menuParams" -#define NAMES_parentID @"parentID" -#define NAMES_position @"position" -#define NAMES_menuName @"menuName" -#define NAMES_vrCommands @"vrCommands" -#define NAMES_hmiLevel @"hmiLevel" -#define NAMES_language @"language" -#define NAMES_languageDesired @"languageDesired" -#define NAMES_triggerSource @"triggerSource" -#define NAMES_subscriptionType @"subscriptionType" -#define NAMES_data @"data" -#define NAMES_correlationID @"correlationID" -#define NAMES_syncMsgVersion @"syncMsgVersion" -#define NAMES_majorVersion @"majorVersion" -#define NAMES_minorVersion @"minorVersion" -#define NAMES_appName @"appName" -#define NAMES_ngnMediaScreenAppName @"ngnMediaScreenAppName" -#define NAMES_isMediaApplication @"isMediaApplication" -#define NAMES_vrSynonym @"vrSynonym" -#define NAMES_vrSynonyms @"vrSynonyms" -#define NAMES_usesVehicleData @"usesVehicleData" -#define NAMES_displayText @"displayText" -#define NAMES_text @"text" -#define NAMES_type @"type" -#define NAMES_ttsChunks @"ttsChunks" -#define NAMES_playTone @"playTone" -#define NAMES_duration @"duration" -#define NAMES_mainField1 @"mainField1" -#define NAMES_mainField2 @"mainField2" -#define NAMES_statusBar @"statusBar" -#define NAMES_name @"name" -#define NAMES_menuID @"menuID" -#define NAMES_longPress @"longPress" -#define NAMES_shortPress @"shortPress" -#define NAMES_subscriptionID @"subscriptionID" -#define NAMES_buttonName @"buttonName" -#define NAMES_buttonPressMode @"buttonPressMode" -#define NAMES_buttonEventMode @"buttonEventMode" -#define NAMES_minutes @"minutes" -#define NAMES_seconds @"seconds" -#define NAMES_startTime @"startTime" -#define NAMES_updateMode @"updateMode" -#define NAMES_mediaClock @"mediaClock" -#define NAMES_initialText @"initialText" -#define NAMES_initialPrompt @"initialPrompt" -#define NAMES_helpPrompt @"helpPrompt" -#define NAMES_timeoutPrompt @"timeoutPrompt" -#define NAMES_timeout @"timeout" -#define NAMES_choiceSet @"choiceSet" -#define NAMES_interactionMode @"interactionMode" -#define NAMES_vehicleDataParams @"vehicleDataParams" -#define NAMES_minimalUpdateInterval @"minimalUpdateInterval" -#define NAMES_result @"result" -#define NAMES_alertText1 @"alertText1" -#define NAMES_alertText2 @"alertText2" -#define NAMES_shortPressAvailable @"shortPressAvailable" -#define NAMES_longPressAvailable @"longPressAvailable" -#define NAMES_upDownAvailable @"upDownAvailable" -#define NAMES_width @"width" -#define NAMES_height @"height" -#define NAMES_characterSet @"characterSet" -#define NAMES_displayType @"displayType" -#define NAMES_mediaClockFormats @"mediaClockFormats" -#define NAMES_textFields @"textFields" -#define NAMES_autoActivateID @"autoActivateID" -#define NAMES_vehicleDataCapabilities @"vehicleDataCapabilities" -#define NAMES_speechCapabilities @"speechCapabilities" -#define NAMES_vrCapabilities @"vrCapabilities" -#define NAMES_buttonCapabilities @"buttonCapabilities" -#define NAMES_displayCapabilities @"displayCapabilities" -#define NAMES_hmiZoneCapabilities @"hmiZoneCapabilities" -#define NAMES_interactionChoiceSetID @"interactionChoiceSetID" -#define NAMES_audioFileName @"audioFileName" -#define NAMES_gpsPositionValid @"gpsPositionValid" -#define NAMES_longitudeDegrees @"longitudeDegrees" -#define NAMES_latitudeDegrees @"latitudeDegrees" -#define NAMES_utcYear @"utcYear" -#define NAMES_utcMonth @"utcMonth" -#define NAMES_utcDay @"utcDay" -#define NAMES_utcHours @"utcHours" -#define NAMES_utcMinutes @"utcMinutes" -#define NAMES_utcSeconds @"utcSeconds" -#define NAMES_compassDirection @"compassDirection" -#define NAMES_pdop @"pdop" -#define NAMES_vdop @"vdop" -#define NAMES_hdop @"hdop" -#define NAMES_actual @"actual" -#define NAMES_satellites @"satellites" -#define NAMES_dimension @"dimension" -#define NAMES_altitude @"altitude" -#define NAMES_heading @"heading" -#define NAMES_speed @"speed" -#define NAMES_gpsData @"gpsData" -#define NAMES_number @"number" -#define NAMES_syncFileName @"syncFileName" -#define NAMES_localFileName @"localFileName" -#define NAMES_maxDuration @"maxDuration" -#define NAMES_timerMode @"timerMode" -#define NAMES_interactionChoiceSetIDList @"interactionChoiceSetIDList" -#define NAMES_status @"status" -#define NAMES_pressure @"pressure" -#define NAMES_hours @"hours" -#define NAMES_rows @"rows" -#define NAMES_audioQuality @"audioQuality" -#define NAMES_systemContext @"systemContext" -#define NAMES_audioStreamingState @"audioStreamingState" -#define NAMES_mediaTrack @"mediaTrack" -#define NAMES_alignment @"alignment" -#define NAMES_properties @"properties" diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.h deleted file mode 100644 index fc3765c..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLAbstractProtocol.h" - -@interface SDLProtocol : SDLAbstractProtocol { - BOOL haveHeader; - NSMutableData* headerBuf; - NSMutableData* dataBuf; - SDLProtocolFrameHeader* currentHeader; - NSMutableDictionary *frameAssemblerForSessionID; - NSInteger dataBufFinalLength; - NSObject *msgLock; -} - --(void) resetHeaderAndData; -@end - -@interface FrameAssembler : NSObject { - BOOL hasFirstFrame; - BOOL hasSecondFrame; - NSMutableData *accumulator; - NSInteger totalSize; - NSInteger framesRemaining; - NSArray* listeners; -} - --(id) initWithListeners:(NSArray*)listeners; --(void) handleFirstFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data; --(void) handleSecondFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data; --(void) handleRemainingFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data; --(void) notifyIfFinished:(SDLProtocolFrameHeader*) header; --(void) handleMultiFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data; --(void) handleFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data; --(SDLMessageType) messageTypeForFrameHeader:(SDLProtocolFrameHeader*)header; - -@end - -@interface BulkAssembler: FrameAssembler { - NSInteger bulkCorrId; -} - -@end \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.m deleted file mode 100644 index 954dce0..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocol.m +++ /dev/null @@ -1,392 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLProtocol.h" -#import "SDLBitConverter.h" -#import "SDLDebugTool.h" -#import "SDLProtocolFrameHeaderFactory.h" -#import - -#define HEADER_BUF_LENGTH 8 -#define MTU_SIZE 512 - -@implementation SDLProtocol - --(id) init { - if (self = [super init]) { - msgLock = [[NSObject alloc] init]; - headerBuf = nil; - dataBuf = nil; - currentHeader = nil; - [self resetHeaderAndData]; - frameAssemblerForSessionID = [[NSMutableDictionary alloc] initWithCapacity:2]; - } - return self; -} - --(void) resetHeaderAndData { - [headerBuf release]; - - haveHeader = NO; - int headerSize = HEADER_BUF_LENGTH * sizeof(Byte); - headerBuf = [[NSMutableData alloc] initWithCapacity:headerSize]; - - [dataBuf release]; - dataBuf = nil; - - [currentHeader release]; - currentHeader = nil; -} - - -- (void) doAlertMessage:(NSString*) message withTitle:(NSString*) title{ - UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; - [alertView show]; - [alertView release]; - -}//end action - --(FrameAssembler*) getFrameAssemblerForFrameHeader:(SDLProtocolFrameHeader*) header { - id sessionIDKey = [NSNumber numberWithInt:header.sessionID]; - - FrameAssembler *ret = [frameAssemblerForSessionID objectForKey:sessionIDKey]; - - if (ret == nil) { - if (header.sessionType == SDLSessionType_RPC) { - ret = [[FrameAssembler alloc] initWithListeners:protocolListeners]; - } else if (header.sessionType == SDLSessionType_BulkData) { - ret = [[BulkAssembler alloc] initWithListeners:protocolListeners]; - } - - [frameAssemblerForSessionID setObject:ret forKey:sessionIDKey]; - return [ret autorelease]; - } - return ret; -} - --(void) handleBytesFromTransport:(Byte *)receivedBytes length:(long)receivedBytesLength { - long receivedBytesReadPos = 0; - // If I don't yet know the message size, grab those bytes. - if (!haveHeader) { - // If I can't get the size, just get the bytes that are there. - int sizeBytesNeeded = HEADER_BUF_LENGTH - headerBuf.length; - if (receivedBytesLength < sizeBytesNeeded) { - [headerBuf appendBytes:receivedBytes + receivedBytesReadPos length:receivedBytesLength]; - return; - } else { - // If I got the size, allocate the buffer - [headerBuf appendBytes:receivedBytes + receivedBytesReadPos length:sizeBytesNeeded]; - receivedBytesReadPos += sizeBytesNeeded; - haveHeader = true; - dataBufFinalLength = [SDLBitConverter intFromByteArray:(Byte*)headerBuf.bytes offset:4]; - - [dataBuf release]; - dataBuf = nil; - - dataBuf = [[NSMutableData alloc] initWithCapacity:dataBufFinalLength]; - currentHeader = [[SDLProtocolFrameHeaderFactory parseHeader:headerBuf] retain]; - } - - } - - int bytesLeft = receivedBytesLength - receivedBytesReadPos; - int bytesNeeded = dataBufFinalLength - dataBuf.length; - // If I don't have enough bytes for the message, just grab what's there. - if (bytesLeft < bytesNeeded) { - [dataBuf appendBytes:receivedBytes + receivedBytesReadPos length:bytesLeft]; - return; - } else { - // Fill the buffer and call the handler! - [dataBuf appendBytes:receivedBytes + receivedBytesReadPos length:bytesNeeded]; - receivedBytesReadPos += bytesNeeded; - FrameAssembler *assembler = [self getFrameAssemblerForFrameHeader:currentHeader]; - [assembler handleFrame:currentHeader data:dataBuf]; - [self resetHeaderAndData]; - - //If there are any bytes left, recurse. - int moreBytesLeft = receivedBytesLength - receivedBytesReadPos; - if (moreBytesLeft > 0) { - [self handleBytesFromTransport:receivedBytes + receivedBytesReadPos length:moreBytesLeft]; - } - } -} - --(NSData*) assembleHeaderBytes:(SDLProtocolFrameHeader*) msg { - UInt32 header = 0; - header |= msg.version; - header <<= 1; - header |= (msg.compressed ? 1 : 0); - header <<= 3; - header |= msg.frameType; - header <<= 8; - header |= msg.sessionType; - header <<= 8; - header |= msg.frameData; - header <<= 8; - header |= msg.sessionID; - - Byte* mallocPtr = malloc(HEADER_BUF_LENGTH); - if (mallocPtr == nil) { - @throw [NSException exceptionWithName:@"OutOfMemoryException" reason:@"malloc failed" userInfo:nil]; - } - NSData* ret = [[NSData alloc] initWithBytesNoCopy:mallocPtr length:HEADER_BUF_LENGTH]; - - memcpy((void*)ret.bytes, [SDLBitConverter intToByteArray:header].bytes, 4); - memcpy((void*)ret.bytes + 4, [SDLBitConverter intToByteArray:msg.dataSize].bytes, 4); - - return [ret autorelease]; -} - --(void) sendFrameToTransport:(SDLProtocolFrameHeader *)header withData:(NSData*) data { - if (data == nil || data.length == 0){ - [transport sendBytes:[self assembleHeaderBytes:header]]; - } else { - NSMutableData* toSend = [NSMutableData dataWithCapacity:data.length + HEADER_BUF_LENGTH]; - - [toSend appendData:[self assembleHeaderBytes:header]]; - - [toSend appendData:data]; - - [transport sendBytes:toSend]; - } - -} - --(void) sendFrameToTransport:(SDLProtocolFrameHeader *)header { - [self sendFrameToTransport:header withData:nil]; -} - --(void) sendFrameToTransport:(SDLProtocolFrameHeader *)header withData:(NSData*) data offset:(NSInteger) offset length:(NSInteger) length{ - - NSMutableData* toSend = [NSMutableData dataWithCapacity:length + HEADER_BUF_LENGTH]; - - [toSend appendData:[self assembleHeaderBytes:header]]; - - [toSend appendBytes:data.bytes + offset length:length]; - - [transport sendBytes:toSend]; - -} - --(void) sendData:(NSData*)data sessionType:(SDLSessionType)sessionType sessionID:(Byte)sessionID { - int maxDataSize = MTU_SIZE - HEADER_BUF_LENGTH; - - @synchronized (msgLock) { - if (data.length < maxDataSize) { - - SDLProtocolFrameHeader *singleHeader = [SDLProtocolFrameHeaderFactory singleFrameWithSessionType:sessionType sessionID:sessionID dataSize:data.length]; - - [self sendFrameToTransport:singleHeader withData:data]; - } else { - SDLProtocolFrameHeader *firstHeader = [SDLProtocolFrameHeaderFactory firstFrameWithSessionType:sessionType sessionID:sessionID]; - - // Assemble first frame. - int frameCount = data.length / maxDataSize; - if (data.length % maxDataSize > 0) { - frameCount++; - } - NSMutableData *firstFrameData = [NSMutableData dataWithCapacity:8]; - // First four bytes are data size. - [firstFrameData appendData:[SDLBitConverter intToByteArray:data.length]]; - // Second four bytes are frame count. - [firstFrameData appendData:[SDLBitConverter intToByteArray:frameCount]]; - - [self sendFrameToTransport:firstHeader withData:firstFrameData]; - - int currentOffset = 0; - - for (int i = 0; i < frameCount; i++) { - int bytesToWrite = data.length - currentOffset; - if (bytesToWrite > maxDataSize) { bytesToWrite = maxDataSize - ; } - SDLProtocolFrameHeader *consecHeader = [SDLProtocolFrameHeaderFactory consecutiveFrameWithSessionType:sessionType sessionID:sessionID dataSize:bytesToWrite]; - [self sendFrameToTransport:consecHeader withData:data offset:currentOffset length:bytesToWrite]; - currentOffset += bytesToWrite; - - } - } - - } -} - - --(void) sendStartSessionWithType:(SDLSessionType) sessionType { - SDLProtocolFrameHeader *header = [SDLProtocolFrameHeaderFactory startSessionWithSessionType:sessionType]; - - @synchronized (msgLock) { - [self sendFrameToTransport:header]; - } -} - --(void) sendEndSessionWithType:(SDLSessionType)sessionType sessionID:(Byte)sessionID { - SDLProtocolFrameHeader *header = [SDLProtocolFrameHeaderFactory endSessionWithSessionType:sessionType sessionID:sessionID]; - @synchronized (msgLock) { - [self sendFrameToTransport:header]; - } -} - - --(void) dealloc { - - [headerBuf release]; - headerBuf = nil; - - [dataBuf release]; - dataBuf = nil; - - [currentHeader release]; - currentHeader = nil; - - [frameAssemblerForSessionID release]; - frameAssemblerForSessionID = nil; - - [msgLock release]; - msgLock = nil; - - [super dealloc]; -} - -@end - -@implementation FrameAssembler - --(id) initWithListeners:(NSArray*)theListeners{ - if (self = [super init]) { - listeners = [theListeners retain]; - } - return self; -} - --(void) handleFirstFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data { - //The message is new, so let's figure out how big it is. - hasFirstFrame = true; - totalSize = [SDLBitConverter intFromByteArray:(Byte*)data.bytes offset:0] - 8; - framesRemaining = [SDLBitConverter intFromByteArray:(Byte*)data.bytes offset:4]; - - [accumulator release]; - accumulator = nil; - - accumulator = [[NSMutableData dataWithCapacity:totalSize] retain]; - -} - --(void) handleSecondFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data { - [self handleRemainingFrame:header data:data]; -} - --(void) handleRemainingFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data { - [accumulator appendData:data]; - [self notifyIfFinished:header]; - -} - --(void) notifyIfFinished:(SDLProtocolFrameHeader*) header { - if (framesRemaining == 0) { - SDLProtocolMessage *message = [[SDLProtocolMessage alloc] init]; - message.messageType = SDLMessageType_Data; - message.sessionType = header.sessionType; - message.sessionID = header.sessionID; - message.data = accumulator; - - NSArray* localListeners = nil; - @synchronized (listeners) { - localListeners = [listeners copy]; - } - - for (NSObject *listener in localListeners) { - [listener onProtocolMessageReceived:message]; - } - [localListeners release]; - - [message release]; - - hasFirstFrame = false; - hasSecondFrame = false; - - [accumulator release]; - accumulator = nil; - - } -} - --(void) handleMultiFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data { - if (!hasFirstFrame) { - hasFirstFrame = true; - [self handleFirstFrame:header data:data]; - } else if (!hasSecondFrame) { - hasSecondFrame = true; - framesRemaining--; - [self handleSecondFrame:header data:data ]; - } else { - framesRemaining--; - [self handleRemainingFrame:header data:data]; - } - -} - --(void) handleFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data { - if (header.frameType == SDLFrameType_First || header.frameType == SDLFrameType_Consecutive) { - [self handleMultiFrame:header data:data]; - } else { - SDLProtocolMessage *message = [[SDLProtocolMessage alloc] init]; - message.messageType = [self messageTypeForFrameHeader:header]; - message.sessionType = header.sessionType; - message.sessionID = header.sessionID; - message.data = data; - - NSArray* localListeners = nil; - @synchronized (listeners) { - localListeners = [listeners copy]; - } - - for (NSObject *listener in localListeners) { - [listener onProtocolMessageReceived:message]; - } - [localListeners release]; - - [message release]; - } -} - --(SDLMessageType) messageTypeForFrameHeader:(SDLProtocolFrameHeader*)header { - if (header.frameType == SDLFrameType_Control) { - if (header.frameData == SDLFrameData_StartSession) { - return SDLMessageType_StartSession; - } else if (header.frameData == SDLFrameData_StartSessionACK) { - return SDLMessageType_StartSessionACK; - } else if (header.frameData == SDLFrameData_StartSessionNACK) { - return SDLMessageType_StartSessionNACK; - } else { - //if (frameData == FrameData.EndSession.value()) - return SDLMessageType_EndSession; - } - } else { - return SDLMessageType_Data; - } -} - --(void) dealloc { - - [accumulator release]; - accumulator = nil; - - [listeners release]; - listeners = nil; - - [super dealloc]; -} - -@end - -@implementation BulkAssembler - --(void) handleSecondFrame:(SDLProtocolFrameHeader*) header data:(NSData*) data { - bulkCorrId = [SDLBitConverter intFromByteArray:(Byte*)data.bytes offset:4]; - [accumulator appendBytes:data.bytes + 8 length:header.dataSize - 8]; - [self notifyIfFinished:header]; -} - -@end - - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeader.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeader.h deleted file mode 100644 index a20fb84..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeader.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -typedef enum SDLFrameType { - SDLFrameType_Control = 0x00, - SDLFrameType_Single = 0x01, - SDLFrameType_First = 0x02, - SDLFrameType_Consecutive = 0x03, - -} SDLFrameType; - -typedef enum SDLSessionType { - SDLSessionType_RPC = 0x7, - SDLSessionType_BulkData = 0xF, -} SDLSessionType; - -typedef enum SDLFrameData { - SDLFrameData_Heartbeat = 0x00, - SDLFrameData_StartSession = 0x01, - SDLFrameData_StartSessionACK = 0x02, - SDLFrameData_StartSessionNACK = 0x03, - SDLFrameData_EndSession = 0x04, - - SDLFrameData_SingleFrame = 0x00, - SDLFrameData_FirstFrame = 0x00, -} SDLFrameData; - -@interface SDLProtocolFrameHeader : NSObject { - Byte version; - BOOL compressed; - SDLFrameType frameType; - SDLSessionType sessionType; - Byte frameData; - Byte sessionID; - - UInt32 dataSize; -} - -@property(assign) Byte version; -@property(assign) BOOL compressed; -@property(assign) SDLFrameType frameType; -@property(assign) SDLSessionType sessionType; -@property(assign) Byte frameData; -@property(assign) Byte sessionID; - -@property(assign) UInt32 dataSize; - -@end \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeader.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeader.m deleted file mode 100644 index a73fb63..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeader.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLProtocolMessage.h" - -@implementation SDLProtocolFrameHeader - -@synthesize version; -@synthesize compressed; -@synthesize frameType; -@synthesize sessionType; -@synthesize frameData; -@synthesize sessionID; -@synthesize dataSize; - --(id) init { - if (self = [super init]) { - version = 1; - compressed = false; - frameType = SDLFrameType_Control; - sessionType = SDLSessionType_RPC; - frameData = 0; - sessionID = 0; - - dataSize = 0; - } - return self; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeaderFactory.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeaderFactory.h deleted file mode 100644 index d768f96..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeaderFactory.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLProtocolFrameHeader.h" - -@interface SDLProtocolFrameHeaderFactory : NSObject {} - -+(SDLProtocolFrameHeader*) parseHeader:(NSData*) header; -+(SDLProtocolFrameHeader*) startSessionWithSessionType:(SDLSessionType)sessionType; -+(SDLProtocolFrameHeader*) endSessionWithSessionType:(SDLSessionType)sessionType sessionID:(Byte)sessionID; -+(SDLProtocolFrameHeader*) singleFrameWithSessionType:(SDLSessionType)sessionType sessionID:(Byte)sessionID dataSize:(NSInteger)dataSize; -+(SDLProtocolFrameHeader*) firstFrameWithSessionType:(SDLSessionType)sessionType sessionID:(Byte)sessionID; -+(SDLProtocolFrameHeader*) consecutiveFrameWithSessionType:(SDLSessionType) sessionType sessionID:(Byte)sessionID dataSize:(NSInteger)dataSize ; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeaderFactory.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeaderFactory.m deleted file mode 100644 index 494aee4..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolFrameHeaderFactory.m +++ /dev/null @@ -1,81 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLProtocolFrameHeaderFactory.h" -#import "SDLBitConverter.h" - -@implementation SDLProtocolFrameHeaderFactory - -+(SDLProtocolFrameHeader*) parseHeader:(NSData*) header { - SDLProtocolFrameHeader* msg = [[[SDLProtocolFrameHeader alloc] init] autorelease]; - - Byte version = (Byte)(((Byte*)header.bytes)[0] >> 4); - BOOL compressed = (1 == ((((Byte*)header.bytes)[0] & 0x08) >> 3)); - Byte frameType = (Byte)(((Byte*)header.bytes)[0] & 0x07); - Byte sessionType = ((Byte*)header.bytes)[1]; - Byte frameData = ((Byte*)header.bytes)[2]; - Byte sessionID = ((Byte*)header.bytes)[3]; - UInt32 dataSize = [SDLBitConverter intFromByteArray:((Byte*)header.bytes) offset:4]; - - msg.version = version; - msg.compressed = compressed; - msg.frameType = frameType; - msg.sessionType = sessionType; - msg.frameData = frameData; - msg.sessionID = sessionID; - msg.dataSize = dataSize; - - return msg; -} - -+(SDLProtocolFrameHeader*) startSessionWithSessionType:(SDLSessionType) sessionType { - SDLProtocolFrameHeader* msg = [[[SDLProtocolFrameHeader alloc] init] autorelease]; - msg.frameType = SDLFrameType_Control; - msg.sessionType = sessionType; - msg.frameData = SDLFrameData_StartSession; - - return msg; -} - - -+(SDLProtocolFrameHeader*) endSessionWithSessionType:(SDLSessionType)sessionType sessionID:(Byte)sessionID { - SDLProtocolFrameHeader* header = [[[SDLProtocolFrameHeader alloc] init] autorelease]; - header.frameType = SDLFrameType_Control; - header.frameData = SDLFrameData_EndSession; - header.sessionType = sessionType; - header.sessionID = sessionID; - - return header; -} -+(SDLProtocolFrameHeader*) singleFrameWithSessionType:(SDLSessionType) sessionType sessionID:(Byte) sessionID dataSize:(NSInteger) dataSize { - SDLProtocolFrameHeader* header = [[[SDLProtocolFrameHeader alloc] init] autorelease]; - header.frameType = SDLFrameType_Single; - header.sessionType = sessionType; - header.sessionID = sessionID; - header.dataSize = dataSize; - - return header; -} - -+(SDLProtocolFrameHeader*) firstFrameWithSessionType:(SDLSessionType) sessionType sessionID:(Byte) sessionID{ - SDLProtocolFrameHeader* header = [[[SDLProtocolFrameHeader alloc] init] autorelease]; - header.frameType = SDLFrameType_First; - header.sessionType = sessionType; - header.sessionID = sessionID; - header.dataSize = 8; - - return header; -} - -+(SDLProtocolFrameHeader*) consecutiveFrameWithSessionType:(SDLSessionType) sessionType sessionID:(Byte) sessionID dataSize:(NSInteger) dataSize { - SDLProtocolFrameHeader* header = [[[SDLProtocolFrameHeader alloc] init] autorelease]; - header.frameType = SDLFrameType_Consecutive; - header.sessionType = sessionType; - header.sessionID = sessionID; - header.dataSize = dataSize; - - return header; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolListener.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolListener.h deleted file mode 100644 index 0cdb481..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolListener.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLProtocolMessage.h" - -@protocol SDLProtocolListener - --(void) onProtocolMessageReceived:(SDLProtocolMessage*) msg; - --(void) onProtocolOpened; --(void) onProtocolClosed; --(void) onError:(NSString*) info exception:(NSException*) e; - -@end - diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolMessage.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolMessage.h deleted file mode 100644 index 182dc5b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolMessage.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLProtocolFrameHeader.h" - -typedef enum SDLMessageType { - SDLMessageType_StartSession = 0x01, - SDLMessageType_StartSessionACK = 0x02, - SDLMessageType_StartSessionNACK = 0x03, - SDLMessageType_EndSession = 0x04, - - SDLMessageType_Data = 0x05 -} SDLMessageType; - -@interface SDLProtocolMessage : NSObject { - SDLMessageType messageType; - SDLSessionType sessionType; - Byte sessionID; - - NSData* data; -} - -@property(assign) SDLMessageType messageType; -@property(assign) SDLSessionType sessionType; -@property(assign) Byte sessionID; - -@property(retain) NSData* data; - -@end \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolMessage.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolMessage.m deleted file mode 100644 index 3589b98..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProtocolMessage.m +++ /dev/null @@ -1,29 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLProtocolMessage.h" - -@implementation SDLProtocolMessage - -@synthesize messageType; -@synthesize sessionType; -@synthesize sessionID; -@synthesize data; - --(id) init { - if (self = [super init]) { - messageType = SDLMessageType_Data; - sessionType = SDLSessionType_RPC; - sessionID = 0; - data = nil; - } - return self; -} - --(void) dealloc { - [data release]; - [super dealloc]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.h deleted file mode 100644 index c9d7808..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.h +++ /dev/null @@ -1,39 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLITransport.h" -#import "SDLIProtocol.h" -#import "SDLProxyListener.h" -#import "SDLRPCRequestFactory.h" -#import "SDLIProxy.h" - -@interface SDLProxy : NSObject { - NSObject* transport; - NSObject* protocol; - NSMutableArray* proxyListeners; - Byte rpcSessionID; - Byte bulkSessionID; - - NSTimer* handshakeTimer; - - BOOL isConnected; - BOOL alreadyDestructed; -} - --(id) initWithTransport:(NSObject*) transport protocol:(NSObject*) protocol delegate:(NSObject*) delegate; - --(void) dispose; --(void) addDelegate:(NSObject*) delegate; - --(void) sendRPCRequest:(SDLRPCMessage*) msg; --(void) handleRpcMessage:(NSDictionary*) msg; --(NSObject*)getTransport; --(NSObject*)getProtocol; --(void)destroyHandshakeTimer; - -+(void)enableSiphonDebug; -+(void)disableSiphonDebug; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.m deleted file mode 100644 index 41e0792..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxy.m +++ /dev/null @@ -1,325 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import - -#import "SDLProxy.h" -#import "SDLNames.h" -#import "SDLJsonEncoder.h" -#import "SDLJsonDecoder.h" -#import "SDLLanguage.h" -#import "SDLDebugTool.h" -#import -#import "SDLSiphonServer.h" - -@interface SDLCallback : NSObject { - NSObject* target; - SEL selector; - NSObject* parameter; -} - -@property (nonatomic, retain) NSObject* target; -@property (nonatomic, assign) SEL selector; -@property (nonatomic, retain) NSObject* parameter; - -@end - -@implementation SDLCallback -@synthesize target; -@synthesize selector; -@synthesize parameter; - --(void) dealloc { - [target release]; - [parameter release]; - - [super dealloc]; -} - -@end - -@interface SDLProxy () - --(void) notifyProxyClosed; --(void) handleProtocolMessage:(SDLProtocolMessage*) msgData; --(void) performCallback:(SDLCallback*) callback; - -@end - -@implementation SDLProxy - -const float handshakeTime = 10.0; -const float notifyProxyClosedDelay = 0.1; - -- (void)handshakeTimerFired { - [self destroyHandshakeTimer]; - [self performSelector:@selector(notifyProxyClosed) withObject:nil afterDelay:notifyProxyClosedDelay]; -} - --(id) initWithTransport:(NSObject*) theTransport protocol:(NSObject*) theProtocol delegate:(NSObject*) theDelegate { - if (self = [super init]) { - [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; - - proxyListeners = [[NSMutableArray alloc] initWithObjects:theDelegate, nil]; - protocol = [theProtocol retain]; - transport = [theTransport retain]; - rpcSessionID = 0; - - alreadyDestructed = NO; - - [transport addTransportListener:protocol]; - [protocol addProtocolListener:self]; - protocol.transport = transport; - - [transport connect]; - - return self; - } - return self; -} - --(void)destroyHandshakeTimer { - if (handshakeTimer != nil) { - [handshakeTimer invalidate]; - [handshakeTimer release]; - handshakeTimer = nil; - } -} - --(void) destructObjects { - if(!alreadyDestructed) { - [self destroyHandshakeTimer]; - - [transport release]; - transport = nil; - - [protocol release]; - protocol = nil; - - [proxyListeners release]; - proxyListeners = nil; - - alreadyDestructed = YES; - - } -} - --(void) dispose { - [self destructObjects]; -} - --(void) dealloc { - [self destructObjects]; - [super dealloc]; -} - --(NSObject*)getTransport { - return transport; -} - --(NSObject*)getProtocol { - return protocol; -} - --(void) addDelegate:(NSObject*) delegate { - @synchronized(proxyListeners) { - [proxyListeners addObject:delegate]; - } -} - - --(void) sendRPCRequest:(SDLRPCMessage*) msg { - @try { - [SDLDebugTool logInfo:@"Proxy: sendRPCRequest: encoding message: %@", msg]; - NSData* msgData = [[SDLJsonEncoder instance] encodeDictionary:[msg serializeAsDictionary]]; - [protocol sendData:msgData sessionType:SDLSessionType_RPC sessionID:rpcSessionID]; - } @catch (NSException * e) { - [SDLDebugTool logException:e withMessage:@"Proxy: sendRPCRequest: Failed to send RPC request: %@", msg.name]; - } @finally {} -} - -- (void) onProtocolMessageReceived:(SDLProtocolMessage*) msgData { - - @try { - [self handleProtocolMessage:msgData]; - } @catch (NSException * e) { - [SDLDebugTool logException:e withMessage:@"Proxy: onProtocolMessageReceived: Failed to handle protocol message."]; - } @finally {} -} - --(void) handleProtocolMessage:(SDLProtocolMessage*) msgData { - // It's possible to run into a scenario in which SYNC fails to send a StartSessionACK. This issue will be caught by the timer that's waiting for a RegisterAppInterfaceResponse. If no RAIResponse is received, a call to onProxyClosed will occur. - if (msgData.messageType == SDLMessageType_StartSessionACK) { - if (msgData.sessionType == SDLSessionType_RPC) { - rpcSessionID = msgData.sessionID; - [SDLDebugTool logInfo:@"Got rpcSessionID = %i", rpcSessionID]; - - NSArray *localListeners = nil; - @synchronized (proxyListeners) { - localListeners = [proxyListeners copy]; - } - - for (NSObject *listener in localListeners) { - [listener onProxyOpened]; - } - - [localListeners release]; - } else if (msgData.sessionType == SDLSessionType_BulkData) { - bulkSessionID = msgData.sessionID; - [SDLDebugTool logInfo:@"Proxy: handleProtocolMessage: Got bulkSessionID = %i", bulkSessionID]; - } - } - - if (msgData.data.length > 0) { - NSDictionary *msg = [[SDLJsonDecoder instance] decode:msgData.data]; - [self handleRpcMessage:msg]; - } - -} - --(void) neverCalled { - [[SDLAddCommandResponse alloc] release]; - [[SDLAddSubMenuResponse alloc] release]; - [[SDLAlertResponse alloc] release]; - [[SDLCreateInteractionChoiceSetResponse alloc] release]; - [[SDLDeleteCommandResponse alloc] release]; - [[SDLDeleteInteractionChoiceSetResponse alloc] release]; - [[SDLDeleteSubMenuResponse alloc] release]; - [[SDLOnHMIStatus alloc] release]; - [[SDLOnButtonEvent alloc] release]; - [[SDLOnButtonPress alloc] release]; - [[SDLEncodedSyncPDataResponse alloc] release]; - [[SDLOnCommand alloc] release]; - [[SDLOnAppInterfaceUnregistered alloc] release]; - [[SDLPerformInteractionResponse alloc] release]; - [[SDLRegisterAppInterfaceResponse alloc] release]; - [[SDLSetGlobalPropertiesResponse alloc] release]; - [[SDLResetGlobalPropertiesResponse alloc] release]; - [[SDLSetMediaClockTimerResponse alloc] release]; - [[SDLShowResponse alloc] release]; - [[SDLSpeakResponse alloc] release]; - [[SDLSubscribeButtonResponse alloc] release]; - [[SDLUnregisterAppInterfaceResponse alloc] release]; - [[SDLUnsubscribeButtonResponse alloc] release]; - [[SDLGenericResponse alloc] release]; - [[SDLOnDriverDistraction alloc] release]; - [[SDLOnEncodedSyncPData alloc] release]; - [[SDLOnTBTClientState alloc] release]; -} - --(void) handleRpcMessage:(NSDictionary*) msg { - - NSString* messageType = [[msg keyEnumerator] nextObject]; - NSDictionary* function = [msg objectForKey:messageType]; - NSString* functionName = [function objectForKey:NAMES_operation_name]; - if ([functionName isEqualToString:NAMES_OnAppInterfaceUnregistered] - || [functionName isEqualToString:NAMES_UnregisterAppInterface]) { - [self notifyProxyClosed]; - return; - } - - if ([messageType isEqualToString:NAMES_response]) { - [SDLDebugTool logInfo:@"Proxy: handleRpcMessage: Receiving: %@", functionName]; - bool notGenericResponseMessage = ![functionName isEqualToString:@"GenericResponse"]; - if(notGenericResponseMessage) functionName = [NSString stringWithFormat:@"%@Response", functionName]; - } - - // Turn off the timer, the handshake has succeeded - if ([functionName isEqualToString:@"RegisterAppInterfaceResponse"]) { - [self destroyHandshakeTimer]; - } - - NSString* functionClassName = [NSString stringWithFormat:@"SDL%@", functionName]; - Class functionClass = objc_getClass([functionClassName cStringUsingEncoding:NSUTF8StringEncoding]); - - // functionObject doesn't leak because performSelector returns a pointer to the same instance that class_createInstance() creates - NSObject* functionObject = (id)class_createInstance(functionClass, 0); - NSObject* rpcCallbackObject = [functionObject performSelector:@selector(initWithDictionary:) withObject:msg]; - - NSString* handlerName = [NSString stringWithFormat:@"on%@:", functionName]; - - SEL handlerSelector = NSSelectorFromString(handlerName); - - NSArray *localListeners = nil; - @synchronized (proxyListeners) { - localListeners = [proxyListeners copy]; - } - - for (NSObject *listener in localListeners) { - if ([listener respondsToSelector:handlerSelector]) { - SDLCallback* callback = [[SDLCallback alloc] init]; - callback.target = listener; - callback.selector = handlerSelector; - callback.parameter = rpcCallbackObject; - [self performSelectorOnMainThread:@selector(performCallback:) withObject:callback waitUntilDone:NO]; - // [callback release]; Moved to performCallback to avoid thread race condition - } else { - [SDLDebugTool logInfo:@"Proxy: handleRpcMessage: Proxy listener doesn't respond to selector: %@", handlerName]; - } - } - [localListeners release]; -} - --(void) performCallback:(SDLCallback*) callback { - @try { - [callback.target performSelector:callback.selector withObject:callback.parameter]; - } @catch (NSException * e) { - [SDLDebugTool logException:e withMessage:@"Exception thrown during call to %@ with object %@", callback.target, callback.parameter]; - } @finally { - [callback release]; - } -} - --(void) onProtocolClosed { - [self notifyProxyClosed]; -} - --(void) notifyProxyClosed { - if (isConnected) { - isConnected = NO; - NSArray *localListeners = nil; - @synchronized (proxyListeners) { - localListeners = [proxyListeners copy]; - } - - for (NSObject *listener in localListeners) { - [listener performSelectorOnMainThread:@selector(onProxyClosed) withObject:nil waitUntilDone:NO]; - } - [localListeners release]; - } -} - --(void) onError:(NSString*) info exception:(NSException*) e { - - NSArray *localListeners = nil; - @synchronized (proxyListeners) { - localListeners = [proxyListeners copy]; - } - - for (NSObject *listener in localListeners) { - [listener performSelectorOnMainThread:@selector(onError:) withObject:e waitUntilDone:NO]; - } - [localListeners release]; -} - - - -- (void) onProtocolOpened { - isConnected = YES; - [protocol sendStartSessionWithType:SDLSessionType_RPC]; - [self destroyHandshakeTimer]; - handshakeTimer = [NSTimer scheduledTimerWithTimeInterval:handshakeTime target:self selector:@selector(handshakeTimerFired) userInfo:nil repeats:NO]; - [handshakeTimer retain]; -} - -+(void)enableSiphonDebug { - [SDLSiphonServer enableSiphonDebug]; -} - -+(void)disableSiphonDebug { - [SDLSiphonServer disableSiphonDebug]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyFactory.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyFactory.h deleted file mode 100644 index ca8b114..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLProxy.h" - -@interface SDLProxyFactory : NSObject {} - -+(SDLProxy*) buildProxyWithListener:(NSObject*) listener; -+(SDLProxy*) buildProxyWithListener:(NSObject*) listener - tcpIPAddress: (NSString*) ipaddress - tcpPort: (NSString*) port; -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyFactory.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyFactory.m deleted file mode 100644 index 47ada0f..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyFactory.m +++ /dev/null @@ -1,40 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLProxyFactory.h" -#import "SDLIAPTransport.h" -#import "SDLTCPTransport.h" -#import "SDLProtocol.h" -#import "SDLDebugTool.h" - -@implementation SDLProxyFactory - -+(SDLProxy*) buildProxyWithListener:(NSObject*) delegate { - SDLIAPTransport* transport = [[SDLIAPTransport alloc] init]; - SDLProtocol* protocol = [[SDLProtocol alloc] init]; - - SDLProxy *ret = [[SDLProxy alloc] initWithTransport:transport protocol:protocol delegate:delegate]; - - [transport release]; - [protocol release]; - - return [ret autorelease]; -} - -+(SDLProxy*) buildProxyWithListener:(NSObject*) delegate - tcpIPAddress: (NSString*) ipaddress - tcpPort: (NSString*) port { - - SDLTCPTransport* transport = [[SDLTCPTransport alloc] initWithEndpoint:ipaddress endpointParam:port]; - SDLProtocol* protocol = [[SDLProtocol alloc] init]; - - SDLProxy *ret = [[SDLProxy alloc] initWithTransport:transport protocol:protocol delegate:delegate]; - - [transport release]; - [protocol release]; - - return [ret autorelease]; -} - -@end \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyListener.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyListener.h deleted file mode 100644 index a791345..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLProxyListener.h +++ /dev/null @@ -1,69 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "RPC/SDLAddCommandResponse.h" -#import "RPC/SDLAddSubMenuResponse.h" -#import "RPC/SDLEncodedSyncPDataResponse.h" -#import "RPC/SDLAlertResponse.h" -#import "RPC/SDLCreateInteractionChoiceSetResponse.h" -#import "RPC/SDLDeleteCommandResponse.h" -#import "RPC/SDLDeleteInteractionChoiceSetResponse.h" -#import "RPC/SDLDeleteSubMenuResponse.h" -#import "RPC/SDLOnHMIStatus.h" -#import "RPC/SDLOnButtonEvent.h" -#import "RPC/SDLOnButtonPress.h" -#import "RPC/SDLOnCommand.h" -#import "RPC/SDLOnEncodedSyncPData.h" -#import "RPC/SDLOnTBTClientState.h" -#import "RPC/SDLOnDriverDistraction.h" -#import "RPC/SDLOnAppInterfaceUnregistered.h" -#import "RPC/SDLPerformInteractionResponse.h" -#import "RPC/SDLRegisterAppInterfaceResponse.h" -#import "RPC/SDLSetGlobalPropertiesResponse.h" -#import "RPC/SDLResetGlobalPropertiesResponse.h" -#import "RPC/SDLSetMediaClockTimerResponse.h" -#import "RPC/SDLShowResponse.h" -#import "RPC/SDLSpeakResponse.h" -#import "RPC/SDLSubscribeButtonResponse.h" -#import "RPC/SDLUnregisterAppInterfaceResponse.h" -#import "RPC/SDLUnsubscribeButtonResponse.h" -#import "RPC/SDLGenericResponse.h" - -@protocol SDLProxyListener - --(void) onOnHMIStatus:(SDLOnHMIStatus*) notification; --(void) onOnEncodedSyncPData:(SDLOnEncodedSyncPData*) notification; --(void) onOnTBTClientState:(SDLOnTBTClientState*) notification; --(void) onOnDriverDistraction:(SDLOnDriverDistraction*) notification; --(void) onOnButtonEvent:(SDLOnButtonEvent*) notification; --(void) onOnButtonPress:(SDLOnButtonPress*) notification; --(void) onOnCommand:(SDLOnCommand*) notification; --(void) onOnAppInterfaceUnregistered:(SDLOnAppInterfaceUnregistered*) notification; - --(void) onAddCommandResponse:(SDLAddCommandResponse*) response; --(void) onAddSubMenuResponse:(SDLAddSubMenuResponse*) response; --(void) onAlertResponse:(SDLAlertResponse*) response; --(void) onCreateInteractionChoiceSetResponse:(SDLCreateInteractionChoiceSetResponse*) response; --(void) onDeleteCommandResponse:(SDLDeleteCommandResponse*) response; --(void) onDeleteInteractionChoiceSetResponse:(SDLDeleteInteractionChoiceSetResponse*) response; --(void) onDeleteSubMenuResponse:(SDLDeleteSubMenuResponse*) response; --(void) onEncodedSyncPDataResponse:(SDLEncodedSyncPDataResponse*) response; --(void) onPerformInteractionResponse:(SDLPerformInteractionResponse*) response; --(void) onRegisterAppInterfaceResponse:(SDLRegisterAppInterfaceResponse*) response; --(void) onSetGlobalPropertiesResponse:(SDLSetGlobalPropertiesResponse*) response; --(void) onResetGlobalPropertiesResponse:(SDLResetGlobalPropertiesResponse*) response; --(void) onSetMediaClockTimerResponse:(SDLSetMediaClockTimerResponse*) response; --(void) onShowResponse:(SDLShowResponse*) response; --(void) onSpeakResponse:(SDLSpeakResponse*) response; --(void) onSubscribeButtonResponse:(SDLSubscribeButtonResponse*) response; --(void) onUnregisterAppInterfaceResponse:(SDLUnregisterAppInterfaceResponse*) response; --(void) onUnsubscribeButtonResponse:(SDLUnsubscribeButtonResponse*) response; --(void) onGenericResponse:(SDLGenericResponse*) response; - --(void) onProxyOpened; --(void) onProxyClosed; --(void) onError:(NSException*) e; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCMessage.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCMessage.h deleted file mode 100644 index f39e91d..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCMessage.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLEnum.h" - -@interface SDLRPCStruct : NSObject { - NSMutableDictionary* store; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict; --(id) init; - --(NSMutableDictionary*) serializeAsDictionary; - -@end - -@interface SDLRPCMessage : SDLRPCStruct { - NSMutableDictionary* function; - NSMutableDictionary* parameters; - NSString* messageType; - -} - --(id) initWithName:(NSString*) name; --(id) initWithDictionary:(NSMutableDictionary*) dict; - -@property(readonly) NSString* name; -@property(readonly) NSString* messageType; - -@end \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCMessage.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCMessage.m deleted file mode 100644 index 9c71ca0..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCMessage.m +++ /dev/null @@ -1,110 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLRPCMessage.h" -#import "SDLNames.h" - -@implementation SDLRPCStruct - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super init]) { - store = [dict retain]; - } - return self; -} - --(id) init { - if (self = [super init]) { - store = [[NSMutableDictionary alloc] init]; - } - return self; -} - --(NSMutableDictionary*) serializeDictionary:(NSDictionary*) dict { - - NSMutableDictionary* ret = [NSMutableDictionary dictionaryWithCapacity:dict.count]; - for (NSString* key in [dict keyEnumerator]) { - NSObject* value = [dict objectForKey:key]; - if ([value isKindOfClass:SDLRPCStruct.class]) { - [ret setObject:[(SDLRPCStruct*)value serializeAsDictionary] forKey:key]; - } else if ([value isKindOfClass:NSDictionary.class]) { - [ret setObject:[self serializeDictionary:(NSDictionary*)value] forKey:key]; - } else if ([value isKindOfClass:NSArray.class]) { - NSArray* arrayVal = (NSArray*) value; - - if (arrayVal.count > 0 - && ([[arrayVal objectAtIndex:0] isKindOfClass:SDLRPCStruct.class])) { - NSMutableArray* serializedList = [NSMutableArray arrayWithCapacity:arrayVal.count]; - for (SDLRPCStruct* serializeable in arrayVal) { - [serializedList addObject:[serializeable serializeAsDictionary]]; - } - [ret setObject:serializedList forKey:key]; - } else if (arrayVal.count > 0 - && ([[arrayVal objectAtIndex:0] isKindOfClass:SDLEnum.class])) { - NSMutableArray* serializedList = [NSMutableArray arrayWithCapacity:arrayVal.count]; - for (SDLEnum* anEnum in arrayVal) { - [serializedList addObject:anEnum.value]; - } - [ret setObject:serializedList forKey:key]; - } else { - [ret setObject:value forKey:key]; - } - } else if ([value isKindOfClass:SDLEnum.class]) { - [ret setObject:((SDLEnum*)value).value forKey:key]; - } else { - [ret setObject:value forKey:key]; - } - } - return ret; -} - --(NSMutableDictionary*) serializeAsDictionary { - return [self serializeDictionary:store]; -} - --(void) dealloc { - [store release]; - [super dealloc]; -} - -@end - -@implementation SDLRPCMessage - -@synthesize messageType; - --(id) initWithName:(NSString*) name { - if (self = [super init]) { - function = [[NSMutableDictionary alloc] initWithCapacity:3]; - parameters = [[NSMutableDictionary alloc] init]; - messageType = NAMES_request; - [store setObject:function forKey:messageType]; - [function setObject:parameters forKey:NAMES_parameters]; - [function setObject:name forKey:NAMES_operation_name]; - } - return self; -} - --(id) initWithDictionary:(NSMutableDictionary*) dict { - if (self = [super initWithDictionary:dict]) { - messageType = [[store keyEnumerator] nextObject]; - - function = [[store objectForKey:messageType] retain]; - parameters = [[function objectForKey:NAMES_parameters] retain]; - } - return self; -} - --(void) dealloc { - [function release]; - [parameters release]; - - [super dealloc]; -} - --(NSString*) name { - return [function objectForKey:NAMES_operation_name]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCNotification.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCNotification.h deleted file mode 100644 index 58e0153..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCNotification.h +++ /dev/null @@ -1,10 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - -@interface SDLRPCNotification : SDLRPCMessage {} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCNotification.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCNotification.m deleted file mode 100644 index e27fe13..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCNotification.m +++ /dev/null @@ -1,9 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLRPCNotification.h" - -@implementation SDLRPCNotification - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequest.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequest.h deleted file mode 100644 index 07cb4a3..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequest.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" - -@interface SDLRPCRequest : SDLRPCMessage {} - -@property(retain) NSNumber* correlationID; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequest.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequest.m deleted file mode 100644 index 52ada4b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequest.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLRPCRequest.h" -#import "SDLNames.h" - -@implementation SDLRPCRequest - --(NSNumber*) correlationID { - return [function objectForKey:NAMES_correlationID]; -} - --(void) setCorrelationID:(NSNumber *)corrID { - if (corrID != nil) { - [function setObject:corrID forKey:NAMES_correlationID]; - } else { - [function removeObjectForKey:NAMES_correlationID]; - } -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequestFactory.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequestFactory.h deleted file mode 100644 index f90f089..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequestFactory.h +++ /dev/null @@ -1,76 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "RPC/SDLRegisterAppInterface.h" -#import "RPC/SDLUnregisterAppInterface.h" -#import "RPC/SDLAlert.h" -#import "RPC/SDLSpeak.h" -#import "RPC/SDLShow.h" -#import "RPC/SDLSetMediaClockTimer.h" -#import "RPC/SDLEncodedSyncPData.h" -#import "RPC/SDLAddCommand.h" -#import "RPC/SDLDeleteCommand.h" -#import "RPC/SDLCreateInteractionChoiceSet.h" -#import "RPC/SDLDeleteInteractionChoiceSet.h" -#import "RPC/SDLPerformInteraction.h" -#import "RPC/SDLAddSubMenu.h" -#import "RPC/SDLDeleteSubMenu.h" -#import "RPC/SDLSubscribeButton.h" -#import "RPC/SDLUnsubscribeButton.h" -#import "RPC/SDLResetGlobalProperties.h" -#import "RPC/SDLSetGlobalProperties.h" - -@interface SDLRPCRequestFactory : NSObject {} - -+(SDLRegisterAppInterface*) buildRegisterAppInterfaceWithAppName:(NSString*) appName; -+(SDLRegisterAppInterface*) buildRegisterAppInterfaceWithAppName:(NSString*) appName isMediaApp:(NSNumber*) isMediaApp autoActivateID:(NSString*) autoActivateID; - -+(SDLUnregisterAppInterface*) buildUnregisterAppInterfaceWithCorrelationID:(NSNumber*) correlationID; - -+(SDLAlert*) buildAlertWithTTS:(NSString*) ttsText alertText1:(NSString*) alertText1 alertText2:(NSString*) alertText2 playTone:(NSNumber*) playTone duration:(NSNumber*) duration correlationID:(NSNumber*) correlationID; -+(SDLAlert*) buildAlertWithTTSChunks:(NSArray*) ttsChunks alertText1:(NSString*) alertText1 alertText2:(NSString*) alertText2 playTone:(NSNumber*) playTone duration:(NSNumber*) duration correlationID:(NSNumber*) correlationID; -+(SDLAlert*) buildAlertWithAlertText1:(NSString*) alertText1 alertText2:(NSString*) alertText2 duration:(NSNumber*) duration correlationID:(NSNumber*) correlationID; -+(SDLAlert*) buildAlertWithTTS:(NSString*) ttsText playTone:(NSNumber*) playTone correlationID:(NSNumber*) correlationID; -+(SDLAlert*) buildAlertWithTTSChunks:(NSArray*) ttsChunks playTone:(NSNumber*) playTone correlationID:(NSNumber*) correlationID; - -+(SDLSpeak*) buildSpeakWithTTS:(NSString*) ttsText correlationID:(NSNumber*) correlationID; -+(SDLSpeak*) buildSpeakWithTTSChunks:(NSArray*) ttsChunks correlationID:(NSNumber*) correlationID; - -+(SDLShow*) buildShowWithMainField1:(NSString*) mainField1 mainField2: (NSString*) mainField2 alignment:(SDLTextAlignment*) textAlignment correlationID:(NSNumber*) correlationID; -+(SDLShow*) buildShowWithMainField1:(NSString*) mainField1 mainField2: (NSString*) mainField2 statusBar:(NSString*) statusBar mediaClock:(NSString*) mediaClock mediaTrack:(NSString*) mediaTrack alignment:(SDLTextAlignment*) textAlignment correlationID:(NSNumber*) correlationID; - -+(SDLSetMediaClockTimer*) buildSetMediaClockTimerWithHours:(NSNumber*) hours minutes:(NSNumber*) minutes seconds:(NSNumber*) seconds updateMode:(SDLUpdateMode*) updateMode correlationID:(NSNumber*) correlationID; -+(SDLSetMediaClockTimer*) buildSetMediaClockTimerWithUpdateMode:(SDLUpdateMode*) updateMode correlationID:(NSNumber*) correlationID; - -+(SDLAddCommand*) buildAddCommandWithID:(NSNumber*) cmdID menuName:(NSString*) menuName parentID:(NSNumber*) parentID position:(NSNumber*) position vrCommands:(NSArray*) vrCommands correlationID:(NSNumber*) correlationID; -+(SDLAddCommand*) buildAddCommandWithID:(NSNumber*) cmdID vrCommands:(NSArray*) vrCommands correlationID:(NSNumber*) correlationID; -+(SDLAddCommand*) buildAddCommandWithID:(NSNumber*) cmdID menuName:(NSString*) menuName vrCommands:(NSArray*) vrCommands correlationID:(NSNumber*) correlationID; - -+(SDLDeleteCommand*) buildDeleteCommandWithID:(NSNumber*) cmdID correlationID:(NSNumber*) correlationID; - -+(SDLAddSubMenu*) buildAddSubMenuWithID:(NSNumber*) menuID menuName:(NSString*) menuName position:(NSNumber*) position correlationID:(NSNumber*) correlationID; -+(SDLAddSubMenu*) buildAddSubMenuWithID:(NSNumber*) menuID menuName:(NSString*) menuName correlationID:(NSNumber*) correlationID; - -+(SDLDeleteSubMenu*) buildDeleteSubMenuWithID:(NSNumber*) menuID correlationID:(NSNumber*) correlationID; - -+(SDLCreateInteractionChoiceSet*) buildCreateInteractionChoiceSetWithID:(NSNumber*)interactionChoiceSetID choiceSet:(NSArray*) choices correlationID:(NSNumber*) correlationID; - -+(SDLDeleteInteractionChoiceSet*) buildDeleteInteractionChoiceSetWithID:(NSNumber*)interactionChoiceSetID correlationID:(NSNumber*) correlationID; - -+(SDLPerformInteraction*) buildPerformInteractionWithInitialPrompt:(NSArray*)initialChunks initialText:(NSString*)initialText interactionChoiceSetIDList:(NSArray*) interactionChoiceSetIDList helpChunks:(NSArray*)helpChunks timeoutChunks:(NSArray*)timeoutChunks interactionMode:(SDLInteractionMode*) interactionMode timeout:(NSNumber*)timeout correlationID:(NSNumber*) correlationID; -+(SDLPerformInteraction*) buildPerformInteractionWithInitialPrompt:(NSString*)initialPrompt initialText:(NSString*)initialText interactionChoiceSetIDList:(NSArray*) interactionChoiceSetIDList helpPrompt:(NSString*)helpPrompt timeoutPrompt:(NSString*)timeoutPrompt interactionMode:(SDLInteractionMode*) interactionMode timeout:(NSNumber*)timeout correlationID:(NSNumber*) correlationID; -+(SDLPerformInteraction*) buildPerformInteractionWithInitialPrompt:(NSString*)initialPrompt initialText:(NSString*)initialText interactionChoiceSetID:(NSNumber*) interactionChoiceSetID correlationID:(NSNumber*) correlationID; - -+(SDLSubscribeButton*) buildSubscribeButtonWithName:(SDLButtonName*) buttonName correlationID:(NSNumber*) correlationID; - -+(SDLUnsubscribeButton*) buildUnsubscribeButtonWithName:(SDLButtonName*) buttonName correlationID:(NSNumber*) correlationID; - -+(SDLEncodedSyncPData*) buildEncodedSyncPDataWithData:(NSMutableArray*) data correlationID:(NSNumber*) correlationID; - -+(SDLSetGlobalProperties*) buildSetGlobalPropertiesWithHelpText:(NSString*) helpText timeoutText:(NSString*) timeoutText correlationID:(NSNumber*) correlationID; - -+(SDLResetGlobalProperties*) buildResetGlobalPropertiesWithProperties:(NSArray*) properties correlationID:(NSNumber*) correlationID; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequestFactory.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequestFactory.m deleted file mode 100644 index 4f530e8..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCRequestFactory.m +++ /dev/null @@ -1,279 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLRPCRequestFactory.h" -#import "RPC/SDLMenuParams.h" -#import "SDLTTSChunkFactory.h" - -#define NGN_MEDIA_SCREEN_APP_NAME_MAX_LENGTH 5 - -@implementation SDLRPCRequestFactory - -+(SDLRegisterAppInterface*) buildRegisterAppInterfaceWithAppName:(NSString*) appName { - return [SDLRPCRequestFactory buildRegisterAppInterfaceWithAppName:appName isMediaApp:[NSNumber numberWithBool:NO] autoActivateID:@""]; -} - -+(SDLRegisterAppInterface*) buildRegisterAppInterfaceWithAppName:(NSString*) appName isMediaApp:(NSNumber*) isMediaApp autoActivateID:(NSString*) autoActivateID { - - SDLRegisterAppInterface* msg = [[[SDLRegisterAppInterface alloc] init] autorelease]; - msg.correlationID = [NSNumber numberWithInt:1]; - msg.appName = appName; - SDLMsgVersion* version = [[[SDLMsgVersion alloc] init] autorelease]; - version.majorVersion = [NSNumber numberWithInt:1]; - version.minorVersion = [NSNumber numberWithInt:1]; - msg.syncMsgVersion = version; - NSString* ngnMediaAppName = [[appName copy] autorelease]; - if (ngnMediaAppName.length > NGN_MEDIA_SCREEN_APP_NAME_MAX_LENGTH) { - ngnMediaAppName = [ngnMediaAppName substringToIndex:NGN_MEDIA_SCREEN_APP_NAME_MAX_LENGTH]; - } - msg.ngnMediaScreenAppName = ngnMediaAppName; - NSMutableArray* syns = [NSMutableArray arrayWithObject:appName]; - msg.vrSynonyms = syns; - msg.autoActivateID = autoActivateID; - msg.isMediaApplication = isMediaApp; - msg.languageDesired = SDLLanguage.EN_US; - - return msg; - -} - -+(SDLUnregisterAppInterface*) buildUnregisterAppInterfaceWithCorrelationID:(NSNumber*) correlationID { - SDLUnregisterAppInterface* msg = [[[SDLUnregisterAppInterface alloc] init] autorelease]; - msg.correlationID = correlationID; - return msg; -} - -+(SDLAlert*) buildAlertWithTTS:(NSString*) ttsText alertText1:(NSString*) alertText1 alertText2:(NSString*) alertText2 playTone:(NSNumber*) playTone duration:(NSNumber*) duration correlationID:(NSNumber*) correlationID { - SDLTTSChunk* simpleChunk = [[[SDLTTSChunk alloc] init] autorelease]; - simpleChunk.text = ttsText; - simpleChunk.type = SDLSpeechCapabilities.TEXT; - NSArray* ttsChunks = [NSArray arrayWithObject:simpleChunk]; - return [SDLRPCRequestFactory buildAlertWithTTSChunks:ttsChunks alertText1:alertText1 alertText2:alertText2 playTone:playTone duration:duration correlationID:correlationID]; -} - -+(SDLAlert*) buildAlertWithTTSChunks:(NSArray*) ttsChunks alertText1:(NSString*) alertText1 alertText2:(NSString*) alertText2 playTone:(NSNumber*) playTone duration:(NSNumber*) duration correlationID:(NSNumber*) correlationID { - SDLAlert* msg = [[[SDLAlert alloc] init] autorelease]; - msg.correlationID = correlationID; - msg.alertText1 = alertText1; - msg.alertText2 = alertText2; - msg.ttsChunks = [[ttsChunks mutableCopy] autorelease]; - msg.playTone = playTone; - msg.duration = duration; - - return msg; -} - -+(SDLAlert*) buildAlertWithAlertText1:(NSString*) alertText1 alertText2:(NSString*) alertText2 duration:(NSNumber*) duration correlationID:(NSNumber*) correlationID { - return [SDLRPCRequestFactory buildAlertWithTTSChunks:nil alertText1: alertText1 alertText2:alertText2 playTone:nil duration:duration correlationID:correlationID]; -} -+(SDLAlert*) buildAlertWithTTS:(NSString*) ttsText playTone:(NSNumber*) playTone correlationID:(NSNumber*) - correlationID{ - return [SDLRPCRequestFactory buildAlertWithTTS:ttsText alertText1:nil alertText2:nil playTone:playTone duration:nil correlationID:correlationID]; -} -+(SDLAlert*) buildAlertWithTTSChunks:(NSArray*) ttsChunks playTone:(NSNumber*) playTone correlationID:(NSNumber*) correlationID { - return [SDLRPCRequestFactory buildAlertWithTTSChunks:ttsChunks alertText1:nil alertText2:nil playTone:playTone duration:nil correlationID:correlationID]; -} - -+(SDLSpeak*) buildSpeakWithTTS:(NSString*) ttsText correlationID:(NSNumber*) correlationID { - SDLTTSChunk* simpleChunk = [[[SDLTTSChunk alloc] init] autorelease]; - simpleChunk.text = ttsText; - simpleChunk.type = SDLSpeechCapabilities.TEXT; - NSArray* ttsChunks = [NSMutableArray arrayWithObject:simpleChunk]; - return [SDLRPCRequestFactory buildSpeakWithTTSChunks:ttsChunks correlationID:correlationID]; - -} - -+(SDLSpeak*) buildSpeakWithTTSChunks:(NSArray*) ttsChunks correlationID:(NSNumber*) correlationID { - SDLSpeak* msg = [[[SDLSpeak alloc] init] autorelease]; - msg.correlationID = correlationID; - msg.ttsChunks = [[ttsChunks mutableCopy] autorelease]; - - return msg; -} - - -+(SDLShow*) buildShowWithMainField1:(NSString*) mainField1 mainField2: (NSString*) mainField2 alignment:(SDLTextAlignment*) alignment correlationID:(NSNumber*) correlationID { - return [SDLRPCRequestFactory buildShowWithMainField1:mainField1 mainField2:mainField2 statusBar:nil mediaClock:nil mediaTrack:nil alignment:alignment correlationID:correlationID]; -} - -+(SDLShow*) buildShowWithMainField1:(NSString*) mainField1 mainField2: (NSString*) mainField2 statusBar:(NSString*) statusBar mediaClock:(NSString*) mediaClock mediaTrack:(NSString*) mediaTrack alignment:(SDLTextAlignment*) textAlignment correlationID:(NSNumber*) correlationID { - SDLShow* msg = [[[SDLShow alloc] init] autorelease]; - msg.correlationID = correlationID; - msg.mainField1 = mainField1; - msg.mainField2 = mainField2; - msg.statusBar = statusBar; - msg.mediaClock = mediaClock; - msg.mediaTrack = mediaTrack; - msg.alignment = textAlignment; - - return msg; -} - -+(SDLSetMediaClockTimer*) buildSetMediaClockTimerWithHours:(NSNumber*) hours minutes:(NSNumber*) minutes seconds:(NSNumber*) seconds updateMode:(SDLUpdateMode*) updateMode correlationID:(NSNumber*) correlationID { - SDLSetMediaClockTimer* msg = [[[SDLSetMediaClockTimer alloc] init] autorelease]; - SDLStartTime* startTime = [[[SDLStartTime alloc] init] autorelease]; - startTime.hours = hours; - startTime.minutes = minutes; - startTime.seconds = seconds; - msg.startTime = startTime; - msg.updateMode = updateMode; - msg.correlationID = correlationID; - - return msg; -} -+(SDLSetMediaClockTimer*) buildSetMediaClockTimerWithUpdateMode:(SDLUpdateMode*) updateMode correlationID:(NSNumber*) correlationID { - SDLSetMediaClockTimer* msg = [[[SDLSetMediaClockTimer alloc] init] autorelease]; - - msg.updateMode = updateMode; - msg.correlationID = correlationID; - - return msg; -} - -+(SDLAddCommand*) buildAddCommandWithID:(NSNumber*) cmdID menuName:(NSString*) menuName parentID:(NSNumber*) parentID position:(NSNumber*) position vrCommands:(NSArray*) vrCommands correlationID:(NSNumber*) correlationID { - SDLAddCommand* msg = [[[SDLAddCommand alloc] init] autorelease]; - msg.correlationID = correlationID; - - msg.cmdID = cmdID; - - if (menuName != nil || parentID != nil || position != nil) { - SDLMenuParams* menuParams = [[[SDLMenuParams alloc] init] autorelease]; - menuParams.menuName = menuName; - menuParams.parentID = parentID; - menuParams.position = position; - msg.menuParams = menuParams; - } - msg.vrCommands = [[vrCommands mutableCopy] autorelease]; - - return msg; -} - -+(SDLAddCommand*) buildAddCommandWithID:(NSNumber*) cmdID vrCommands:(NSArray*) vrCommands correlationID:(NSNumber*) correlationID { - return [SDLRPCRequestFactory buildAddCommandWithID:cmdID menuName:nil vrCommands:vrCommands correlationID:correlationID]; -} - -+(SDLAddCommand*) buildAddCommandWithID:(NSNumber*) cmdID menuName:(NSString*) menuName vrCommands:(NSArray*) vrCommands correlationID:(NSNumber*) correlationID { - return [SDLRPCRequestFactory buildAddCommandWithID:cmdID menuName:menuName parentID:nil position:nil vrCommands:vrCommands correlationID:correlationID]; -} - - -+(SDLDeleteCommand*) buildDeleteCommandWithID:(NSNumber*) cmdID correlationID:(NSNumber*) correlationID { - SDLDeleteCommand *msg = [[[SDLDeleteCommand alloc] init] autorelease]; - msg.cmdID = cmdID; - msg.correlationID = correlationID; - return msg; -} - -+(SDLAddSubMenu*) buildAddSubMenuWithID:(NSNumber*) menuID menuName:(NSString*) menuName correlationID:(NSNumber*) correlationID { - return [SDLRPCRequestFactory buildAddSubMenuWithID:menuID menuName:menuName position:nil - correlationID:correlationID]; -} - -+(SDLAddSubMenu*) buildAddSubMenuWithID:(NSNumber*) menuID menuName:(NSString*) menuName position:(NSNumber*) position correlationID:(NSNumber*) correlationID { - SDLAddSubMenu* msg = [[[SDLAddSubMenu alloc] init] autorelease]; - msg.correlationID = correlationID; - msg.menuID = menuID; - msg.menuName = menuName; - msg.position = position; - - return msg; -} -+(SDLDeleteSubMenu*) buildDeleteSubMenuWithID:(NSNumber*) menuID correlationID:(NSNumber*) correlationID { - SDLDeleteSubMenu *msg = [[[SDLDeleteSubMenu alloc] init] autorelease]; - msg.menuID = menuID; - msg.correlationID = correlationID; - - return msg; -} - -+(SDLCreateInteractionChoiceSet*) buildCreateInteractionChoiceSetWithID:(NSNumber*)interactionChoiceSetID choiceSet:(NSArray*) choices correlationID:(NSNumber*) correlationID { - SDLCreateInteractionChoiceSet *msg = [[[SDLCreateInteractionChoiceSet alloc] init] autorelease]; - msg.interactionChoiceSetID = interactionChoiceSetID; - msg.choiceSet = [[choices mutableCopy] autorelease]; - msg.correlationID = correlationID; - - return msg; -} - -+(SDLDeleteInteractionChoiceSet*) buildDeleteInteractionChoiceSetWithID:(NSNumber*)interactionChoiceSetID correlationID:(NSNumber*) correlationID { - SDLDeleteInteractionChoiceSet *msg = [[[SDLDeleteInteractionChoiceSet alloc] init] autorelease]; - msg.interactionChoiceSetID = interactionChoiceSetID; - msg.correlationID = correlationID; - - return msg; -} - -+(SDLPerformInteraction*) buildPerformInteractionWithInitialPrompt:(NSArray*)initialChunks initialText:(NSString*)initialText interactionChoiceSetIDList:(NSArray*) interactionChoiceSetIDList helpChunks:(NSArray*)helpChunks timeoutChunks:(NSArray*)timeoutChunks interactionMode:(SDLInteractionMode*) interactionMode timeout:(NSNumber*)timeout correlationID:(NSNumber*) correlationID { - SDLPerformInteraction *msg = [[[SDLPerformInteraction alloc] init] autorelease]; - msg.initialPrompt = [[initialChunks mutableCopy] autorelease]; - msg.initialText = initialText; - msg.interactionChoiceSetIDList = [[interactionChoiceSetIDList mutableCopy] autorelease]; - msg.helpPrompt = [[helpChunks mutableCopy] autorelease]; - msg.timeoutPrompt = [[timeoutChunks mutableCopy] autorelease]; - msg.interactionMode = interactionMode; - msg.timeout = timeout; - msg.correlationID = correlationID; - - return msg; -} -+(SDLPerformInteraction*) buildPerformInteractionWithInitialPrompt:(NSString*)initialPrompt initialText:(NSString*)initialText interactionChoiceSetIDList:(NSArray*) interactionChoiceSetIDList helpPrompt:(NSString*)helpPrompt timeoutPrompt:(NSString*)timeoutPrompt interactionMode:(SDLInteractionMode*) interactionMode timeout:(NSNumber*)timeout correlationID:(NSNumber*) correlationID { - NSArray* initialChunks = [SDLTTSChunkFactory buildTTSChunksFromSimple:initialPrompt]; - NSArray* helpChunks = [SDLTTSChunkFactory buildTTSChunksFromSimple:helpPrompt]; - NSArray* timeoutChunks = [SDLTTSChunkFactory buildTTSChunksFromSimple:timeoutPrompt]; - - - return [SDLRPCRequestFactory buildPerformInteractionWithInitialPrompt:initialChunks initialText:initialText interactionChoiceSetIDList:interactionChoiceSetIDList helpChunks:helpChunks timeoutChunks:timeoutChunks interactionMode:interactionMode timeout:timeout correlationID:correlationID]; -} -+(SDLPerformInteraction*) buildPerformInteractionWithInitialPrompt:(NSString*)initialPrompt initialText:(NSString*)initialText interactionChoiceSetID:(NSNumber*) interactionChoiceSetID correlationID:(NSNumber*) correlationID { - NSArray *interactionChoiceSetIDList = [NSArray arrayWithObject:interactionChoiceSetID]; - NSArray* initialChunks = [SDLTTSChunkFactory buildTTSChunksFromSimple:initialPrompt]; - - return [SDLRPCRequestFactory buildPerformInteractionWithInitialPrompt:initialChunks initialText:initialText interactionChoiceSetIDList:interactionChoiceSetIDList helpChunks:nil timeoutChunks:nil interactionMode:SDLInteractionMode.BOTH timeout:nil correlationID:correlationID]; -} - - -+(SDLSubscribeButton*) buildSubscribeButtonWithName:(SDLButtonName*) buttonName correlationID:(NSNumber*) correlationID { - SDLSubscribeButton* msg = [[[SDLSubscribeButton alloc] init] autorelease]; - msg.correlationID = correlationID; - msg.buttonName = buttonName; - - return msg; -} - -+(SDLEncodedSyncPData*) buildEncodedSyncPDataWithData:(NSMutableArray*) data correlationID:(NSNumber*) correlationID { - SDLEncodedSyncPData *msg = [[[SDLEncodedSyncPData alloc] init] autorelease]; - msg.data = data; - msg.correlationID = correlationID; - - return msg; -} - -+(SDLUnsubscribeButton*) buildUnsubscribeButtonWithName:(SDLButtonName*) buttonName correlationID:(NSNumber*) correlationID { - SDLUnsubscribeButton *msg = [[[SDLUnsubscribeButton alloc] init] autorelease]; - msg.buttonName = buttonName; - msg.correlationID = correlationID; - - return msg; -} - -+(SDLSetGlobalProperties*) buildSetGlobalPropertiesWithHelpText:(NSString*) helpText timeoutText:(NSString*) timeoutText correlationID:(NSNumber*) correlationID { - SDLSetGlobalProperties* msg = [[[SDLSetGlobalProperties alloc] init] autorelease]; - msg.helpPrompt = [SDLTTSChunkFactory buildTTSChunksFromSimple:helpText]; - msg.timeoutPrompt = [SDLTTSChunkFactory buildTTSChunksFromSimple:timeoutText]; - - msg.correlationID = correlationID; - - return msg; -} - -+(SDLResetGlobalProperties*) buildResetGlobalPropertiesWithProperties:(NSArray*) properties correlationID:(NSNumber*) correlationID { - SDLResetGlobalProperties* msg = [[[SDLResetGlobalProperties alloc] init] autorelease]; - msg.properties = [[properties mutableCopy] autorelease]; - - msg.correlationID = correlationID; - - return msg; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCResponse.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCResponse.h deleted file mode 100644 index 7f7f94c..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCResponse.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLRPCMessage.h" -#import "RPC/SDLResult.h" - -@interface SDLRPCResponse : SDLRPCMessage {} - -@property(retain) NSNumber* correlationID; - -@property(retain) NSNumber* success; -@property(assign) SDLResult* resultCode; -@property(retain) NSString* info; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCResponse.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCResponse.m deleted file mode 100644 index a02b74b..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLRPCResponse.m +++ /dev/null @@ -1,63 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLRPCResponse.h" -#import "SDLNames.h" - -@implementation SDLRPCResponse - --(NSNumber*) correlationID { - return [function objectForKey:NAMES_correlationID]; -} - --(void) setCorrelationID:(NSNumber *)corrID { - if (corrID != nil) { - [function setObject:corrID forKey:NAMES_correlationID]; - } else { - [function removeObjectForKey:NAMES_correlationID]; - } -} - --(void) setSuccess:(NSNumber*) success { - if (success != nil) { - [parameters setObject:success forKey:NAMES_success]; - } else { - [parameters removeObjectForKey:NAMES_success]; - } -} - --(NSNumber*) success { - return [parameters objectForKey:NAMES_success]; -} - --(void) setResultCode:(SDLResult*) resultCode { - if (resultCode != nil) { - [parameters setObject:resultCode forKey:NAMES_resultCode]; - } else { - [parameters removeObjectForKey:NAMES_resultCode]; - } -} - --(SDLResult*) resultCode { - NSObject* obj = [parameters objectForKey:NAMES_resultCode]; - if ([obj isKindOfClass:SDLResult.class]) { - return (SDLResult*)obj; - } else { - return [SDLResult valueOf:(NSString*)obj]; - } -} - --(void) setInfo:(NSString*) info { - if (info != nil) { - [parameters setObject:info forKey:NAMES_info]; - } else { - [parameters removeObjectForKey:NAMES_info]; - } -} - --(NSString*) info { - return [parameters objectForKey:NAMES_info]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLSiphonServer.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLSiphonServer.h deleted file mode 100644 index 5fda733..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLSiphonServer.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -@interface SDLSiphonServer : NSObject {} - -+ (void)enableSiphonDebug; -+ (void)disableSiphonDebug; -+ (bool)_siphonRawTransportDataFromApp:(const void*) msgBytes msgBytesLength:(int) msgBytesLength; -+ (bool)_siphonRawTransportDataFromSync:(const void*) msgBytes msgBytesLength:(int) msgBytesLength; -+ (bool)_siphonNSLogData:(NSString *) textToLog; -+ (bool)_siphonFormattedTraceData:(NSString*) traceData; -+ (bool)_siphonIsActive; -+ (void)init; -+ (void)dealloc; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLSiphonServer.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLSiphonServer.m deleted file mode 100644 index a93ec25..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLSiphonServer.m +++ /dev/null @@ -1,470 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -/******************************* - * - * Description: - * This class opens a socket on port 7474. - * The 'sendSiphonData' Function will - * write to the socket that the Relay Sniffer is - * listening on. - * - ******************************/ - -//#define ZERO_CONFIG //Uncomment when implementing zero-config. -//#define DEBUG //Uncomment to have output to NSLog. - -#import "SDLSiphonServer.h" -#include -#include -#include -#include -#include -#include -#include -#include -#import "SDLDebugTool.h" - -typedef enum { - fromApp = 0x01 - ,fromSync = 0x00 - ,appLog = 0x02 - ,formattedTrace = 0x03 -} SiphonDataType; - -const Byte siphonMsgVersionNumber = 1; -volatile int siphonSocket = 0; -NSObject* siphonLock = nil; -CFSocketRef _listeningSocket; -NSNetService *netService = nil; -volatile bool initStarted = false; -bool siphonServerEnabled = false; -bool sendingFormattedTrace = false; -NSDate* startTimeStamp; -int FIRST_PORT_TO_ATTEMPT_CONNECTION = 7474; - -void _closeSiphonSocket(); -bool _sendDataToSiphonSocket(int soc, const void* pData, int dataLength); -bool _sendSiphonData(const void* dataBytes, int dataBytesLength, SiphonDataType siphonDataType); -void _startServerOnPort(int port); -void _stopServer(NSString *reason); - -@implementation SDLSiphonServer - -// Model currently counts on init being called before any apps call _siphonNSLogData() -// The following is not thread safe (i.e. two threads could create siphon lock), -// but will assume for now that we won't have two transports created in the same proxy. -+ (void)init { - - if (initStarted) { - return; - } // end-if - - if(!siphonLock){ - siphonLock = [NSData alloc]; - } // end-if - - @synchronized(siphonLock) { - if (initStarted) { - return; - } - - initStarted = true; - - startTimeStamp = [[NSDate date] retain]; - - _closeSiphonSocket(); - - _startServerOnPort(FIRST_PORT_TO_ATTEMPT_CONNECTION); - } -} - -+ (void)enableSiphonDebug { - siphonServerEnabled = true; -} - -+ (void)disableSiphonDebug { - siphonServerEnabled = false; -} - -void _closeSiphonSocket() { -#ifdef DEBUG - NSLog(@"siphon: Resetting siphon socket ..."); -#endif - if (siphonLock) { - @synchronized(siphonLock) { - if (siphonSocket) { - close(siphonSocket); - siphonSocket = 0; - } // end-if - } // end-lock - } // end-if -#ifdef DEBUG - NSLog(@"siphon: siphon socket reset complete"); -#endif -} // end-method - -+ (void)dealloc { -#ifdef ZERO_CONFIG - _stopServer(@"Shutting Down"); -#endif - - [super dealloc]; -} - -+ (bool)_siphonIsActive { - if(siphonSocket == 0) { - return NO; - } - return YES; -} - - -+ (bool)_siphonFormattedTraceData:(NSString*) traceData { - if((traceData == NULL) || (traceData.length == 0)) { - return NO; - } // end-if - - NSData * traceBytes = [traceData dataUsingEncoding:NSUTF8StringEncoding]; - - if(traceBytes == nil) { - return NO; - } // end-if - - bool dataSent = NO; - - sendingFormattedTrace = true; - - dataSent = _sendSiphonData(traceBytes.bytes, traceBytes.length, formattedTrace); - - return dataSent; -} // end-method - -+ (bool)_siphonNSLogData:(NSString *) textToLog { - if((textToLog == NULL) || (textToLog.length == 0)) { - return NO; - } // end-if - - NSData * textBytes = [textToLog dataUsingEncoding:NSUTF8StringEncoding]; - - if(textBytes == nil) { - return NO; - } // end-if - - bool dataSent = NO; - - dataSent = _sendSiphonData(textBytes.bytes, textBytes.length, appLog); - - return dataSent; -} // end-method - -+ (bool)_siphonRawTransportDataFromApp:(const void*) msgBytes msgBytesLength:(int) msgBytesLength { - if (sendingFormattedTrace) { - return false; - } // end-if - - if (msgBytes == NULL || msgBytesLength == 0) { - return false; - } // end-if - - return _sendSiphonData(msgBytes, msgBytesLength, fromApp); -} - -+ (bool)_siphonRawTransportDataFromSync:(const void*) msgBytes msgBytesLength:(int) msgBytesLength { - if (sendingFormattedTrace) { - return false; - } // end-if - - if (msgBytes == NULL || msgBytesLength == 0) { - return false; - } // end-if - - return _sendSiphonData(msgBytes, msgBytesLength, fromSync); -} - -bool -_sendSiphonData(const void* dataBytes, int dataBytesLength, SiphonDataType siphonDataType) { - - bool wasSent = NO; - - if (dataBytes == NULL || dataBytesLength == 0 || !siphonServerEnabled) { - return false; - } // end-if - - NSDate *currentTime = [NSDate date]; - NSTimeInterval deltaTimeMillis = ([currentTime timeIntervalSinceDate:startTimeStamp] * 1000.0); - uint32_t integerDeltaTimeMillis = ((uint32_t)deltaTimeMillis); - - integerDeltaTimeMillis = htonl(integerDeltaTimeMillis); - - if (siphonLock) { - - @synchronized(siphonLock) { - - if(siphonSocket) { - - Byte sdt = (Byte)siphonDataType; - sdt = (Byte)0x80 | sdt; - uint32_t sizeBytes = htonl(dataBytesLength + sizeof(sdt) + sizeof(integerDeltaTimeMillis) + sizeof(siphonMsgVersionNumber)); - - wasSent = _sendDataToSiphonSocket(siphonSocket, &sizeBytes, sizeof(sizeBytes)); - - if(wasSent) { - wasSent = _sendDataToSiphonSocket(siphonSocket, &sdt, sizeof(sdt)); - } - - if(wasSent) { - wasSent = _sendDataToSiphonSocket(siphonSocket, &siphonMsgVersionNumber, sizeof(siphonMsgVersionNumber)); - } - - if(wasSent) { - wasSent = _sendDataToSiphonSocket(siphonSocket, &integerDeltaTimeMillis, sizeof(integerDeltaTimeMillis)); - } - - if(wasSent) { - wasSent = _sendDataToSiphonSocket(siphonSocket, dataBytes, dataBytesLength); - } - - if(wasSent) { - return YES; - } else { -#ifdef DEBUG - NSLog(@"siphon: failure sending to siphon socket"); -#endif - _closeSiphonSocket(); - return NO; - } // end-if - } else { -#ifdef DEBUG - NSLog(@"siphon: siphon socket is NULL"); -#endif - } // end-if - } //end Synchronized - } // end-if - return NO; - -} // end-method - -bool _sendDataToSiphonSocket(int soc, const void* pData, int dataLength) { - - int bytesRemainingToSend = dataLength; - int bytesSent = 0; - const UInt8 *pd = pData; - - if (pData == NULL || dataLength == 0) { - return false; - } // end-if - - while (bytesRemainingToSend > 0) { - if (soc) { - - bytesSent = send(soc, pd, bytesRemainingToSend, 0); - - if(bytesSent == -1) { -#ifdef DEBUG - NSLog(@"siphon: got bytesSent==-1 on send(siphonSocket)"); -#endif - return NO; - } // end-if - - bytesRemainingToSend -= bytesSent; - pd += bytesSent; - } // end-if - - } // end-while - - return YES; - -} // end-method - - -void _serverDidStartOnPort(int port) { -#ifdef DEBUG - NSLog(@"siphon: server started on port: %d",port); -#endif -} - -#ifdef ZERO_CONFIG - -#pragma mark -#pragma mark Server - -- (void)_didSendData:(NSData *)data {} - -void _serverDidStopWithReason(NSString * reason) {} - -- (void)_updateStatus:(NSString *)statusString{ - NSLog(@"siphon: %@",statusString); -} - -- (void)_SendDidStopWithStatus:(NSString *)statusString{ - NSLog(@"siphon: server configured for output"); -} - -- (BOOL)isStarted { - return (netService != nil); -} -#endif - - -void _acceptConnection(int fd) { - if (siphonLock) { - @synchronized(siphonLock){ - - int socketOps = 1; - - _closeSiphonSocket(); -#ifdef DEBUG - NSLog(@"siphon: storing newly accepted siphon socket handle %08x ...", fd); -#endif - siphonSocket = fd; - - setsockopt(siphonSocket, SOL_SOCKET, SO_NOSIGPIPE, (void *)&socketOps, sizeof(int)); - [SDLDebugTool logInfo:@"Siphon connected."]; - - } // end-lock - } // end-if - return; - -} - -static void AcceptCallback(CFSocketRef s, CFSocketCallBackType type, CFDataRef address, const void *data, void *info) { -#ifdef DEBUG - NSLog(@"siphon: accepted siphon connection ..."); -#endif - -#pragma unused(type) - assert(type == kCFSocketAcceptCallBack); -#pragma unused(address) - assert(data != NULL); - -#pragma unused(s) - assert(s == _listeningSocket); - - _acceptConnection(*(int*)data); -} - - -#ifdef ZERO_CONFIG -- (void)netService:(NSNetService *)sender didNotPublish:(NSDictionary *)errorDict { -#pragma unused(sender) - assert(sender == netService); -#pragma unused(errorDict) - - _stopServer(@"Registration failed"); -} -#endif - -void _startServerOnPort(int port) { - BOOL success; - int err; - int fd; - struct sockaddr_in addr; - int const retryLimit = 1000; - - fd = socket(AF_INET, SOCK_STREAM, 0); - success = (fd != -1); - - if (success) { - memset(&addr, 0, sizeof(addr)); - addr.sin_len = sizeof(addr); - addr.sin_family = AF_INET; - - addr.sin_addr.s_addr = INADDR_ANY; - - bool openPortFound = false; - short bindPort = (short)port; - success = false; - for (int retryCount = 0; retryCount < retryLimit && !openPortFound; retryCount++) { - addr.sin_port = htons(bindPort); - err = bind(fd, (const struct sockaddr *) &addr, sizeof(addr)); - if (err == 0) { - openPortFound = true; - success = (err == 0); - port = bindPort; - } else { - bindPort++; - } - } // end-for - } - if (success) { - err = listen(fd, 5); - success = (err == 0); - } - if (success) { - socklen_t addrLen; - - addrLen = sizeof(addr); - err = getsockname(fd, (struct sockaddr *) &addr, &addrLen); - success = (err == 0); - - if (success) { - assert(addrLen == sizeof(addr)); - port = ntohs(addr.sin_port); - - } -#ifdef DEBUG - NSLog(@"siphon: my port is %d ",port); -#endif - - } - if (success) { - - _listeningSocket = CFSocketCreateWithNative( - NULL, - fd, - kCFSocketAcceptCallBack, - AcceptCallback, - NULL - ); - success = (_listeningSocket != NULL); - - if (success) { - CFRunLoopSourceRef rls; - fd = -1; - rls = CFSocketCreateRunLoopSource(NULL, _listeningSocket, 0); - assert(rls != NULL); - CFRunLoopAddSource(CFRunLoopGetCurrent(), rls, kCFRunLoopDefaultMode); - CFRelease(rls); - } - } - -#ifdef ZERO_CONFIG - - if (success) { - - UIDevice *device = [UIDevice currentDevice];; - NSString *serviceName = [NSString stringWithFormat:@"%@_%d ",device.name,port]; - netService = [[[NSNetService alloc] initWithDomain:@"local." type:@"_sync._tcp." name:serviceName port:port] autorelease]; - success = (netService != nil); - } - if (success) { - - [netService publishWithOptions:NSNetServiceNoAutoRename]; - - } - - if ( success ) { - assert(port != 0); - _serverDidStartOnPort(port); - } else { - _stopServer(@"Start failed"); - if (fd != -1) { - assert(startFailed == 0); - } - } - -#endif -} - -void _stopServer(NSString * reason) { -#ifdef ZERO_CONFIG - if (netService != nil) { - [netService stop]; - netService = nil; - } - _serverDidStopWithReason(reason); -#endif -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTCPTransport.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTCPTransport.h deleted file mode 100644 index 2b813e2..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTCPTransport.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLAbstractTransport.h" - -@interface SDLTCPTransport : SDLAbstractTransport { - CFSocketRef socket; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTCPTransport.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTCPTransport.m deleted file mode 100644 index 191a752..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTCPTransport.m +++ /dev/null @@ -1,115 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLTCPTransport.h" -#import "SDLDebugTool.h" -#import -#import -#import -#import -#import -#import -#import -#import -#import - -int call_socket(const char* hostname, const char* port) { - - int status, sock; - struct addrinfo hints; - struct addrinfo* servinfo; - - memset(&hints, 0, sizeof hints); - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - - //no host name?, no problem, get local host - if (hostname == nil){ - char localhost[128]; - gethostname(localhost, sizeof localhost); - hostname = (const char*) &localhost; - } - - //getaddrinfo setup - if ((status = getaddrinfo(hostname, port, &hints, &servinfo)) != 0) { - fprintf(stderr, "getaddrinfo error: %s\n", gai_strerror(status)); - return(-1); - } - - //get socket - if ((sock = socket(servinfo->ai_family, servinfo->ai_socktype, servinfo->ai_protocol)) < 0) - return(-1); - - //connect - if (connect(sock, servinfo->ai_addr, servinfo->ai_addrlen) < 0) { - close(sock); - return(-1); - } - - freeaddrinfo(servinfo); // free the linked-list - return(sock); -} - -@implementation SDLTCPTransport - -static void TCPCallback(CFSocketRef socket, CFSocketCallBackType type, CFDataRef address, const void *data, void *info) { - if (kCFSocketConnectCallBack == type) { - SDLTCPTransport *transport = (SDLTCPTransport *)info; - SInt32 errorNumber = 0; - if (data) { - SInt32 *errorNumberPtr = (SInt32 *)data; - errorNumber = *errorNumberPtr; - } - [transport notifyTransportConnected]; - } else if (kCFSocketDataCallBack == type) { - SDLTCPTransport *transport = (SDLTCPTransport *)info; - [transport handleBytesReceivedFromTransport:(UInt8 *)CFDataGetBytePtr((CFDataRef)data) length:CFDataGetLength((CFDataRef)data)]; - } else { - [SDLDebugTool logInfo:@"unhandled TCPCallback: %d", type]; - } -} - -- (bool) connect { - int sock_fd = call_socket([endpointName UTF8String], [endpointParam UTF8String]); - if (sock_fd < 0) { - [SDLDebugTool logInfo:@"Failed to connect to remote"]; - return NO; - } - - CFSocketContext socketCtxt = {0, self, NULL, NULL, NULL}; - socket = CFSocketCreateWithNative(kCFAllocatorDefault, sock_fd, kCFSocketDataCallBack|kCFSocketConnectCallBack , (CFSocketCallBack) &TCPCallback, &socketCtxt); - CFRunLoopSourceRef source = CFSocketCreateRunLoopSource(kCFAllocatorDefault, socket, 0); - CFRunLoopRef loop = CFRunLoopGetCurrent(); - CFRunLoopAddSource(loop, source, kCFRunLoopDefaultMode); - CFRelease(source); - - return sock_fd >= 0; -} - --(NSString*) getHexString:(NSData*) data { - NSMutableString* ret = [NSMutableString stringWithCapacity:(data.length * 2)]; - for (int i = 0; i < data.length; i++) { - [ret appendFormat:@"%02X", ((Byte*)data.bytes)[i]]; - } - return ret; -} - -- (bool) sendBytes:(NSData*) msgBytes { - NSString* byteStr = [self getHexString:msgBytes]; - [SDLDebugTool logInfo:@"Sending %i bytes: %@", msgBytes.length, byteStr]; - - CFSocketError e = CFSocketSendData(socket, NULL, (CFDataRef)msgBytes, 10000); - return e==0; -} - -- (void) dealloc { - if (socket != nil) { - CFSocketInvalidate(socket); - CFRelease(socket); - } - - [super dealloc]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTTSChunkFactory.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTTSChunkFactory.h deleted file mode 100644 index 9972bb7..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTTSChunkFactory.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "RPC/SDLTTSChunk.h" -#import "SDLJingle.h" - -@interface SDLTTSChunkFactory : NSObject {} - -+(SDLTTSChunk*) buildTTSChunkForString:(NSString*) text type:(SDLSpeechCapabilities*)type; -+(NSMutableArray*) buildTTSChunksFromSimple:(NSString*) simple; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTTSChunkFactory.m b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTTSChunkFactory.m deleted file mode 100644 index fc1ded4..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTTSChunkFactory.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLTTSChunkFactory.h" - -@implementation SDLTTSChunkFactory - -+(SDLTTSChunk*) buildTTSChunkForString:(NSString*) text type:(SDLSpeechCapabilities*)type { - SDLTTSChunk *ret = [[[SDLTTSChunk alloc] init] autorelease]; - ret.text = text; - ret.type = type; - - return ret; -} - -+(NSMutableArray*) buildTTSChunksFromSimple:(NSString*) simple { - if(simple == nil) return nil; - return [NSMutableArray arrayWithObject:[SDLTTSChunkFactory buildTTSChunkForString:simple type:[SDLSpeechCapabilities TEXT]]]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTransportListener.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTransportListener.h deleted file mode 100644 index 4e97a88..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLTransportListener.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -@protocol SDLTransportListener - -- (void) onTransportConnected; -- (void) onTransportDisconnected; -- (void) onBytesReceived:(Byte*)bytes length:(long) length; - -@end diff --git a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLVersion.h b/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLVersion.h deleted file mode 100644 index fadda62..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/Classes/SDLVersion.h +++ /dev/null @@ -1,10 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#ifndef __VERSION_H__ -#define __VERSION_H__ - -#define VERSION_STRING @"1.0.0" - -#endif /* __VERSION_H__ */ diff --git a/SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy.xcodeproj/project.pbxproj b/SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy.xcodeproj/project.pbxproj deleted file mode 100644 index b33fda9..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1214 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1825E726146D88D100B4CFAE /* SDLSiphonServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1825E724146D88D100B4CFAE /* SDLSiphonServer.h */; }; - 1825E727146D88D100B4CFAE /* SDLSiphonServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1825E725146D88D100B4CFAE /* SDLSiphonServer.m */; }; - 185095E2148EBDA6008E1780 /* SDLDriverDistractionState.h in Headers */ = {isa = PBXBuildFile; fileRef = 185095D4148EBDA6008E1780 /* SDLDriverDistractionState.h */; }; - 185095E3148EBDA6008E1780 /* SDLDriverDistractionState.m in Sources */ = {isa = PBXBuildFile; fileRef = 185095D5148EBDA6008E1780 /* SDLDriverDistractionState.m */; }; - 185095E4148EBDA6008E1780 /* SDLEncodedSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 185095D6148EBDA6008E1780 /* SDLEncodedSyncPData.h */; }; - 185095E5148EBDA6008E1780 /* SDLEncodedSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 185095D7148EBDA6008E1780 /* SDLEncodedSyncPData.m */; }; - 185095E6148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 185095D8148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.h */; }; - 185095E7148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 185095D9148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.m */; }; - 185095E8148EBDA6008E1780 /* SDLOnDriverDistraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 185095DA148EBDA6008E1780 /* SDLOnDriverDistraction.h */; }; - 185095E9148EBDA6008E1780 /* SDLOnDriverDistraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 185095DB148EBDA6008E1780 /* SDLOnDriverDistraction.m */; }; - 185095EA148EBDA6008E1780 /* SDLOnEncodedSyncPData.h in Headers */ = {isa = PBXBuildFile; fileRef = 185095DC148EBDA6008E1780 /* SDLOnEncodedSyncPData.h */; }; - 185095EB148EBDA6008E1780 /* SDLOnEncodedSyncPData.m in Sources */ = {isa = PBXBuildFile; fileRef = 185095DD148EBDA6008E1780 /* SDLOnEncodedSyncPData.m */; }; - 185095EC148EBDA6008E1780 /* SDLOnTBTClientState.h in Headers */ = {isa = PBXBuildFile; fileRef = 185095DE148EBDA6008E1780 /* SDLOnTBTClientState.h */; }; - 185095ED148EBDA6008E1780 /* SDLOnTBTClientState.m in Sources */ = {isa = PBXBuildFile; fileRef = 185095DF148EBDA6008E1780 /* SDLOnTBTClientState.m */; }; - 185095EE148EBDA6008E1780 /* SDLTBTState.h in Headers */ = {isa = PBXBuildFile; fileRef = 185095E0148EBDA6008E1780 /* SDLTBTState.h */; }; - 185095EF148EBDA6008E1780 /* SDLTBTState.m in Sources */ = {isa = PBXBuildFile; fileRef = 185095E1148EBDA6008E1780 /* SDLTBTState.m */; }; - 27214DCF150693A9008C1798 /* SDLVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 27214DCE150693A9008C1798 /* SDLVersion.h */; }; - 7297D07212F1B5DF00EE4FBC /* SDLIProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7297D07012F1B5DF00EE4FBC /* SDLIProxy.h */; }; - 8134B0A71210866D0070668B /* SDLRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 8134B0A51210866D0070668B /* SDLRPCRequest.h */; }; - 8134B0A81210866D0070668B /* SDLRPCRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134B0A61210866D0070668B /* SDLRPCRequest.m */; }; - 8134B0AB1210868B0070668B /* SDLRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8134B0A91210868B0070668B /* SDLRPCResponse.h */; }; - 8134B0AC1210868B0070668B /* SDLRPCResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134B0AA1210868B0070668B /* SDLRPCResponse.m */; }; - 8134B0AF1210869C0070668B /* SDLRPCNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 8134B0AD1210869C0070668B /* SDLRPCNotification.h */; }; - 8134B0B01210869C0070668B /* SDLRPCNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 8134B0AE1210869C0070668B /* SDLRPCNotification.m */; }; - 814DF65412AD5AEA00006788 /* SDLJingle.h in Headers */ = {isa = PBXBuildFile; fileRef = 814DF65212AD5AEA00006788 /* SDLJingle.h */; }; - 814DF65512AD5AEA00006788 /* SDLJingle.m in Sources */ = {isa = PBXBuildFile; fileRef = 814DF65312AD5AEA00006788 /* SDLJingle.m */; }; - 814FAA1E11E3815100AD7FF3 /* SDLIAPTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = 814FAA1C11E3815100AD7FF3 /* SDLIAPTransport.h */; }; - 814FAA1F11E3815100AD7FF3 /* SDLIAPTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = 814FAA1D11E3815100AD7FF3 /* SDLIAPTransport.m */; }; - 814FAA4411E38ED400AD7FF3 /* ExternalAccessory.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 814FAA4311E38ED400AD7FF3 /* ExternalAccessory.framework */; }; - 814FABB111E4D4E400AD7FF3 /* SDLProtocolFrameHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 814FABAF11E4D4E400AD7FF3 /* SDLProtocolFrameHeader.h */; }; - 814FABB211E4D4E400AD7FF3 /* SDLProtocolFrameHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 814FABB011E4D4E400AD7FF3 /* SDLProtocolFrameHeader.m */; }; - 8150481311F62DF300208A24 /* SDLRPCRequestFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 8150481111F62DF300208A24 /* SDLRPCRequestFactory.h */; }; - 8150481411F62DF300208A24 /* SDLRPCRequestFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 8150481211F62DF300208A24 /* SDLRPCRequestFactory.m */; }; - 8150487C11F6352500208A24 /* SDLProxyFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 8150487A11F6352500208A24 /* SDLProxyFactory.h */; }; - 8150487D11F6352500208A24 /* SDLProxyFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 8150487B11F6352500208A24 /* SDLProxyFactory.m */; }; - 815F874C11DCEEDA006E4379 /* SDLEnum.h in Headers */ = {isa = PBXBuildFile; fileRef = 815F86CF11DCEEDA006E4379 /* SDLEnum.h */; }; - 815F874D11DCEEDA006E4379 /* SDLEnum.m in Sources */ = {isa = PBXBuildFile; fileRef = 815F86D011DCEEDA006E4379 /* SDLEnum.m */; }; - 815F874E11DCEEDA006E4379 /* SDLRPCMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 815F86D111DCEEDA006E4379 /* SDLRPCMessage.h */; }; - 815F874F11DCEEDA006E4379 /* SDLRPCMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 815F86D211DCEEDA006E4379 /* SDLRPCMessage.m */; }; - 815F87C611DCEEDA006E4379 /* SDLProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 815F874A11DCEEDA006E4379 /* SDLProtocol.h */; }; - 815F87C711DCEEDA006E4379 /* SDLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 815F874B11DCEEDA006E4379 /* SDLProtocol.m */; }; - 81758B0B1237FCBE00EF4CAC /* SDLProxyListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 81758B0A1237FCBE00EF4CAC /* SDLProxyListener.h */; }; - 819E532711F7534200946AC2 /* SDLTTSChunkFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 819E532511F7534200946AC2 /* SDLTTSChunkFactory.h */; }; - 819E532811F7534200946AC2 /* SDLTTSChunkFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 819E532611F7534200946AC2 /* SDLTTSChunkFactory.m */; }; - 819EEAA6125A1CF40027947D /* SDLAddCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA1C125A1CF40027947D /* SDLAddCommand.h */; }; - 819EEAA7125A1CF40027947D /* SDLAddCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA1D125A1CF40027947D /* SDLAddCommand.m */; }; - 819EEAA8125A1CF40027947D /* SDLAddCommandResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA1E125A1CF40027947D /* SDLAddCommandResponse.h */; }; - 819EEAA9125A1CF40027947D /* SDLAddCommandResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA1F125A1CF40027947D /* SDLAddCommandResponse.m */; }; - 819EEAAA125A1CF40027947D /* SDLAddSubMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA20125A1CF40027947D /* SDLAddSubMenu.h */; }; - 819EEAAB125A1CF40027947D /* SDLAddSubMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA21125A1CF40027947D /* SDLAddSubMenu.m */; }; - 819EEAAC125A1CF40027947D /* SDLAddSubMenuResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA22125A1CF40027947D /* SDLAddSubMenuResponse.h */; }; - 819EEAAD125A1CF40027947D /* SDLAddSubMenuResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA23125A1CF40027947D /* SDLAddSubMenuResponse.m */; }; - 819EEAAE125A1CF40027947D /* SDLAlert.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA24125A1CF40027947D /* SDLAlert.h */; }; - 819EEAAF125A1CF40027947D /* SDLAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA25125A1CF40027947D /* SDLAlert.m */; }; - 819EEAB0125A1CF40027947D /* SDLAlertResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA26125A1CF40027947D /* SDLAlertResponse.h */; }; - 819EEAB1125A1CF40027947D /* SDLAlertResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA27125A1CF40027947D /* SDLAlertResponse.m */; }; - 819EEAB2125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA28125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.h */; }; - 819EEAB3125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA29125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.m */; }; - 819EEAB4125A1CF40027947D /* SDLAudioStreamingState.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA2A125A1CF40027947D /* SDLAudioStreamingState.h */; }; - 819EEAB5125A1CF40027947D /* SDLAudioStreamingState.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA2B125A1CF40027947D /* SDLAudioStreamingState.m */; }; - 819EEAB6125A1CF40027947D /* SDLButtonCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA2C125A1CF40027947D /* SDLButtonCapabilities.h */; }; - 819EEAB7125A1CF40027947D /* SDLButtonCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA2D125A1CF40027947D /* SDLButtonCapabilities.m */; }; - 819EEAB8125A1CF40027947D /* SDLButtonEventMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA2E125A1CF40027947D /* SDLButtonEventMode.h */; }; - 819EEAB9125A1CF40027947D /* SDLButtonEventMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA2F125A1CF40027947D /* SDLButtonEventMode.m */; }; - 819EEABA125A1CF40027947D /* SDLButtonName.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA30125A1CF40027947D /* SDLButtonName.h */; }; - 819EEABB125A1CF40027947D /* SDLButtonName.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA31125A1CF40027947D /* SDLButtonName.m */; }; - 819EEABC125A1CF40027947D /* SDLButtonPressMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA32125A1CF40027947D /* SDLButtonPressMode.h */; }; - 819EEABD125A1CF40027947D /* SDLButtonPressMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA33125A1CF40027947D /* SDLButtonPressMode.m */; }; - 819EEABE125A1CF40027947D /* SDLCharacterSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA34125A1CF40027947D /* SDLCharacterSet.h */; }; - 819EEABF125A1CF40027947D /* SDLCharacterSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA35125A1CF40027947D /* SDLCharacterSet.m */; }; - 819EEAC0125A1CF40027947D /* SDLChoice.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA36125A1CF40027947D /* SDLChoice.h */; }; - 819EEAC1125A1CF40027947D /* SDLChoice.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA37125A1CF40027947D /* SDLChoice.m */; }; - 819EEAC2125A1CF40027947D /* SDLCreateInteractionChoiceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA38125A1CF40027947D /* SDLCreateInteractionChoiceSet.h */; }; - 819EEAC3125A1CF40027947D /* SDLCreateInteractionChoiceSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA39125A1CF40027947D /* SDLCreateInteractionChoiceSet.m */; }; - 819EEAC4125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA3A125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.h */; }; - 819EEAC5125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA3B125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.m */; }; - 819EEAC6125A1CF40027947D /* SDLDeleteCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA3C125A1CF40027947D /* SDLDeleteCommand.h */; }; - 819EEAC7125A1CF40027947D /* SDLDeleteCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA3D125A1CF40027947D /* SDLDeleteCommand.m */; }; - 819EEAC8125A1CF40027947D /* SDLDeleteCommandResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA3E125A1CF40027947D /* SDLDeleteCommandResponse.h */; }; - 819EEAC9125A1CF40027947D /* SDLDeleteCommandResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA3F125A1CF40027947D /* SDLDeleteCommandResponse.m */; }; - 819EEACA125A1CF40027947D /* SDLDeleteInteractionChoiceSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA40125A1CF40027947D /* SDLDeleteInteractionChoiceSet.h */; }; - 819EEACB125A1CF40027947D /* SDLDeleteInteractionChoiceSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA41125A1CF40027947D /* SDLDeleteInteractionChoiceSet.m */; }; - 819EEACC125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA42125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.h */; }; - 819EEACD125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA43125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.m */; }; - 819EEACE125A1CF40027947D /* SDLDeleteSubMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA44125A1CF40027947D /* SDLDeleteSubMenu.h */; }; - 819EEACF125A1CF40027947D /* SDLDeleteSubMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA45125A1CF40027947D /* SDLDeleteSubMenu.m */; }; - 819EEAD0125A1CF40027947D /* SDLDeleteSubMenuResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA46125A1CF40027947D /* SDLDeleteSubMenuResponse.h */; }; - 819EEAD1125A1CF40027947D /* SDLDeleteSubMenuResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA47125A1CF40027947D /* SDLDeleteSubMenuResponse.m */; }; - 819EEAD2125A1CF40027947D /* SDLDisplayCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA48125A1CF40027947D /* SDLDisplayCapabilities.h */; }; - 819EEAD3125A1CF40027947D /* SDLDisplayCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA49125A1CF40027947D /* SDLDisplayCapabilities.m */; }; - 819EEAD4125A1CF40027947D /* SDLDisplayType.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA4A125A1CF40027947D /* SDLDisplayType.h */; }; - 819EEAD5125A1CF40027947D /* SDLDisplayType.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA4B125A1CF40027947D /* SDLDisplayType.m */; }; - 819EEAD6125A1CF40027947D /* SDLGenericResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA4C125A1CF40027947D /* SDLGenericResponse.h */; }; - 819EEAD7125A1CF40027947D /* SDLGenericResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA4D125A1CF40027947D /* SDLGenericResponse.m */; }; - 819EEAD8125A1CF40027947D /* SDLGlobalProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA4E125A1CF40027947D /* SDLGlobalProperty.h */; }; - 819EEAD9125A1CF40027947D /* SDLGlobalProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA4F125A1CF40027947D /* SDLGlobalProperty.m */; }; - 819EEADA125A1CF40027947D /* SDLHMILevel.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA50125A1CF40027947D /* SDLHMILevel.h */; }; - 819EEADB125A1CF40027947D /* SDLHMILevel.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA51125A1CF40027947D /* SDLHMILevel.m */; }; - 819EEADC125A1CF40027947D /* SDLHMIZoneCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA52125A1CF40027947D /* SDLHMIZoneCapabilities.h */; }; - 819EEADD125A1CF40027947D /* SDLHMIZoneCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA53125A1CF40027947D /* SDLHMIZoneCapabilities.m */; }; - 819EEADE125A1CF40027947D /* SDLInteractionMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA54125A1CF40027947D /* SDLInteractionMode.h */; }; - 819EEADF125A1CF40027947D /* SDLInteractionMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA55125A1CF40027947D /* SDLInteractionMode.m */; }; - 819EEAE0125A1CF40027947D /* SDLLanguage.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA56125A1CF40027947D /* SDLLanguage.h */; }; - 819EEAE1125A1CF40027947D /* SDLLanguage.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA57125A1CF40027947D /* SDLLanguage.m */; }; - 819EEAE2125A1CF40027947D /* SDLMediaClockFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA58125A1CF40027947D /* SDLMediaClockFormat.h */; }; - 819EEAE3125A1CF40027947D /* SDLMediaClockFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA59125A1CF40027947D /* SDLMediaClockFormat.m */; }; - 819EEAE4125A1CF40027947D /* SDLMenuParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA5A125A1CF40027947D /* SDLMenuParams.h */; }; - 819EEAE5125A1CF40027947D /* SDLMenuParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA5B125A1CF40027947D /* SDLMenuParams.m */; }; - 819EEAE6125A1CF40027947D /* SDLOnAppInterfaceUnregistered.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA5C125A1CF40027947D /* SDLOnAppInterfaceUnregistered.h */; }; - 819EEAE7125A1CF40027947D /* SDLOnAppInterfaceUnregistered.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA5D125A1CF40027947D /* SDLOnAppInterfaceUnregistered.m */; }; - 819EEAE8125A1CF40027947D /* SDLOnButtonEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA5E125A1CF40027947D /* SDLOnButtonEvent.h */; }; - 819EEAE9125A1CF40027947D /* SDLOnButtonEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA5F125A1CF40027947D /* SDLOnButtonEvent.m */; }; - 819EEAEA125A1CF40027947D /* SDLOnButtonPress.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA60125A1CF40027947D /* SDLOnButtonPress.h */; }; - 819EEAEB125A1CF40027947D /* SDLOnButtonPress.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA61125A1CF40027947D /* SDLOnButtonPress.m */; }; - 819EEAEC125A1CF40027947D /* SDLOnCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA62125A1CF40027947D /* SDLOnCommand.h */; }; - 819EEAED125A1CF40027947D /* SDLOnCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA63125A1CF40027947D /* SDLOnCommand.m */; }; - 819EEAEE125A1CF40027947D /* SDLOnHMIStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA64125A1CF40027947D /* SDLOnHMIStatus.h */; }; - 819EEAEF125A1CF40027947D /* SDLOnHMIStatus.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA65125A1CF40027947D /* SDLOnHMIStatus.m */; }; - 819EEAF0125A1CF40027947D /* SDLPerformInteraction.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA66125A1CF40027947D /* SDLPerformInteraction.h */; }; - 819EEAF1125A1CF40027947D /* SDLPerformInteraction.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA67125A1CF40027947D /* SDLPerformInteraction.m */; }; - 819EEAF2125A1CF40027947D /* SDLPerformInteractionResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA68125A1CF40027947D /* SDLPerformInteractionResponse.h */; }; - 819EEAF3125A1CF40027947D /* SDLPerformInteractionResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA69125A1CF40027947D /* SDLPerformInteractionResponse.m */; }; - 819EEAF4125A1CF40027947D /* SDLRegisterAppInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA6A125A1CF40027947D /* SDLRegisterAppInterface.h */; }; - 819EEAF5125A1CF40027947D /* SDLRegisterAppInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA6B125A1CF40027947D /* SDLRegisterAppInterface.m */; }; - 819EEAF6125A1CF40027947D /* SDLRegisterAppInterfaceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA6C125A1CF40027947D /* SDLRegisterAppInterfaceResponse.h */; }; - 819EEAF7125A1CF40027947D /* SDLRegisterAppInterfaceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA6D125A1CF40027947D /* SDLRegisterAppInterfaceResponse.m */; }; - 819EEAF8125A1CF40027947D /* SDLResetGlobalProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA6E125A1CF40027947D /* SDLResetGlobalProperties.h */; }; - 819EEAF9125A1CF40027947D /* SDLResetGlobalProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA6F125A1CF40027947D /* SDLResetGlobalProperties.m */; }; - 819EEAFA125A1CF40027947D /* SDLResetGlobalPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA70125A1CF40027947D /* SDLResetGlobalPropertiesResponse.h */; }; - 819EEAFB125A1CF40027947D /* SDLResetGlobalPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA71125A1CF40027947D /* SDLResetGlobalPropertiesResponse.m */; }; - 819EEAFC125A1CF40027947D /* SDLResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA72125A1CF40027947D /* SDLResult.h */; }; - 819EEAFD125A1CF40027947D /* SDLResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA73125A1CF40027947D /* SDLResult.m */; }; - 819EEAFE125A1CF40027947D /* SDLSetGlobalProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA74125A1CF40027947D /* SDLSetGlobalProperties.h */; }; - 819EEAFF125A1CF40027947D /* SDLSetGlobalProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA75125A1CF40027947D /* SDLSetGlobalProperties.m */; }; - 819EEB00125A1CF40027947D /* SDLSetGlobalPropertiesResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA76125A1CF40027947D /* SDLSetGlobalPropertiesResponse.h */; }; - 819EEB01125A1CF40027947D /* SDLSetGlobalPropertiesResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA77125A1CF40027947D /* SDLSetGlobalPropertiesResponse.m */; }; - 819EEB02125A1CF40027947D /* SDLSetMediaClockTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA78125A1CF40027947D /* SDLSetMediaClockTimer.h */; }; - 819EEB03125A1CF40027947D /* SDLSetMediaClockTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA79125A1CF40027947D /* SDLSetMediaClockTimer.m */; }; - 819EEB04125A1CF40027947D /* SDLSetMediaClockTimerResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA7A125A1CF40027947D /* SDLSetMediaClockTimerResponse.h */; }; - 819EEB05125A1CF40027947D /* SDLSetMediaClockTimerResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA7B125A1CF40027947D /* SDLSetMediaClockTimerResponse.m */; }; - 819EEB06125A1CF40027947D /* SDLShow.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA7C125A1CF40027947D /* SDLShow.h */; }; - 819EEB07125A1CF40027947D /* SDLShow.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA7D125A1CF40027947D /* SDLShow.m */; }; - 819EEB08125A1CF40027947D /* SDLShowResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA7E125A1CF40027947D /* SDLShowResponse.h */; }; - 819EEB09125A1CF40027947D /* SDLShowResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA7F125A1CF40027947D /* SDLShowResponse.m */; }; - 819EEB0A125A1CF40027947D /* SDLSpeak.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA80125A1CF40027947D /* SDLSpeak.h */; }; - 819EEB0B125A1CF40027947D /* SDLSpeak.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA81125A1CF40027947D /* SDLSpeak.m */; }; - 819EEB0C125A1CF40027947D /* SDLSpeakResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA82125A1CF40027947D /* SDLSpeakResponse.h */; }; - 819EEB0D125A1CF40027947D /* SDLSpeakResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA83125A1CF40027947D /* SDLSpeakResponse.m */; }; - 819EEB0E125A1CF40027947D /* SDLSpeechCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA84125A1CF40027947D /* SDLSpeechCapabilities.h */; }; - 819EEB0F125A1CF40027947D /* SDLSpeechCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA85125A1CF40027947D /* SDLSpeechCapabilities.m */; }; - 819EEB10125A1CF40027947D /* SDLStartTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA86125A1CF40027947D /* SDLStartTime.h */; }; - 819EEB11125A1CF40027947D /* SDLStartTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA87125A1CF40027947D /* SDLStartTime.m */; }; - 819EEB12125A1CF40027947D /* SDLSubscribeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA88125A1CF40027947D /* SDLSubscribeButton.h */; }; - 819EEB13125A1CF40027947D /* SDLSubscribeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA89125A1CF40027947D /* SDLSubscribeButton.m */; }; - 819EEB14125A1CF40027947D /* SDLSubscribeButtonResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA8A125A1CF40027947D /* SDLSubscribeButtonResponse.h */; }; - 819EEB15125A1CF40027947D /* SDLSubscribeButtonResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA8B125A1CF40027947D /* SDLSubscribeButtonResponse.m */; }; - 819EEB16125A1CF40027947D /* SDLMsgVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA8C125A1CF40027947D /* SDLMsgVersion.h */; }; - 819EEB17125A1CF40027947D /* SDLMsgVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA8D125A1CF40027947D /* SDLMsgVersion.m */; }; - 819EEB18125A1CF40027947D /* SDLSystemContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA8E125A1CF40027947D /* SDLSystemContext.h */; }; - 819EEB19125A1CF40027947D /* SDLSystemContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA8F125A1CF40027947D /* SDLSystemContext.m */; }; - 819EEB1A125A1CF40027947D /* SDLTextAlignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA90125A1CF40027947D /* SDLTextAlignment.h */; }; - 819EEB1B125A1CF40027947D /* SDLTextAlignment.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA91125A1CF40027947D /* SDLTextAlignment.m */; }; - 819EEB1C125A1CF40027947D /* SDLTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA92125A1CF40027947D /* SDLTextField.h */; }; - 819EEB1D125A1CF40027947D /* SDLTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA93125A1CF40027947D /* SDLTextField.m */; }; - 819EEB1E125A1CF40027947D /* SDLTextFieldName.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA94125A1CF40027947D /* SDLTextFieldName.h */; }; - 819EEB1F125A1CF40027947D /* SDLTextFieldName.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA95125A1CF40027947D /* SDLTextFieldName.m */; }; - 819EEB20125A1CF40027947D /* SDLTriggerSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA96125A1CF40027947D /* SDLTriggerSource.h */; }; - 819EEB21125A1CF40027947D /* SDLTriggerSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA97125A1CF40027947D /* SDLTriggerSource.m */; }; - 819EEB22125A1CF40027947D /* SDLTTSChunk.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA98125A1CF40027947D /* SDLTTSChunk.h */; }; - 819EEB23125A1CF40027947D /* SDLTTSChunk.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA99125A1CF40027947D /* SDLTTSChunk.m */; }; - 819EEB24125A1CF40027947D /* SDLUnregisterAppInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA9A125A1CF40027947D /* SDLUnregisterAppInterface.h */; }; - 819EEB25125A1CF40027947D /* SDLUnregisterAppInterface.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA9B125A1CF40027947D /* SDLUnregisterAppInterface.m */; }; - 819EEB26125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA9C125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.h */; }; - 819EEB27125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA9D125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.m */; }; - 819EEB28125A1CF40027947D /* SDLUnsubscribeButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEA9E125A1CF40027947D /* SDLUnsubscribeButton.h */; }; - 819EEB29125A1CF40027947D /* SDLUnsubscribeButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEA9F125A1CF40027947D /* SDLUnsubscribeButton.m */; }; - 819EEB2A125A1CF40027947D /* SDLUnsubscribeButtonResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEAA0125A1CF40027947D /* SDLUnsubscribeButtonResponse.h */; }; - 819EEB2B125A1CF40027947D /* SDLUnsubscribeButtonResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEAA1125A1CF40027947D /* SDLUnsubscribeButtonResponse.m */; }; - 819EEB2C125A1CF40027947D /* SDLUpdateMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEAA2125A1CF40027947D /* SDLUpdateMode.h */; }; - 819EEB2D125A1CF40027947D /* SDLUpdateMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEAA3125A1CF40027947D /* SDLUpdateMode.m */; }; - 819EEB2E125A1CF40027947D /* SDLVRCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 819EEAA4125A1CF40027947D /* SDLVRCapabilities.h */; }; - 819EEB2F125A1CF40027947D /* SDLVRCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 819EEAA5125A1CF40027947D /* SDLVRCapabilities.m */; }; - 81D0C2DA12010C1300E877A6 /* SDLDebugTool.h in Headers */ = {isa = PBXBuildFile; fileRef = 81D0C2D812010C1300E877A6 /* SDLDebugTool.h */; }; - 81D0C2DB12010C1300E877A6 /* SDLDebugTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 81D0C2D912010C1300E877A6 /* SDLDebugTool.m */; }; - 81FA2B3A127AEF1500B2B9A8 /* SDLConsoleController.h in Headers */ = {isa = PBXBuildFile; fileRef = 81FA2B38127AEF1500B2B9A8 /* SDLConsoleController.h */; }; - 81FA2B3B127AEF1500B2B9A8 /* SDLConsoleController.m in Sources */ = {isa = PBXBuildFile; fileRef = 81FA2B39127AEF1500B2B9A8 /* SDLConsoleController.m */; }; - AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; - EE7CB1C11141523E00B9CB6A /* SDLIDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1A11141523E00B9CB6A /* SDLIDecoder.h */; }; - EE7CB1C21141523E00B9CB6A /* SDLIEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1A21141523E00B9CB6A /* SDLIEncoder.h */; }; - EE7CB1C31141523E00B9CB6A /* SDLIProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1A31141523E00B9CB6A /* SDLIProtocol.h */; }; - EE7CB1C51141523E00B9CB6A /* SDLITransport.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1A51141523E00B9CB6A /* SDLITransport.h */; }; - EE7CB1C61141523E00B9CB6A /* SDLTransportListener.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1A61141523E00B9CB6A /* SDLTransportListener.h */; }; - EE7CB1C71141523E00B9CB6A /* SDLJsonDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1A71141523E00B9CB6A /* SDLJsonDecoder.h */; }; - EE7CB1C81141523E00B9CB6A /* SDLJsonDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB1A81141523E00B9CB6A /* SDLJsonDecoder.m */; }; - EE7CB1C91141523E00B9CB6A /* SDLJsonEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1A91141523E00B9CB6A /* SDLJsonEncoder.h */; }; - EE7CB1CA1141523E00B9CB6A /* SDLJsonEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB1AA1141523E00B9CB6A /* SDLJsonEncoder.m */; }; - EE7CB1CD1141523E00B9CB6A /* SDLNames.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1AD1141523E00B9CB6A /* SDLNames.h */; }; - EE7CB1CF1141523E00B9CB6A /* SDLProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1AF1141523E00B9CB6A /* SDLProxy.h */; }; - EE7CB1D01141523E00B9CB6A /* SDLProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB1B01141523E00B9CB6A /* SDLProxy.m */; }; - EE7CB1D11141523E00B9CB6A /* SDLTCPTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1B11141523E00B9CB6A /* SDLTCPTransport.h */; }; - EE7CB1D21141523E00B9CB6A /* SDLTCPTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB1B21141523E00B9CB6A /* SDLTCPTransport.m */; }; - EE7CB1D31141523E00B9CB6A /* SDLAbstractTransport.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1B31141523E00B9CB6A /* SDLAbstractTransport.h */; }; - EE7CB1D41141523E00B9CB6A /* SDLAbstractTransport.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB1B41141523E00B9CB6A /* SDLAbstractTransport.m */; }; - EE7CB1DD1141563F00B9CB6A /* SDLProtocolMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1DB1141563F00B9CB6A /* SDLProtocolMessage.h */; }; - EE7CB1DE1141563F00B9CB6A /* SDLProtocolMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB1DC1141563F00B9CB6A /* SDLProtocolMessage.m */; }; - EE7CB1EA1141573200B9CB6A /* SDLProtocolListener.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1E81141573200B9CB6A /* SDLProtocolListener.h */; }; - EE7CB1EE1141575A00B9CB6A /* SDLAbstractProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1EC1141575A00B9CB6A /* SDLAbstractProtocol.h */; }; - EE7CB1EF1141575A00B9CB6A /* SDLAbstractProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB1ED1141575A00B9CB6A /* SDLAbstractProtocol.m */; }; - EE7CB1F21141576500B9CB6A /* SDLProtocolFrameHeaderFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB1F01141576500B9CB6A /* SDLProtocolFrameHeaderFactory.h */; }; - EE7CB1F31141576500B9CB6A /* SDLProtocolFrameHeaderFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB1F11141576500B9CB6A /* SDLProtocolFrameHeaderFactory.m */; }; - EE7CB22811415A9C00B9CB6A /* JSON.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB21B11415A9C00B9CB6A /* JSON.h */; }; - EE7CB22911415A9C00B9CB6A /* NSObject+SBJSON.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB21C11415A9C00B9CB6A /* NSObject+SBJSON.h */; }; - EE7CB22A11415A9C00B9CB6A /* NSObject+SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB21D11415A9C00B9CB6A /* NSObject+SBJSON.m */; }; - EE7CB22B11415A9C00B9CB6A /* NSString+SBJSON.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB21E11415A9C00B9CB6A /* NSString+SBJSON.h */; }; - EE7CB22C11415A9C00B9CB6A /* NSString+SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB21F11415A9C00B9CB6A /* NSString+SBJSON.m */; }; - EE7CB22D11415A9C00B9CB6A /* SBJSON.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB22011415A9C00B9CB6A /* SBJSON.h */; }; - EE7CB22E11415A9C00B9CB6A /* SBJSON.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB22111415A9C00B9CB6A /* SBJSON.m */; }; - EE7CB22F11415A9C00B9CB6A /* SBJsonBase.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB22211415A9C00B9CB6A /* SBJsonBase.h */; }; - EE7CB23011415A9C00B9CB6A /* SBJsonBase.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB22311415A9C00B9CB6A /* SBJsonBase.m */; }; - EE7CB23111415A9C00B9CB6A /* SBJsonParser.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB22411415A9C00B9CB6A /* SBJsonParser.h */; }; - EE7CB23211415A9C00B9CB6A /* SBJsonParser.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB22511415A9C00B9CB6A /* SBJsonParser.m */; }; - EE7CB23311415A9C00B9CB6A /* SBJsonWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = EE7CB22611415A9C00B9CB6A /* SBJsonWriter.h */; }; - EE7CB23411415A9C00B9CB6A /* SBJsonWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7CB22711415A9C00B9CB6A /* SBJsonWriter.m */; }; - EEB0806611454A63009C45EB /* SDLBitConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB0806411454A63009C45EB /* SDLBitConverter.h */; }; - EEB0806711454A63009C45EB /* SDLBitConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = EEB0806511454A63009C45EB /* SDLBitConverter.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 1825E724146D88D100B4CFAE /* SDLSiphonServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSiphonServer.h; sourceTree = ""; }; - 1825E725146D88D100B4CFAE /* SDLSiphonServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSiphonServer.m; sourceTree = ""; }; - 185095D4148EBDA6008E1780 /* SDLDriverDistractionState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDriverDistractionState.h; sourceTree = ""; }; - 185095D5148EBDA6008E1780 /* SDLDriverDistractionState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDriverDistractionState.m; sourceTree = ""; }; - 185095D6148EBDA6008E1780 /* SDLEncodedSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEncodedSyncPData.h; sourceTree = ""; }; - 185095D7148EBDA6008E1780 /* SDLEncodedSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEncodedSyncPData.m; sourceTree = ""; }; - 185095D8148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEncodedSyncPDataResponse.h; sourceTree = ""; }; - 185095D9148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEncodedSyncPDataResponse.m; sourceTree = ""; }; - 185095DA148EBDA6008E1780 /* SDLOnDriverDistraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnDriverDistraction.h; sourceTree = ""; }; - 185095DB148EBDA6008E1780 /* SDLOnDriverDistraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnDriverDistraction.m; sourceTree = ""; }; - 185095DC148EBDA6008E1780 /* SDLOnEncodedSyncPData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnEncodedSyncPData.h; sourceTree = ""; }; - 185095DD148EBDA6008E1780 /* SDLOnEncodedSyncPData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnEncodedSyncPData.m; sourceTree = ""; }; - 185095DE148EBDA6008E1780 /* SDLOnTBTClientState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnTBTClientState.h; sourceTree = ""; }; - 185095DF148EBDA6008E1780 /* SDLOnTBTClientState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnTBTClientState.m; sourceTree = ""; }; - 185095E0148EBDA6008E1780 /* SDLTBTState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTBTState.h; sourceTree = ""; }; - 185095E1148EBDA6008E1780 /* SDLTBTState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTBTState.m; sourceTree = ""; }; - 27214DCE150693A9008C1798 /* SDLVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVersion.h; sourceTree = ""; }; - 7297D07012F1B5DF00EE4FBC /* SDLIProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIProxy.h; sourceTree = ""; }; - 8134B0A51210866D0070668B /* SDLRPCRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCRequest.h; sourceTree = ""; }; - 8134B0A61210866D0070668B /* SDLRPCRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCRequest.m; sourceTree = ""; }; - 8134B0A91210868B0070668B /* SDLRPCResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCResponse.h; sourceTree = ""; }; - 8134B0AA1210868B0070668B /* SDLRPCResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCResponse.m; sourceTree = ""; }; - 8134B0AD1210869C0070668B /* SDLRPCNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCNotification.h; sourceTree = ""; }; - 8134B0AE1210869C0070668B /* SDLRPCNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCNotification.m; sourceTree = ""; }; - 814DF65212AD5AEA00006788 /* SDLJingle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLJingle.h; sourceTree = ""; }; - 814DF65312AD5AEA00006788 /* SDLJingle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLJingle.m; sourceTree = ""; }; - 814FAA1C11E3815100AD7FF3 /* SDLIAPTransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIAPTransport.h; sourceTree = ""; }; - 814FAA1D11E3815100AD7FF3 /* SDLIAPTransport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLIAPTransport.m; sourceTree = ""; }; - 814FAA4311E38ED400AD7FF3 /* ExternalAccessory.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ExternalAccessory.framework; path = System/Library/Frameworks/ExternalAccessory.framework; sourceTree = SDKROOT; }; - 814FABAF11E4D4E400AD7FF3 /* SDLProtocolFrameHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolFrameHeader.h; sourceTree = ""; }; - 814FABB011E4D4E400AD7FF3 /* SDLProtocolFrameHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolFrameHeader.m; sourceTree = ""; }; - 8150481111F62DF300208A24 /* SDLRPCRequestFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCRequestFactory.h; sourceTree = ""; }; - 8150481211F62DF300208A24 /* SDLRPCRequestFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCRequestFactory.m; sourceTree = ""; }; - 8150487A11F6352500208A24 /* SDLProxyFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProxyFactory.h; sourceTree = ""; }; - 8150487B11F6352500208A24 /* SDLProxyFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProxyFactory.m; sourceTree = ""; }; - 815F86CF11DCEEDA006E4379 /* SDLEnum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLEnum.h; sourceTree = ""; }; - 815F86D011DCEEDA006E4379 /* SDLEnum.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLEnum.m; sourceTree = ""; }; - 815F86D111DCEEDA006E4379 /* SDLRPCMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRPCMessage.h; sourceTree = ""; }; - 815F86D211DCEEDA006E4379 /* SDLRPCMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCMessage.m; sourceTree = ""; }; - 815F874A11DCEEDA006E4379 /* SDLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocol.h; sourceTree = ""; }; - 815F874B11DCEEDA006E4379 /* SDLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocol.m; sourceTree = ""; }; - 81758B0A1237FCBE00EF4CAC /* SDLProxyListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProxyListener.h; sourceTree = ""; }; - 819E532511F7534200946AC2 /* SDLTTSChunkFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTTSChunkFactory.h; sourceTree = ""; }; - 819E532611F7534200946AC2 /* SDLTTSChunkFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTTSChunkFactory.m; sourceTree = ""; }; - 819EEA1C125A1CF40027947D /* SDLAddCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAddCommand.h; sourceTree = ""; }; - 819EEA1D125A1CF40027947D /* SDLAddCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAddCommand.m; sourceTree = ""; }; - 819EEA1E125A1CF40027947D /* SDLAddCommandResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAddCommandResponse.h; sourceTree = ""; }; - 819EEA1F125A1CF40027947D /* SDLAddCommandResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAddCommandResponse.m; sourceTree = ""; }; - 819EEA20125A1CF40027947D /* SDLAddSubMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAddSubMenu.h; sourceTree = ""; }; - 819EEA21125A1CF40027947D /* SDLAddSubMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAddSubMenu.m; sourceTree = ""; }; - 819EEA22125A1CF40027947D /* SDLAddSubMenuResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAddSubMenuResponse.h; sourceTree = ""; }; - 819EEA23125A1CF40027947D /* SDLAddSubMenuResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAddSubMenuResponse.m; sourceTree = ""; }; - 819EEA24125A1CF40027947D /* SDLAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAlert.h; sourceTree = ""; }; - 819EEA25125A1CF40027947D /* SDLAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAlert.m; sourceTree = ""; }; - 819EEA26125A1CF40027947D /* SDLAlertResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAlertResponse.h; sourceTree = ""; }; - 819EEA27125A1CF40027947D /* SDLAlertResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAlertResponse.m; sourceTree = ""; }; - 819EEA28125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAppInterfaceUnregisteredReason.h; sourceTree = ""; }; - 819EEA29125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAppInterfaceUnregisteredReason.m; sourceTree = ""; }; - 819EEA2A125A1CF40027947D /* SDLAudioStreamingState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAudioStreamingState.h; sourceTree = ""; }; - 819EEA2B125A1CF40027947D /* SDLAudioStreamingState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAudioStreamingState.m; sourceTree = ""; }; - 819EEA2C125A1CF40027947D /* SDLButtonCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonCapabilities.h; sourceTree = ""; }; - 819EEA2D125A1CF40027947D /* SDLButtonCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonCapabilities.m; sourceTree = ""; }; - 819EEA2E125A1CF40027947D /* SDLButtonEventMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonEventMode.h; sourceTree = ""; }; - 819EEA2F125A1CF40027947D /* SDLButtonEventMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonEventMode.m; sourceTree = ""; }; - 819EEA30125A1CF40027947D /* SDLButtonName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonName.h; sourceTree = ""; }; - 819EEA31125A1CF40027947D /* SDLButtonName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonName.m; sourceTree = ""; }; - 819EEA32125A1CF40027947D /* SDLButtonPressMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLButtonPressMode.h; sourceTree = ""; }; - 819EEA33125A1CF40027947D /* SDLButtonPressMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLButtonPressMode.m; sourceTree = ""; }; - 819EEA34125A1CF40027947D /* SDLCharacterSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLCharacterSet.h; sourceTree = ""; }; - 819EEA35125A1CF40027947D /* SDLCharacterSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLCharacterSet.m; sourceTree = ""; }; - 819EEA36125A1CF40027947D /* SDLChoice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLChoice.h; sourceTree = ""; }; - 819EEA37125A1CF40027947D /* SDLChoice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLChoice.m; sourceTree = ""; }; - 819EEA38125A1CF40027947D /* SDLCreateInteractionChoiceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLCreateInteractionChoiceSet.h; sourceTree = ""; }; - 819EEA39125A1CF40027947D /* SDLCreateInteractionChoiceSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLCreateInteractionChoiceSet.m; sourceTree = ""; }; - 819EEA3A125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLCreateInteractionChoiceSetResponse.h; sourceTree = ""; }; - 819EEA3B125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLCreateInteractionChoiceSetResponse.m; sourceTree = ""; }; - 819EEA3C125A1CF40027947D /* SDLDeleteCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteCommand.h; sourceTree = ""; }; - 819EEA3D125A1CF40027947D /* SDLDeleteCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteCommand.m; sourceTree = ""; }; - 819EEA3E125A1CF40027947D /* SDLDeleteCommandResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteCommandResponse.h; sourceTree = ""; }; - 819EEA3F125A1CF40027947D /* SDLDeleteCommandResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteCommandResponse.m; sourceTree = ""; }; - 819EEA40125A1CF40027947D /* SDLDeleteInteractionChoiceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteInteractionChoiceSet.h; sourceTree = ""; }; - 819EEA41125A1CF40027947D /* SDLDeleteInteractionChoiceSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteInteractionChoiceSet.m; sourceTree = ""; }; - 819EEA42125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteInteractionChoiceSetResponse.h; sourceTree = ""; }; - 819EEA43125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteInteractionChoiceSetResponse.m; sourceTree = ""; }; - 819EEA44125A1CF40027947D /* SDLDeleteSubMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteSubMenu.h; sourceTree = ""; }; - 819EEA45125A1CF40027947D /* SDLDeleteSubMenu.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteSubMenu.m; sourceTree = ""; }; - 819EEA46125A1CF40027947D /* SDLDeleteSubMenuResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDeleteSubMenuResponse.h; sourceTree = ""; }; - 819EEA47125A1CF40027947D /* SDLDeleteSubMenuResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDeleteSubMenuResponse.m; sourceTree = ""; }; - 819EEA48125A1CF40027947D /* SDLDisplayCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDisplayCapabilities.h; sourceTree = ""; }; - 819EEA49125A1CF40027947D /* SDLDisplayCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDisplayCapabilities.m; sourceTree = ""; }; - 819EEA4A125A1CF40027947D /* SDLDisplayType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDisplayType.h; sourceTree = ""; }; - 819EEA4B125A1CF40027947D /* SDLDisplayType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDisplayType.m; sourceTree = ""; }; - 819EEA4C125A1CF40027947D /* SDLGenericResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGenericResponse.h; sourceTree = ""; }; - 819EEA4D125A1CF40027947D /* SDLGenericResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGenericResponse.m; sourceTree = ""; }; - 819EEA4E125A1CF40027947D /* SDLGlobalProperty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLGlobalProperty.h; sourceTree = ""; }; - 819EEA4F125A1CF40027947D /* SDLGlobalProperty.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLGlobalProperty.m; sourceTree = ""; }; - 819EEA50125A1CF40027947D /* SDLHMILevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHMILevel.h; sourceTree = ""; }; - 819EEA51125A1CF40027947D /* SDLHMILevel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHMILevel.m; sourceTree = ""; }; - 819EEA52125A1CF40027947D /* SDLHMIZoneCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLHMIZoneCapabilities.h; sourceTree = ""; }; - 819EEA53125A1CF40027947D /* SDLHMIZoneCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHMIZoneCapabilities.m; sourceTree = ""; }; - 819EEA54125A1CF40027947D /* SDLInteractionMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLInteractionMode.h; sourceTree = ""; }; - 819EEA55125A1CF40027947D /* SDLInteractionMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLInteractionMode.m; sourceTree = ""; }; - 819EEA56125A1CF40027947D /* SDLLanguage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLanguage.h; sourceTree = ""; }; - 819EEA57125A1CF40027947D /* SDLLanguage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLanguage.m; sourceTree = ""; }; - 819EEA58125A1CF40027947D /* SDLMediaClockFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMediaClockFormat.h; sourceTree = ""; }; - 819EEA59125A1CF40027947D /* SDLMediaClockFormat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMediaClockFormat.m; sourceTree = ""; }; - 819EEA5A125A1CF40027947D /* SDLMenuParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMenuParams.h; sourceTree = ""; }; - 819EEA5B125A1CF40027947D /* SDLMenuParams.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMenuParams.m; sourceTree = ""; }; - 819EEA5C125A1CF40027947D /* SDLOnAppInterfaceUnregistered.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnAppInterfaceUnregistered.h; sourceTree = ""; }; - 819EEA5D125A1CF40027947D /* SDLOnAppInterfaceUnregistered.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnAppInterfaceUnregistered.m; sourceTree = ""; }; - 819EEA5E125A1CF40027947D /* SDLOnButtonEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnButtonEvent.h; sourceTree = ""; }; - 819EEA5F125A1CF40027947D /* SDLOnButtonEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnButtonEvent.m; sourceTree = ""; }; - 819EEA60125A1CF40027947D /* SDLOnButtonPress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnButtonPress.h; sourceTree = ""; }; - 819EEA61125A1CF40027947D /* SDLOnButtonPress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnButtonPress.m; sourceTree = ""; }; - 819EEA62125A1CF40027947D /* SDLOnCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnCommand.h; sourceTree = ""; }; - 819EEA63125A1CF40027947D /* SDLOnCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnCommand.m; sourceTree = ""; }; - 819EEA64125A1CF40027947D /* SDLOnHMIStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLOnHMIStatus.h; sourceTree = ""; }; - 819EEA65125A1CF40027947D /* SDLOnHMIStatus.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLOnHMIStatus.m; sourceTree = ""; }; - 819EEA66125A1CF40027947D /* SDLPerformInteraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPerformInteraction.h; sourceTree = ""; }; - 819EEA67125A1CF40027947D /* SDLPerformInteraction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPerformInteraction.m; sourceTree = ""; }; - 819EEA68125A1CF40027947D /* SDLPerformInteractionResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLPerformInteractionResponse.h; sourceTree = ""; }; - 819EEA69125A1CF40027947D /* SDLPerformInteractionResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLPerformInteractionResponse.m; sourceTree = ""; }; - 819EEA6A125A1CF40027947D /* SDLRegisterAppInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRegisterAppInterface.h; sourceTree = ""; }; - 819EEA6B125A1CF40027947D /* SDLRegisterAppInterface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRegisterAppInterface.m; sourceTree = ""; }; - 819EEA6C125A1CF40027947D /* SDLRegisterAppInterfaceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLRegisterAppInterfaceResponse.h; sourceTree = ""; }; - 819EEA6D125A1CF40027947D /* SDLRegisterAppInterfaceResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRegisterAppInterfaceResponse.m; sourceTree = ""; }; - 819EEA6E125A1CF40027947D /* SDLResetGlobalProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLResetGlobalProperties.h; sourceTree = ""; }; - 819EEA6F125A1CF40027947D /* SDLResetGlobalProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLResetGlobalProperties.m; sourceTree = ""; }; - 819EEA70125A1CF40027947D /* SDLResetGlobalPropertiesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLResetGlobalPropertiesResponse.h; sourceTree = ""; }; - 819EEA71125A1CF40027947D /* SDLResetGlobalPropertiesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLResetGlobalPropertiesResponse.m; sourceTree = ""; }; - 819EEA72125A1CF40027947D /* SDLResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLResult.h; sourceTree = ""; }; - 819EEA73125A1CF40027947D /* SDLResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLResult.m; sourceTree = ""; }; - 819EEA74125A1CF40027947D /* SDLSetGlobalProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetGlobalProperties.h; sourceTree = ""; }; - 819EEA75125A1CF40027947D /* SDLSetGlobalProperties.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetGlobalProperties.m; sourceTree = ""; }; - 819EEA76125A1CF40027947D /* SDLSetGlobalPropertiesResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetGlobalPropertiesResponse.h; sourceTree = ""; }; - 819EEA77125A1CF40027947D /* SDLSetGlobalPropertiesResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetGlobalPropertiesResponse.m; sourceTree = ""; }; - 819EEA78125A1CF40027947D /* SDLSetMediaClockTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetMediaClockTimer.h; sourceTree = ""; }; - 819EEA79125A1CF40027947D /* SDLSetMediaClockTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetMediaClockTimer.m; sourceTree = ""; }; - 819EEA7A125A1CF40027947D /* SDLSetMediaClockTimerResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSetMediaClockTimerResponse.h; sourceTree = ""; }; - 819EEA7B125A1CF40027947D /* SDLSetMediaClockTimerResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSetMediaClockTimerResponse.m; sourceTree = ""; }; - 819EEA7C125A1CF40027947D /* SDLShow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLShow.h; sourceTree = ""; }; - 819EEA7D125A1CF40027947D /* SDLShow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLShow.m; sourceTree = ""; }; - 819EEA7E125A1CF40027947D /* SDLShowResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLShowResponse.h; sourceTree = ""; }; - 819EEA7F125A1CF40027947D /* SDLShowResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLShowResponse.m; sourceTree = ""; }; - 819EEA80125A1CF40027947D /* SDLSpeak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSpeak.h; sourceTree = ""; }; - 819EEA81125A1CF40027947D /* SDLSpeak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSpeak.m; sourceTree = ""; }; - 819EEA82125A1CF40027947D /* SDLSpeakResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSpeakResponse.h; sourceTree = ""; }; - 819EEA83125A1CF40027947D /* SDLSpeakResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSpeakResponse.m; sourceTree = ""; }; - 819EEA84125A1CF40027947D /* SDLSpeechCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSpeechCapabilities.h; sourceTree = ""; }; - 819EEA85125A1CF40027947D /* SDLSpeechCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSpeechCapabilities.m; sourceTree = ""; }; - 819EEA86125A1CF40027947D /* SDLStartTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStartTime.h; sourceTree = ""; }; - 819EEA87125A1CF40027947D /* SDLStartTime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStartTime.m; sourceTree = ""; }; - 819EEA88125A1CF40027947D /* SDLSubscribeButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeButton.h; sourceTree = ""; }; - 819EEA89125A1CF40027947D /* SDLSubscribeButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeButton.m; sourceTree = ""; }; - 819EEA8A125A1CF40027947D /* SDLSubscribeButtonResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSubscribeButtonResponse.h; sourceTree = ""; }; - 819EEA8B125A1CF40027947D /* SDLSubscribeButtonResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSubscribeButtonResponse.m; sourceTree = ""; }; - 819EEA8C125A1CF40027947D /* SDLMsgVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLMsgVersion.h; sourceTree = ""; }; - 819EEA8D125A1CF40027947D /* SDLMsgVersion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLMsgVersion.m; sourceTree = ""; }; - 819EEA8E125A1CF40027947D /* SDLSystemContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemContext.h; sourceTree = ""; }; - 819EEA8F125A1CF40027947D /* SDLSystemContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemContext.m; sourceTree = ""; }; - 819EEA90125A1CF40027947D /* SDLTextAlignment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTextAlignment.h; sourceTree = ""; }; - 819EEA91125A1CF40027947D /* SDLTextAlignment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTextAlignment.m; sourceTree = ""; }; - 819EEA92125A1CF40027947D /* SDLTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTextField.h; sourceTree = ""; }; - 819EEA93125A1CF40027947D /* SDLTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTextField.m; sourceTree = ""; }; - 819EEA94125A1CF40027947D /* SDLTextFieldName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTextFieldName.h; sourceTree = ""; }; - 819EEA95125A1CF40027947D /* SDLTextFieldName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTextFieldName.m; sourceTree = ""; }; - 819EEA96125A1CF40027947D /* SDLTriggerSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTriggerSource.h; sourceTree = ""; }; - 819EEA97125A1CF40027947D /* SDLTriggerSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTriggerSource.m; sourceTree = ""; }; - 819EEA98125A1CF40027947D /* SDLTTSChunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTTSChunk.h; sourceTree = ""; }; - 819EEA99125A1CF40027947D /* SDLTTSChunk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTTSChunk.m; sourceTree = ""; }; - 819EEA9A125A1CF40027947D /* SDLUnregisterAppInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnregisterAppInterface.h; sourceTree = ""; }; - 819EEA9B125A1CF40027947D /* SDLUnregisterAppInterface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnregisterAppInterface.m; sourceTree = ""; }; - 819EEA9C125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnregisterAppInterfaceResponse.h; sourceTree = ""; }; - 819EEA9D125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnregisterAppInterfaceResponse.m; sourceTree = ""; }; - 819EEA9E125A1CF40027947D /* SDLUnsubscribeButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeButton.h; sourceTree = ""; }; - 819EEA9F125A1CF40027947D /* SDLUnsubscribeButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeButton.m; sourceTree = ""; }; - 819EEAA0125A1CF40027947D /* SDLUnsubscribeButtonResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUnsubscribeButtonResponse.h; sourceTree = ""; }; - 819EEAA1125A1CF40027947D /* SDLUnsubscribeButtonResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUnsubscribeButtonResponse.m; sourceTree = ""; }; - 819EEAA2125A1CF40027947D /* SDLUpdateMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLUpdateMode.h; sourceTree = ""; }; - 819EEAA3125A1CF40027947D /* SDLUpdateMode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLUpdateMode.m; sourceTree = ""; }; - 819EEAA4125A1CF40027947D /* SDLVRCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLVRCapabilities.h; sourceTree = ""; }; - 819EEAA5125A1CF40027947D /* SDLVRCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLVRCapabilities.m; sourceTree = ""; }; - 81D0C2D812010C1300E877A6 /* SDLDebugTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLDebugTool.h; sourceTree = ""; }; - 81D0C2D912010C1300E877A6 /* SDLDebugTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDebugTool.m; sourceTree = ""; }; - 81FA2B37127AEF1500B2B9A8 /* SDLConsoleController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SDLConsoleController.xib; sourceTree = ""; }; - 81FA2B38127AEF1500B2B9A8 /* SDLConsoleController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLConsoleController.h; sourceTree = ""; }; - 81FA2B39127AEF1500B2B9A8 /* SDLConsoleController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLConsoleController.m; sourceTree = ""; }; - AA747D9E0F9514B9006C5449 /* SmartDeviceLinkProxy_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SmartDeviceLinkProxy_Prefix.pch; path = Users/thunder/Desktop/master/SmartDeviceLinkProxy/SmartDeviceLinkProxy_Prefix.pch; sourceTree = SDKROOT; }; - AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - D2AAC07E0554694100DB518D /* libSmartDeviceLinkProxy.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSmartDeviceLinkProxy.a; sourceTree = BUILT_PRODUCTS_DIR; }; - EE7CB1A11141523E00B9CB6A /* SDLIDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIDecoder.h; sourceTree = ""; }; - EE7CB1A21141523E00B9CB6A /* SDLIEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIEncoder.h; sourceTree = ""; }; - EE7CB1A31141523E00B9CB6A /* SDLIProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIProtocol.h; sourceTree = ""; }; - EE7CB1A51141523E00B9CB6A /* SDLITransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLITransport.h; sourceTree = ""; }; - EE7CB1A61141523E00B9CB6A /* SDLTransportListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTransportListener.h; sourceTree = ""; }; - EE7CB1A71141523E00B9CB6A /* SDLJsonDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLJsonDecoder.h; sourceTree = ""; }; - EE7CB1A81141523E00B9CB6A /* SDLJsonDecoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLJsonDecoder.m; sourceTree = ""; }; - EE7CB1A91141523E00B9CB6A /* SDLJsonEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLJsonEncoder.h; sourceTree = ""; }; - EE7CB1AA1141523E00B9CB6A /* SDLJsonEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLJsonEncoder.m; sourceTree = ""; }; - EE7CB1AD1141523E00B9CB6A /* SDLNames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLNames.h; sourceTree = ""; }; - EE7CB1AF1141523E00B9CB6A /* SDLProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProxy.h; sourceTree = ""; }; - EE7CB1B01141523E00B9CB6A /* SDLProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProxy.m; sourceTree = ""; }; - EE7CB1B11141523E00B9CB6A /* SDLTCPTransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTCPTransport.h; sourceTree = ""; }; - EE7CB1B21141523E00B9CB6A /* SDLTCPTransport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTCPTransport.m; sourceTree = ""; }; - EE7CB1B31141523E00B9CB6A /* SDLAbstractTransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAbstractTransport.h; sourceTree = ""; }; - EE7CB1B41141523E00B9CB6A /* SDLAbstractTransport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAbstractTransport.m; sourceTree = ""; }; - EE7CB1DB1141563F00B9CB6A /* SDLProtocolMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolMessage.h; sourceTree = ""; }; - EE7CB1DC1141563F00B9CB6A /* SDLProtocolMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolMessage.m; sourceTree = ""; }; - EE7CB1E81141573200B9CB6A /* SDLProtocolListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolListener.h; sourceTree = ""; }; - EE7CB1EC1141575A00B9CB6A /* SDLAbstractProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLAbstractProtocol.h; sourceTree = ""; }; - EE7CB1ED1141575A00B9CB6A /* SDLAbstractProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLAbstractProtocol.m; sourceTree = ""; }; - EE7CB1F01141576500B9CB6A /* SDLProtocolFrameHeaderFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLProtocolFrameHeaderFactory.h; sourceTree = ""; }; - EE7CB1F11141576500B9CB6A /* SDLProtocolFrameHeaderFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLProtocolFrameHeaderFactory.m; sourceTree = ""; }; - EE7CB21B11415A9C00B9CB6A /* JSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSON.h; sourceTree = ""; }; - EE7CB21C11415A9C00B9CB6A /* NSObject+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+SBJSON.h"; sourceTree = ""; }; - EE7CB21D11415A9C00B9CB6A /* NSObject+SBJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+SBJSON.m"; sourceTree = ""; }; - EE7CB21E11415A9C00B9CB6A /* NSString+SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+SBJSON.h"; sourceTree = ""; }; - EE7CB21F11415A9C00B9CB6A /* NSString+SBJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+SBJSON.m"; sourceTree = ""; }; - EE7CB22011415A9C00B9CB6A /* SBJSON.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJSON.h; sourceTree = ""; }; - EE7CB22111415A9C00B9CB6A /* SBJSON.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJSON.m; sourceTree = ""; }; - EE7CB22211415A9C00B9CB6A /* SBJsonBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonBase.h; sourceTree = ""; }; - EE7CB22311415A9C00B9CB6A /* SBJsonBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonBase.m; sourceTree = ""; }; - EE7CB22411415A9C00B9CB6A /* SBJsonParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonParser.h; sourceTree = ""; }; - EE7CB22511415A9C00B9CB6A /* SBJsonParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonParser.m; sourceTree = ""; }; - EE7CB22611415A9C00B9CB6A /* SBJsonWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonWriter.h; sourceTree = ""; }; - EE7CB22711415A9C00B9CB6A /* SBJsonWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonWriter.m; sourceTree = ""; }; - EEB0806411454A63009C45EB /* SDLBitConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLBitConverter.h; sourceTree = ""; }; - EEB0806511454A63009C45EB /* SDLBitConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLBitConverter.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - D2AAC07C0554694100DB518D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */, - 814FAA4411E38ED400AD7FF3 /* ExternalAccessory.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 034768DFFF38A50411DB9C8B /* Products */ = { - isa = PBXGroup; - children = ( - D2AAC07E0554694100DB518D /* libSmartDeviceLinkProxy.a */, - ); - name = Products; - sourceTree = ""; - }; - 0867D691FE84028FC02AAC07 /* SyncProxy */ = { - isa = PBXGroup; - children = ( - EE7CB18D114151D500B9CB6A /* Classes */, - 32C88DFF0371C24200C91783 /* Other Sources */, - 0867D69AFE84028FC02AAC07 /* Frameworks */, - 034768DFFF38A50411DB9C8B /* Products */, - ); - name = SyncProxy; - sourceTree = ""; - }; - 0867D69AFE84028FC02AAC07 /* Frameworks */ = { - isa = PBXGroup; - children = ( - AACBBE490F95108600F1A2B1 /* Foundation.framework */, - 814FAA4311E38ED400AD7FF3 /* ExternalAccessory.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 32C88DFF0371C24200C91783 /* Other Sources */ = { - isa = PBXGroup; - children = ( - EE7CB20111415A8B00B9CB6A /* json */, - AA747D9E0F9514B9006C5449 /* SmartDeviceLinkProxy_Prefix.pch */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 815F86D511DCEEDA006E4379 /* RPC */ = { - isa = PBXGroup; - children = ( - 819EEA1C125A1CF40027947D /* SDLAddCommand.h */, - 819EEA1D125A1CF40027947D /* SDLAddCommand.m */, - 819EEA1E125A1CF40027947D /* SDLAddCommandResponse.h */, - 819EEA1F125A1CF40027947D /* SDLAddCommandResponse.m */, - 819EEA20125A1CF40027947D /* SDLAddSubMenu.h */, - 819EEA21125A1CF40027947D /* SDLAddSubMenu.m */, - 819EEA22125A1CF40027947D /* SDLAddSubMenuResponse.h */, - 819EEA23125A1CF40027947D /* SDLAddSubMenuResponse.m */, - 819EEA24125A1CF40027947D /* SDLAlert.h */, - 819EEA25125A1CF40027947D /* SDLAlert.m */, - 819EEA26125A1CF40027947D /* SDLAlertResponse.h */, - 819EEA27125A1CF40027947D /* SDLAlertResponse.m */, - 819EEA28125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.h */, - 819EEA29125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.m */, - 819EEA2A125A1CF40027947D /* SDLAudioStreamingState.h */, - 819EEA2B125A1CF40027947D /* SDLAudioStreamingState.m */, - 819EEA2C125A1CF40027947D /* SDLButtonCapabilities.h */, - 819EEA2D125A1CF40027947D /* SDLButtonCapabilities.m */, - 819EEA2E125A1CF40027947D /* SDLButtonEventMode.h */, - 819EEA2F125A1CF40027947D /* SDLButtonEventMode.m */, - 819EEA30125A1CF40027947D /* SDLButtonName.h */, - 819EEA31125A1CF40027947D /* SDLButtonName.m */, - 819EEA32125A1CF40027947D /* SDLButtonPressMode.h */, - 819EEA33125A1CF40027947D /* SDLButtonPressMode.m */, - 819EEA34125A1CF40027947D /* SDLCharacterSet.h */, - 819EEA35125A1CF40027947D /* SDLCharacterSet.m */, - 819EEA36125A1CF40027947D /* SDLChoice.h */, - 819EEA37125A1CF40027947D /* SDLChoice.m */, - 819EEA38125A1CF40027947D /* SDLCreateInteractionChoiceSet.h */, - 819EEA39125A1CF40027947D /* SDLCreateInteractionChoiceSet.m */, - 819EEA3A125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.h */, - 819EEA3B125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.m */, - 819EEA3C125A1CF40027947D /* SDLDeleteCommand.h */, - 819EEA3D125A1CF40027947D /* SDLDeleteCommand.m */, - 819EEA3E125A1CF40027947D /* SDLDeleteCommandResponse.h */, - 819EEA3F125A1CF40027947D /* SDLDeleteCommandResponse.m */, - 819EEA40125A1CF40027947D /* SDLDeleteInteractionChoiceSet.h */, - 819EEA41125A1CF40027947D /* SDLDeleteInteractionChoiceSet.m */, - 819EEA42125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.h */, - 819EEA43125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.m */, - 819EEA44125A1CF40027947D /* SDLDeleteSubMenu.h */, - 819EEA45125A1CF40027947D /* SDLDeleteSubMenu.m */, - 819EEA46125A1CF40027947D /* SDLDeleteSubMenuResponse.h */, - 819EEA47125A1CF40027947D /* SDLDeleteSubMenuResponse.m */, - 819EEA48125A1CF40027947D /* SDLDisplayCapabilities.h */, - 819EEA49125A1CF40027947D /* SDLDisplayCapabilities.m */, - 819EEA4A125A1CF40027947D /* SDLDisplayType.h */, - 819EEA4B125A1CF40027947D /* SDLDisplayType.m */, - 819EEA4C125A1CF40027947D /* SDLGenericResponse.h */, - 819EEA4D125A1CF40027947D /* SDLGenericResponse.m */, - 819EEA4E125A1CF40027947D /* SDLGlobalProperty.h */, - 819EEA4F125A1CF40027947D /* SDLGlobalProperty.m */, - 819EEA50125A1CF40027947D /* SDLHMILevel.h */, - 819EEA51125A1CF40027947D /* SDLHMILevel.m */, - 819EEA52125A1CF40027947D /* SDLHMIZoneCapabilities.h */, - 819EEA53125A1CF40027947D /* SDLHMIZoneCapabilities.m */, - 819EEA54125A1CF40027947D /* SDLInteractionMode.h */, - 819EEA55125A1CF40027947D /* SDLInteractionMode.m */, - 819EEA56125A1CF40027947D /* SDLLanguage.h */, - 819EEA57125A1CF40027947D /* SDLLanguage.m */, - 819EEA58125A1CF40027947D /* SDLMediaClockFormat.h */, - 819EEA59125A1CF40027947D /* SDLMediaClockFormat.m */, - 819EEA5A125A1CF40027947D /* SDLMenuParams.h */, - 819EEA5B125A1CF40027947D /* SDLMenuParams.m */, - 819EEA5C125A1CF40027947D /* SDLOnAppInterfaceUnregistered.h */, - 819EEA5D125A1CF40027947D /* SDLOnAppInterfaceUnregistered.m */, - 819EEA5E125A1CF40027947D /* SDLOnButtonEvent.h */, - 819EEA5F125A1CF40027947D /* SDLOnButtonEvent.m */, - 819EEA60125A1CF40027947D /* SDLOnButtonPress.h */, - 819EEA61125A1CF40027947D /* SDLOnButtonPress.m */, - 819EEA62125A1CF40027947D /* SDLOnCommand.h */, - 819EEA63125A1CF40027947D /* SDLOnCommand.m */, - 819EEA64125A1CF40027947D /* SDLOnHMIStatus.h */, - 819EEA65125A1CF40027947D /* SDLOnHMIStatus.m */, - 819EEA66125A1CF40027947D /* SDLPerformInteraction.h */, - 819EEA67125A1CF40027947D /* SDLPerformInteraction.m */, - 819EEA68125A1CF40027947D /* SDLPerformInteractionResponse.h */, - 819EEA69125A1CF40027947D /* SDLPerformInteractionResponse.m */, - 819EEA6A125A1CF40027947D /* SDLRegisterAppInterface.h */, - 819EEA6B125A1CF40027947D /* SDLRegisterAppInterface.m */, - 819EEA6C125A1CF40027947D /* SDLRegisterAppInterfaceResponse.h */, - 819EEA6D125A1CF40027947D /* SDLRegisterAppInterfaceResponse.m */, - 819EEA6E125A1CF40027947D /* SDLResetGlobalProperties.h */, - 819EEA6F125A1CF40027947D /* SDLResetGlobalProperties.m */, - 819EEA70125A1CF40027947D /* SDLResetGlobalPropertiesResponse.h */, - 819EEA71125A1CF40027947D /* SDLResetGlobalPropertiesResponse.m */, - 819EEA72125A1CF40027947D /* SDLResult.h */, - 819EEA73125A1CF40027947D /* SDLResult.m */, - 819EEA74125A1CF40027947D /* SDLSetGlobalProperties.h */, - 819EEA75125A1CF40027947D /* SDLSetGlobalProperties.m */, - 819EEA76125A1CF40027947D /* SDLSetGlobalPropertiesResponse.h */, - 819EEA77125A1CF40027947D /* SDLSetGlobalPropertiesResponse.m */, - 819EEA78125A1CF40027947D /* SDLSetMediaClockTimer.h */, - 819EEA79125A1CF40027947D /* SDLSetMediaClockTimer.m */, - 819EEA7A125A1CF40027947D /* SDLSetMediaClockTimerResponse.h */, - 819EEA7B125A1CF40027947D /* SDLSetMediaClockTimerResponse.m */, - 819EEA7C125A1CF40027947D /* SDLShow.h */, - 819EEA7D125A1CF40027947D /* SDLShow.m */, - 819EEA7E125A1CF40027947D /* SDLShowResponse.h */, - 819EEA7F125A1CF40027947D /* SDLShowResponse.m */, - 819EEA80125A1CF40027947D /* SDLSpeak.h */, - 819EEA81125A1CF40027947D /* SDLSpeak.m */, - 819EEA82125A1CF40027947D /* SDLSpeakResponse.h */, - 819EEA83125A1CF40027947D /* SDLSpeakResponse.m */, - 819EEA84125A1CF40027947D /* SDLSpeechCapabilities.h */, - 819EEA85125A1CF40027947D /* SDLSpeechCapabilities.m */, - 819EEA86125A1CF40027947D /* SDLStartTime.h */, - 819EEA87125A1CF40027947D /* SDLStartTime.m */, - 819EEA88125A1CF40027947D /* SDLSubscribeButton.h */, - 819EEA89125A1CF40027947D /* SDLSubscribeButton.m */, - 819EEA8A125A1CF40027947D /* SDLSubscribeButtonResponse.h */, - 819EEA8B125A1CF40027947D /* SDLSubscribeButtonResponse.m */, - 819EEA8C125A1CF40027947D /* SDLMsgVersion.h */, - 819EEA8D125A1CF40027947D /* SDLMsgVersion.m */, - 819EEA8E125A1CF40027947D /* SDLSystemContext.h */, - 819EEA8F125A1CF40027947D /* SDLSystemContext.m */, - 819EEA90125A1CF40027947D /* SDLTextAlignment.h */, - 819EEA91125A1CF40027947D /* SDLTextAlignment.m */, - 819EEA92125A1CF40027947D /* SDLTextField.h */, - 819EEA93125A1CF40027947D /* SDLTextField.m */, - 819EEA94125A1CF40027947D /* SDLTextFieldName.h */, - 819EEA95125A1CF40027947D /* SDLTextFieldName.m */, - 819EEA96125A1CF40027947D /* SDLTriggerSource.h */, - 819EEA97125A1CF40027947D /* SDLTriggerSource.m */, - 819EEA98125A1CF40027947D /* SDLTTSChunk.h */, - 819EEA99125A1CF40027947D /* SDLTTSChunk.m */, - 819EEA9A125A1CF40027947D /* SDLUnregisterAppInterface.h */, - 819EEA9B125A1CF40027947D /* SDLUnregisterAppInterface.m */, - 819EEA9C125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.h */, - 819EEA9D125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.m */, - 819EEA9E125A1CF40027947D /* SDLUnsubscribeButton.h */, - 819EEA9F125A1CF40027947D /* SDLUnsubscribeButton.m */, - 819EEAA0125A1CF40027947D /* SDLUnsubscribeButtonResponse.h */, - 819EEAA1125A1CF40027947D /* SDLUnsubscribeButtonResponse.m */, - 819EEAA2125A1CF40027947D /* SDLUpdateMode.h */, - 819EEAA3125A1CF40027947D /* SDLUpdateMode.m */, - 819EEAA4125A1CF40027947D /* SDLVRCapabilities.h */, - 819EEAA5125A1CF40027947D /* SDLVRCapabilities.m */, - 185095D4148EBDA6008E1780 /* SDLDriverDistractionState.h */, - 185095D5148EBDA6008E1780 /* SDLDriverDistractionState.m */, - 185095D6148EBDA6008E1780 /* SDLEncodedSyncPData.h */, - 185095D7148EBDA6008E1780 /* SDLEncodedSyncPData.m */, - 185095D8148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.h */, - 185095D9148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.m */, - 185095DA148EBDA6008E1780 /* SDLOnDriverDistraction.h */, - 185095DB148EBDA6008E1780 /* SDLOnDriverDistraction.m */, - 185095DC148EBDA6008E1780 /* SDLOnEncodedSyncPData.h */, - 185095DD148EBDA6008E1780 /* SDLOnEncodedSyncPData.m */, - 185095DE148EBDA6008E1780 /* SDLOnTBTClientState.h */, - 185095DF148EBDA6008E1780 /* SDLOnTBTClientState.m */, - 185095E0148EBDA6008E1780 /* SDLTBTState.h */, - 185095E1148EBDA6008E1780 /* SDLTBTState.m */, - ); - path = RPC; - sourceTree = ""; - }; - EE7CB18D114151D500B9CB6A /* Classes */ = { - isa = PBXGroup; - children = ( - EE7CB1E11141569E00B9CB6A /* proxy */, - EE7CB1DF1141565A00B9CB6A /* protocol */, - EE7CB1E2114156BF00B9CB6A /* transport */, - EE7CB1E3114156ED00B9CB6A /* encoder */, - EE7CB1E01141569300B9CB6A /* utils */, - ); - path = Classes; - sourceTree = ""; - }; - EE7CB1DF1141565A00B9CB6A /* protocol */ = { - isa = PBXGroup; - children = ( - 815F874A11DCEEDA006E4379 /* SDLProtocol.h */, - 815F874B11DCEEDA006E4379 /* SDLProtocol.m */, - EE7CB1A31141523E00B9CB6A /* SDLIProtocol.h */, - EE7CB1E81141573200B9CB6A /* SDLProtocolListener.h */, - 814FABAF11E4D4E400AD7FF3 /* SDLProtocolFrameHeader.h */, - 814FABB011E4D4E400AD7FF3 /* SDLProtocolFrameHeader.m */, - EE7CB1DB1141563F00B9CB6A /* SDLProtocolMessage.h */, - EE7CB1DC1141563F00B9CB6A /* SDLProtocolMessage.m */, - EE7CB1EC1141575A00B9CB6A /* SDLAbstractProtocol.h */, - EE7CB1ED1141575A00B9CB6A /* SDLAbstractProtocol.m */, - EE7CB1F01141576500B9CB6A /* SDLProtocolFrameHeaderFactory.h */, - EE7CB1F11141576500B9CB6A /* SDLProtocolFrameHeaderFactory.m */, - ); - name = protocol; - sourceTree = ""; - }; - EE7CB1E01141569300B9CB6A /* utils */ = { - isa = PBXGroup; - children = ( - 27214DCE150693A9008C1798 /* SDLVersion.h */, - 1825E724146D88D100B4CFAE /* SDLSiphonServer.h */, - 1825E725146D88D100B4CFAE /* SDLSiphonServer.m */, - 81FA2B37127AEF1500B2B9A8 /* SDLConsoleController.xib */, - 81FA2B38127AEF1500B2B9A8 /* SDLConsoleController.h */, - 81FA2B39127AEF1500B2B9A8 /* SDLConsoleController.m */, - EEB0806411454A63009C45EB /* SDLBitConverter.h */, - EEB0806511454A63009C45EB /* SDLBitConverter.m */, - 81D0C2D812010C1300E877A6 /* SDLDebugTool.h */, - 81D0C2D912010C1300E877A6 /* SDLDebugTool.m */, - ); - name = utils; - sourceTree = ""; - }; - EE7CB1E11141569E00B9CB6A /* proxy */ = { - isa = PBXGroup; - children = ( - 815F86D511DCEEDA006E4379 /* RPC */, - 815F86CF11DCEEDA006E4379 /* SDLEnum.h */, - 815F86D011DCEEDA006E4379 /* SDLEnum.m */, - 815F86D111DCEEDA006E4379 /* SDLRPCMessage.h */, - 815F86D211DCEEDA006E4379 /* SDLRPCMessage.m */, - 8134B0A51210866D0070668B /* SDLRPCRequest.h */, - 8134B0A61210866D0070668B /* SDLRPCRequest.m */, - 8134B0A91210868B0070668B /* SDLRPCResponse.h */, - 8134B0AA1210868B0070668B /* SDLRPCResponse.m */, - 8134B0AD1210869C0070668B /* SDLRPCNotification.h */, - 8134B0AE1210869C0070668B /* SDLRPCNotification.m */, - 8150481111F62DF300208A24 /* SDLRPCRequestFactory.h */, - 8150481211F62DF300208A24 /* SDLRPCRequestFactory.m */, - EE7CB1AD1141523E00B9CB6A /* SDLNames.h */, - 81758B0A1237FCBE00EF4CAC /* SDLProxyListener.h */, - 7297D07012F1B5DF00EE4FBC /* SDLIProxy.h */, - EE7CB1AF1141523E00B9CB6A /* SDLProxy.h */, - EE7CB1B01141523E00B9CB6A /* SDLProxy.m */, - 8150487A11F6352500208A24 /* SDLProxyFactory.h */, - 8150487B11F6352500208A24 /* SDLProxyFactory.m */, - 819E532511F7534200946AC2 /* SDLTTSChunkFactory.h */, - 819E532611F7534200946AC2 /* SDLTTSChunkFactory.m */, - 814DF65212AD5AEA00006788 /* SDLJingle.h */, - 814DF65312AD5AEA00006788 /* SDLJingle.m */, - ); - name = proxy; - sourceTree = ""; - }; - EE7CB1E2114156BF00B9CB6A /* transport */ = { - isa = PBXGroup; - children = ( - EE7CB1A51141523E00B9CB6A /* SDLITransport.h */, - EE7CB1A61141523E00B9CB6A /* SDLTransportListener.h */, - EE7CB1B11141523E00B9CB6A /* SDLTCPTransport.h */, - EE7CB1B21141523E00B9CB6A /* SDLTCPTransport.m */, - EE7CB1B31141523E00B9CB6A /* SDLAbstractTransport.h */, - EE7CB1B41141523E00B9CB6A /* SDLAbstractTransport.m */, - 814FAA1C11E3815100AD7FF3 /* SDLIAPTransport.h */, - 814FAA1D11E3815100AD7FF3 /* SDLIAPTransport.m */, - ); - name = transport; - sourceTree = ""; - }; - EE7CB1E3114156ED00B9CB6A /* encoder */ = { - isa = PBXGroup; - children = ( - EE7CB1A11141523E00B9CB6A /* SDLIDecoder.h */, - EE7CB1A21141523E00B9CB6A /* SDLIEncoder.h */, - EE7CB1A71141523E00B9CB6A /* SDLJsonDecoder.h */, - EE7CB1A81141523E00B9CB6A /* SDLJsonDecoder.m */, - EE7CB1A91141523E00B9CB6A /* SDLJsonEncoder.h */, - EE7CB1AA1141523E00B9CB6A /* SDLJsonEncoder.m */, - ); - name = encoder; - sourceTree = ""; - }; - EE7CB20111415A8B00B9CB6A /* json */ = { - isa = PBXGroup; - children = ( - EE7CB21B11415A9C00B9CB6A /* JSON.h */, - EE7CB21C11415A9C00B9CB6A /* NSObject+SBJSON.h */, - EE7CB21D11415A9C00B9CB6A /* NSObject+SBJSON.m */, - EE7CB21E11415A9C00B9CB6A /* NSString+SBJSON.h */, - EE7CB21F11415A9C00B9CB6A /* NSString+SBJSON.m */, - EE7CB22011415A9C00B9CB6A /* SBJSON.h */, - EE7CB22111415A9C00B9CB6A /* SBJSON.m */, - EE7CB22211415A9C00B9CB6A /* SBJsonBase.h */, - EE7CB22311415A9C00B9CB6A /* SBJsonBase.m */, - EE7CB22411415A9C00B9CB6A /* SBJsonParser.h */, - EE7CB22511415A9C00B9CB6A /* SBJsonParser.m */, - EE7CB22611415A9C00B9CB6A /* SBJsonWriter.h */, - EE7CB22711415A9C00B9CB6A /* SBJsonWriter.m */, - ); - name = json; - path = Classes; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - D2AAC07A0554694100DB518D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - EE7CB1C11141523E00B9CB6A /* SDLIDecoder.h in Headers */, - EE7CB1C21141523E00B9CB6A /* SDLIEncoder.h in Headers */, - EE7CB1C31141523E00B9CB6A /* SDLIProtocol.h in Headers */, - EE7CB1C51141523E00B9CB6A /* SDLITransport.h in Headers */, - EE7CB1C61141523E00B9CB6A /* SDLTransportListener.h in Headers */, - EE7CB1C71141523E00B9CB6A /* SDLJsonDecoder.h in Headers */, - EE7CB1C91141523E00B9CB6A /* SDLJsonEncoder.h in Headers */, - EE7CB1CD1141523E00B9CB6A /* SDLNames.h in Headers */, - EE7CB1CF1141523E00B9CB6A /* SDLProxy.h in Headers */, - EE7CB1D11141523E00B9CB6A /* SDLTCPTransport.h in Headers */, - EE7CB1D31141523E00B9CB6A /* SDLAbstractTransport.h in Headers */, - EE7CB1DD1141563F00B9CB6A /* SDLProtocolMessage.h in Headers */, - EE7CB1EA1141573200B9CB6A /* SDLProtocolListener.h in Headers */, - EE7CB1EE1141575A00B9CB6A /* SDLAbstractProtocol.h in Headers */, - EE7CB1F21141576500B9CB6A /* SDLProtocolFrameHeaderFactory.h in Headers */, - EE7CB22811415A9C00B9CB6A /* JSON.h in Headers */, - EE7CB22911415A9C00B9CB6A /* NSObject+SBJSON.h in Headers */, - EE7CB22B11415A9C00B9CB6A /* NSString+SBJSON.h in Headers */, - EE7CB22D11415A9C00B9CB6A /* SBJSON.h in Headers */, - EE7CB22F11415A9C00B9CB6A /* SBJsonBase.h in Headers */, - EE7CB23111415A9C00B9CB6A /* SBJsonParser.h in Headers */, - EE7CB23311415A9C00B9CB6A /* SBJsonWriter.h in Headers */, - EEB0806611454A63009C45EB /* SDLBitConverter.h in Headers */, - 815F874C11DCEEDA006E4379 /* SDLEnum.h in Headers */, - 815F874E11DCEEDA006E4379 /* SDLRPCMessage.h in Headers */, - 815F87C611DCEEDA006E4379 /* SDLProtocol.h in Headers */, - 814FAA1E11E3815100AD7FF3 /* SDLIAPTransport.h in Headers */, - 814FABB111E4D4E400AD7FF3 /* SDLProtocolFrameHeader.h in Headers */, - 8150481311F62DF300208A24 /* SDLRPCRequestFactory.h in Headers */, - 8150487C11F6352500208A24 /* SDLProxyFactory.h in Headers */, - 819E532711F7534200946AC2 /* SDLTTSChunkFactory.h in Headers */, - 81D0C2DA12010C1300E877A6 /* SDLDebugTool.h in Headers */, - 8134B0A71210866D0070668B /* SDLRPCRequest.h in Headers */, - 8134B0AB1210868B0070668B /* SDLRPCResponse.h in Headers */, - 8134B0AF1210869C0070668B /* SDLRPCNotification.h in Headers */, - 81758B0B1237FCBE00EF4CAC /* SDLProxyListener.h in Headers */, - 819EEAA6125A1CF40027947D /* SDLAddCommand.h in Headers */, - 819EEAA8125A1CF40027947D /* SDLAddCommandResponse.h in Headers */, - 819EEAAA125A1CF40027947D /* SDLAddSubMenu.h in Headers */, - 819EEAAC125A1CF40027947D /* SDLAddSubMenuResponse.h in Headers */, - 819EEAAE125A1CF40027947D /* SDLAlert.h in Headers */, - 819EEAB0125A1CF40027947D /* SDLAlertResponse.h in Headers */, - 819EEAB2125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.h in Headers */, - 819EEAB4125A1CF40027947D /* SDLAudioStreamingState.h in Headers */, - 819EEAB6125A1CF40027947D /* SDLButtonCapabilities.h in Headers */, - 819EEAB8125A1CF40027947D /* SDLButtonEventMode.h in Headers */, - 819EEABA125A1CF40027947D /* SDLButtonName.h in Headers */, - 819EEABC125A1CF40027947D /* SDLButtonPressMode.h in Headers */, - 819EEABE125A1CF40027947D /* SDLCharacterSet.h in Headers */, - 819EEAC0125A1CF40027947D /* SDLChoice.h in Headers */, - 819EEAC2125A1CF40027947D /* SDLCreateInteractionChoiceSet.h in Headers */, - 819EEAC4125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.h in Headers */, - 819EEAC6125A1CF40027947D /* SDLDeleteCommand.h in Headers */, - 819EEAC8125A1CF40027947D /* SDLDeleteCommandResponse.h in Headers */, - 819EEACA125A1CF40027947D /* SDLDeleteInteractionChoiceSet.h in Headers */, - 819EEACC125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.h in Headers */, - 819EEACE125A1CF40027947D /* SDLDeleteSubMenu.h in Headers */, - 819EEAD0125A1CF40027947D /* SDLDeleteSubMenuResponse.h in Headers */, - 819EEAD2125A1CF40027947D /* SDLDisplayCapabilities.h in Headers */, - 819EEAD4125A1CF40027947D /* SDLDisplayType.h in Headers */, - 819EEAD6125A1CF40027947D /* SDLGenericResponse.h in Headers */, - 819EEAD8125A1CF40027947D /* SDLGlobalProperty.h in Headers */, - 819EEADA125A1CF40027947D /* SDLHMILevel.h in Headers */, - 819EEADC125A1CF40027947D /* SDLHMIZoneCapabilities.h in Headers */, - 819EEADE125A1CF40027947D /* SDLInteractionMode.h in Headers */, - 819EEAE0125A1CF40027947D /* SDLLanguage.h in Headers */, - 819EEAE2125A1CF40027947D /* SDLMediaClockFormat.h in Headers */, - 819EEAE4125A1CF40027947D /* SDLMenuParams.h in Headers */, - 819EEAE6125A1CF40027947D /* SDLOnAppInterfaceUnregistered.h in Headers */, - 819EEAE8125A1CF40027947D /* SDLOnButtonEvent.h in Headers */, - 819EEAEA125A1CF40027947D /* SDLOnButtonPress.h in Headers */, - 819EEAEC125A1CF40027947D /* SDLOnCommand.h in Headers */, - 819EEAEE125A1CF40027947D /* SDLOnHMIStatus.h in Headers */, - 819EEAF0125A1CF40027947D /* SDLPerformInteraction.h in Headers */, - 819EEAF2125A1CF40027947D /* SDLPerformInteractionResponse.h in Headers */, - 819EEAF4125A1CF40027947D /* SDLRegisterAppInterface.h in Headers */, - 819EEAF6125A1CF40027947D /* SDLRegisterAppInterfaceResponse.h in Headers */, - 819EEAF8125A1CF40027947D /* SDLResetGlobalProperties.h in Headers */, - 819EEAFA125A1CF40027947D /* SDLResetGlobalPropertiesResponse.h in Headers */, - 819EEAFC125A1CF40027947D /* SDLResult.h in Headers */, - 819EEAFE125A1CF40027947D /* SDLSetGlobalProperties.h in Headers */, - 819EEB00125A1CF40027947D /* SDLSetGlobalPropertiesResponse.h in Headers */, - 819EEB02125A1CF40027947D /* SDLSetMediaClockTimer.h in Headers */, - 819EEB04125A1CF40027947D /* SDLSetMediaClockTimerResponse.h in Headers */, - 819EEB06125A1CF40027947D /* SDLShow.h in Headers */, - 819EEB08125A1CF40027947D /* SDLShowResponse.h in Headers */, - 819EEB0A125A1CF40027947D /* SDLSpeak.h in Headers */, - 819EEB0C125A1CF40027947D /* SDLSpeakResponse.h in Headers */, - 819EEB0E125A1CF40027947D /* SDLSpeechCapabilities.h in Headers */, - 819EEB10125A1CF40027947D /* SDLStartTime.h in Headers */, - 819EEB12125A1CF40027947D /* SDLSubscribeButton.h in Headers */, - 819EEB14125A1CF40027947D /* SDLSubscribeButtonResponse.h in Headers */, - 819EEB16125A1CF40027947D /* SDLMsgVersion.h in Headers */, - 819EEB18125A1CF40027947D /* SDLSystemContext.h in Headers */, - 819EEB1A125A1CF40027947D /* SDLTextAlignment.h in Headers */, - 819EEB1C125A1CF40027947D /* SDLTextField.h in Headers */, - 819EEB1E125A1CF40027947D /* SDLTextFieldName.h in Headers */, - 819EEB20125A1CF40027947D /* SDLTriggerSource.h in Headers */, - 819EEB22125A1CF40027947D /* SDLTTSChunk.h in Headers */, - 819EEB24125A1CF40027947D /* SDLUnregisterAppInterface.h in Headers */, - 819EEB26125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.h in Headers */, - 819EEB28125A1CF40027947D /* SDLUnsubscribeButton.h in Headers */, - 819EEB2A125A1CF40027947D /* SDLUnsubscribeButtonResponse.h in Headers */, - 819EEB2C125A1CF40027947D /* SDLUpdateMode.h in Headers */, - 819EEB2E125A1CF40027947D /* SDLVRCapabilities.h in Headers */, - 81FA2B3A127AEF1500B2B9A8 /* SDLConsoleController.h in Headers */, - 814DF65412AD5AEA00006788 /* SDLJingle.h in Headers */, - 7297D07212F1B5DF00EE4FBC /* SDLIProxy.h in Headers */, - 1825E726146D88D100B4CFAE /* SDLSiphonServer.h in Headers */, - 185095E2148EBDA6008E1780 /* SDLDriverDistractionState.h in Headers */, - 185095E4148EBDA6008E1780 /* SDLEncodedSyncPData.h in Headers */, - 185095E6148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.h in Headers */, - 185095E8148EBDA6008E1780 /* SDLOnDriverDistraction.h in Headers */, - 185095EA148EBDA6008E1780 /* SDLOnEncodedSyncPData.h in Headers */, - 185095EC148EBDA6008E1780 /* SDLOnTBTClientState.h in Headers */, - 185095EE148EBDA6008E1780 /* SDLTBTState.h in Headers */, - 27214DCF150693A9008C1798 /* SDLVersion.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - D2AAC07D0554694100DB518D /* SmartDeviceLinkProxy */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "SmartDeviceLinkProxy" */; - buildPhases = ( - D2AAC07A0554694100DB518D /* Headers */, - D2AAC07B0554694100DB518D /* Sources */, - D2AAC07C0554694100DB518D /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SmartDeviceLinkProxy; - productName = SyncProxy; - productReference = D2AAC07E0554694100DB518D /* libSmartDeviceLinkProxy.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0867D690FE84028FC02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0460; - }; - buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "SmartDeviceLinkProxy" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - en, - ); - mainGroup = 0867D691FE84028FC02AAC07 /* SyncProxy */; - productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - D2AAC07D0554694100DB518D /* SmartDeviceLinkProxy */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - D2AAC07B0554694100DB518D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EE7CB1C81141523E00B9CB6A /* SDLJsonDecoder.m in Sources */, - EE7CB1CA1141523E00B9CB6A /* SDLJsonEncoder.m in Sources */, - EE7CB1D01141523E00B9CB6A /* SDLProxy.m in Sources */, - EE7CB1D21141523E00B9CB6A /* SDLTCPTransport.m in Sources */, - EE7CB1D41141523E00B9CB6A /* SDLAbstractTransport.m in Sources */, - EE7CB1DE1141563F00B9CB6A /* SDLProtocolMessage.m in Sources */, - EE7CB1EF1141575A00B9CB6A /* SDLAbstractProtocol.m in Sources */, - EE7CB1F31141576500B9CB6A /* SDLProtocolFrameHeaderFactory.m in Sources */, - EE7CB22A11415A9C00B9CB6A /* NSObject+SBJSON.m in Sources */, - EE7CB22C11415A9C00B9CB6A /* NSString+SBJSON.m in Sources */, - EE7CB22E11415A9C00B9CB6A /* SBJSON.m in Sources */, - EE7CB23011415A9C00B9CB6A /* SBJsonBase.m in Sources */, - EE7CB23211415A9C00B9CB6A /* SBJsonParser.m in Sources */, - EE7CB23411415A9C00B9CB6A /* SBJsonWriter.m in Sources */, - EEB0806711454A63009C45EB /* SDLBitConverter.m in Sources */, - 815F874D11DCEEDA006E4379 /* SDLEnum.m in Sources */, - 815F874F11DCEEDA006E4379 /* SDLRPCMessage.m in Sources */, - 815F87C711DCEEDA006E4379 /* SDLProtocol.m in Sources */, - 814FAA1F11E3815100AD7FF3 /* SDLIAPTransport.m in Sources */, - 814FABB211E4D4E400AD7FF3 /* SDLProtocolFrameHeader.m in Sources */, - 8150481411F62DF300208A24 /* SDLRPCRequestFactory.m in Sources */, - 8150487D11F6352500208A24 /* SDLProxyFactory.m in Sources */, - 819E532811F7534200946AC2 /* SDLTTSChunkFactory.m in Sources */, - 81D0C2DB12010C1300E877A6 /* SDLDebugTool.m in Sources */, - 8134B0A81210866D0070668B /* SDLRPCRequest.m in Sources */, - 8134B0AC1210868B0070668B /* SDLRPCResponse.m in Sources */, - 8134B0B01210869C0070668B /* SDLRPCNotification.m in Sources */, - 819EEAA7125A1CF40027947D /* SDLAddCommand.m in Sources */, - 819EEAA9125A1CF40027947D /* SDLAddCommandResponse.m in Sources */, - 819EEAAB125A1CF40027947D /* SDLAddSubMenu.m in Sources */, - 819EEAAD125A1CF40027947D /* SDLAddSubMenuResponse.m in Sources */, - 819EEAAF125A1CF40027947D /* SDLAlert.m in Sources */, - 819EEAB1125A1CF40027947D /* SDLAlertResponse.m in Sources */, - 819EEAB3125A1CF40027947D /* SDLAppInterfaceUnregisteredReason.m in Sources */, - 819EEAB5125A1CF40027947D /* SDLAudioStreamingState.m in Sources */, - 819EEAB7125A1CF40027947D /* SDLButtonCapabilities.m in Sources */, - 819EEAB9125A1CF40027947D /* SDLButtonEventMode.m in Sources */, - 819EEABB125A1CF40027947D /* SDLButtonName.m in Sources */, - 819EEABD125A1CF40027947D /* SDLButtonPressMode.m in Sources */, - 819EEABF125A1CF40027947D /* SDLCharacterSet.m in Sources */, - 819EEAC1125A1CF40027947D /* SDLChoice.m in Sources */, - 819EEAC3125A1CF40027947D /* SDLCreateInteractionChoiceSet.m in Sources */, - 819EEAC5125A1CF40027947D /* SDLCreateInteractionChoiceSetResponse.m in Sources */, - 819EEAC7125A1CF40027947D /* SDLDeleteCommand.m in Sources */, - 819EEAC9125A1CF40027947D /* SDLDeleteCommandResponse.m in Sources */, - 819EEACB125A1CF40027947D /* SDLDeleteInteractionChoiceSet.m in Sources */, - 819EEACD125A1CF40027947D /* SDLDeleteInteractionChoiceSetResponse.m in Sources */, - 819EEACF125A1CF40027947D /* SDLDeleteSubMenu.m in Sources */, - 819EEAD1125A1CF40027947D /* SDLDeleteSubMenuResponse.m in Sources */, - 819EEAD3125A1CF40027947D /* SDLDisplayCapabilities.m in Sources */, - 819EEAD5125A1CF40027947D /* SDLDisplayType.m in Sources */, - 819EEAD7125A1CF40027947D /* SDLGenericResponse.m in Sources */, - 819EEAD9125A1CF40027947D /* SDLGlobalProperty.m in Sources */, - 819EEADB125A1CF40027947D /* SDLHMILevel.m in Sources */, - 819EEADD125A1CF40027947D /* SDLHMIZoneCapabilities.m in Sources */, - 819EEADF125A1CF40027947D /* SDLInteractionMode.m in Sources */, - 819EEAE1125A1CF40027947D /* SDLLanguage.m in Sources */, - 819EEAE3125A1CF40027947D /* SDLMediaClockFormat.m in Sources */, - 819EEAE5125A1CF40027947D /* SDLMenuParams.m in Sources */, - 819EEAE7125A1CF40027947D /* SDLOnAppInterfaceUnregistered.m in Sources */, - 819EEAE9125A1CF40027947D /* SDLOnButtonEvent.m in Sources */, - 819EEAEB125A1CF40027947D /* SDLOnButtonPress.m in Sources */, - 819EEAED125A1CF40027947D /* SDLOnCommand.m in Sources */, - 819EEAEF125A1CF40027947D /* SDLOnHMIStatus.m in Sources */, - 819EEAF1125A1CF40027947D /* SDLPerformInteraction.m in Sources */, - 819EEAF3125A1CF40027947D /* SDLPerformInteractionResponse.m in Sources */, - 819EEAF5125A1CF40027947D /* SDLRegisterAppInterface.m in Sources */, - 819EEAF7125A1CF40027947D /* SDLRegisterAppInterfaceResponse.m in Sources */, - 819EEAF9125A1CF40027947D /* SDLResetGlobalProperties.m in Sources */, - 819EEAFB125A1CF40027947D /* SDLResetGlobalPropertiesResponse.m in Sources */, - 819EEAFD125A1CF40027947D /* SDLResult.m in Sources */, - 819EEAFF125A1CF40027947D /* SDLSetGlobalProperties.m in Sources */, - 819EEB01125A1CF40027947D /* SDLSetGlobalPropertiesResponse.m in Sources */, - 819EEB03125A1CF40027947D /* SDLSetMediaClockTimer.m in Sources */, - 819EEB05125A1CF40027947D /* SDLSetMediaClockTimerResponse.m in Sources */, - 819EEB07125A1CF40027947D /* SDLShow.m in Sources */, - 819EEB09125A1CF40027947D /* SDLShowResponse.m in Sources */, - 819EEB0B125A1CF40027947D /* SDLSpeak.m in Sources */, - 819EEB0D125A1CF40027947D /* SDLSpeakResponse.m in Sources */, - 819EEB0F125A1CF40027947D /* SDLSpeechCapabilities.m in Sources */, - 819EEB11125A1CF40027947D /* SDLStartTime.m in Sources */, - 819EEB13125A1CF40027947D /* SDLSubscribeButton.m in Sources */, - 819EEB15125A1CF40027947D /* SDLSubscribeButtonResponse.m in Sources */, - 819EEB17125A1CF40027947D /* SDLMsgVersion.m in Sources */, - 819EEB19125A1CF40027947D /* SDLSystemContext.m in Sources */, - 819EEB1B125A1CF40027947D /* SDLTextAlignment.m in Sources */, - 819EEB1D125A1CF40027947D /* SDLTextField.m in Sources */, - 819EEB1F125A1CF40027947D /* SDLTextFieldName.m in Sources */, - 819EEB21125A1CF40027947D /* SDLTriggerSource.m in Sources */, - 819EEB23125A1CF40027947D /* SDLTTSChunk.m in Sources */, - 819EEB25125A1CF40027947D /* SDLUnregisterAppInterface.m in Sources */, - 819EEB27125A1CF40027947D /* SDLUnregisterAppInterfaceResponse.m in Sources */, - 819EEB29125A1CF40027947D /* SDLUnsubscribeButton.m in Sources */, - 819EEB2B125A1CF40027947D /* SDLUnsubscribeButtonResponse.m in Sources */, - 819EEB2D125A1CF40027947D /* SDLUpdateMode.m in Sources */, - 819EEB2F125A1CF40027947D /* SDLVRCapabilities.m in Sources */, - 81FA2B3B127AEF1500B2B9A8 /* SDLConsoleController.m in Sources */, - 814DF65512AD5AEA00006788 /* SDLJingle.m in Sources */, - 1825E727146D88D100B4CFAE /* SDLSiphonServer.m in Sources */, - 185095E3148EBDA6008E1780 /* SDLDriverDistractionState.m in Sources */, - 185095E5148EBDA6008E1780 /* SDLEncodedSyncPData.m in Sources */, - 185095E7148EBDA6008E1780 /* SDLEncodedSyncPDataResponse.m in Sources */, - 185095E9148EBDA6008E1780 /* SDLOnDriverDistraction.m in Sources */, - 185095EB148EBDA6008E1780 /* SDLOnEncodedSyncPData.m in Sources */, - 185095ED148EBDA6008E1780 /* SDLOnTBTClientState.m in Sources */, - 185095EF148EBDA6008E1780 /* SDLTBTState.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1DEB921F08733DC00010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DSTROOT = /tmp/SmartDeviceLinkProxy.dst; - GCC_DYNAMIC_NO_PIC = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = SmartDeviceLinkProxy_Prefix.pch; - GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; - GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = NO; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; - GCC_WARN_STRICT_SELECTOR_MATCH = NO; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNKNOWN_PRAGMAS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_LABEL = YES; - GCC_WARN_UNUSED_VALUE = YES; - INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; - PRODUCT_NAME = SmartDeviceLinkProxy; - PROVISIONING_PROFILE = ""; - RUN_CLANG_STATIC_ANALYZER = NO; - SDKROOT = iphoneos; - VALID_ARCHS = "armv7 armv7s i386"; - }; - name = Debug; - }; - 1DEB922008733DC00010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - DSTROOT = /tmp/SmartDeviceLinkProxy.dst; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = SmartDeviceLinkProxy_Prefix.pch; - GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; - GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = NO; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; - GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; - GCC_WARN_STRICT_SELECTOR_MATCH = NO; - GCC_WARN_UNDECLARED_SELECTOR = YES; - INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; - PRODUCT_NAME = SmartDeviceLinkProxy; - PROVISIONING_PROFILE = ""; - RUN_CLANG_STATIC_ANALYZER = NO; - SDKROOT = iphoneos; - VALID_ARCHS = "armv7 armv7s i386"; - }; - name = Release; - }; - 1DEB922308733DC00010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_VERSION = ""; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = SmartDeviceLinkProxy; - PROVISIONING_PROFILE = ""; - SDKROOT = iphoneos; - VALID_ARCHS = "armv7 armv7s"; - }; - name = Debug; - }; - 1DEB922408733DC00010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_VERSION = ""; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = SmartDeviceLinkProxy; - PROVISIONING_PROFILE = ""; - SDKROOT = iphoneos; - VALID_ARCHS = "armv7 armv7s"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "SmartDeviceLinkProxy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB921F08733DC00010E9CD /* Debug */, - 1DEB922008733DC00010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "SmartDeviceLinkProxy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB922308733DC00010E9CD /* Debug */, - 1DEB922408733DC00010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0867D690FE84028FC02AAC07 /* Project object */; -} diff --git a/SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 3688588..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy_Prefix.pch b/SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy_Prefix.pch deleted file mode 100644 index bfb7394..0000000 --- a/SDL_iOS/SmartDeviceLinkProxy/SmartDeviceLinkProxy_Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'CocoaTouchStaticLibrary' target in the 'CocoaTouchStaticLibrary' project. -// - -#ifdef __OBJC__ - #import -#endif diff --git a/SDL_iOS/SmartDeviceLinkTester/Default-568h@2x.png b/SDL_iOS/SmartDeviceLinkTester/Default-568h@2x.png deleted file mode 100644 index 0891b7aabfcf3422423b109c8beed2bab838c607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester.xcodeproj/project.pbxproj b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester.xcodeproj/project.pbxproj deleted file mode 100644 index 7390c05..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester.xcodeproj/project.pbxproj +++ /dev/null @@ -1,650 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 0728C88D15DBF1B400A83097 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0728C88C15DBF1B400A83097 /* MessageUI.framework */; }; - 0765727315C9C47500E21611 /* database.png in Resources */ = {isa = PBXBuildFile; fileRef = 0765727215C9C47500E21611 /* database.png */; }; - 077869AC15C01C0000FE9390 /* AddMenuOption.m in Sources */ = {isa = PBXBuildFile; fileRef = 077869AB15C01BFF00FE9390 /* AddMenuOption.m */; }; - 0789F35515AF40CA00ADEF80 /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0789F35315AF40C900ADEF80 /* ConsoleViewController.m */; }; - 0789F35615AF40CA00ADEF80 /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0789F35415AF40C900ADEF80 /* ConsoleViewController.xib */; }; - 0789F35A15AF65AF00ADEF80 /* UserTestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0789F35815AF65AF00ADEF80 /* UserTestViewController.m */; }; - 0789F35B15AF65AF00ADEF80 /* UserTestViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0789F35915AF65AF00ADEF80 /* UserTestViewController.xib */; }; - 0789F35F15AF6B2300ADEF80 /* Blank-Blackboard-PSD.png in Resources */ = {isa = PBXBuildFile; fileRef = 0789F35E15AF6B2300ADEF80 /* Blank-Blackboard-PSD.png */; }; - 0789F37415B06BF300ADEF80 /* cog_02@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0789F37315B06BF300ADEF80 /* cog_02@2x.png */; }; - 0789F37615B06BFD00ADEF80 /* cog_02.png in Resources */ = {isa = PBXBuildFile; fileRef = 0789F37515B06BFD00ADEF80 /* cog_02.png */; }; - 0789F37815B06C6500ADEF80 /* game_controller.png in Resources */ = {isa = PBXBuildFile; fileRef = 0789F37715B06C6500ADEF80 /* game_controller.png */; }; - 079E7D68159A43E800181934 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 079E7D67159A43E800181934 /* UIKit.framework */; }; - 079E7D6A159A43E800181934 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 079E7D69159A43E800181934 /* Foundation.framework */; }; - 079E7D6C159A43E800181934 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 079E7D6B159A43E800181934 /* CoreGraphics.framework */; }; - 079E7D72159A43E800181934 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 079E7D70159A43E800181934 /* InfoPlist.strings */; }; - 079E7D74159A43E800181934 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 079E7D73159A43E800181934 /* main.m */; }; - 079E7D78159A43E800181934 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 079E7D77159A43E800181934 /* AppDelegate.m */; }; - 079E7D95159A472300181934 /* SDLBrain.m in Sources */ = {isa = PBXBuildFile; fileRef = 079E7D94159A472300181934 /* SDLBrain.m */; }; - 079E7D9D159A489F00181934 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 079E7D9C159A489F00181934 /* AVFoundation.framework */; }; - 07B19A4215B46ADE00E6D316 /* geogia_alert.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A3F15B46ADE00E6D316 /* geogia_alert.jpg */; }; - 07B19A4315B46ADE00E6D316 /* cali_speak.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A4015B46ADE00E6D316 /* cali_speak.jpg */; }; - 07B19A4615B46BA400E6D316 /* colorado_addcmd.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A4515B46BA400E6D316 /* colorado_addcmd.jpg */; }; - 07B19A4A15B46C4700E6D316 /* AutoTestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19A4815B46C4700E6D316 /* AutoTestViewController.m */; }; - 07B19A4B15B46C4700E6D316 /* AutoTestViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A4915B46C4700E6D316 /* AutoTestViewController.xib */; }; - 07B19A4D15B48DA100E6D316 /* delaware_show.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A4C15B48DA100E6D316 /* delaware_show.jpg */; }; - 07B19A6715B5BF7500E6D316 /* brief_case.png in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A6615B5BF7500E6D316 /* brief_case.png */; }; - 07B19A6B15B9812F00E6D316 /* RPCTestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19A6915B9812E00E6D316 /* RPCTestViewController.m */; }; - 07B19A6C15B9812F00E6D316 /* RPCTestViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A6A15B9812F00E6D316 /* RPCTestViewController.xib */; }; - 07B19A8115B99C3200E6D316 /* SpeakViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19A7F15B99C3200E6D316 /* SpeakViewController.m */; }; - 07B19A8215B99C3200E6D316 /* SpeakViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A8015B99C3200E6D316 /* SpeakViewController.xib */; }; - 07B19A8615B99E4A00E6D316 /* ShowViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19A8415B99E4A00E6D316 /* ShowViewController.m */; }; - 07B19A8715B99E4A00E6D316 /* ShowViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A8515B99E4A00E6D316 /* ShowViewController.xib */; }; - 07B19A8B15B99F0800E6D316 /* UnregisterAppInterfaceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19A8915B99F0800E6D316 /* UnregisterAppInterfaceViewController.m */; }; - 07B19A8C15B99F0800E6D316 /* UnregisterAppInterfaceViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A8A15B99F0800E6D316 /* UnregisterAppInterfaceViewController.xib */; }; - 07B19A9015B99F1600E6D316 /* AlertViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19A8E15B99F1500E6D316 /* AlertViewController.m */; }; - 07B19A9115B99F1600E6D316 /* AlertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A8F15B99F1500E6D316 /* AlertViewController.xib */; }; - 07B19A9515B99F2500E6D316 /* SetMediaClockTimerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19A9315B99F2400E6D316 /* SetMediaClockTimerViewController.m */; }; - 07B19A9615B99F2500E6D316 /* SetMediaClockTimerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A9415B99F2400E6D316 /* SetMediaClockTimerViewController.xib */; }; - 07B19A9A15B99F3000E6D316 /* AddCommandViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19A9815B99F2F00E6D316 /* AddCommandViewController.m */; }; - 07B19A9B15B99F3000E6D316 /* AddCommandViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A9915B99F2F00E6D316 /* AddCommandViewController.xib */; }; - 07B19A9F15B99F3C00E6D316 /* DeleteCommandViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19A9D15B99F3B00E6D316 /* DeleteCommandViewController.m */; }; - 07B19AA015B99F3C00E6D316 /* DeleteCommandViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19A9E15B99F3C00E6D316 /* DeleteCommandViewController.xib */; }; - 07B19AA415B99F4A00E6D316 /* AddSubMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19AA215B99F4900E6D316 /* AddSubMenuViewController.m */; }; - 07B19AA515B99F4A00E6D316 /* AddSubMenuViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19AA315B99F4A00E6D316 /* AddSubMenuViewController.xib */; }; - 07B19AA915B99F5D00E6D316 /* DeleteSubMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19AA715B99F5B00E6D316 /* DeleteSubMenuViewController.m */; }; - 07B19AAA15B99F5D00E6D316 /* DeleteSubMenuViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19AA815B99F5C00E6D316 /* DeleteSubMenuViewController.xib */; }; - 07B19AAE15B99F6E00E6D316 /* CreateInteractionChoiceSetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19AAC15B99F6D00E6D316 /* CreateInteractionChoiceSetViewController.m */; }; - 07B19AAF15B99F6E00E6D316 /* CreateInteractionChoiceSetViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19AAD15B99F6D00E6D316 /* CreateInteractionChoiceSetViewController.xib */; }; - 07B19AB315B99F8500E6D316 /* DeleteInteractionChoiceSetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19AB115B99F8300E6D316 /* DeleteInteractionChoiceSetViewController.m */; }; - 07B19AB415B99F8500E6D316 /* DeleteInteractionChoiceSetViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19AB215B99F8400E6D316 /* DeleteInteractionChoiceSetViewController.xib */; }; - 07B19AB815B99F9500E6D316 /* PerformInteractionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19AB615B99F9400E6D316 /* PerformInteractionViewController.m */; }; - 07B19AB915B99F9500E6D316 /* PerformInteractionViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19AB715B99F9400E6D316 /* PerformInteractionViewController.xib */; }; - 07B19AC215B99FBD00E6D316 /* EncodedSyncPDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19AC015B99FBC00E6D316 /* EncodedSyncPDataViewController.m */; }; - 07B19AC315B99FBD00E6D316 /* EncodedSyncPDataViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19AC115B99FBD00E6D316 /* EncodedSyncPDataViewController.xib */; }; - 07B19AC715B99FDE00E6D316 /* UnsubscribeButtonViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19AC515B99FDC00E6D316 /* UnsubscribeButtonViewController.m */; }; - 07B19AC815B99FDE00E6D316 /* UnsubscribeButtonViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19AC615B99FDD00E6D316 /* UnsubscribeButtonViewController.xib */; }; - 07B19ACC15B99FEF00E6D316 /* SetGlobalPropertiesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19ACA15B99FED00E6D316 /* SetGlobalPropertiesViewController.m */; }; - 07B19ACD15B99FEF00E6D316 /* SetGlobalPropertiesViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19ACB15B99FEE00E6D316 /* SetGlobalPropertiesViewController.xib */; }; - 07B19AD115B9A00900E6D316 /* ResetGlobalPropertiesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B19ACF15B9A00800E6D316 /* ResetGlobalPropertiesViewController.m */; }; - 07B19AD215B9A00900E6D316 /* ResetGlobalPropertiesViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07B19AD015B9A00900E6D316 /* ResetGlobalPropertiesViewController.xib */; }; - 07C35C41159E1A7200CDA3D3 /* ExternalAccessory.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07C35C40159E1A7100CDA3D3 /* ExternalAccessory.framework */; }; - 07C7E11915B9A5940035681D /* SubscribeButtonViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 07C7E11715B9A5940035681D /* SubscribeButtonViewController.m */; }; - 07C7E11A15B9A5940035681D /* SubscribeButtonViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 07C7E11815B9A5940035681D /* SubscribeButtonViewController.xib */; }; - 07C7E13015B9CF5C0035681D /* arrow_up.png in Resources */ = {isa = PBXBuildFile; fileRef = 07C7E12F15B9CF5C0035681D /* arrow_up.png */; }; - 07C7E13215B9CF7A0035681D /* arrow_down.png in Resources */ = {isa = PBXBuildFile; fileRef = 07C7E13115B9CF7A0035681D /* arrow_down.png */; }; - 07C7E13415B9CF840035681D /* play.png in Resources */ = {isa = PBXBuildFile; fileRef = 07C7E13315B9CF840035681D /* play.png */; }; - 07C7E13615B9CF8C0035681D /* pause.png in Resources */ = {isa = PBXBuildFile; fileRef = 07C7E13515B9CF8C0035681D /* pause.png */; }; - 07CBB64B15EBE3DD00895165 /* Sail.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 07CBB64A15EBE3DD00895165 /* Sail.mp3 */; }; - 07E6721415EBC71A00949DF1 /* eraser.png in Resources */ = {isa = PBXBuildFile; fileRef = 07E6721315EBC71A00949DF1 /* eraser.png */; }; - 5909E4AD16D31DAF00020F57 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5909E4AC16D31DAF00020F57 /* Default-568h@2x.png */; }; - 59E5173016F6CFA30082CFB8 /* libSmartDeviceLinkProxy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 59E5172F16F6CF950082CFB8 /* libSmartDeviceLinkProxy.a */; }; - FABDB8E1160A5D510036DE64 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = FABDB8E0160A5D510036DE64 /* Settings.bundle */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 59E5172E16F6CF950082CFB8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 59E5172A16F6CF950082CFB8 /* SmartDeviceLinkProxy.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D2AAC07E0554694100DB518D; - remoteInfo = SmartDeviceLinkProxy; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 0728C88C15DBF1B400A83097 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; - 0765727215C9C47500E21611 /* database.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = database.png; sourceTree = ""; }; - 077869AA15C01BFD00FE9390 /* AddMenuOption.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddMenuOption.h; sourceTree = ""; }; - 077869AB15C01BFF00FE9390 /* AddMenuOption.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddMenuOption.m; sourceTree = ""; }; - 0789F35215AF40C900ADEF80 /* ConsoleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleViewController.h; sourceTree = ""; }; - 0789F35315AF40C900ADEF80 /* ConsoleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConsoleViewController.m; sourceTree = ""; }; - 0789F35415AF40C900ADEF80 /* ConsoleViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConsoleViewController.xib; sourceTree = ""; }; - 0789F35715AF65AF00ADEF80 /* UserTestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserTestViewController.h; sourceTree = ""; }; - 0789F35815AF65AF00ADEF80 /* UserTestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserTestViewController.m; sourceTree = ""; }; - 0789F35915AF65AF00ADEF80 /* UserTestViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UserTestViewController.xib; sourceTree = ""; }; - 0789F35E15AF6B2300ADEF80 /* Blank-Blackboard-PSD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Blank-Blackboard-PSD.png"; sourceTree = ""; }; - 0789F37315B06BF300ADEF80 /* cog_02@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cog_02@2x.png"; sourceTree = ""; }; - 0789F37515B06BFD00ADEF80 /* cog_02.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cog_02.png; sourceTree = ""; }; - 0789F37715B06C6500ADEF80 /* game_controller.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = game_controller.png; sourceTree = ""; }; - 079E7D63159A43E800181934 /* SDLTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SDLTester.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 079E7D67159A43E800181934 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 079E7D69159A43E800181934 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 079E7D6B159A43E800181934 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 079E7D6F159A43E800181934 /* SmartDeviceLinkTester-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SmartDeviceLinkTester-Info.plist"; sourceTree = ""; }; - 079E7D71159A43E800181934 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 079E7D73159A43E800181934 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 079E7D75159A43E800181934 /* SmartDeviceLinkTester-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SmartDeviceLinkTester-Prefix.pch"; sourceTree = ""; }; - 079E7D76159A43E800181934 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 079E7D77159A43E800181934 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 079E7D93159A472300181934 /* SDLBrain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLBrain.h; sourceTree = ""; }; - 079E7D94159A472300181934 /* SDLBrain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLBrain.m; sourceTree = ""; }; - 079E7D9C159A489F00181934 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - 07B19A3F15B46ADE00E6D316 /* geogia_alert.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = geogia_alert.jpg; sourceTree = ""; }; - 07B19A4015B46ADE00E6D316 /* cali_speak.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = cali_speak.jpg; sourceTree = ""; }; - 07B19A4515B46BA400E6D316 /* colorado_addcmd.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = colorado_addcmd.jpg; sourceTree = ""; }; - 07B19A4715B46C4700E6D316 /* AutoTestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AutoTestViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 07B19A4815B46C4700E6D316 /* AutoTestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AutoTestViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 07B19A4915B46C4700E6D316 /* AutoTestViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AutoTestViewController.xib; sourceTree = ""; }; - 07B19A4C15B48DA100E6D316 /* delaware_show.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = delaware_show.jpg; sourceTree = ""; }; - 07B19A6615B5BF7500E6D316 /* brief_case.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = brief_case.png; sourceTree = ""; }; - 07B19A6815B9812D00E6D316 /* RPCTestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RPCTestViewController.h; sourceTree = ""; }; - 07B19A6915B9812E00E6D316 /* RPCTestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RPCTestViewController.m; sourceTree = ""; }; - 07B19A6A15B9812F00E6D316 /* RPCTestViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RPCTestViewController.xib; sourceTree = ""; }; - 07B19A7E15B99C3200E6D316 /* SpeakViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeakViewController.h; sourceTree = ""; }; - 07B19A7F15B99C3200E6D316 /* SpeakViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpeakViewController.m; sourceTree = ""; }; - 07B19A8015B99C3200E6D316 /* SpeakViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SpeakViewController.xib; sourceTree = ""; }; - 07B19A8315B99E4A00E6D316 /* ShowViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShowViewController.h; sourceTree = ""; }; - 07B19A8415B99E4A00E6D316 /* ShowViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShowViewController.m; sourceTree = ""; }; - 07B19A8515B99E4A00E6D316 /* ShowViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ShowViewController.xib; sourceTree = ""; }; - 07B19A8815B99F0800E6D316 /* UnregisterAppInterfaceViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnregisterAppInterfaceViewController.h; sourceTree = ""; }; - 07B19A8915B99F0800E6D316 /* UnregisterAppInterfaceViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnregisterAppInterfaceViewController.m; sourceTree = ""; }; - 07B19A8A15B99F0800E6D316 /* UnregisterAppInterfaceViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UnregisterAppInterfaceViewController.xib; sourceTree = ""; }; - 07B19A8D15B99F1500E6D316 /* AlertViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = AlertViewController.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - 07B19A8E15B99F1500E6D316 /* AlertViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = AlertViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - 07B19A8F15B99F1500E6D316 /* AlertViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AlertViewController.xib; sourceTree = ""; }; - 07B19A9215B99F2400E6D316 /* SetMediaClockTimerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetMediaClockTimerViewController.h; sourceTree = ""; }; - 07B19A9315B99F2400E6D316 /* SetMediaClockTimerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SetMediaClockTimerViewController.m; sourceTree = ""; }; - 07B19A9415B99F2400E6D316 /* SetMediaClockTimerViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SetMediaClockTimerViewController.xib; sourceTree = ""; }; - 07B19A9715B99F2F00E6D316 /* AddCommandViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddCommandViewController.h; sourceTree = ""; }; - 07B19A9815B99F2F00E6D316 /* AddCommandViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddCommandViewController.m; sourceTree = ""; }; - 07B19A9915B99F2F00E6D316 /* AddCommandViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AddCommandViewController.xib; sourceTree = ""; }; - 07B19A9C15B99F3B00E6D316 /* DeleteCommandViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteCommandViewController.h; sourceTree = ""; }; - 07B19A9D15B99F3B00E6D316 /* DeleteCommandViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeleteCommandViewController.m; sourceTree = ""; }; - 07B19A9E15B99F3C00E6D316 /* DeleteCommandViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DeleteCommandViewController.xib; sourceTree = ""; }; - 07B19AA115B99F4900E6D316 /* AddSubMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddSubMenuViewController.h; sourceTree = ""; }; - 07B19AA215B99F4900E6D316 /* AddSubMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddSubMenuViewController.m; sourceTree = ""; }; - 07B19AA315B99F4A00E6D316 /* AddSubMenuViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AddSubMenuViewController.xib; sourceTree = ""; }; - 07B19AA615B99F5B00E6D316 /* DeleteSubMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteSubMenuViewController.h; sourceTree = ""; }; - 07B19AA715B99F5B00E6D316 /* DeleteSubMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeleteSubMenuViewController.m; sourceTree = ""; }; - 07B19AA815B99F5C00E6D316 /* DeleteSubMenuViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DeleteSubMenuViewController.xib; sourceTree = ""; }; - 07B19AAB15B99F6C00E6D316 /* CreateInteractionChoiceSetViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateInteractionChoiceSetViewController.h; sourceTree = ""; }; - 07B19AAC15B99F6D00E6D316 /* CreateInteractionChoiceSetViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CreateInteractionChoiceSetViewController.m; sourceTree = ""; }; - 07B19AAD15B99F6D00E6D316 /* CreateInteractionChoiceSetViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CreateInteractionChoiceSetViewController.xib; sourceTree = ""; }; - 07B19AB015B99F8300E6D316 /* DeleteInteractionChoiceSetViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteInteractionChoiceSetViewController.h; sourceTree = ""; }; - 07B19AB115B99F8300E6D316 /* DeleteInteractionChoiceSetViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DeleteInteractionChoiceSetViewController.m; sourceTree = ""; }; - 07B19AB215B99F8400E6D316 /* DeleteInteractionChoiceSetViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DeleteInteractionChoiceSetViewController.xib; sourceTree = ""; }; - 07B19AB515B99F9300E6D316 /* PerformInteractionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PerformInteractionViewController.h; sourceTree = ""; }; - 07B19AB615B99F9400E6D316 /* PerformInteractionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PerformInteractionViewController.m; sourceTree = ""; }; - 07B19AB715B99F9400E6D316 /* PerformInteractionViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PerformInteractionViewController.xib; sourceTree = ""; }; - 07B19ABF15B99FBB00E6D316 /* EncodedSyncPDataViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EncodedSyncPDataViewController.h; sourceTree = ""; }; - 07B19AC015B99FBC00E6D316 /* EncodedSyncPDataViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EncodedSyncPDataViewController.m; sourceTree = ""; }; - 07B19AC115B99FBD00E6D316 /* EncodedSyncPDataViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = EncodedSyncPDataViewController.xib; sourceTree = ""; }; - 07B19AC415B99FDB00E6D316 /* UnsubscribeButtonViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UnsubscribeButtonViewController.h; sourceTree = ""; }; - 07B19AC515B99FDC00E6D316 /* UnsubscribeButtonViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UnsubscribeButtonViewController.m; sourceTree = ""; }; - 07B19AC615B99FDD00E6D316 /* UnsubscribeButtonViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UnsubscribeButtonViewController.xib; sourceTree = ""; }; - 07B19AC915B99FEC00E6D316 /* SetGlobalPropertiesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetGlobalPropertiesViewController.h; sourceTree = ""; }; - 07B19ACA15B99FED00E6D316 /* SetGlobalPropertiesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SetGlobalPropertiesViewController.m; sourceTree = ""; }; - 07B19ACB15B99FEE00E6D316 /* SetGlobalPropertiesViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SetGlobalPropertiesViewController.xib; sourceTree = ""; }; - 07B19ACE15B9A00700E6D316 /* ResetGlobalPropertiesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResetGlobalPropertiesViewController.h; sourceTree = ""; }; - 07B19ACF15B9A00800E6D316 /* ResetGlobalPropertiesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ResetGlobalPropertiesViewController.m; sourceTree = ""; }; - 07B19AD015B9A00900E6D316 /* ResetGlobalPropertiesViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ResetGlobalPropertiesViewController.xib; sourceTree = ""; }; - 07C35C40159E1A7100CDA3D3 /* ExternalAccessory.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ExternalAccessory.framework; path = System/Library/Frameworks/ExternalAccessory.framework; sourceTree = SDKROOT; }; - 07C7E11615B9A5940035681D /* SubscribeButtonViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubscribeButtonViewController.h; sourceTree = ""; }; - 07C7E11715B9A5940035681D /* SubscribeButtonViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SubscribeButtonViewController.m; sourceTree = ""; }; - 07C7E11815B9A5940035681D /* SubscribeButtonViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SubscribeButtonViewController.xib; sourceTree = ""; }; - 07C7E12F15B9CF5C0035681D /* arrow_up.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_up.png; sourceTree = ""; }; - 07C7E13115B9CF7A0035681D /* arrow_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_down.png; sourceTree = ""; }; - 07C7E13315B9CF840035681D /* play.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = play.png; sourceTree = ""; }; - 07C7E13515B9CF8C0035681D /* pause.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pause.png; sourceTree = ""; }; - 07CBB64A15EBE3DD00895165 /* Sail.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = Sail.mp3; sourceTree = ""; }; - 07E6721315EBC71A00949DF1 /* eraser.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = eraser.png; sourceTree = ""; }; - 5909E4AC16D31DAF00020F57 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; - 59E5172A16F6CF950082CFB8 /* SmartDeviceLinkProxy.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SmartDeviceLinkProxy.xcodeproj; path = ../SmartDeviceLinkProxy/SmartDeviceLinkProxy.xcodeproj; sourceTree = ""; }; - FABDB8E0160A5D510036DE64 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 079E7D60159A43E800181934 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 59E5173016F6CFA30082CFB8 /* libSmartDeviceLinkProxy.a in Frameworks */, - 0728C88D15DBF1B400A83097 /* MessageUI.framework in Frameworks */, - 07C35C41159E1A7200CDA3D3 /* ExternalAccessory.framework in Frameworks */, - 079E7D9D159A489F00181934 /* AVFoundation.framework in Frameworks */, - 079E7D68159A43E800181934 /* UIKit.framework in Frameworks */, - 079E7D6A159A43E800181934 /* Foundation.framework in Frameworks */, - 079E7D6C159A43E800181934 /* CoreGraphics.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 079E7D58159A43E800181934 = { - isa = PBXGroup; - children = ( - 59E5172A16F6CF950082CFB8 /* SmartDeviceLinkProxy.xcodeproj */, - 0728C88C15DBF1B400A83097 /* MessageUI.framework */, - 07C35C40159E1A7100CDA3D3 /* ExternalAccessory.framework */, - 079E7D9C159A489F00181934 /* AVFoundation.framework */, - 079E7D6D159A43E800181934 /* SmartDeviceLinkTester */, - 079E7D66159A43E800181934 /* Frameworks */, - 079E7D64159A43E800181934 /* Products */, - 5909E4AC16D31DAF00020F57 /* Default-568h@2x.png */, - ); - sourceTree = ""; - }; - 079E7D64159A43E800181934 /* Products */ = { - isa = PBXGroup; - children = ( - 079E7D63159A43E800181934 /* SDLTester.app */, - ); - name = Products; - sourceTree = ""; - }; - 079E7D66159A43E800181934 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 079E7D67159A43E800181934 /* UIKit.framework */, - 079E7D69159A43E800181934 /* Foundation.framework */, - 079E7D6B159A43E800181934 /* CoreGraphics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 079E7D6D159A43E800181934 /* SmartDeviceLinkTester */ = { - isa = PBXGroup; - children = ( - 07B19A7815B9994B00E6D316 /* RPC */, - 079E7D76159A43E800181934 /* AppDelegate.h */, - 079E7D77159A43E800181934 /* AppDelegate.m */, - 0789F35715AF65AF00ADEF80 /* UserTestViewController.h */, - 0789F35815AF65AF00ADEF80 /* UserTestViewController.m */, - 0789F35915AF65AF00ADEF80 /* UserTestViewController.xib */, - 07B19A6815B9812D00E6D316 /* RPCTestViewController.h */, - 07B19A6915B9812E00E6D316 /* RPCTestViewController.m */, - 07B19A6A15B9812F00E6D316 /* RPCTestViewController.xib */, - 079E7D93159A472300181934 /* SDLBrain.h */, - 079E7D94159A472300181934 /* SDLBrain.m */, - 07B19A4715B46C4700E6D316 /* AutoTestViewController.h */, - 07B19A4815B46C4700E6D316 /* AutoTestViewController.m */, - 07B19A4915B46C4700E6D316 /* AutoTestViewController.xib */, - 0789F35215AF40C900ADEF80 /* ConsoleViewController.h */, - 0789F35315AF40C900ADEF80 /* ConsoleViewController.m */, - 0789F35415AF40C900ADEF80 /* ConsoleViewController.xib */, - 079E7D92159A441100181934 /* Images */, - 079E7D6E159A43E800181934 /* Supporting Files */, - FABDB8E0160A5D510036DE64 /* Settings.bundle */, - ); - path = SmartDeviceLinkTester; - sourceTree = ""; - }; - 079E7D6E159A43E800181934 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 07CBB64A15EBE3DD00895165 /* Sail.mp3 */, - 079E7D6F159A43E800181934 /* SmartDeviceLinkTester-Info.plist */, - 079E7D70159A43E800181934 /* InfoPlist.strings */, - 079E7D73159A43E800181934 /* main.m */, - 079E7D75159A43E800181934 /* SmartDeviceLinkTester-Prefix.pch */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 079E7D92159A441100181934 /* Images */ = { - isa = PBXGroup; - children = ( - 07E6721315EBC71A00949DF1 /* eraser.png */, - 0765727215C9C47500E21611 /* database.png */, - 07C7E13515B9CF8C0035681D /* pause.png */, - 07C7E13315B9CF840035681D /* play.png */, - 07C7E13115B9CF7A0035681D /* arrow_down.png */, - 07C7E12F15B9CF5C0035681D /* arrow_up.png */, - 07B19A6615B5BF7500E6D316 /* brief_case.png */, - 07B19A4C15B48DA100E6D316 /* delaware_show.jpg */, - 07B19A4515B46BA400E6D316 /* colorado_addcmd.jpg */, - 07B19A3F15B46ADE00E6D316 /* geogia_alert.jpg */, - 07B19A4015B46ADE00E6D316 /* cali_speak.jpg */, - 0789F37715B06C6500ADEF80 /* game_controller.png */, - 0789F37515B06BFD00ADEF80 /* cog_02.png */, - 0789F37315B06BF300ADEF80 /* cog_02@2x.png */, - 0789F35E15AF6B2300ADEF80 /* Blank-Blackboard-PSD.png */, - ); - name = Images; - sourceTree = ""; - }; - 07B19A7815B9994B00E6D316 /* RPC */ = { - isa = PBXGroup; - children = ( - 07B19A7E15B99C3200E6D316 /* SpeakViewController.h */, - 07B19A7F15B99C3200E6D316 /* SpeakViewController.m */, - 07B19A8015B99C3200E6D316 /* SpeakViewController.xib */, - 07B19A8315B99E4A00E6D316 /* ShowViewController.h */, - 07B19A8415B99E4A00E6D316 /* ShowViewController.m */, - 07B19A8515B99E4A00E6D316 /* ShowViewController.xib */, - 07B19A8815B99F0800E6D316 /* UnregisterAppInterfaceViewController.h */, - 07B19A8915B99F0800E6D316 /* UnregisterAppInterfaceViewController.m */, - 07B19A8A15B99F0800E6D316 /* UnregisterAppInterfaceViewController.xib */, - 07B19A8D15B99F1500E6D316 /* AlertViewController.h */, - 07B19A8E15B99F1500E6D316 /* AlertViewController.m */, - 07B19A8F15B99F1500E6D316 /* AlertViewController.xib */, - 07B19A9215B99F2400E6D316 /* SetMediaClockTimerViewController.h */, - 07B19A9315B99F2400E6D316 /* SetMediaClockTimerViewController.m */, - 07B19A9415B99F2400E6D316 /* SetMediaClockTimerViewController.xib */, - 07B19A9715B99F2F00E6D316 /* AddCommandViewController.h */, - 07B19A9815B99F2F00E6D316 /* AddCommandViewController.m */, - 07B19A9915B99F2F00E6D316 /* AddCommandViewController.xib */, - 07B19A9C15B99F3B00E6D316 /* DeleteCommandViewController.h */, - 07B19A9D15B99F3B00E6D316 /* DeleteCommandViewController.m */, - 07B19A9E15B99F3C00E6D316 /* DeleteCommandViewController.xib */, - 07B19AA115B99F4900E6D316 /* AddSubMenuViewController.h */, - 07B19AA215B99F4900E6D316 /* AddSubMenuViewController.m */, - 07B19AA315B99F4A00E6D316 /* AddSubMenuViewController.xib */, - 07B19AA615B99F5B00E6D316 /* DeleteSubMenuViewController.h */, - 07B19AA715B99F5B00E6D316 /* DeleteSubMenuViewController.m */, - 07B19AA815B99F5C00E6D316 /* DeleteSubMenuViewController.xib */, - 07B19AAB15B99F6C00E6D316 /* CreateInteractionChoiceSetViewController.h */, - 07B19AAC15B99F6D00E6D316 /* CreateInteractionChoiceSetViewController.m */, - 07B19AAD15B99F6D00E6D316 /* CreateInteractionChoiceSetViewController.xib */, - 07B19AB015B99F8300E6D316 /* DeleteInteractionChoiceSetViewController.h */, - 07B19AB115B99F8300E6D316 /* DeleteInteractionChoiceSetViewController.m */, - 07B19AB215B99F8400E6D316 /* DeleteInteractionChoiceSetViewController.xib */, - 07B19AB515B99F9300E6D316 /* PerformInteractionViewController.h */, - 07B19AB615B99F9400E6D316 /* PerformInteractionViewController.m */, - 07B19AB715B99F9400E6D316 /* PerformInteractionViewController.xib */, - 07B19ABF15B99FBB00E6D316 /* EncodedSyncPDataViewController.h */, - 07B19AC015B99FBC00E6D316 /* EncodedSyncPDataViewController.m */, - 07B19AC115B99FBD00E6D316 /* EncodedSyncPDataViewController.xib */, - 07C7E11615B9A5940035681D /* SubscribeButtonViewController.h */, - 07C7E11715B9A5940035681D /* SubscribeButtonViewController.m */, - 07C7E11815B9A5940035681D /* SubscribeButtonViewController.xib */, - 07B19AC415B99FDB00E6D316 /* UnsubscribeButtonViewController.h */, - 07B19AC515B99FDC00E6D316 /* UnsubscribeButtonViewController.m */, - 07B19AC615B99FDD00E6D316 /* UnsubscribeButtonViewController.xib */, - 07B19AC915B99FEC00E6D316 /* SetGlobalPropertiesViewController.h */, - 07B19ACA15B99FED00E6D316 /* SetGlobalPropertiesViewController.m */, - 07B19ACB15B99FEE00E6D316 /* SetGlobalPropertiesViewController.xib */, - 07B19ACE15B9A00700E6D316 /* ResetGlobalPropertiesViewController.h */, - 07B19ACF15B9A00800E6D316 /* ResetGlobalPropertiesViewController.m */, - 07B19AD015B9A00900E6D316 /* ResetGlobalPropertiesViewController.xib */, - 077869AA15C01BFD00FE9390 /* AddMenuOption.h */, - 077869AB15C01BFF00FE9390 /* AddMenuOption.m */, - ); - name = RPC; - sourceTree = ""; - }; - 59E5172B16F6CF950082CFB8 /* Products */ = { - isa = PBXGroup; - children = ( - 59E5172F16F6CF950082CFB8 /* libSmartDeviceLinkProxy.a */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 079E7D62159A43E800181934 /* SmartDeviceLinkTester */ = { - isa = PBXNativeTarget; - buildConfigurationList = 079E7D8F159A43E900181934 /* Build configuration list for PBXNativeTarget "SmartDeviceLinkTester" */; - buildPhases = ( - 079E7D5F159A43E800181934 /* Sources */, - 079E7D60159A43E800181934 /* Frameworks */, - 079E7D61159A43E800181934 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SmartDeviceLinkTester; - productName = SyncTest; - productReference = 079E7D63159A43E800181934 /* SDLTester.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 079E7D5A159A43E800181934 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0460; - }; - buildConfigurationList = 079E7D5D159A43E800181934 /* Build configuration list for PBXProject "SmartDeviceLinkTester" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 079E7D58159A43E800181934; - productRefGroup = 079E7D64159A43E800181934 /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 59E5172B16F6CF950082CFB8 /* Products */; - ProjectRef = 59E5172A16F6CF950082CFB8 /* SmartDeviceLinkProxy.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - 079E7D62159A43E800181934 /* SmartDeviceLinkTester */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 59E5172F16F6CF950082CFB8 /* libSmartDeviceLinkProxy.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libSmartDeviceLinkProxy.a; - remoteRef = 59E5172E16F6CF950082CFB8 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 079E7D61159A43E800181934 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 079E7D72159A43E800181934 /* InfoPlist.strings in Resources */, - 0789F35615AF40CA00ADEF80 /* ConsoleViewController.xib in Resources */, - 0789F35B15AF65AF00ADEF80 /* UserTestViewController.xib in Resources */, - 0789F35F15AF6B2300ADEF80 /* Blank-Blackboard-PSD.png in Resources */, - 0789F37415B06BF300ADEF80 /* cog_02@2x.png in Resources */, - 0789F37615B06BFD00ADEF80 /* cog_02.png in Resources */, - 0789F37815B06C6500ADEF80 /* game_controller.png in Resources */, - 07B19A4215B46ADE00E6D316 /* geogia_alert.jpg in Resources */, - 07B19A4315B46ADE00E6D316 /* cali_speak.jpg in Resources */, - 07B19A4615B46BA400E6D316 /* colorado_addcmd.jpg in Resources */, - 07B19A4B15B46C4700E6D316 /* AutoTestViewController.xib in Resources */, - 07B19A4D15B48DA100E6D316 /* delaware_show.jpg in Resources */, - 07B19A6715B5BF7500E6D316 /* brief_case.png in Resources */, - 07B19A6C15B9812F00E6D316 /* RPCTestViewController.xib in Resources */, - 07B19A8215B99C3200E6D316 /* SpeakViewController.xib in Resources */, - 07B19A8715B99E4A00E6D316 /* ShowViewController.xib in Resources */, - 07B19A8C15B99F0800E6D316 /* UnregisterAppInterfaceViewController.xib in Resources */, - 07B19A9115B99F1600E6D316 /* AlertViewController.xib in Resources */, - 07B19A9615B99F2500E6D316 /* SetMediaClockTimerViewController.xib in Resources */, - 07B19A9B15B99F3000E6D316 /* AddCommandViewController.xib in Resources */, - 07B19AA015B99F3C00E6D316 /* DeleteCommandViewController.xib in Resources */, - 07B19AA515B99F4A00E6D316 /* AddSubMenuViewController.xib in Resources */, - 07B19AAA15B99F5D00E6D316 /* DeleteSubMenuViewController.xib in Resources */, - 07B19AAF15B99F6E00E6D316 /* CreateInteractionChoiceSetViewController.xib in Resources */, - 07B19AB415B99F8500E6D316 /* DeleteInteractionChoiceSetViewController.xib in Resources */, - 07B19AB915B99F9500E6D316 /* PerformInteractionViewController.xib in Resources */, - 07B19AC315B99FBD00E6D316 /* EncodedSyncPDataViewController.xib in Resources */, - 07B19AC815B99FDE00E6D316 /* UnsubscribeButtonViewController.xib in Resources */, - 07B19ACD15B99FEF00E6D316 /* SetGlobalPropertiesViewController.xib in Resources */, - 07B19AD215B9A00900E6D316 /* ResetGlobalPropertiesViewController.xib in Resources */, - 07C7E11A15B9A5940035681D /* SubscribeButtonViewController.xib in Resources */, - 07C7E13015B9CF5C0035681D /* arrow_up.png in Resources */, - 07C7E13215B9CF7A0035681D /* arrow_down.png in Resources */, - 07C7E13415B9CF840035681D /* play.png in Resources */, - 07C7E13615B9CF8C0035681D /* pause.png in Resources */, - 0765727315C9C47500E21611 /* database.png in Resources */, - 07E6721415EBC71A00949DF1 /* eraser.png in Resources */, - 07CBB64B15EBE3DD00895165 /* Sail.mp3 in Resources */, - FABDB8E1160A5D510036DE64 /* Settings.bundle in Resources */, - 5909E4AD16D31DAF00020F57 /* Default-568h@2x.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 079E7D5F159A43E800181934 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 079E7D74159A43E800181934 /* main.m in Sources */, - 079E7D78159A43E800181934 /* AppDelegate.m in Sources */, - 079E7D95159A472300181934 /* SDLBrain.m in Sources */, - 0789F35515AF40CA00ADEF80 /* ConsoleViewController.m in Sources */, - 0789F35A15AF65AF00ADEF80 /* UserTestViewController.m in Sources */, - 07B19A4A15B46C4700E6D316 /* AutoTestViewController.m in Sources */, - 07B19A6B15B9812F00E6D316 /* RPCTestViewController.m in Sources */, - 07B19A8115B99C3200E6D316 /* SpeakViewController.m in Sources */, - 07B19A8615B99E4A00E6D316 /* ShowViewController.m in Sources */, - 07B19A8B15B99F0800E6D316 /* UnregisterAppInterfaceViewController.m in Sources */, - 07B19A9015B99F1600E6D316 /* AlertViewController.m in Sources */, - 07B19A9515B99F2500E6D316 /* SetMediaClockTimerViewController.m in Sources */, - 07B19A9A15B99F3000E6D316 /* AddCommandViewController.m in Sources */, - 07B19A9F15B99F3C00E6D316 /* DeleteCommandViewController.m in Sources */, - 07B19AA415B99F4A00E6D316 /* AddSubMenuViewController.m in Sources */, - 07B19AA915B99F5D00E6D316 /* DeleteSubMenuViewController.m in Sources */, - 07B19AAE15B99F6E00E6D316 /* CreateInteractionChoiceSetViewController.m in Sources */, - 07B19AB315B99F8500E6D316 /* DeleteInteractionChoiceSetViewController.m in Sources */, - 07B19AB815B99F9500E6D316 /* PerformInteractionViewController.m in Sources */, - 07B19AC215B99FBD00E6D316 /* EncodedSyncPDataViewController.m in Sources */, - 07B19AC715B99FDE00E6D316 /* UnsubscribeButtonViewController.m in Sources */, - 07B19ACC15B99FEF00E6D316 /* SetGlobalPropertiesViewController.m in Sources */, - 07B19AD115B9A00900E6D316 /* ResetGlobalPropertiesViewController.m in Sources */, - 07C7E11915B9A5940035681D /* SubscribeButtonViewController.m in Sources */, - 077869AC15C01C0000FE9390 /* AddMenuOption.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 079E7D70159A43E800181934 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 079E7D71159A43E800181934 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 079E7D8D159A43E900181934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 079E7D8E159A43E900181934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 079E7D90159A43E900181934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SmartDeviceLinkTester/SmartDeviceLinkTester-Prefix.pch"; - HEADER_SEARCH_PATHS = "../SmartDeviceLinkProxy/**"; - INFOPLIST_FILE = "SmartDeviceLinkTester/SmartDeviceLinkTester-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/..\"", - ); - OTHER_LDFLAGS = "-all_load"; - PRODUCT_NAME = SDLTester; - PROVISIONING_PROFILE = ""; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 079E7D91159A43E900181934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SmartDeviceLinkTester/SmartDeviceLinkTester-Prefix.pch"; - HEADER_SEARCH_PATHS = "../SmartDeviceLinkProxy/**"; - INFOPLIST_FILE = "SmartDeviceLinkTester/SmartDeviceLinkTester-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 5.0; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/..\"", - ); - OTHER_LDFLAGS = "-all_load"; - PRODUCT_NAME = SDLTester; - PROVISIONING_PROFILE = ""; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 079E7D5D159A43E800181934 /* Build configuration list for PBXProject "SmartDeviceLinkTester" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 079E7D8D159A43E900181934 /* Debug */, - 079E7D8E159A43E900181934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 079E7D8F159A43E900181934 /* Build configuration list for PBXNativeTarget "SmartDeviceLinkTester" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 079E7D90159A43E900181934 /* Debug */, - 079E7D91159A43E900181934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 079E7D5A159A43E800181934 /* Project object */; -} diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 6662374..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.h deleted file mode 100644 index d68d473..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "AddMenuOption.h" - -@interface AddCommandViewController : UIViewController { - - IBOutlet UITextField *menuNameText; - IBOutlet UITextField *addVRText; - IBOutlet UITextField *parentIDText; - IBOutlet UITextField *positionText; - - - -} - --(IBAction)addCommandPressed:(id)sender; - -@end - -NSMutableArray *commandsIssued; \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.m deleted file mode 100644 index 9712c2a..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.m +++ /dev/null @@ -1,103 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "AddCommandViewController.h" - -@interface AddCommandViewController () - -@end - -@implementation AddCommandViewController - - --(IBAction)addCommandPressed:(id)sender { - - NSArray *voiceCommand = nil; - NSString *menuName = nil; - NSString *menuNameTable = nil; - if ([[menuNameText text] isEqualToString:@""]) { - [SDLDebugTool logInfo:@"menuNameText is empty"]; - menuNameTable = [[NSString stringWithFormat:@"[%@]", [addVRText text]] retain]; - - } - else { - [SDLDebugTool logInfo:@"menuNameText contains text"]; - menuName = [menuNameText text]; - menuNameTable = menuName; - } - - if (![[addVRText text] isEqualToString:@""]) { - voiceCommand = [NSArray arrayWithObject:[addVRText text]]; - } - - NSNumber *parentID = nil; - if (![[parentIDText text] isEqualToString:@""]) { - parentID = [NSNumber numberWithInt:[[parentIDText text] intValue]]; - } - - NSNumber *position = nil; - if (![[positionText text] isEqualToString:@""]) { - position = [NSNumber numberWithInt:[[positionText text] intValue]]; - } - - [SDLDebugTool logInfo:@"cmdID = %d", [[SDLBrain getInstance] getCMDID]]; - - [commandsIssued addObject:[[[AddMenuOption alloc] initWithMenuName:menuNameTable menuId:[NSNumber numberWithInt:[[SDLBrain getInstance] getCMDID]]] autorelease]]; - - [SDLDebugTool logInfo:@"Added %@ to commandsIssued",[[commandsIssued lastObject] menuName]]; - - [SDLDebugTool logInfo:@"Is index number %d",[commandsIssued indexOfObject:[commandsIssued lastObject]]]; - - [[SDLBrain getInstance] addAdvancedCommandPressedwithMenuName:menuName position:position parentID:parentID vrCommands:voiceCommand]; - - [SDLDebugTool logInfo:@"sent to Sync"]; - - [menuNameText setText:@""]; - [addVRText setText:@""]; -} - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"AddCommand"; - - commandsIssued = [[NSMutableArray alloc] init]; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - [textField resignFirstResponder]; - return NO; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - menuNameText.delegate = self; - addVRText.delegate = self; - parentIDText.delegate = self; - positionText.delegate = self; -} - --(void) dealloc { - [commandsIssued release]; - [super dealloc]; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.xib deleted file mode 100644 index 47c3a5b..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddCommandViewController.xib +++ /dev/null @@ -1,572 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUITextField - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 25}, {93, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Menu Name - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{128, 20}, {172, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{33, 173}, {67, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Position: - - - 0 - 10 - - - - - - 292 - {{128, 70}, {172, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{20, 85}, {100, 63}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - - - - 0 - 10 - - - - - - 292 - {{28, 66}, {77, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - - - - 0 - 10 - - - - - - 292 - {{29, 76}, {74, 20}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - VR Name - - - 0 - 10 - - - - - - 292 - {{112, 234}, {97, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{20, 122}, {93, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Parent ID - - - 0 - 10 - 1 - - - - - - 292 - {{128, 117}, {172, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{128, 168}, {172, 31}} - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - addVRText - - - - 13 - - - - menuNameText - - - - 14 - - - - parentIDText - - - - 24 - - - - positionText - - - - 26 - - - - addCommandPressed: - - - 7 - - 17 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 7 - - - - - 8 - - - - - 9 - - - - - 10 - - - - - 11 - - - - - 12 - - - - - 22 - - - - - 23 - - - - - 25 - - - - - - - AddCommandViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 26 - - - - - AddCommandViewController - UIViewController - - addCommandPressed: - id - - - addCommandPressed: - - addCommandPressed: - id - - - - UITextField - UITextField - UITextField - UITextField - - - - addVRText - UITextField - - - menuNameText - UITextField - - - parentIDText - UITextField - - - positionText - UITextField - - - - IBProjectSource - ./Classes/AddCommandViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddMenuOption.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddMenuOption.h deleted file mode 100644 index 47858bd..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddMenuOption.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -@interface AddMenuOption : NSObject { - NSString *menuName; - NSNumber *menuID; - -} - --(id) initWithMenuName:(NSString *)menuName menuId:(NSNumber *)menuID; - -@property (nonatomic, retain) NSString *menuName; -@property (nonatomic, retain) NSNumber *menuID; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddMenuOption.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddMenuOption.m deleted file mode 100644 index 70f23a2..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddMenuOption.m +++ /dev/null @@ -1,22 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "AddMenuOption.h" - -@implementation AddMenuOption -@synthesize menuName; -@synthesize menuID; - --(id) initWithMenuName:(NSString *)mName menuId:(NSNumber *)mID { - - self = [super init]; - if (self) { - menuName = mName; - menuID = mID; - } - return self; -} - - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.h deleted file mode 100644 index 7b83ec8..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.h +++ /dev/null @@ -1,23 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "AddMenuOption.h" - -@interface AddSubMenuViewController : UIViewController { - - IBOutlet UITextField *menuNameText; - IBOutlet UITextField *menuIDText; - - IBOutlet UILabel *positionLabel; - IBOutlet UISlider *positionSlider; -} - --(IBAction)displayPositionSlider:(id)sender; --(IBAction)addSubMenuPressed:(id)sender; - -@end - -NSMutableArray *subMenuIssued; \ No newline at end of file diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.m deleted file mode 100644 index 87d72a1..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.m +++ /dev/null @@ -1,72 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "AddSubMenuViewController.h" - -@interface AddSubMenuViewController () - -@end - -@implementation AddSubMenuViewController - --(IBAction)displayPositionSlider:(id)sender { - positionLabel.text = [NSString stringWithFormat:@"%g",round([positionSlider value])]; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - [textField resignFirstResponder]; - return NO; -} - --(IBAction)addSubMenuPressed:(id)sender { - - [subMenuIssued addObject:[[AddMenuOption alloc] initWithMenuName:[menuNameText text] menuId:[NSNumber numberWithInt:[[menuIDText text] intValue]]]]; - - [[SDLBrain getInstance] addSubMenuPressedwithID:[NSNumber numberWithInt:[[menuIDText text] intValue]] menuName:[menuNameText text] position:[NSNumber numberWithDouble:round([positionSlider value])]]; -} - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"AddSubMenu"; - - subMenuIssued = [[NSMutableArray alloc] init]; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - menuNameText.delegate = self; - menuIDText.delegate = self; - - positionSlider.minimumValue = 0; - positionSlider.maximumValue = 5; - [positionSlider setValue:1]; - positionLabel.text = @"1"; -} - --(void) dealloc { - [subMenuIssued release]; - [super dealloc]; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.xib deleted file mode 100644 index 43f3e0b..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AddSubMenuViewController.xib +++ /dev/null @@ -1,482 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUITextField - IBUISlider - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 34}, {93, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Menu Name - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{128, 29}, {172, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{20, 87}, {93, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Menu ID - - - 0 - 10 - - - - - - 292 - {{128, 82}, {172, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{169, 144}, {118, 23}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 0.5 - - - - 292 - {{36, 143}, {67, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Position: - - - 0 - 10 - - - - - - 292 - {{115, 144}, {42, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - 1 - - - 0 - 10 - - - - - - 292 - {{112, 235}, {97, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - menuIDText - - - - 16 - - - - menuNameText - - - - 17 - - - - positionLabel - - - - 18 - - - - positionSlider - - - - 19 - - - - displayPositionSlider: - - - 13 - - 21 - - - - addSubMenuPressed: - - - 7 - - 20 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - 12 - - - - - 13 - - - - - 14 - - - - - 15 - - - - - - - AddSubMenuViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 21 - - - - - AddSubMenuViewController - UIViewController - - id - id - - - - addSubMenuPressed: - id - - - displayPositionSlider: - id - - - - UITextField - UITextField - UILabel - UISlider - - - - menuIDText - UITextField - - - menuNameText - UITextField - - - positionLabel - UILabel - - - positionSlider - UISlider - - - - IBProjectSource - ./Classes/AddSubMenuViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.h deleted file mode 100644 index 6fd4fe7..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "SDLTTSChunkFactory.h" - -@interface AlertViewController : UIViewController { - - IBOutlet UITextView *ttsView; - IBOutlet UITextField *line1Text; - IBOutlet UITextField *line2Text; - IBOutlet UISwitch *toneSwitch; - - IBOutlet UILabel *durationLabel; - IBOutlet UISlider *durationSlider; - -} - --(IBAction)alertPressed:(id)sender; --(IBAction)displayDurationSlider:(id)sender; - - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.m deleted file mode 100644 index a7da1dd..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.m +++ /dev/null @@ -1,85 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "AlertViewController.h" - -@interface AlertViewController () - -@end - -@implementation AlertViewController - --(IBAction)alertPressed:(id)sender { - - NSString *ttsstring = [ttsView text]; - NSArray *temp = [ttsstring componentsSeparatedByString:@", "]; - NSMutableArray *ttschunks = [[NSMutableArray alloc] init]; - for (int i = 0; i < [temp count]; i++) { - [ttschunks addObject:[SDLTTSChunkFactory buildTTSChunkForString:[temp objectAtIndex:i] type:[SDLSpeechCapabilities TEXT]]]; - } - - [[SDLBrain getInstance] alertAdvancedPressedwithTTSChunks:ttschunks alertText1:[line1Text text] alertText2:[line2Text text] playTone:[NSNumber numberWithBool:[toneSwitch isOn]] duration:[NSNumber numberWithDouble:(round([durationSlider value])*1000)]]; - - [ttschunks release]; -} - --(IBAction)displayDurationSlider:(id)sender { - durationLabel.text = [NSString stringWithFormat:@"%g",round([durationSlider value])]; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - [textField resignFirstResponder]; - return NO; -} - -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { - - if([text isEqualToString:@"\n"]) { - [textView resignFirstResponder]; - return NO; - } - - return YES; -} - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"Alert"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - ttsView.delegate = self; - line1Text.delegate = self; - line2Text.delegate = self; - - [[ttsView layer] setCornerRadius:10]; - - durationSlider.minimumValue = 3; - durationSlider.maximumValue = 10; - [durationSlider setValue:5]; - durationLabel.text = @"5"; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.xib deleted file mode 100644 index 404a526..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AlertViewController.xib +++ /dev/null @@ -1,643 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUIButton - IBUILabel - IBUISwitch - IBUITextField - IBUITextView - IBUISlider - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 8}, {95, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - TTS Chunks - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{20, 49}, {280, 78}} - - - _NS:9 - - 1 - MSAxIDEAA - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{20, 140}, {52, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Line 1: - - - 0 - 10 - - - - - - 292 - {{80, 135}, {220, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{20, 179}, {52, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Line 2: - - - 0 - 10 - - - - - - 292 - {{80, 174}, {220, 31}} - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{171, 220}, {94, 27}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - YES - - - - 292 - {{67, 223}, {42, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Tone - - - 0 - 10 - - - - - - 292 - {{166, 266}, {118, 23}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 0.5 - - - - 292 - {{39, 266}, {70, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Duration: - - - 0 - 10 - - - - - - 292 - {{113, 266}, {42, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - 5 - - - 0 - 10 - - - - - - 292 - {{112, 310}, {97, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{20, 27}, {270, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Enter chunks separated by comma - - - 0 - 10 - - 1 - 13 - - - Helvetica - 13 - 16 - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - line1Text - - - - 19 - - - - line2Text - - - - 20 - - - - durationLabel - - - - 23 - - - - durationSlider - - - - 24 - - - - toneSwitch - - - - 25 - - - - ttsView - - - - 26 - - - - displayDurationSlider: - - - 13 - - 28 - - - - alertPressed: - - - 7 - - 27 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 7 - - - - - 8 - - - - - 9 - - - - - 10 - - - - - 5 - - - - - 11 - - - - - 12 - - - - - 13 - - - - - 14 - - - - - 15 - - - - - 16 - - - - - 18 - - - - - - - AlertViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 28 - - - - - AlertViewController - UIViewController - - id - id - - - - alertPressed: - id - - - displayDurationSlider: - id - - - - UILabel - UISlider - UITextField - UITextField - UISwitch - UITextView - - - - durationLabel - UILabel - - - durationSlider - UISlider - - - line1Text - UITextField - - - line2Text - UITextField - - - toneSwitch - UISwitch - - - ttsView - UITextView - - - - IBProjectSource - ./Classes/AlertViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AppDelegate.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AppDelegate.h deleted file mode 100644 index d808463..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AppDelegate.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import - -#import "UserTestViewController.h" -#import "RPCTestViewController.h" -#import "AutoTestViewController.h" -#import "ConsoleViewController.h" - -@interface AppDelegate : UIResponder { - UserTestViewController *userTestViewController; - AutoTestViewController *autoTestViewController; - ConsoleViewController *consoleViewController; - - UINavigationController *navController; -} - -@property (strong, nonatomic) UIWindow *window; - -@property (strong, nonatomic) UITabBarController *tabBarController; - - - -@end - - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AppDelegate.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AppDelegate.m deleted file mode 100644 index f8529bc..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AppDelegate.m +++ /dev/null @@ -1,112 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "AppDelegate.h" - - -@implementation AppDelegate - -@synthesize window = _window; -@synthesize tabBarController = _tabBarController; - - -- (void)dealloc -{ - [_window release]; - [_tabBarController release]; - [super dealloc]; -} - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions -{ - self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; - // Override point for customization after application launch. - userTestViewController = [[[UserTestViewController alloc] initWithNibName:@"UserTestViewController" bundle:nil] autorelease]; - UIViewController *rpcTestViewController = [[RPCTestViewController alloc] initWithStyle:UITableViewStyleGrouped]; - rpcTestViewController.view.backgroundColor=[UIColor colorWithRed:(255/255.) green:(195/255.) blue:(135/255.) alpha:1]; - autoTestViewController = [[[AutoTestViewController alloc] initWithNibName:@"AutoTestViewController" bundle:nil] autorelease]; - consoleViewController = [[[ConsoleViewController alloc] initWithNibName:@"ConsoleViewController" bundle:nil] autorelease]; - - navController = nil; - navController = [[UINavigationController alloc] initWithRootViewController:rpcTestViewController]; - - [rpcTestViewController release]; - - self.tabBarController = [[[UITabBarController alloc] init] autorelease]; - self.tabBarController.viewControllers = [NSArray arrayWithObjects:userTestViewController, navController, autoTestViewController,consoleViewController, nil]; - self.tabBarController.selectedIndex = 3; - self.window.rootViewController = self.tabBarController; - [self.window makeKeyAndVisible]; - - [[SDLBrain getInstance] setupProxy]; - - NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey]; - if (url != nil && [url isFileURL]) { - [autoTestViewController handleOpenURL:url]; - } - - [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; - - - return YES; -} - --(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { - if (url!= nil && [url isFileURL]) { - [autoTestViewController handleOpenURL:url]; - } - return YES; -} - -- (void)applicationWillResignActive:(UIApplication *)application -{ - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. -} - -- (void)applicationDidEnterBackground:(UIApplication *)application -{ - [SDLDebugTool logInfo:@"App did enter background"]; - - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. -} - -- (void)applicationWillEnterForeground:(UIApplication *)application -{ - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. -} - -- (void)applicationDidBecomeActive:(UIApplication *)application -{ - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. -} - -- (void)applicationWillTerminate:(UIApplication *)application -{ - [SDLDebugTool logInfo:@"will terminate"]; - - [navController release]; - navController = nil; - - NSLog(@"did terminate"); - - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. -} - -/* -// Optional UITabBarControllerDelegate method. -- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController -{ -} -*/ - -/* -// Optional UITabBarControllerDelegate method. -- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed -{ -} -*/ - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.h deleted file mode 100644 index da2d888..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "SDLRPCRequestFactory.h" -#import "SDLTTSChunkFactory.h" -#import - -@interface AutoTestViewController : UIViewController { - - IBOutlet UITextView *xmlScriptText; - IBOutlet UILabel *resultOfXMLTest; - IBOutlet UILabel *testInProgress; - - NSData *xmlData; - NSXMLParser *testXMLParser; - NSThread *testThread; - NSCondition *condition; - SDLRPCResponse* response; - - BOOL isUnitTest; - BOOL unitTestIsNextElement; - BOOL integrationTestIsNextElement; - BOOL responseReceived; - BOOL didPassTest; - BOOL thisTestFailed; - BOOL integrationTestisComplete; - NSString *testName; - NSString *xmlURLText; - - NSMutableArray *testComponents; - - int numIterations; - - UIAlertView *alert; -} - --(IBAction)beginAutomatedTesting:(id)sender; --(void)handleOpenURL:(NSURL *)url; - - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.m deleted file mode 100644 index a0ab5ab..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.m +++ /dev/null @@ -1,694 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "AutoTestViewController.h" - -@interface AutoTestViewController () - --(void)runUnitTestwithName:(NSString *)xmlTestName attributes:(NSDictionary *)attributeDict; --(void)masterTestThread; --(void)onRPCResponse:(NSNotification *)notif; --(void)showUserPromptWithMessage:(NSString *)msg; --(void)showResultsofTest; --(void)resetforNextTest; --(void)showErrorAlert:(NSString *)errorMessage; --(NSString *)dataFilePath; --(void)writeToFile:(NSArray *)dataToWrite; --(void)sendEmail; --(void)compareResultwithAttributes:(NSDictionary *)attributeDict; - -@end - -@implementation AutoTestViewController - --(NSString *)dataFilePath { - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *documentsDirectory = [paths objectAtIndex:0]; - return [documentsDirectory stringByAppendingFormat:@"/xmltestresults.csv"]; -} - --(void)writeToFile:(NSArray *)dataToWrite { - NSFileHandle *handle; - handle = [NSFileHandle fileHandleForWritingAtPath:[self dataFilePath]]; - [handle truncateFileAtOffset:[handle seekToEndOfFile]]; - - for (int i = 0; i < [dataToWrite count]; i++) { - [handle writeData:[[dataToWrite objectAtIndex:i] dataUsingEncoding:NSUTF8StringEncoding]]; - [handle writeData:[@"," dataUsingEncoding:NSUTF8StringEncoding]]; - } - [handle writeData:[@"\n" dataUsingEncoding:NSUTF8StringEncoding]]; -} - --(void)sendEmail { - if ([MFMailComposeViewController canSendMail]) { - MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; - picker.mailComposeDelegate = self; - [picker setSubject:@"XML Test Result"]; - [picker addAttachmentData:[NSData dataWithContentsOfFile:[self dataFilePath]] mimeType:@"test/csv" fileName:@"xmltestresults.csv"]; - [picker setMessageBody:@"Attached is the csv output file." isHTML:NO]; - [self presentModalViewController:picker animated:YES]; - [picker release]; - } - else { - [self performSelectorOnMainThread:@selector(showErrorAlert:) withObject:@"Error: Cannot Send Mail" waitUntilDone:NO]; - } -} - --(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { - switch (result) { - case MFMailComposeResultCancelled: - [self performSelectorOnMainThread:@selector(showErrorAlert:) withObject:@"Mail Cancelled" waitUntilDone:NO]; - break; - case MFMailComposeResultFailed: - [self performSelectorOnMainThread:@selector(showErrorAlert:) withObject:@"Mail Failure" waitUntilDone:NO]; - break; - default: - break; - } - [self dismissModalViewControllerAnimated:YES]; -} - - --(void) handleOpenURL:(NSURL *)url { - NSLog(@"handleOpenURL"); - xmlURLText = [[NSString stringWithFormat:@"%@",url] retain]; - [xmlScriptText setText:xmlURLText]; - NSError *outError; - xmlData = [[NSData alloc] initWithContentsOfURL:url options: NSDataReadingUncached error:&outError]; -} - --(IBAction)beginAutomatedTesting:(id)sender { - if (testThread) [testThread release]; - testThread = [[NSThread alloc] initWithTarget:self selector:@selector(masterTestThread) object:nil]; - [testThread start]; -} - --(void)compareResultwithAttributes:(NSDictionary *)attributeDict { - [condition lock]; - - while (!responseReceived) { - [condition wait]; - } - - if ([attributeDict valueForKey:@"correlationID"]) { - if (![[NSString stringWithFormat:@"%@",[response correlationID]] isEqualToString:[attributeDict valueForKey:@"correlationID"]]) { - didPassTest = NO; - thisTestFailed = YES; - } - } - if ([attributeDict valueForKey:@"return"]) { - if (![[NSString stringWithFormat:@"%@",[response resultCode]] isEqualToString:[attributeDict valueForKey:@"return"]]) { - didPassTest = NO; - thisTestFailed = YES; - } - } - responseReceived = NO; - response = nil; - [condition unlock]; -} - --(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { - if ([elementName isEqualToString:@"test"]) { - - int numPasses = 0; - - for (int numLoops = numIterations; numLoops > 0; numLoops--) { - thisTestFailed = NO; - - if (isUnitTest) { - [NSThread sleepForTimeInterval:2]; - } - else { - [NSThread sleepForTimeInterval:5]; - } - - for (int i = 0; i < [testComponents count]; i=i+2) { - - if ([[testComponents objectAtIndex:i] isEqualToString:@"userPrompt"]) { - - if (!thisTestFailed) { - [self performSelectorOnMainThread:@selector(showUserPromptWithMessage:) withObject:[testComponents objectAtIndex:i+1] waitUntilDone:YES]; - - [condition lock]; - while (!integrationTestisComplete) { - [condition wait]; - } - - [condition unlock]; - } - integrationTestisComplete = NO; - } - else if ([[testComponents objectAtIndex:i] isEqualToString:@"result"]) { - [self compareResultwithAttributes:[testComponents objectAtIndex:i+1]]; - } - else { - [self runUnitTestwithName:[testComponents objectAtIndex:i] attributes:[testComponents objectAtIndex:i+1]]; - } - } - if (!thisTestFailed) { - numPasses++; - } - } - - NSString *resultOfTest; - if (numPasses == numIterations) { - resultOfTest = @"Pass"; - } - else { - resultOfTest = @"Fail"; - } - - NSArray *results = [NSArray arrayWithObjects:testName,resultOfTest,[NSString stringWithFormat:@"%d", numPasses],[NSString stringWithFormat:@"%d",numIterations], nil]; - [self writeToFile:results]; - } -} - -- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict { - - if ([elementName isEqualToString:@"type"]) { - NSLog(@"go to type"); - if ([[attributeDict valueForKey:@"type"] isEqualToString:@"unit"]) { - NSLog(@"Begin Unit Tests"); - isUnitTest = YES; - } - else if ([[attributeDict valueForKey:@"type"] isEqualToString:@"integration"]) { - isUnitTest = NO; - NSLog(@"integration test"); - } - else { - NSLog(@"Error: Neither Unit nor Integration Test"); - } - } - else if ([elementName isEqualToString:@"result"]) { - integrationTestIsNextElement = NO; - unitTestIsNextElement = NO; - - [testComponents addObject:elementName]; - [testComponents addObject:attributeDict]; - } - - else if (unitTestIsNextElement) { - [testComponents addObject:elementName]; - [testComponents addObject:attributeDict]; - - } - else if (integrationTestIsNextElement) { - integrationTestisComplete = NO; - [testComponents addObject:elementName]; - [testComponents addObject:attributeDict]; - } - else if ([elementName isEqualToString:@"test"]) { - if (isUnitTest) { - unitTestIsNextElement = YES; - } - else { - integrationTestIsNextElement = YES; - } - - testName = [NSString stringWithFormat:@"%@",[attributeDict valueForKey:@"testName"]]; - [testComponents removeAllObjects]; - - if ([attributeDict valueForKey:@"iterations"]) { - numIterations = [[attributeDict valueForKey:@"iterations"] intValue]; - } - else { - numIterations = 1; - } - - if (numIterations < 1) { - numIterations = 1; - } - - } - else if ([elementName isEqualToString:@"userPrompt"] && !isUnitTest) { - - [testComponents addObject:elementName]; - [testComponents addObject:[attributeDict valueForKey:@"userPrompt"]]; - } -} - --(void)showUserPromptWithMessage:(NSString *)msg { - UIAlertView *alertPrompt = [[UIAlertView alloc] initWithTitle:@"User Prompt" message:msg delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No",nil]; - [alertPrompt show]; - [alertPrompt release]; - -} - -- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { - if (buttonIndex == 1) { - thisTestFailed = YES; - didPassTest = NO; - } - integrationTestisComplete = YES; -} - --(void)showResultsofTest { - NSLog(@"show results of test"); - if (didPassTest) { - [resultOfXMLTest setText:@"Success"]; - [resultOfXMLTest setBackgroundColor:[UIColor greenColor]]; - } - else { - [resultOfXMLTest setText:@"Failure"]; - [resultOfXMLTest setBackgroundColor:[UIColor redColor]]; - - } - [resultOfXMLTest setHidden:NO]; - [testInProgress setHidden:YES]; -} - --(void)resetforNextTest { - [resultOfXMLTest setHidden:YES]; - [testInProgress setHidden:NO]; -} - --(void)masterTestThread { - @autoreleasepool { - if (testXMLParser) { - [testXMLParser release]; - NSLog(@"release syncTestXMLParser"); - } - - if (xmlData != nil) { - - if ([[NSFileManager defaultManager] fileExistsAtPath:[self dataFilePath]]) { - NSError *error; - if (![[NSFileManager defaultManager] removeItemAtPath:[self dataFilePath] error:&error]) { - NSLog(@"Error removing files: %@", error); - } - NSLog(@"removed file"); - } - [[NSFileManager defaultManager] createFileAtPath:[self dataFilePath] contents:nil attributes:nil]; - [self writeToFile:[NSArray arrayWithObjects:@"Test Name",@"Result",@"Number of Passes",@"Attempts",nil]]; - NSLog(@"created file"); - - testXMLParser = [[NSXMLParser alloc] initWithData:xmlData]; - [testXMLParser setDelegate:self]; - NSLog(@"Create syncTestXMLParser"); - unitTestIsNextElement = NO; - integrationTestIsNextElement = NO; - isUnitTest = YES; - didPassTest = YES; - responseReceived = NO; - - [self performSelectorOnMainThread:@selector(resetforNextTest) withObject:nil waitUntilDone:NO]; - - [testXMLParser parse]; - - [self performSelectorOnMainThread:@selector(showResultsofTest) withObject:nil waitUntilDone:YES]; - [NSThread sleepForTimeInterval:3]; - [self performSelectorOnMainThread:@selector(sendEmail) withObject:nil waitUntilDone:YES]; - - } - else { - [self performSelectorOnMainThread:@selector(showErrorAlert:) withObject:@"We did not find an XML File. Make sure that you imported the file from your email." waitUntilDone:NO]; - } - - NSLog(@"pool release"); - } -} - --(void)showErrorAlert:(NSString *)errorMessage { - alert = [[UIAlertView alloc] initWithTitle:@"Error" message:errorMessage delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; - [alert show]; - [alert release]; -} - - - --(void)onRPCResponse:(NSNotification *)notif { - responseReceived = YES; - response = (SDLRPCResponse*)[notif object]; - -} - --(void)runUnitTestwithName:(NSString *)xmlTestName attributes:(NSDictionary *)attributeDict { - if ([xmlTestName isEqualToString:@"AddCommand"]) { - SDLAddCommand *req = [SDLRPCRequestFactory buildAddCommandWithID:nil menuName:nil parentID:nil position:nil vrCommands:nil correlationID:nil]; - SDLMenuParams* menuParams = [[[SDLMenuParams alloc] init] autorelease]; - menuParams.menuName = nil; - menuParams.parentID = nil; - menuParams.position = nil; - req.menuParams = menuParams; - NSMutableArray *vrCommands = [[NSMutableArray alloc] init]; - - if ([attributeDict valueForKey:@"menuText"]) { - req.menuParams.menuName = [attributeDict valueForKey:@"menuText"]; - } - if ([attributeDict valueForKey:@"position"]) { - req.menuParams.position = [NSNumber numberWithInt:[[attributeDict valueForKey:@"position"] intValue]]; - } - if ([attributeDict valueForKey:@"parentID"]) { - req.menuParams.parentID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"parentID"] intValue]]; - } - if ([attributeDict valueForKey:@"cmdID"]) { - req.cmdID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"cmdID"] intValue]]; - } - if ([attributeDict valueForKey:@"vrCommands"]) { - [vrCommands addObject:[attributeDict valueForKey:@"vrCommands"]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - req.vrCommands = vrCommands; - [[SDLBrain getInstance] sendRPCMessage:req]; - [vrCommands release]; - } - else if ([xmlTestName isEqualToString:@"AddSubMenu"]) { - SDLAddSubMenu *req = [SDLRPCRequestFactory buildAddSubMenuWithID:nil menuName:nil position:nil correlationID:nil]; - if ([attributeDict valueForKey:@"menuID"]) { - req.menuID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"menuID"] intValue]]; - } - if ([attributeDict valueForKey:@"position"]) { - req.position = [NSNumber numberWithInt:[[attributeDict valueForKey:@"position"] intValue]]; - } - if ([attributeDict valueForKey:@"menuName"]) { - req.menuName = [attributeDict valueForKey:@"menuName"]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"SetMediaClockTimer"]) { - SDLSetMediaClockTimer *req = [[[SDLSetMediaClockTimer alloc] init] autorelease]; - SDLStartTime *startTime = [[[SDLStartTime alloc] init] autorelease]; - req.startTime = startTime; - if ([attributeDict valueForKey:@"hours"]) { - req.startTime.hours = [NSNumber numberWithInt:[[attributeDict valueForKey:@"hours"] intValue]]; - } - if ([attributeDict valueForKey:@"minutes"]) { - req.startTime.minutes = [NSNumber numberWithInt:[[attributeDict valueForKey:@"minutes"] intValue]]; - } - if ([attributeDict valueForKey:@"seconds"]) { - req.startTime.seconds = [NSNumber numberWithInt:[[attributeDict valueForKey:@"second"] intValue]]; - } - if ([attributeDict valueForKey:@"updateMode"]) { - req.updateMode = [SDLUpdateMode valueOf:[attributeDict valueForKey:@"updateMode"]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"CreateInteractionChoiceSet"]) { - SDLCreateInteractionChoiceSet *req = [[[SDLCreateInteractionChoiceSet alloc] init] autorelease]; - SDLChoice *cho = [[SDLChoice alloc] init]; - - NSMutableArray *choiceSet = [[NSMutableArray alloc] init]; - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - if ([attributeDict valueForKey:@"choiceSet"]) { - cho.choiceID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"choiceSet"] intValue]]; - } - if ([attributeDict valueForKey:@"choiceSetName"]) { - cho.menuName = [attributeDict valueForKey:@"choiceSetName"]; - } - if ([attributeDict valueForKey:@"choiceSetVrCommands"]) { - cho.vrCommands = [NSArray arrayWithObject:[attributeDict valueForKey:@"choiceSetVrCommands"]]; - } - if ([attributeDict valueForKey:@"interactionChoiceSetID"]) { - req.interactionChoiceSetID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"interactionChoiceSetID"] intValue]]; - } - [choiceSet addObject:cho]; - req.choiceSet = choiceSet; - [[SDLBrain getInstance] sendRPCMessage:req]; - [choiceSet release]; - [cho release]; - } - else if ([xmlTestName isEqualToString:@"DeleteInteractionChoiceSet"]) { - SDLDeleteInteractionChoiceSet *req = [[[SDLDeleteInteractionChoiceSet alloc] init] autorelease]; - if ([attributeDict valueForKey:@"interactionChoiceSetID"]) { - req.interactionChoiceSetID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"interactionChoiceSetID"] intValue]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"PerformInteraction"]) { - SDLPerformInteraction *req = [[[SDLPerformInteraction alloc] init] autorelease]; - req.interactionMode = [SDLInteractionMode BOTH]; - if ([attributeDict valueForKey:@"initialPrompt"]) { - req.initialPrompt = [SDLTTSChunkFactory buildTTSChunksFromSimple:[attributeDict valueForKey:@"initialPrompt"]]; - } - if ([attributeDict valueForKey:@"initialText"]) { - req.initialText = [attributeDict valueForKey:@"initialText"]; - } - if ([attributeDict valueForKey:@"interactionChoiceSetID"]) { - req.interactionChoiceSetIDList = [NSArray arrayWithObject:[NSNumber numberWithInt:[[attributeDict valueForKey:@"interactionChoiceSetID"] intValue]]]; - } - if ([attributeDict valueForKey:@"helpPrompt"]) { - req.helpPrompt = [SDLTTSChunkFactory buildTTSChunksFromSimple:[attributeDict valueForKey:@"helpPrompt"]]; - } - if ([attributeDict valueForKey:@"timeoutPrompt"]) { - req.timeoutPrompt = [SDLTTSChunkFactory buildTTSChunksFromSimple:[attributeDict valueForKey:@"timeoutPrompt"]]; - } - if ([attributeDict valueForKey:@"timeout"]) { - req.timeout = [NSNumber numberWithInt:[[attributeDict valueForKey:@"timeout"] intValue]]; - } - if ([attributeDict valueForKey:@"interactionMode"]) { - req.interactionMode = [SDLInteractionMode valueOf:[attributeDict valueForKey:@"interactionMode"]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"DeleteCommand"]) { - SDLDeleteCommand *req = [[[SDLDeleteCommand alloc] init] autorelease]; - if ([attributeDict valueForKey:@"cmdID"]) { - req.cmdID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"cmdID"] intValue]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"DeleteSubMenu"]) { - SDLDeleteSubMenu *req = [[[SDLDeleteSubMenu alloc] init] autorelease]; - if ([attributeDict valueForKey:@"menuID"]) { - req.menuID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"menuID"] intValue]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"EncodedSyncPData"]) { - SDLEncodedSyncPData *req = [[[SDLEncodedSyncPData alloc] init] autorelease]; - NSMutableArray *syncData = [[NSMutableArray alloc] init]; - if ([attributeDict valueForKey:@"data"]) { - [syncData addObject:[attributeDict valueForKey:@"data"]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - req.data = syncData; - [[SDLBrain getInstance] sendRPCMessage:req]; - [syncData release]; - } - else if ([xmlTestName isEqualToString:@"PauseMediaClockTimer"]) { - SDLSetMediaClockTimer *req = [SDLRPCRequestFactory buildSetMediaClockTimerWithUpdateMode:[SDLUpdateMode PAUSE] correlationID:nil]; - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"ResumeMediaClockTimer"]) { - SDLSetMediaClockTimer *req = [SDLRPCRequestFactory buildSetMediaClockTimerWithUpdateMode:[SDLUpdateMode RESUME] correlationID:nil]; - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"ClearMediaClockTimer"]) { - SDLShow *req = [SDLRPCRequestFactory buildShowWithMainField1:nil mainField2:nil statusBar:nil mediaClock:@"" mediaTrack:nil alignment:nil correlationID:nil]; - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"SetGlobalProperties"]) { - SDLSetGlobalProperties *req = [[[SDLSetGlobalProperties alloc] init] autorelease]; - if ([attributeDict valueForKey:@"helpPrompt"]) { - req.helpPrompt = [SDLTTSChunkFactory buildTTSChunksFromSimple:[attributeDict valueForKey:@"helpPrompt"]]; - } - if ([attributeDict valueForKey:@"timeoutPrompt"]) { - req.timeoutPrompt = [SDLTTSChunkFactory buildTTSChunksFromSimple:[attributeDict valueForKey:@"timeoutPrompt"]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"ResetGlobalProperties"]) { - SDLResetGlobalProperties *req = [[[SDLResetGlobalProperties alloc] init] autorelease]; - if ([attributeDict valueForKey:@"properties"]) { - req.properties = [NSArray arrayWithObject:[SDLGlobalProperty valueOf:[attributeDict valueForKey:@"properties"]]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"Show"]) { - SDLShow *req = [[[SDLShow alloc] init] autorelease]; - if ([attributeDict valueForKey:@"mainField1"]) { - req.mainField1 = [attributeDict valueForKey:@"mainField1"]; - } - if ([attributeDict valueForKey:@"mainField2"]) { - req.mainField2 = [attributeDict valueForKey:@"mainField2"]; - } - if ([attributeDict valueForKey:@"alignment"]) { - req.alignment = [SDLTextAlignment valueOf:[attributeDict valueForKey:@"alignment"]]; - } - if ([attributeDict valueForKey:@"statusBar"]) { - req.statusBar = [attributeDict valueForKey:@"statusBar"]; - } - if ([attributeDict valueForKey:@"mediaClock"]) { - req.mediaClock = [attributeDict valueForKey:@"mediaClock"]; - } - if ([attributeDict valueForKey:@"mediaTrack"]) { - req.mediaTrack = [attributeDict valueForKey:@"mediaTrack"]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"Speak"]) { - SDLSpeak *req = [[[SDLSpeak alloc] init] autorelease]; - SDLTTSChunk* simpleChunk = [[[SDLTTSChunk alloc] init] autorelease]; - simpleChunk.type = SDLSpeechCapabilities.TEXT; - if ([attributeDict valueForKey:@"ttsChunks"]) { - simpleChunk.text = [attributeDict valueForKey:@"ttsChunks"]; - } - if ([attributeDict valueForKey:@"ttsType"]) { - simpleChunk.type = [SDLSpeechCapabilities valueOf:[attributeDict valueForKey:@"ttsType"]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - req.ttsChunks = [NSMutableArray arrayWithObject:simpleChunk]; - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"Alert"]) { - SDLAlert *req = [[[SDLAlert alloc] init] autorelease]; - SDLTTSChunk* simpleChunk = [[[SDLTTSChunk alloc] init] autorelease]; - simpleChunk.type = SDLSpeechCapabilities.TEXT; - if ([attributeDict valueForKey:@"ttsChunks"]) { - simpleChunk.text = [attributeDict valueForKey:@"ttsChunks"]; - } - if ([attributeDict valueForKey:@"ttsType"]) { - simpleChunk.type = [SDLSpeechCapabilities valueOf:[attributeDict valueForKey:@"ttsType"]]; - } - if ([attributeDict valueForKey:@"alertText1"]) { - req.alertText1 = [attributeDict valueForKey:@"alertText1"]; - } if ([attributeDict valueForKey:@"alertText2"]) { - req.alertText2 = [attributeDict valueForKey:@"alertText2"]; - } - if ([attributeDict valueForKey:@"duration"]) { - req.duration = [NSNumber numberWithDouble:[[attributeDict valueForKey:@"duration"] doubleValue]]; - } - if ([attributeDict valueForKey:@"playTone"]) { - req.playTone = [NSNumber numberWithInt:[[attributeDict valueForKey:@"playTone"] intValue]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - req.ttsChunks = [NSMutableArray arrayWithObject:simpleChunk]; - [[SDLBrain getInstance] sendRPCMessage:req]; - } - - else if ([xmlTestName isEqualToString:@"SubscribeButton"]) { - SDLSubscribeButton *req = [[[SDLSubscribeButton alloc] init] autorelease]; - if ([attributeDict valueForKey:@"buttonName"]) { - req.buttonName = [SDLButtonName valueOf:[attributeDict valueForKey:@"buttonName"]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"UnsubscribeButton"]) { - SDLUnsubscribeButton *req = [[[SDLUnsubscribeButton alloc] init] autorelease]; - if ([attributeDict valueForKey:@"buttonName"]) { - req.buttonName = [SDLButtonName valueOf:[attributeDict valueForKey:@"buttonName"]]; - } - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else if ([xmlTestName isEqualToString:@"UnregisterAppInterface"]) { - SDLUnregisterAppInterface *req = [[[SDLUnregisterAppInterface alloc] init] autorelease]; - if ([attributeDict valueForKey:@"correlationID"]) { - req.correlationID = [NSNumber numberWithInt:[[attributeDict valueForKey:@"correlationID"] intValue]]; - } - [[SDLBrain getInstance] sendRPCMessage:req]; - } - else { - [self performSelectorOnMainThread:@selector(showErrorAlert:) withObject:[NSString stringWithFormat:@"We encountered an unfamiliar RPC test: %@",xmlTestName] waitUntilDone:NO]; - } - [SDLDebugTool logInfo:@"Sent RPC Request"]; -} - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onRPCResponse:) name:@"onRPCResponse" object:nil]; - - xmlURLText = [NSString stringWithFormat:@""]; - - testComponents = [[NSMutableArray alloc] init]; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - self.title = NSLocalizedString(@"Automated Test", @"Automated Test"); - self.tabBarItem.image = [UIImage imageNamed:@"database"]; - } - return self; -} - --(void) dealloc { - [testXMLParser release]; - [testThread release]; - [alert release]; - [xmlURLText release]; - [testComponents release]; - [super dealloc]; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - NSLog(@"started viewDidLoad"); - - if ([xmlURLText isEqualToString:@""]) { - [xmlScriptText setText: @"No script is loaded. You can load a script by opening up an email attachment."]; - } - else { - [xmlScriptText setText:xmlURLText]; - } - [xmlScriptText setEditable:NO]; - [[xmlScriptText layer] setCornerRadius:5]; - [resultOfXMLTest setHidden:YES]; - [testInProgress setHidden:YES]; - NSLog(@"finished viewDidLoad"); -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.xib deleted file mode 100644 index 3de53a7..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/AutoTestViewController.xib +++ /dev/null @@ -1,445 +0,0 @@ - - - - 1280 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUITextView - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{65, 11}, {191, 43}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Automated Testing - - 1 - MCAwIDAAA - - - 0 - 10 - - MarkerFelt-Thin - Marker Felt - 0 - 34 - - - MarkerFelt-Thin - 34 - 16 - - - - - 292 - {{20, 223}, {280, 35}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Begin Automated Testing - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{20, 63}, {90, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - XML Script: - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{83, 287}, {154, 46}} - - - - _NS:9 - - 1 - MC4yMTcyMjc2MjM0IDAuODc3OTcyMTQ2NyAwLjQyNjM2MzMyMDUAA - - NO - YES - 7 - NO - IBCocoaTouchFramework - - - - 0 - 10 - 1 - - 1 - 21 - - - Helvetica - 21 - 16 - - - - - 292 - {{80, 290}, {161, 43}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Test in Progress - - 1 - MSAwLjEyMzY5MDM1MDYgMC4xMDE5ODUwODY0AA - - - 0 - 10 - 1 - - 1 - 20 - - - Helvetica - 20 - 16 - - - - - 292 - {{20, 92}, {280, 97}} - - - - _NS:9 - - 1 - MSAxIDEAA - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - {{0, 20}, {320, 411}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - IBCocoaTouchFramework - - - - 292 - {42, 21} - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Label - - - 0 - 10 - - - - - - - - - view - - - - 3 - - - - resultOfXMLTest - - - - 24 - - - - testInProgress - - - - 34 - - - - xmlScriptText - - - - 39 - - - - beginAutomatedTesting: - - - 7 - - 15 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 6 - - - - - 12 - - - - - 23 - - - - - 32 - - - - - 33 - - - - - 37 - - - - - - - AutoTestViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 40 - - - - - AutoTestViewController - UIViewController - - beginAutomatedTesting: - id - - - beginAutomatedTesting: - - beginAutomatedTesting: - id - - - - UILabel - UILabel - UITextView - - - - resultOfXMLTest - UILabel - - - testInProgress - UILabel - - - xmlScriptText - UITextView - - - - IBProjectSource - ./Classes/AutoTestViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Blank-Blackboard-PSD.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Blank-Blackboard-PSD.png deleted file mode 100644 index 493e7fb1602b6e33ff4e37bb0ee2d559feb24957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134620 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 zT5389%0ABco~p~tg{6NUiF1AR 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 -#import "SDLConsoleController.h" - -@interface ConsoleViewController : UIViewController { - UITableView* consoleView; - SDLConsoleController *consoleController; - - -} - -@property (nonatomic, retain) IBOutlet UITableView* consoleView; - - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ConsoleViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ConsoleViewController.m deleted file mode 100644 index 9562e37..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ConsoleViewController.m +++ /dev/null @@ -1,81 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "ConsoleViewController.h" -#import "SDLBrain.h" - - -@interface ConsoleViewController () --(void) postConsoleController:(NSNotification *)notif; --(void) postConsoleControllerMainThread:(NSNotification *)notif; -@end - -@implementation ConsoleViewController -@synthesize consoleView; - - - --(void) logInfo:(NSString*) info { - [consoleController appendString:info]; -} - --(void) logException:(NSException*) ex withMessage:(NSString*) message { - [consoleController appendString:message]; -} - --(void) postConsoleControllerMainThread:(NSNotification *)notif { - [consoleController appendMessage:[notif object]]; - -} - --(void) postConsoleController:(NSNotification *)notif{ - [self performSelectorOnMainThread:@selector(postConsoleControllerMainThread:) withObject:notif waitUntilDone:NO]; -} - - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(postConsoleController:) name:@"NewConsoleControllerObject" object:nil]; - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(postConsoleController:) name:@"onRPCResponse" object:nil]; - - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - self.title = NSLocalizedString(@"Console", @"Console"); - self.tabBarItem.image = [UIImage imageNamed:@"cog_02"]; - } - - return self; -} - - -- (void)viewDidLoad -{ - consoleController = [[SDLConsoleController alloc] initWithTableView:self.consoleView]; - [super viewDidLoad]; - -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -- (void) dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [consoleController release]; - [super dealloc]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ConsoleViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ConsoleViewController.xib deleted file mode 100644 index 0a0739e..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ConsoleViewController.xib +++ /dev/null @@ -1,175 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUIView - IBUITableView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 274 - {320, 411} - - - _NS:9 - - 3 - MQA - - YES - IBCocoaTouchFramework - YES - 1 - 0 - YES - 44 - 22 - 22 - - - {{0, 20}, {320, 411}} - - - - 3 - MQA - - 2 - - - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - consoleView - - - - 5 - - - - - - 0 - - - - - - 1 - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - ConsoleViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 5 - - - - - ConsoleViewController - UIViewController - - consoleView - UITableView - - - consoleView - - consoleView - UITableView - - - - IBProjectSource - ./Classes/ConsoleViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.h deleted file mode 100644 index c27400a..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "SDLChoice.h" - -@interface CreateInteractionChoiceSetViewController : UIViewController { - - IBOutlet UITextView *choiceSetView; - IBOutlet UITextField *idText; - - int choiceID; - -} - --(IBAction)createInteractionPressed:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.m deleted file mode 100644 index 702cf27..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.m +++ /dev/null @@ -1,81 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "CreateInteractionChoiceSetViewController.h" - -@interface CreateInteractionChoiceSetViewController () - -@end - -@implementation CreateInteractionChoiceSetViewController - --(IBAction)createInteractionPressed:(id)sender { - NSString *choicestring = [choiceSetView text]; - NSArray *tempchoices = [choicestring componentsSeparatedByString:@", "]; - - NSMutableArray *choices = [[NSMutableArray alloc] init]; - for (int i = 0; i < [tempchoices count]; i++) { - SDLChoice *cho = [[SDLChoice alloc] init]; - cho.menuName = [tempchoices objectAtIndex:i]; - cho.choiceID = [NSNumber numberWithInt: choiceID++]; - cho.vrCommands = [NSArray arrayWithObject:[tempchoices objectAtIndex:i]]; - [choices addObject:cho]; - [cho release]; - } - - - [[SDLBrain getInstance] createInteractionChoiceSetPressedWithID:[NSNumber numberWithInt:[[idText text] intValue]] choiceSet:choices]; -} - - -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { - - if([text isEqualToString:@"\n"]) { - [textView resignFirstResponder]; - return NO; - } - - return YES; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - [textField resignFirstResponder]; - return NO; -} - - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"CreateInteractionChoiceSet"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - choiceSetView.delegate = self; - idText.delegate = self; - [[choiceSetView layer] setCornerRadius:10]; - choiceID = 0; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.xib deleted file mode 100644 index 5bcab9d..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/CreateInteractionChoiceSetViewController.xib +++ /dev/null @@ -1,399 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUITextField - IBUITextView - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 43}, {42, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - ID - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{70, 38}, {230, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{70, 142}, {230, 128}} - - - - _NS:9 - - 1 - MSAxIDEAA - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - - - - - 292 - {{20, 96}, {84, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Choice Set - - - 0 - 10 - - - - - - 292 - {{112, 297}, {97, 37}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{20, 113}, {270, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Enter choices separated by comma - - - 0 - 10 - - 1 - 13 - - - Helvetica - 13 - 16 - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - choiceSetView - - - - 9 - - - - idText - - - - 10 - - - - createInteractionPressed: - - - 7 - - 11 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - 12 - - - - - - - CreateInteractionChoiceSetViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 12 - - - - - CreateInteractionChoiceSetViewController - UIViewController - - createInteractionPressed: - id - - - createInteractionPressed: - - createInteractionPressed: - id - - - - UITextView - UITextField - - - - choiceSetView - UITextView - - - idText - UITextField - - - - IBProjectSource - ./Classes/CreateInteractionChoiceSetViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.h deleted file mode 100644 index 844df93..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "AddCommandViewController.h" -#import "SDLAddCommandResponse.h" -#import "AddMenuOption.h" - -@interface DeleteCommandViewController : UIViewController { - - IBOutlet UITableView *commandsTable; - -} - - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.m deleted file mode 100644 index 1ca8203..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.m +++ /dev/null @@ -1,130 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "DeleteCommandViewController.h" - -@interface DeleteCommandViewController () - --(AddMenuOption *)returnAddMenuOptionWithMenuName:(NSString *)menuName; --(void)updateTable; - -@end - -@implementation DeleteCommandViewController - --(void)updateTable { - [SDLDebugTool logInfo:@"reloadData with Table"]; - [commandsTable reloadData]; -} - - - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; - NSString *chosenCommand = cell.textLabel.text; - - AddMenuOption *amo = [self returnAddMenuOptionWithMenuName:chosenCommand]; - - [SDLDebugTool logInfo:@"Menu Option Selected = %@", [amo menuName]]; - - [[SDLBrain getInstance] deleteCommandPressed:[amo menuID]]; - - [commandsIssued removeObject:amo]; - [self updateTable]; -} - - --(AddMenuOption *)returnAddMenuOptionWithMenuName:(NSString *)menuName { - for (int i = 0; i < [commandsIssued count]; i++) { - if ([menuName isEqualToString:[[commandsIssued objectAtIndex:i] menuName]]) { - return [commandsIssued objectAtIndex:i]; - } - - } - return [commandsIssued lastObject]; -} - - -- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return @"Select a Command"; -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return [commandsIssued count]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - - [SDLDebugTool logInfo:@"Got to cellForRowAtIndexPath"]; - static NSString *CellIdentifier = @"Cell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; - } - - [SDLDebugTool logInfo:@"right before figuring out cell text"]; - [SDLDebugTool logInfo:@"indexPath = %d", indexPath.row]; - - @try { - [SDLDebugTool logInfo:@"about to print %@",[[commandsIssued objectAtIndex:indexPath.row] menuName]]; - - // Configure the cell. - cell.textLabel.text = [NSString stringWithFormat:@"%@",[[commandsIssued objectAtIndex:indexPath.row] menuName]]; - } - @catch (NSException *exception) { - [SDLDebugTool logInfo:@"Failed to print out name of commandsIssued"]; - } - @finally { - [SDLDebugTool logInfo:@"Finally"]; - } - - [SDLDebugTool logInfo:@"finished cellForRowAtIndexPath"]; - - return cell; -} - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"DeleteCommand"; - - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTable) name:@"AddCommandRequest" object:nil]; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - commandsTable.delegate = self; - commandsTable.dataSource = self; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.xib deleted file mode 100644 index 9b99c65..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteCommandViewController.xib +++ /dev/null @@ -1,177 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUIView - IBUITableView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 274 - {320, 367} - - - _NS:9 - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - YES - IBCocoaTouchFramework - YES - 1 - 2 - 0 - YES - 44 - 10 - 10 - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - commandsTable - - - - 17 - - - - - - 0 - - - - - - 1 - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 16 - - - - - - - DeleteCommandViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 17 - - - - - DeleteCommandViewController - UIViewController - - commandsTable - UITableView - - - commandsTable - - commandsTable - UITableView - - - - IBProjectSource - ./Classes/DeleteCommandViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.h deleted file mode 100644 index ad2ee44..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" - -@interface DeleteInteractionChoiceSetViewController : UIViewController { - - IBOutlet UITextField *idText; - -} - --(IBAction)deleteInteractionPressed:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.m deleted file mode 100644 index 9ae6bed..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.m +++ /dev/null @@ -1,51 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "DeleteInteractionChoiceSetViewController.h" - -@interface DeleteInteractionChoiceSetViewController () - -@end - -@implementation DeleteInteractionChoiceSetViewController - - --(IBAction)deleteInteractionPressed:(id)sender { - [[SDLBrain getInstance] deleteInteractionChoiceSetPressedWithID:[NSNumber numberWithInt:[[idText text] intValue]]]; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - [textField resignFirstResponder]; - return NO; -} - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"DeleteInteractionChoiceSet"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - idText.delegate = self; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.xib deleted file mode 100644 index 00c3d8e..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteInteractionChoiceSetViewController.xib +++ /dev/null @@ -1,293 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUITextField - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 57}, {42, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - ID - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{70, 52}, {230, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{112, 209}, {97, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - idText - - - - 8 - - - - deleteInteractionPressed: - - - 7 - - 9 - - - - - - 0 - - - - - - 1 - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 5 - - - - - 6 - - - - - 7 - - - - - - - DeleteInteractionChoiceSetViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 9 - - - - - DeleteInteractionChoiceSetViewController - UIViewController - - deleteInteractionPressed: - id - - - deleteInteractionPressed: - - deleteInteractionPressed: - id - - - - idText - UITextField - - - idText - - idText - UITextField - - - - IBProjectSource - ./Classes/DeleteInteractionChoiceSetViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.h deleted file mode 100644 index 6085db2..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "AddSubMenuViewController.h" -#import "AddMenuOption.h" - -@interface DeleteSubMenuViewController : UIViewController { - - IBOutlet UITableView *subMenuTable; - -} - - - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.m deleted file mode 100644 index 3448fa4..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.m +++ /dev/null @@ -1,106 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "DeleteSubMenuViewController.h" - -@interface DeleteSubMenuViewController () - --(AddMenuOption *)returnAddMenuOptionWithMenuName:(NSString *)menuName; --(void)updateTable; - - -@end - -@implementation DeleteSubMenuViewController - --(void)updateTable { - [subMenuTable reloadData]; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; - NSString *chosenSubMenu = cell.textLabel.text; - - AddMenuOption *amo = [self returnAddMenuOptionWithMenuName:chosenSubMenu]; - - [[SDLBrain getInstance] deleteSubMenuPressedwithID:[amo menuID]]; - - [subMenuIssued removeObject:amo]; - [self updateTable]; -} - - --(AddMenuOption *)returnAddMenuOptionWithMenuName:(NSString *)menuName { - for (int i = 0; i < [subMenuIssued count]; i++) { - if ([menuName isEqualToString:[[subMenuIssued objectAtIndex:i] menuName]]) { - return [subMenuIssued objectAtIndex:i]; - } - } - return [subMenuIssued lastObject]; -} - - -- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return @"Select a Sub Menu"; -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return [subMenuIssued count]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - static NSString *CellIdentifier = @"Cell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; - } - - // Configure the cell. - cell.textLabel.text = [NSString stringWithFormat:@"%@",[[subMenuIssued objectAtIndex:indexPath.row] menuName]]; - - return cell; -} - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"DeleteSubMenu"; - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTable) name:@"AddSubMenuRequest" object:nil]; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - subMenuTable.delegate = self; - subMenuTable.dataSource = self; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.xib deleted file mode 100644 index 434dda8..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/DeleteSubMenuViewController.xib +++ /dev/null @@ -1,177 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUIView - IBUITableView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 274 - {320, 367} - - - _NS:9 - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - YES - IBCocoaTouchFramework - YES - 1 - 2 - 0 - YES - 44 - 10 - 10 - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - subMenuTable - - - - 11 - - - - - - 0 - - - - - - 1 - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 10 - - - - - - - DeleteSubMenuViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 11 - - - - - DeleteSubMenuViewController - UIViewController - - subMenuTable - UITableView - - - subMenuTable - - subMenuTable - UITableView - - - - IBProjectSource - ./Classes/DeleteSubMenuViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.h deleted file mode 100644 index 3544062..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" - -@interface EncodedSyncPDataViewController : UIViewController { - IBOutlet UITextView *encodedDataText; -} - --(IBAction)sendESPData:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.m deleted file mode 100644 index 99063b6..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.m +++ /dev/null @@ -1,60 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "EncodedSyncPDataViewController.h" - -@interface EncodedSyncPDataViewController () - -@end - -@implementation EncodedSyncPDataViewController - - --(IBAction)sendESPData:(id)sender { - [[SDLBrain getInstance] sendEncodedSyncPData:[NSMutableArray arrayWithObjects:[encodedDataText text], nil]]; -} - - -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { - - if([text isEqualToString:@"\n"]) { - [textView resignFirstResponder]; - return NO; - } - - return YES; -} - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"EncodedSyncPData"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - encodedDataText.delegate = self; - [[encodedDataText layer] setCornerRadius:10]; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.xib deleted file mode 100644 index de2aa17..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/EncodedSyncPDataViewController.xib +++ /dev/null @@ -1,287 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUITextView - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{40, 27}, {42, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Data - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{40, 56}, {240, 128}} - - - - _NS:9 - - 1 - MSAxIDEAA - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{112, 257}, {97, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - encodedDataText - - - - 7 - - - - sendESPData: - - - 7 - - 8 - - - - - - 0 - - - - - - 1 - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - - - EncodedSyncPDataViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 8 - - - - - EncodedSyncPDataViewController - UIViewController - - sendESPData: - id - - - sendESPData: - - sendESPData: - id - - - - encodedDataText - UITextView - - - encodedDataText - - encodedDataText - UITextView - - - - IBProjectSource - ./Classes/EncodedSyncPDataViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.h deleted file mode 100644 index e09f026..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "SDLInteractionMode.h" -#import "SDLTTSChunkFactory.h" - -@interface PerformInteractionViewController : UIViewController { - - IBOutlet UITextView *initPromptText; - IBOutlet UITextField *initialText; - IBOutlet UITextField *choiceIDText; - IBOutlet UITextView *helpText; - IBOutlet UITextView *timeoutText; - - IBOutlet UISegmentedControl *interactionModeControl; - - IBOutlet UILabel *timeoutLabel; - IBOutlet UISlider *timeoutSlider; - - IBOutlet UIScrollView *scrollView; - -} - --(IBAction)displayTimeoutSlider:(id)sender; --(IBAction)performInteractionPressed:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.m deleted file mode 100644 index 8e47d35..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.m +++ /dev/null @@ -1,119 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "PerformInteractionViewController.h" - -@interface PerformInteractionViewController () - -@end - -@implementation PerformInteractionViewController - --(IBAction)performInteractionPressed:(id)sender { - - NSArray *tempPrompt = [[initPromptText text] componentsSeparatedByString:@", "]; - NSMutableArray *initialPrompt = [[NSMutableArray alloc] init]; - for (int i = 0; i < [tempPrompt count]; i++) { - [initialPrompt addObject:[SDLTTSChunkFactory buildTTSChunkForString:[tempPrompt objectAtIndex:i] type:[SDLSpeechCapabilities TEXT]]]; - } - - NSArray *tempHelp = [[helpText text] componentsSeparatedByString:@", "]; - NSMutableArray *helpChunks = [[NSMutableArray alloc] init]; - for (int i = 0; i < [tempHelp count]; i++) { - [helpChunks addObject:[SDLTTSChunkFactory buildTTSChunkForString:[tempHelp objectAtIndex:i] type:[SDLSpeechCapabilities TEXT]]]; - } - - NSArray *tempTimeout = [[timeoutText text] componentsSeparatedByString:@", "]; - NSMutableArray *timeoutChunks = [[NSMutableArray alloc] init]; - for (int i = 0; i < [tempTimeout count]; i++) { - [timeoutChunks addObject:[SDLTTSChunkFactory buildTTSChunkForString:[tempTimeout objectAtIndex:i] type:[SDLSpeechCapabilities TEXT]]]; - } - - SDLInteractionMode *im; - if (interactionModeControl.selectedSegmentIndex == 0) { - im = [SDLInteractionMode MANUAL_ONLY]; - } - else if (interactionModeControl.selectedSegmentIndex == 1) { - im = [SDLInteractionMode VR_ONLY]; - } - else { - im = [SDLInteractionMode BOTH]; - } - - [[SDLBrain getInstance] performInteractionPressedwithInitialPrompt:initialPrompt initialText:[initialText text] interactionChoiceSetIDList:[NSArray arrayWithObject:[NSNumber numberWithInt:[[choiceIDText text] intValue]]] helpChunks:helpChunks timeoutChunks:timeoutChunks interactionMode:im timeout:[NSNumber numberWithDouble:(round([timeoutSlider value])*1000)]]; - - [initialPrompt release]; - [helpChunks release]; - [timeoutChunks release]; -} - - --(IBAction)displayTimeoutSlider:(id)sender { - timeoutLabel.text = [NSString stringWithFormat:@"%g",round([timeoutSlider value])]; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - [textField resignFirstResponder]; - return NO; -} - -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { - - if([text isEqualToString:@"\n"]) { - [textView resignFirstResponder]; - return NO; - } - - return YES; -} - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"PerformInteraction"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - - [super viewDidLoad]; - - [self.view addSubview: scrollView]; - [scrollView setContentSize:CGSizeMake(320, 1080)]; - [scrollView setUserInteractionEnabled:YES]; - - initPromptText.delegate = self; - initialText.delegate = self; - choiceIDText.delegate = self; - helpText.delegate = self; - timeoutText.delegate = self; - - [[initPromptText layer] setCornerRadius:10]; - [[helpText layer] setCornerRadius:10]; - [[timeoutText layer] setCornerRadius:10]; - - timeoutSlider.minimumValue = 5; - timeoutSlider.maximumValue = 10; - [timeoutSlider setValue:10]; - timeoutLabel.text = @"10"; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.xib deleted file mode 100644 index 3208235..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/PerformInteractionViewController.xib +++ /dev/null @@ -1,988 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUISlider - IBUILabel - IBUIButton - IBUITextField - IBUITextView - IBUISegmentedControl - IBUIScrollView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - {{0, 64}, {320, 367}} - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{40, 451}, {280, 98}} - - - - _NS:9 - - 1 - MSAxIDEAA - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{128, 629}, {42, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - 5 - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - - - - 292 - {{20, 20}, {101, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Initial Prompt - - - 0 - 10 - - - - - - 292 - {{20, 35}, {270, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Enter TTS Chunks Separated By Comma - - - 0 - 10 - - 1 - 13 - - - Helvetica - 13 - 16 - - - - - 292 - {{20, 59}, {280, 98}} - - - - _NS:9 - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - - - - - 292 - {{111, 168}, {189, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{20, 173}, {78, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Initial Text - - - 0 - 10 - - - - - - 292 - {{20, 207}, {105, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Choice Set ID - - - 0 - 10 - - - - - - 292 - {{142, 202}, {158, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{20, 283}, {280, 98}} - - - - _NS:9 - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - - - - - 292 - {{20, 246}, {74, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Help Text - - - 0 - 10 - - - - - - 292 - {{20, 389}, {125, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Timeout Prompt - - - 0 - 10 - - - - - - 292 - {{20, 264}, {270, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Enter TTS Chunks Separated By Comma - - - 0 - 10 - - - - - - 292 - {{20, 410}, {270, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Enter TTS Chunks Separated By Comma - - - 0 - 10 - - - - - - 292 - {{20, 541}, {130, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Interaction Mode - - - 0 - 10 - - - - - - 292 - {{161, 610}, {118, 23}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 0.5 - - - - 292 - {{34, 609}, {70, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Timeout: - - - 0 - 10 - - - - - - 292 - {{107, 653}, {97, 37}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{20, 439}, {280, 98}} - - - - _NS:9 - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - - - - - 292 - {{111, 609}, {26, 23}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - 5 - - - 0 - 10 - - - - - - 292 - {{52, 566}, {207, 30}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 2 - 3 - 0 - - Manual - VR - Both - - - - - - - - - - - - - {0, 0} - {0, 0} - {0, 0} - - - - - - - - - {320, 710} - - - - _NS:10 - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - IBCocoaTouchFramework - - - {320, 728} - - - - _NS:9 - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - YES - YES - IBCocoaTouchFramework - YES - NO - - - - - - - view - - - - 3 - - - - scrollView - - - - 46 - - - - choiceIDText - - - - 51 - - - - helpText - - - - 52 - - - - initialText - - - - 53 - - - - initPromptText - - - - 54 - - - - interactionModeControl - - - - 55 - - - - timeoutLabel - - - - 56 - - - - timeoutSlider - - - - 57 - - - - timeoutText - - - - 58 - - - - displayTimeoutSlider: - - - 13 - - 59 - - - - performInteractionPressed: - - - 7 - - 60 - - - - - - 0 - - - - - - 1 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - - - - 25 - - - - - 17 - - - - - 44 - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - - - - - 8 - - - - - 9 - - - - - 10 - - - - - 11 - - - - - 12 - - - - - 13 - - - - - 15 - - - - - 16 - - - - - 18 - - - - - 19 - - - - - 20 - - - - - 21 - - - - - 23 - - - - - 24 - - - - - 26 - - - - - 48 - - - - - 49 - - - - - 50 - - - - - - - PerformInteractionViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 60 - - - - - PerformInteractionViewController - UIViewController - - id - id - - - - displayTimeoutSlider: - id - - - performInteractionPressed: - id - - - - UITextField - UITextView - UITextView - UITextField - UISegmentedControl - UIScrollView - UILabel - UISlider - UITextView - - - - choiceIDText - UITextField - - - helpText - UITextView - - - initPromptText - UITextView - - - initialText - UITextField - - - interactionModeControl - UISegmentedControl - - - scrollView - UIScrollView - - - timeoutLabel - UILabel - - - timeoutSlider - UISlider - - - timeoutText - UITextView - - - - IBProjectSource - ./Classes/PerformInteractionViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.h deleted file mode 100644 index fd6e000..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.h +++ /dev/null @@ -1,50 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "UnregisterAppInterfaceViewController.h" -#import "AlertViewController.h" -#import "SpeakViewController.h" -#import "ShowViewController.h" -#import "SetMediaClockTimerViewController.h" -#import "AddCommandViewController.h" -#import "DeleteCommandViewController.h" -#import "AddSubMenuViewController.h" -#import "DeleteSubMenuViewController.h" -#import "CreateInteractionChoiceSetViewController.h" -#import "DeleteInteractionChoiceSetViewController.h" -#import "PerformInteractionViewController.h" -#import "SubscribeButtonViewController.h" -#import "UnsubscribeButtonViewController.h" -#import "EncodedSyncPDataViewController.h" -#import "SetGlobalPropertiesViewController.h" -#import "ResetGlobalPropertiesViewController.h" - - - - -@interface RPCTestViewController : UITableViewController { - - NSMutableArray *rpclist; - - UnregisterAppInterfaceViewController *unregisterappinterfacevc; - AlertViewController *alertvc; - SpeakViewController *speakvc; - ShowViewController *showvc; - SetMediaClockTimerViewController *setmediaclocktimervc; - AddCommandViewController *addcommandvc; - DeleteCommandViewController *deletecommandvc; - AddSubMenuViewController *addsubmenuvc; - DeleteSubMenuViewController *deletesubmenuvc; - CreateInteractionChoiceSetViewController *createinteractionchoicesetvc; - DeleteInteractionChoiceSetViewController *deleteinteractionchoicesetvc; - PerformInteractionViewController *performinteractionvc; - SubscribeButtonViewController *subscribebuttonvc; - UnsubscribeButtonViewController *unsubscribebuttonvc; - EncodedSyncPDataViewController *encodedsyncpdatavc; - SetGlobalPropertiesViewController *setglobalpropertiesvc; - ResetGlobalPropertiesViewController *resetglobalpropertiesvc; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.m deleted file mode 100644 index e3eb395..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.m +++ /dev/null @@ -1,195 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "RPCTestViewController.h" - -@interface RPCTestViewController () - -@end - -@implementation RPCTestViewController - - -- (id)initWithStyle:(UITableViewStyle)style { - self.title = @"RPC Test"; - - NSArray *tempArray = [NSArray arrayWithObjects: @"UnregisterAppInterface", @"Alert",@"Speak",@"Show",@"SetMediaClockTimer",@"AddCommand",@"DeleteCommand",@"AddSubMenu",@"DeleteSubMenu",@"CreateInteractionChoiceSet",@"DeleteInteractionChoiceSet",@"PerformInteraction",@"SubscribeButton",@"UnsubscribeButton", @"EncodedSyncPData",@"SetGlobalProperties",@"ResetGlobalProperties", nil]; - rpclist = [[NSMutableArray alloc] init]; - [rpclist addObjectsFromArray:tempArray]; - - unregisterappinterfacevc = [[UnregisterAppInterfaceViewController alloc] initWithNibName:@"UnregisterAppInterfaceViewController" bundle:nil]; - alertvc = [[AlertViewController alloc] initWithNibName:@"AlertViewController" bundle:nil]; - speakvc = [[SpeakViewController alloc] initWithNibName:@"SpeakViewController" bundle:nil]; - showvc = [[ShowViewController alloc] initWithNibName:@"ShowViewController" bundle:nil]; - setmediaclocktimervc = [[SetMediaClockTimerViewController alloc] initWithNibName:@"SetMediaClockTimerViewController" bundle:nil]; - addcommandvc = [[AddCommandViewController alloc] initWithNibName:@"AddCommandViewController" bundle:nil]; - deletecommandvc = [[DeleteCommandViewController alloc] initWithNibName:@"DeleteCommandViewController" bundle:nil]; - addsubmenuvc = [[AddSubMenuViewController alloc] initWithNibName:@"AddSubMenuViewController" bundle:nil]; - deletesubmenuvc = [[DeleteSubMenuViewController alloc] initWithNibName:@"DeleteSubMenuViewController" bundle:nil]; - createinteractionchoicesetvc = [[CreateInteractionChoiceSetViewController alloc] initWithNibName:@"CreateInteractionChoiceSetViewController" bundle:nil]; - deleteinteractionchoicesetvc = [[DeleteInteractionChoiceSetViewController alloc] initWithNibName:@"DeleteInteractionChoiceSetViewController" bundle:nil]; - performinteractionvc = [[PerformInteractionViewController alloc] initWithNibName:@"PerformInteractionViewController" bundle:nil]; - subscribebuttonvc = [[SubscribeButtonViewController alloc] initWithNibName:@"SubscribeButtonViewController" bundle:nil]; - unsubscribebuttonvc = [[UnsubscribeButtonViewController alloc] initWithNibName:@"UnsubscribeButtonViewController" bundle:nil]; - encodedsyncpdatavc = [[EncodedSyncPDataViewController alloc] initWithNibName:@"EncodedSyncPDataViewController" bundle:nil]; - setglobalpropertiesvc = [[SetGlobalPropertiesViewController alloc] initWithNibName:@"SetGlobalPropertiesViewController" bundle:nil]; - resetglobalpropertiesvc = [[ResetGlobalPropertiesViewController alloc] initWithNibName:@"ResetGlobalPropertiesViewController" bundle:nil]; - - - - self = [super initWithStyle:style]; - if (self) { - self.title = NSLocalizedString(@"RPC Test", @"RPC Test"); - self.tabBarItem.image = [UIImage imageNamed:@"brief_case"]; - } - return self; - -} - - -- (void)viewDidLoad -{ - [super viewDidLoad]; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return [rpclist count]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - static NSString *CellIdentifier = @"Cell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; - } - - // Configure the cell. - cell.textLabel.text = [rpclist objectAtIndex:indexPath.row]; - - return cell; -} - -#pragma mark - Table view delegate - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; - NSString *selectedrpc = cell.textLabel.text; - if ([selectedrpc isEqualToString:@"UnregisterAppInterface"]) { - [self.navigationController pushViewController:unregisterappinterfacevc animated:YES]; - } - else if ([selectedrpc isEqualToString:@"Alert"]) { - [self.navigationController pushViewController:alertvc animated:YES]; - } - else if ([selectedrpc isEqualToString:@"Speak"]) { - [self.navigationController pushViewController:speakvc animated:YES]; - } - else if ([selectedrpc isEqualToString:@"Show"]) { - [self.navigationController pushViewController:showvc animated:YES]; - } - else if ([selectedrpc isEqualToString:@"SetMediaClockTimer"]) { - [self.navigationController pushViewController:setmediaclocktimervc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"AddCommand"]) { - [self.navigationController pushViewController:addcommandvc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"DeleteCommand"]) { - [self.navigationController pushViewController:deletecommandvc animated:YES]; - } - else if ([selectedrpc isEqualToString:@"AddSubMenu"]) { - [self.navigationController pushViewController:addsubmenuvc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"DeleteSubMenu"]) { - [self.navigationController pushViewController:deletesubmenuvc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"CreateInteractionChoiceSet"]) { - [self.navigationController pushViewController:createinteractionchoicesetvc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"DeleteInteractionChoiceSet"]) { - [self.navigationController pushViewController:deleteinteractionchoicesetvc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"PerformInteraction"]) { - [self.navigationController pushViewController:performinteractionvc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"SubscribeButton"]) { - [self.navigationController pushViewController:subscribebuttonvc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"EncodedSyncPData"]) { - [self.navigationController pushViewController:encodedsyncpdatavc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"UnsubscribeButton"]) { - [self.navigationController pushViewController:unsubscribebuttonvc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"SetGlobalProperties"]) { - [self.navigationController pushViewController:setglobalpropertiesvc animated:YES]; - - } - else if ([selectedrpc isEqualToString:@"ResetGlobalProperties"]) { - [self.navigationController pushViewController:resetglobalpropertiesvc animated:YES]; - - } - -} - -- (void)loadView -{ - [super loadView]; -} - --(void) dealloc { - [rpclist release]; - [unregisterappinterfacevc release]; - [alertvc release]; - [speakvc release]; - [showvc release]; - [setmediaclocktimervc release]; - [addcommandvc release]; - [deletecommandvc release]; - [addsubmenuvc release]; - [deletesubmenuvc release]; - [createinteractionchoicesetvc release]; - [deleteinteractionchoicesetvc release]; - [performinteractionvc release]; - [subscribebuttonvc release]; - [unsubscribebuttonvc release]; - [encodedsyncpdatavc release]; - [setglobalpropertiesvc release]; - [resetglobalpropertiesvc release]; - - [super dealloc]; -} - - - - - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.xib deleted file mode 100644 index a8d5907..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/RPCTestViewController.xib +++ /dev/null @@ -1,113 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - {{0, 64}, {320, 367}} - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - - - 0 - - - - - - 1 - - - - - - -1 - - - File's Owner - - - -2 - - - - - - - RPCTestViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 5 - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.h deleted file mode 100644 index e8f511f..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" - -@interface ResetGlobalPropertiesViewController : UIViewController { - -} - --(IBAction)resetGlobalPropertiesPressed:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.m deleted file mode 100644 index b044e71..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.m +++ /dev/null @@ -1,57 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "ResetGlobalPropertiesViewController.h" - -@interface ResetGlobalPropertiesViewController () - -@end - -@implementation ResetGlobalPropertiesViewController - - --(IBAction)resetGlobalPropertiesPressed:(id)sender { - UIButton *tempButton = (UIButton *)sender; - SDLGlobalProperty *globalProperty; - if ([tempButton.titleLabel.text isEqualToString:@"Reset Help Prompt"]) { - globalProperty = [SDLGlobalProperty HELPPROMPT]; - } - else { - globalProperty = [SDLGlobalProperty TIMEOUTPROMPT]; - } - - [[SDLBrain getInstance] resetGlobalPropertiesPressedwithProperties:[NSArray arrayWithObject:globalProperty]]; -} - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"ResetGlobalProperties"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.xib deleted file mode 100644 index 524cabf..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ResetGlobalPropertiesViewController.xib +++ /dev/null @@ -1,230 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUIView - IBUIButton - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{80, 101}, {160, 37}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Reset Help Prompt - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{67, 184}, {186, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Reset Timeout Prompt - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - resetGlobalPropertiesPressed: - - - 7 - - 7 - - - - resetGlobalPropertiesPressed: - - - 7 - - 8 - - - - - - 0 - - - - - - 1 - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 5 - - - - - 6 - - - - - - - ResetGlobalPropertiesViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 8 - - - - - ResetGlobalPropertiesViewController - UIViewController - - resetGlobalPropertiesPressed: - id - - - resetGlobalPropertiesPressed: - - resetGlobalPropertiesPressed: - id - - - - IBProjectSource - ./Classes/ResetGlobalPropertiesViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SDLBrain.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SDLBrain.h deleted file mode 100644 index 0519ce2..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SDLBrain.h +++ /dev/null @@ -1,58 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import -#import "SDLProxyFactory.h" -#import "SDLProxy.h" -#import "SDLIAPTransport.h" -#import "SDLProtocol.h" -#import "SDLDebugTool.h" -#import "SDLConsoleController.h" -#import "SDLRPCRequest.h" -#import - -@interface SDLBrain : NSObject { - SDLProxy* proxy; - int autoIncCorrID; - - int cmdID; - BOOL firstTimeStartUp; -} - -+(SDLBrain *)getInstance; - --(int)getCMDID; - --(void) setupProxy; --(void) setup; --(void) sendRPCMessage:(SDLRPCRequest *)rpcMsg; - --(void) showPressed:(NSString *)message; --(void) showAdvancedPressedWithLine1Text:(NSString *)line1Text line2:(NSString *)line2Text statusBar:(NSString *)statusBar mediaClock:(NSString *)mediaClock mediaTrack:(NSString *)mediaTrack alignment:(SDLTextAlignment *)textAlignment; --(void) speakPressed:(NSString *)message; --(void) speakTTSChunksPressed; --(void) unregisterAppInterfacePressed; --(void) setMediaClockTimerPressedwithHours:(NSNumber *)hours minutes:(NSNumber *)minutes seconds:(NSNumber *)seconds updateMode:(SDLUpdateMode *)updateMode; --(void) alertPressed:(NSString *)message; --(void) alertAdvancedPressedwithTTSChunks:(NSArray *)ttsChucks alertText1:(NSString *)alertText1 alertText2:(NSString *)alertText2 playTone:(NSNumber *)playTone duration:(NSNumber *)duration; --(void) addCommand:(NSString *)message; --(void) addAdvancedCommandPressedwithMenuName:(NSString *)menuName position:(NSNumber *)position parentID:(NSNumber *)parentID vrCommands:(NSArray *) vrCommands; --(void) deleteCommandPressed:(NSNumber *)cmdID; --(void) addSubMenuPressedwithID:(NSNumber *)menuID menuName:(NSString *)menuName position:(NSNumber *)position; --(void) deleteSubMenuPressedwithID:(NSNumber *)menuID; --(void) createInteractionChoiceSetPressedWithID:(NSNumber *)interactionChoiceSetID choiceSet:(NSArray *)choices; --(void) deleteInteractionChoiceSetPressedWithID:(NSNumber *)interactionChoiceSetID; --(void) performInteractionPressedwithInitialPrompt:(NSArray*)initialChunks initialText:(NSString*)initialText interactionChoiceSetIDList:(NSArray*) interactionChoiceSetIDList helpChunks:(NSArray*)helpChunks timeoutChunks:(NSArray*)timeoutChunks interactionMode:(SDLInteractionMode*) interactionMode timeout:(NSNumber*)timeout; --(void) subscribeButtonPressed:(SDLButtonName *)buttonName; --(void) unsubscribeButtonPressed:(SDLButtonName *)buttonName; --(void) sendEncodedSyncPData:(NSMutableArray *)data; --(void) setGlobalPropertiesPressedWithHelpText:(NSString *)helpText timeoutText:(NSString *)timeoutText; --(void) resetGlobalPropertiesPressedwithProperties:(NSArray *)properties; - - - -@end - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SDLBrain.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SDLBrain.m deleted file mode 100644 index 4ed8280..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SDLBrain.m +++ /dev/null @@ -1,420 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SDLBrain.h" -#import "SDLNames.h" -#import "SDLTTSChunkFactory.h" -#import "SDLGenericResponse.h" -#import "SDLProxyFactory.h" -#import "SDLIAPTransport.h" -#import "SDLProtocol.h" -#import "SDLDebugTool.h" -#import "SDLConsoleController.h" -#import "SDLVersion.h" -#import - - -#define PREFS_MTU_SIZE @"mtuSize" -#define PREFS_SEND_DELAY @"sendDelay" - -#define PREFS_FIRST_RUN @"firstRun" - -#define PREFS_PROTOCOL @"protocol" -#define PREFS_IPADDRESS @"ipaddress" -#define PREFS_PORT @"port" - -#define PREFS_TYPE @"type" - - - -@implementation SDLBrain - -static SDLBrain *gInstance = NULL; - -+ (SDLBrain *)getInstance -{ - @synchronized(self) - { - if (gInstance == NULL) - gInstance = [[self alloc] init]; - } - return gInstance; -} - -//Populating Sync Display Screen with relevant information upon creation --(void) setup { - SDLShow* msg = [SDLRPCRequestFactory buildShowWithMainField1:@"Smart Device" mainField2:@"Link Tester" alignment:[SDLTextAlignment CENTERED] correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - msg.mediaTrack = @"SDL"; - [proxy sendRPCRequest:msg]; - - [SDLDebugTool logInfo:@"SDLProxy Version: %@: ", VERSION_STRING]; -} - --(void) sendRPCMessage:(SDLRPCRequest *)rpcMsg { - [proxy sendRPCRequest:rpcMsg]; - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:rpcMsg]]; - -} - - -// ===================================== -// RPC Function Calls -// ===================================== - -- (void) showPressed:(NSString *)message { - SDLShow* msg = [SDLRPCRequestFactory buildShowWithMainField1:message mainField2:@"SDL Tester" alignment:[SDLTextAlignment CENTERED] correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - msg.mediaTrack = @"SDL"; - [proxy sendRPCRequest:msg]; - - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:msg]]; - -} - - - --(void) showAdvancedPressedWithLine1Text:(NSString *)line1Text line2:(NSString *)line2Text statusBar:(NSString *)statusBar mediaClock:(NSString *)mediaClock mediaTrack:(NSString *)mediaTrack alignment:(SDLTextAlignment *)textAlignment { - - SDLShow *msg = [SDLRPCRequestFactory buildShowWithMainField1:line1Text mainField2:line2Text statusBar:statusBar mediaClock:mediaClock mediaTrack:mediaTrack alignment:textAlignment correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:msg]; - - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:msg]]; -} - --(void) unregisterAppInterfacePressed { - SDLUnregisterAppInterface* req = [SDLRPCRequestFactory buildUnregisterAppInterfaceWithCorrelationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) setMediaClockTimerPressedwithHours:(NSNumber *)hours minutes:(NSNumber *)minutes seconds:(NSNumber *)seconds updateMode:(SDLUpdateMode *)updateMode { - SDLSetMediaClockTimer *req = [SDLRPCRequestFactory buildSetMediaClockTimerWithHours:hours minutes:minutes seconds:seconds updateMode:updateMode correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - -- (void) speakPressed:(NSString *)message { - SDLSpeak* req = [SDLRPCRequestFactory buildSpeakWithTTS:message correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - -- (void) alertPressed:(NSString *)message { - SDLAlert* req = [SDLRPCRequestFactory buildAlertWithTTS:message alertText1:message alertText2:@"" playTone:[NSNumber numberWithBool:YES] duration:[NSNumber numberWithInt:5000] correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) alertAdvancedPressedwithTTSChunks:(NSArray *)ttsChucks alertText1:(NSString *)alertText1 alertText2:(NSString *)alertText2 playTone:(NSNumber *)playTone duration:(NSNumber *)duration { - - SDLAlert *req = [SDLRPCRequestFactory buildAlertWithTTSChunks:ttsChucks alertText1:alertText1 alertText2:alertText2 playTone:playTone duration:duration correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) addCommand:(NSString *)message { - - NSArray *vrc = [NSArray arrayWithObjects:message, nil]; - SDLAddCommand *command = [SDLRPCRequestFactory buildAddCommandWithID:[NSNumber numberWithInt:cmdID] menuName:message vrCommands:vrc correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:command]; - cmdID++; - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:command]]; - - - -} - --(void) addAdvancedCommandPressedwithMenuName:(NSString *)menuName position:(NSNumber *)position parentID:(NSNumber *)parentID vrCommands:(NSArray *) vrCommands { - - [SDLDebugTool logInfo:@"Added addCommand with cmdID = %d and correlationID = %d", cmdID, autoIncCorrID]; - - SDLAddCommand *command = [SDLRPCRequestFactory buildAddCommandWithID:[NSNumber numberWithInt:cmdID] menuName:menuName parentID:parentID position:position vrCommands:vrCommands correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:command]; - cmdID++; - - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:command]]; - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"AddCommandRequest" object:command]]; - -} - -- (void) speakTTSChunksPressed { - SDLSpeak* req = [SDLRPCRequestFactory buildSpeakWithTTS:@"Speak, here comes a jingle" correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [(NSMutableArray*)req.ttsChunks addObject:[SDLTTSChunkFactory buildTTSChunkForString:SDLJingle.INITIAL_JINGLE type:SDLSpeechCapabilities.PRE_RECORDED]]; - [(NSMutableArray*)req.ttsChunks addObject:[SDLTTSChunkFactory buildTTSChunkForString:@", ah, that's nice. Now example of SAPI Phonemes. Live." type:SDLSpeechCapabilities.TEXT]]; - [(NSMutableArray*)req.ttsChunks addObject:[SDLTTSChunkFactory buildTTSChunkForString:@"_ l ay v ." type:SDLSpeechCapabilities.SAPI_PHONEMES]]; - [(NSMutableArray*)req.ttsChunks addObject:[SDLTTSChunkFactory buildTTSChunkForString:@", Read." type:SDLSpeechCapabilities.TEXT]]; - [(NSMutableArray*)req.ttsChunks addObject:[SDLTTSChunkFactory buildTTSChunkForString:@"_ R eh d ." type:SDLSpeechCapabilities.SAPI_PHONEMES]]; - [proxy sendRPCRequest:req]; - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) deleteCommandPressed:(NSNumber *)commandID { - SDLDeleteCommand *req = [SDLRPCRequestFactory buildDeleteCommandWithID:commandID correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) addSubMenuPressedwithID:(NSNumber *)menuID menuName:(NSString *)menuName position:(NSNumber *)position { - SDLAddSubMenu *req = [SDLRPCRequestFactory buildAddSubMenuWithID:menuID menuName:menuName position:position correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"AddSubMenuRequest" object:req]]; -} - --(void) deleteSubMenuPressedwithID:(NSNumber *)menuID { - SDLDeleteSubMenu *req = [SDLRPCRequestFactory buildDeleteSubMenuWithID:menuID correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) createInteractionChoiceSetPressedWithID:(NSNumber *)interactionChoiceSetID choiceSet:(NSArray *)choices { - SDLCreateInteractionChoiceSet *req = [SDLRPCRequestFactory buildCreateInteractionChoiceSetWithID:interactionChoiceSetID choiceSet:choices correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) deleteInteractionChoiceSetPressedWithID:(NSNumber *)interactionChoiceSetID { - SDLDeleteInteractionChoiceSet *req = [SDLRPCRequestFactory buildDeleteInteractionChoiceSetWithID:interactionChoiceSetID correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) performInteractionPressedwithInitialPrompt:(NSArray*)initialChunks initialText:(NSString*)initialText interactionChoiceSetIDList:(NSArray*) interactionChoiceSetIDList helpChunks:(NSArray*)helpChunks timeoutChunks:(NSArray*)timeoutChunks interactionMode:(SDLInteractionMode*) interactionMode timeout:(NSNumber*)timeout { - - SDLPerformInteraction *req = [SDLRPCRequestFactory buildPerformInteractionWithInitialPrompt:initialChunks initialText:initialText interactionChoiceSetIDList:interactionChoiceSetIDList helpChunks:helpChunks timeoutChunks:timeoutChunks interactionMode:interactionMode timeout:timeout correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) subscribeButtonPressed:(SDLButtonName *)buttonName { - SDLSubscribeButton *req = [SDLRPCRequestFactory buildSubscribeButtonWithName:buttonName correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"SubscribeButtonRequest" object:req]]; - -} - --(void) unsubscribeButtonPressed:(SDLButtonName *)buttonName { - SDLUnsubscribeButton *req = [SDLRPCRequestFactory buildUnsubscribeButtonWithName:buttonName correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) sendEncodedSyncPData:(NSMutableArray *)data { - SDLEncodedSyncPData* req = [SDLRPCRequestFactory buildEncodedSyncPDataWithData:data correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) setGlobalPropertiesPressedWithHelpText:(NSString *)helpText timeoutText:(NSString *)timeoutText { - SDLSetGlobalProperties *req = [SDLRPCRequestFactory buildSetGlobalPropertiesWithHelpText:helpText timeoutText:timeoutText correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - --(void) resetGlobalPropertiesPressedwithProperties:(NSArray *)properties { - SDLResetGlobalProperties *req = [SDLRPCRequestFactory buildResetGlobalPropertiesWithProperties:properties correlationID:[NSNumber numberWithInt:autoIncCorrID++]]; - [proxy sendRPCRequest:req]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:req]]; -} - - --(int)getCMDID { - return cmdID; -} - -// ===================================== -// Proxy Life Management Functions -// ===================================== - --(void) savePreferences { - - int mtuSize = 1000, delayAfterSend = 0; - - NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; - - [prefs setObject:[NSString stringWithFormat:@"%i", mtuSize] forKey:PREFS_MTU_SIZE]; - [prefs setObject:[NSString stringWithFormat:@"%i", delayAfterSend] forKey:PREFS_SEND_DELAY]; - - //Set to match settings.bundle defaults - if (![[prefs objectForKey:PREFS_FIRST_RUN] isEqualToString:@"False"]) { - [prefs setObject:@"False" forKey:PREFS_FIRST_RUN]; - [prefs setObject:@"iap" forKey:PREFS_PROTOCOL]; - [prefs setObject:@"192.168.0.1" forKey:PREFS_IPADDRESS]; - [prefs setObject:@"50007" forKey:PREFS_PORT]; - [prefs setObject:@"media" forKey:PREFS_TYPE]; - } - - [prefs synchronize]; -} - - --(void) setupProxy{ - [self savePreferences]; - - NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; - if ([[prefs objectForKey:PREFS_PROTOCOL] isEqualToString:@"tcpl"]) { - proxy = [[SDLProxyFactory buildProxyWithListener: self - tcpIPAddress: nil - tcpPort: [prefs objectForKey:PREFS_PORT]] retain]; - } else if ([[prefs objectForKey:PREFS_PROTOCOL] isEqualToString:@"tcps"]) { - proxy = [[SDLProxyFactory buildProxyWithListener: self - tcpIPAddress: [prefs objectForKey:PREFS_IPADDRESS] - tcpPort: [prefs objectForKey:PREFS_PORT]] retain]; - } else - proxy = [[SDLProxyFactory buildProxyWithListener: self] retain]; - - autoIncCorrID = 101; - cmdID = 1; -} - --(void) tearDownProxy { - - [proxy dispose]; - [SDLDebugTool logInfo:@"Proxy retain count = %i", proxy.retainCount]; - [SDLDebugTool logInfo:@"releasing proxy"]; - [proxy release]; - proxy = nil; -} - - -// ===================================== -// Implementation of ProxyListener -// ===================================== - --(void) onOnHMIStatus:(SDLOnHMIStatus*) notification { - if (notification.hmiLevel == SDLHMILevel.HMI_FULL) { - if (firstTimeStartUp == YES) { - [self setup]; - firstTimeStartUp = NO; - } - } - - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:notification]]; -} - - --(void) onOnButtonEvent:(SDLOnButtonEvent*) notification { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:notification]]; -} --(void) onOnButtonPress:(SDLOnButtonPress*) notification { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:notification]]; -} --(void) onOnCommand:(SDLOnCommand*) notification { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:notification]]; -} --(void) onOnAppInterfaceUnregistered:(SDLOnAppInterfaceUnregistered*) notification { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:notification]]; -} - --(void) onAddCommandResponse:(SDLAddCommandResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onAddSubMenuResponse:(SDLAddSubMenuResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onCreateInteractionChoiceSetResponse:(SDLCreateInteractionChoiceSetResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onDeleteCommandResponse:(SDLDeleteCommandResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onDeleteInteractionChoiceSetResponse:(SDLDeleteInteractionChoiceSetResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]];} --(void) onDeleteSubMenuResponse:(SDLDeleteSubMenuResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]];} --(void) onPerformInteractionResponse:(SDLPerformInteractionResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onRegisterAppInterfaceResponse:(SDLRegisterAppInterfaceResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onSetGlobalPropertiesResponse:(SDLSetGlobalPropertiesResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onResetGlobalPropertiesResponse:(SDLResetGlobalPropertiesResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onSetMediaClockTimerResponse:(SDLSetMediaClockTimerResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} - --(void) onShowResponse:(SDLShowResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} - --(void) onSpeakResponse:(SDLSpeakResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onAlertResponse:(SDLAlertResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onSubscribeButtonResponse:(SDLSubscribeButtonResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onUnregisterAppInterfaceResponse:(SDLUnregisterAppInterfaceResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onUnsubscribeButtonResponse:(SDLUnsubscribeButtonResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} --(void) onGenericResponse:(SDLGenericResponse*) response -{ - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:response]]; -} - - --(void) onEncodedSyncPDataResponse:(SDLEncodedSyncPDataResponse*) response { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"onRPCResponse" object:response]]; -} - --(void) onOnDriverDistraction:(SDLOnDriverDistraction*) notification { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:notification]]; -} --(void) onOnTBTClientState:(SDLOnTBTClientState*) notification { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:notification]]; -} --(void) onOnEncodedSyncPData:(SDLOnEncodedSyncPData*) notification { - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:notification]]; -} - --(void) onProxyOpened { - firstTimeStartUp = YES; - - SDLRegisterAppInterface* regRequest = [SDLRPCRequestFactory buildRegisterAppInterfaceWithAppName:@"SDLTester"]; - - NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; - if ([[prefs objectForKey:PREFS_TYPE] isEqualToString:@"nonmedia"]) { - regRequest.isMediaApplication = [NSNumber numberWithBool:NO]; - } else { - regRequest.isMediaApplication = [NSNumber numberWithBool:YES]; - } - - regRequest.ngnMediaScreenAppName = nil; - regRequest.vrSynonyms = nil; - [proxy sendRPCRequest:regRequest]; - [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:@"NewConsoleControllerObject" object:regRequest]]; -} - --(void) onError:(NSException*) e { - [SDLDebugTool logInfo:@"proxy error occurred: %@", e]; -} - --(void) onProxyClosed { - [SDLDebugTool logInfo:@"onProxyClosed"]; - - [self tearDownProxy]; - - [[self init] setupProxy]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Sail.mp3 b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Sail.mp3 deleted file mode 100644 index 8df3df5e9118b0834461796dee18cd3863f7f03d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325507 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 diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.h deleted file mode 100644 index 59e2a18..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" - -@interface SetGlobalPropertiesViewController : UIViewController { - - IBOutlet UITextView *helpText; - IBOutlet UITextView *timeoutText; - -} - --(IBAction)setGlobalPropertiesPressed:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.m deleted file mode 100644 index 0269627..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.m +++ /dev/null @@ -1,61 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SetGlobalPropertiesViewController.h" - -@interface SetGlobalPropertiesViewController () - -@end - -@implementation SetGlobalPropertiesViewController - - --(IBAction)setGlobalPropertiesPressed:(id)sender { - [[SDLBrain getInstance] setGlobalPropertiesPressedWithHelpText:[helpText text] timeoutText:[timeoutText text]]; -} - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"SetGlobalProperties"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { - - if([text isEqualToString:@"\n"]) { - [textView resignFirstResponder]; - return NO; - } - - return YES; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - helpText.delegate = self; - timeoutText.delegate = self; - - [[helpText layer] setCornerRadius:10]; - [[timeoutText layer] setCornerRadius:10]; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.xib deleted file mode 100644 index c03c815..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetGlobalPropertiesViewController.xib +++ /dev/null @@ -1,349 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUITextView - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{40, 20}, {74, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Help Text - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{40, 49}, {239, 93}} - - - _NS:9 - - 1 - MSAxIDEAA - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{40, 150}, {100, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Timeout Text - - - 0 - 10 - - - - - - 292 - {{40, 179}, {239, 93}} - - - _NS:9 - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - - - - - 292 - {{111, 298}, {97, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - helpText - - - - 9 - - - - timeoutText - - - - 10 - - - - setGlobalPropertiesPressed: - - - 7 - - 11 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - - - SetGlobalPropertiesViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 11 - - - - - SetGlobalPropertiesViewController - UIViewController - - setGlobalPropertiesPressed: - id - - - setGlobalPropertiesPressed: - - setGlobalPropertiesPressed: - id - - - - UITextView - UITextView - - - - helpText - UITextView - - - timeoutText - UITextView - - - - IBProjectSource - ./Classes/SetGlobalPropertiesViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.h deleted file mode 100644 index 127459a..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" - -@interface SetMediaClockTimerViewController : UIViewController { - - IBOutlet UITextField *hoursText; - IBOutlet UITextField *minutesText; - IBOutlet UITextField *secondsText; - - UIButton *doneButton; - - IBOutlet UISegmentedControl *updateControl; - -} - --(IBAction)setMediaClockTimerPressed:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.m deleted file mode 100644 index e296c60..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.m +++ /dev/null @@ -1,72 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SetMediaClockTimerViewController.h" - -@interface SetMediaClockTimerViewController () - -@end - -@implementation SetMediaClockTimerViewController - --(IBAction)setMediaClockTimerPressed:(id)sender { - - SDLUpdateMode *ua; - if (updateControl.selectedSegmentIndex == 0) { - ua = [SDLUpdateMode COUNTUP]; - } - else if (updateControl.selectedSegmentIndex == 1) { - ua = [SDLUpdateMode COUNTDOWN]; - } - else if (updateControl.selectedSegmentIndex == 2) { - ua = [SDLUpdateMode PAUSE]; - } - else { - ua = [SDLUpdateMode RESUME]; - } - - [[SDLBrain getInstance] setMediaClockTimerPressedwithHours:[NSNumber numberWithInt:[[hoursText text] intValue]] minutes:[NSNumber numberWithInt:[[minutesText text] intValue]] seconds:[NSNumber numberWithInt:[[secondsText text] intValue]] updateMode:ua]; - - hoursText.text = @""; - minutesText.text = @""; - secondsText.text = @""; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - [textField resignFirstResponder]; - return NO; -} - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"SetMediaClockTimer"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - hoursText.delegate = self; - minutesText.delegate = self; - secondsText.delegate = self; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.xib deleted file mode 100644 index aebc990..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SetMediaClockTimerViewController.xib +++ /dev/null @@ -1,497 +0,0 @@ - - - - 1552 - 12C3012 - 3084 - 1187.34 - 625.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIButton - IBUILabel - IBUISegmentedControl - IBUITextField - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{36, 25}, {46, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Hours - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{123, 20}, {163, 31}} - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{36, 64}, {61, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Minutes - - - 0 - 10 - - - - - - 292 - {{123, 60}, {163, 31}} - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{36, 103}, {68, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Seconds - - - 0 - 10 - - - - - - 292 - {{123, 98}, {163, 31}} - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{34, 191}, {252, 44}} - - - _NS:9 - NO - IBCocoaTouchFramework - 4 - 0 - - - - - - - - - - - - - - - - - - - - {0, 0} - {0, 0} - {0, 0} - {0, 0} - - - - NSImage - arrow_up.png - - - NSImage - arrow_down.png - - - NSImage - pause.png - - - NSImage - play.png - - - - - - 292 - {{36, 162}, {105, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Update Mode - - - 0 - 10 - - - - - - 292 - {{112, 272}, {97, 37}} - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - {{0, 64}, {320, 367}} - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - hoursText - - - - 13 - - - - minutesText - - - - 14 - - - - secondsText - - - - 15 - - - - updateControl - - - - 16 - - - - setMediaClockTimerPressed: - - - 7 - - 17 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - 9 - - - - - 10 - - - - - 11 - - - - - 12 - - - - - - - SetMediaClockTimerViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 17 - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - - {26, 26} - {26, 26} - {26, 26} - {26, 26} - - 2083 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Settings.bundle/Root.plist b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Settings.bundle/Root.plist deleted file mode 100644 index 74da6a7..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Settings.bundle/Root.plist +++ /dev/null @@ -1,107 +0,0 @@ - - - - - PreferenceSpecifiers - - - Title - Connection - Type - PSGroupSpecifier - - - Type - PSMultiValueSpecifier - Title - Protocol: - Key - protocol - DefaultValue - iap - Titles - - iPod Accessory - TCP/IP Local Host - TCP/IP Specified - - Values - - iap - tcpl - tcps - - - - Title - TCP/IP - Type - PSGroupSpecifier - - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - 192.168.0.1 - IsSecure - - Key - ipaddress - KeyboardType - NumbersAndPunctuation - Title - IP Address: - Type - PSTextFieldSpecifier - - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - 50007 - IsSecure - - Key - port - KeyboardType - NumberPad - Title - Port: - Type - PSTextFieldSpecifier - - - Title - App Registration - Type - PSGroupSpecifier - - - Type - PSMultiValueSpecifier - Title - Type: - Key - type - DefaultValue - media - Titles - - Media - Non-Media - - Values - - media - nonmedia - - - - StringsTable - Root - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Settings.bundle/en.lproj/Root.strings b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/Settings.bundle/en.lproj/Root.strings deleted file mode 100644 index 8cd87b9d6b20c1fbf87bd4db3db267fca5ad4df9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmaixOHRW;5JYRuDMndFh#Ua1V1d}N;sVAV2TO?uC3a9aJn*VxFrY}tnon0(S66#J z-d9>G>6W!ur(SDqlp`9nn~*(m%iWnv?yq`Qfp6XbK1?+om~~#r)ZnhkYQU_VbfjuT zHNn`CX<0sd*m1A}>&5sU$akD=GTXJ1e diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.h deleted file mode 100644 index a4b898f..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "SDLTextAlignment.h" - -@interface ShowViewController : UIViewController { - - IBOutlet UITextField *line1text; - IBOutlet UITextField *line2text; - IBOutlet UITextField *statusbartext; - IBOutlet UITextField *mediaclocktext; - IBOutlet UITextField *mediatracktext; - - IBOutlet UISegmentedControl *textalignment; -} - --(IBAction)sendShowRPC:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.m deleted file mode 100644 index 848f479..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.m +++ /dev/null @@ -1,72 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "ShowViewController.h" - -@interface ShowViewController () - -@end - -@implementation ShowViewController - - --(IBAction)sendShowRPC:(id)sender { - - SDLTextAlignment *ta; - if (textalignment.selectedSegmentIndex == 0) { - ta = [SDLTextAlignment LEFT_ALIGNED]; - } - else if (textalignment.selectedSegmentIndex == 1) { - ta = [SDLTextAlignment CENTERED]; - } - else { - ta = [SDLTextAlignment RIGHT_ALIGNED]; - } - - - [[SDLBrain getInstance] showAdvancedPressedWithLine1Text:[line1text text] line2:[line2text text] statusBar:[statusbartext text] mediaClock:[mediaclocktext text] mediaTrack:[mediatracktext text] alignment:ta]; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - [textField resignFirstResponder]; - return NO; -} - - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"Show"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - line1text.delegate = self; - line2text.delegate = self; - statusbartext.delegate = self; - mediaclocktext.delegate = self; - mediatracktext.delegate = self; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.xib deleted file mode 100644 index bdb4907..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/ShowViewController.xib +++ /dev/null @@ -1,680 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUITextField - IBUIButton - IBUISegmentedControl - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 25}, {52, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Line 1: - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{80, 20}, {220, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{20, 64}, {52, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Line 2: - - - 0 - 10 - - - - - - 292 - {{80, 59}, {220, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{134, 101}, {166, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{20, 106}, {95, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Status Bar: - - - 0 - 10 - - - - - - 292 - {{134, 140}, {166, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{20, 145}, {101, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Media Clock: - - - 0 - 10 - - - - - - 292 - {{134, 179}, {166, 31}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {{20, 184}, {99, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Media Track: - - - 0 - 10 - - - - - - 292 - {{57, 247}, {207, 30}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 2 - 3 - 0 - - Left - Center - Right - - - - - - - - - - - - - {0, 0} - {0, 0} - {0, 0} - - - - - - - - - - 292 - {{20, 218}, {135, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Text Alignment: - - - 0 - 10 - - - - - - 292 - {{112, 310}, {97, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - line1text - - - - 18 - - - - line2text - - - - 19 - - - - mediaclocktext - - - - 20 - - - - mediatracktext - - - - 21 - - - - statusbartext - - - - 22 - - - - textalignment - - - - 23 - - - - sendShowRPC: - - - 7 - - 24 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - 9 - - - - - 11 - - - - - 12 - - - - - 13 - - - - - 14 - - - - - 15 - - - - - 16 - - - - - 17 - - - - - - - ShowViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 24 - - - - - ShowViewController - UIViewController - - sendShowRPC: - id - - - sendShowRPC: - - sendShowRPC: - id - - - - UITextField - UITextField - UITextField - UITextField - UITextField - UISegmentedControl - - - - line1text - UITextField - - - line2text - UITextField - - - mediaclocktext - UITextField - - - mediatracktext - UITextField - - - statusbartext - UITextField - - - textalignment - UISegmentedControl - - - - IBProjectSource - ./Classes/ShowViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SmartDeviceLinkTester-Info.plist b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SmartDeviceLinkTester-Info.plist deleted file mode 100644 index 1af5062..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SmartDeviceLinkTester-Info.plist +++ /dev/null @@ -1,97 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleDocumentTypes - - - CFBundleTypeName - XML Test File - CFBundleTypeRole - Viewer - LSHandlerRank - Owner - LSItemContentTypes - - com.yourcompany.${PRODUCT_NAME:rfc1034identifier} - - - - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFiles - - icon.png - iconret.png - - CFBundleIcons - - CFBundlePrimaryIcon - - CFBundleIconFiles - - icon.png - iconret.png - - UIPrerenderedIcon - - - - CFBundleIdentifier - com.yourcompany.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIBackgroundModes - - external-accessory - - UIRequiredDeviceCapabilities - - armv7 - - UISupportedExternalAccessoryProtocols - - com.ford.sync.prot0 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UTExportedTypeDeclarations - - - UTTypeConformsTo - - public.data - - UTTypeDescription - XML Test File - UTTypeIconFile - - UTTypeIdentifier - com.yourcompany.${PRODUCT_NAME:rfc1034identifier} - UTTypeTagSpecification - - public.filename-extension - xml - public.mime-type - application/xml - - - - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SmartDeviceLinkTester-Prefix.pch b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SmartDeviceLinkTester-Prefix.pch deleted file mode 100644 index 1db2cda..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SmartDeviceLinkTester-Prefix.pch +++ /dev/null @@ -1,10 +0,0 @@ -#import - -#ifndef __IPHONE_4_0 -#warning "This project uses features only available in iOS SDK 4.0 and later." -#endif - -#ifdef __OBJC__ - #import - #import -#endif diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.h deleted file mode 100644 index 764acdb..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" - -@interface SpeakViewController : UIViewController { - - IBOutlet UITextView *ttstext; - -} - --(IBAction)sendSpeakRPC:(id)sender; --(IBAction)sendTTSChunks:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.m deleted file mode 100644 index 42a27f6..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.m +++ /dev/null @@ -1,67 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SpeakViewController.h" - -@interface SpeakViewController () - -@end - -@implementation SpeakViewController - --(IBAction)sendSpeakRPC:(id)sender { - [[SDLBrain getInstance] speakPressed:[ttstext text]]; -} - --(IBAction)sendTTSChunks:(id)sender { - [[SDLBrain getInstance] speakTTSChunksPressed]; -} - -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { - - if([text isEqualToString:@"\n"]) { - [textView resignFirstResponder]; - return NO; - } - - return YES; -} - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"Speak"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - ttstext.delegate = self; - [[ttstext layer] setCornerRadius:10]; - - // Do any additional setup after loading the view from its nib. -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - - - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.xib deleted file mode 100644 index 57c0f5b..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SpeakViewController.xib +++ /dev/null @@ -1,356 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUITextView - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{20, 41}, {125, 21}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Text-to-Speech: - - 1 - MCAwIDAAA - - - 0 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{40, 70}, {240, 128}} - - - - _NS:9 - - 1 - MSAxIDEAA - - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{104, 293}, {112, 37}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - TTS Chunks - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{112, 206}, {97, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Send RPC - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - 292 - {{20, 261}, {163, 21}} - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Example of Phoneme - - - 0 - 10 - - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - ttstext - - - - 12 - - - - sendTTSChunks: - - - 7 - - 11 - - - - sendSpeakRPC: - - - 7 - - 10 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - - - SpeakViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 12 - - - - - SpeakViewController - UIViewController - - id - id - - - - sendSpeakRPC: - id - - - sendTTSChunks: - id - - - - ttstext - UITextView - - - ttstext - - ttstext - UITextView - - - - IBProjectSource - ./Classes/SpeakViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.h deleted file mode 100644 index 055548e..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.h +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "SDLButtonName.h" - -@interface SubscribeButtonViewController : UIViewController { - - - NSMutableArray *buttonList; - IBOutlet UITableView *buttonTable; - -} - - -@end - -NSMutableArray *selectedButtons; diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.m deleted file mode 100644 index fa1255e..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.m +++ /dev/null @@ -1,141 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "SubscribeButtonViewController.h" - -@interface SubscribeButtonViewController () - -@end - -@implementation SubscribeButtonViewController - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; - NSString *chosenButton = cell.textLabel.text; - [selectedButtons addObject:chosenButton]; - SDLButtonName *buttonSelected; - if ([chosenButton isEqualToString:@"OK"]) { - buttonSelected = [SDLButtonName OK]; - } - else if ([chosenButton isEqualToString:@"Seek Left"]) { - buttonSelected = [SDLButtonName SEEKLEFT]; - } - else if ([chosenButton isEqualToString:@"Seek Right"]) { - buttonSelected = [SDLButtonName SEEKRIGHT]; - } - else if ([chosenButton isEqualToString:@"Tune Up"]) { - buttonSelected = [SDLButtonName TUNEUP]; - } - else if ([chosenButton isEqualToString:@"Tune Down"]) { - buttonSelected = [SDLButtonName TUNEDOWN]; - } - else if ([chosenButton isEqualToString:@"Preset 0"]) { - buttonSelected = [SDLButtonName PRESET_0]; - } - else if ([chosenButton isEqualToString:@"Preset 1"]) { - buttonSelected = [SDLButtonName PRESET_1]; - } - else if ([chosenButton isEqualToString:@"Preset 2"]) { - buttonSelected = [SDLButtonName PRESET_2]; - } - else if ([chosenButton isEqualToString:@"Preset 3"]) { - buttonSelected = [SDLButtonName PRESET_3]; - } - else if ([chosenButton isEqualToString:@"Preset 4"]) { - buttonSelected = [SDLButtonName PRESET_4]; - } - else if ([chosenButton isEqualToString:@"Preset 5"]) { - buttonSelected = [SDLButtonName PRESET_5]; - } - else if ([chosenButton isEqualToString:@"Preset 6"]) { - buttonSelected = [SDLButtonName PRESET_6]; - } - else if ([chosenButton isEqualToString:@"Preset 7"]) { - buttonSelected = [SDLButtonName PRESET_7]; - } - else if ([chosenButton isEqualToString:@"Preset 8"]) { - buttonSelected = [SDLButtonName PRESET_8]; - } - else { - buttonSelected = [SDLButtonName PRESET_9]; - } - - [[SDLBrain getInstance] subscribeButtonPressed:buttonSelected]; -} - -- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return @"Select a Button"; -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return [buttonList count]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - static NSString *CellIdentifier = @"Cell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; - } - - // Configure the cell. - cell.textLabel.text = [buttonList objectAtIndex:indexPath.row]; - - return cell; -} - - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"SubscribeButton"; - - NSArray *tempArray = [NSArray arrayWithObjects:@"OK",@"Seek Left",@"Seek Right",@"Tune Up",@"Tune Down",@"Preset 0",@"Preset 1",@"Preset 2",@"Preset 3",@"Preset 4",@"Preset 5",@"Preset 6",@"Preset 7",@"Preset 8",@"Preset 9", nil]; - buttonList = [[NSMutableArray alloc] init]; - [buttonList addObjectsFromArray:tempArray]; - - selectedButtons = [[NSMutableArray alloc] init]; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - --(void)dealloc { - [buttonList release]; - [selectedButtons release]; - [super dealloc]; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - buttonTable.delegate = self; - buttonTable.dataSource = self; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.xib deleted file mode 100644 index 7b77667..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/SubscribeButtonViewController.xib +++ /dev/null @@ -1,178 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUIView - IBUITableView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 274 - {320, 367} - - - _NS:9 - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - YES - IBCocoaTouchFramework - YES - 1 - 2 - 0 - YES - 44 - 10 - 10 - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - buttonTable - - - - 6 - - - - - - 0 - - - - - - 1 - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - SubscribeButtonViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 6 - - - - - SubscribeButtonViewController - UIViewController - - buttonTable - UITableView - - - buttonTable - - buttonTable - UITableView - - - - IBProjectSource - ./Classes/SubscribeButtonViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.h deleted file mode 100644 index 325a022..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" - -@interface UnregisterAppInterfaceViewController : UIViewController - - --(IBAction)unregisterAppInterfacePressed:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.m deleted file mode 100644 index b382073..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.m +++ /dev/null @@ -1,46 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "UnregisterAppInterfaceViewController.h" - -@interface UnregisterAppInterfaceViewController () - -@end - -@implementation UnregisterAppInterfaceViewController - --(IBAction)unregisterAppInterfacePressed:(id)sender { - [[SDLBrain getInstance] unregisterAppInterfacePressed]; -} - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"UnregisterAppInterface"; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.xib deleted file mode 100644 index c5dd387..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnregisterAppInterfaceViewController.xib +++ /dev/null @@ -1,191 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUIView - IBUIButton - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{60, 165}, {201, 37}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Unregister App Interface - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - {{0, 64}, {320, 367}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - unregisterAppInterfacePressed: - - - 7 - - 6 - - - - - - 0 - - - - - - 1 - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - UnregisterAppInterfaceViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 6 - - - - - UnregisterAppInterfaceViewController - UIViewController - - unregisterAppInterfacePressed: - id - - - unregisterAppInterfacePressed: - - unregisterAppInterfacePressed: - id - - - - IBProjectSource - ./Classes/UnregisterAppInterfaceViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.h deleted file mode 100644 index 5a7aec0..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import "SDLBrain.h" -#import "SubscribeButtonViewController.h" - -@interface UnsubscribeButtonViewController : UIViewController { - - IBOutlet UITableView *buttonTable; - -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.m deleted file mode 100644 index 1f47128..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.m +++ /dev/null @@ -1,140 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "UnsubscribeButtonViewController.h" - -@interface UnsubscribeButtonViewController () - --(void)updateTable; - -@end - -@implementation UnsubscribeButtonViewController - --(void)updateTable { - [buttonTable reloadData]; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; - NSString *chosenButton = cell.textLabel.text; - [selectedButtons removeObject:chosenButton]; - SDLButtonName *buttonSelected; - if ([chosenButton isEqualToString:@"OK"]) { - buttonSelected = [SDLButtonName OK]; - } - else if ([chosenButton isEqualToString:@"Seek Left"]) { - buttonSelected = [SDLButtonName SEEKLEFT]; - } - else if ([chosenButton isEqualToString:@"Seek Right"]) { - buttonSelected = [SDLButtonName SEEKRIGHT]; - } - else if ([chosenButton isEqualToString:@"Tune Up"]) { - buttonSelected = [SDLButtonName TUNEUP]; - } - else if ([chosenButton isEqualToString:@"Tune Down"]) { - buttonSelected = [SDLButtonName TUNEDOWN]; - } - else if ([chosenButton isEqualToString:@"Preset 0"]) { - buttonSelected = [SDLButtonName PRESET_0]; - } - else if ([chosenButton isEqualToString:@"Preset 1"]) { - buttonSelected = [SDLButtonName PRESET_1]; - } - else if ([chosenButton isEqualToString:@"Preset 2"]) { - buttonSelected = [SDLButtonName PRESET_2]; - } - else if ([chosenButton isEqualToString:@"Preset 3"]) { - buttonSelected = [SDLButtonName PRESET_3]; - } - else if ([chosenButton isEqualToString:@"Preset 4"]) { - buttonSelected = [SDLButtonName PRESET_4]; - } - else if ([chosenButton isEqualToString:@"Preset 5"]) { - buttonSelected = [SDLButtonName PRESET_5]; - } - else if ([chosenButton isEqualToString:@"Preset 6"]) { - buttonSelected = [SDLButtonName PRESET_6]; - } - else if ([chosenButton isEqualToString:@"Preset 7"]) { - buttonSelected = [SDLButtonName PRESET_7]; - } - else if ([chosenButton isEqualToString:@"Preset 8"]) { - buttonSelected = [SDLButtonName PRESET_8]; - } - else { - buttonSelected = [SDLButtonName PRESET_9]; - } - - [[SDLBrain getInstance] unsubscribeButtonPressed:buttonSelected]; - [self updateTable]; -} - -- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return @"Select a Button"; -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - return [selectedButtons count]; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - static NSString *CellIdentifier = @"Cell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; - } - - // Configure the cell. - cell.textLabel.text = [selectedButtons objectAtIndex:indexPath.row]; - - return cell; -} - - - - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self.title = @"UnsubscribeButton"; - - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTable) name:@"SubscribeButtonRequest" object:nil]; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - buttonTable.delegate = self; - buttonTable.dataSource = self; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.xib deleted file mode 100644 index e71176c..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UnsubscribeButtonViewController.xib +++ /dev/null @@ -1,176 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUIView - IBUITableView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 274 - {320, 367} - - - _NS:9 - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - YES - IBCocoaTouchFramework - YES - 1 - 2 - 0 - YES - 44 - 10 - 10 - - - {{0, 64}, {320, 367}} - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - NO - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - buttonTable - - - - 5 - - - - - - 0 - - - - - - 1 - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - UnsubscribeButtonViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 5 - - - - - UnsubscribeButtonViewController - UIViewController - - buttonTable - UITableView - - - buttonTable - - buttonTable - UITableView - - - - IBProjectSource - ./Classes/UnsubscribeButtonViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.h b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.h deleted file mode 100644 index 87a81f1..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import -#import -#import "SDLBrain.h" - -@interface UserTestViewController : UIViewController { - IBOutlet UITextView *blackboardText; - IBOutlet UILabel *resultRPCRequest; - IBOutlet UIImageView *playPauseImage; - NSString *methodDidGetCalled; - - BOOL musicIsPlaying; - - AVAudioPlayer *audioPlayer; -} - - --(IBAction)showButtonPressed :(id)sender; --(IBAction)speakButtonPressed :(id)sender; --(IBAction)alertButtonPressed :(id)sender; --(IBAction)addCommandPressed:(id)sender; --(IBAction)playPauseMusic:(id)sender; - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.m deleted file mode 100644 index b611c99..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.m +++ /dev/null @@ -1,177 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import "UserTestViewController.h" - -@interface UserTestViewController () - --(void)showRPCResponse:(NSNotification *)notification; --(void)hideRPCRequestLabel; - -@end - -@implementation UserTestViewController - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showRPCResponse:) name:@"onRPCResponse" object:nil]; - - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - self.title = NSLocalizedString(@"User Test", @"User Test"); - self.tabBarItem.image = [UIImage imageNamed:@"game_controller"]; - } - return self; -} - --(IBAction)showButtonPressed :(id)sender { - methodDidGetCalled = @"show"; - [blackboardText setEditable:YES]; - [blackboardText setHidden:NO]; - [blackboardText becomeFirstResponder]; -} - --(IBAction)speakButtonPressed :(id)sender{ - methodDidGetCalled = @"speak"; - [blackboardText setEditable:YES]; - [blackboardText setHidden:NO]; - [blackboardText becomeFirstResponder]; -} - --(IBAction)alertButtonPressed :(id)sender{ - methodDidGetCalled = @"alert"; - [blackboardText setEditable:YES]; - [blackboardText setHidden:NO]; - [blackboardText becomeFirstResponder]; -} - --(IBAction)addCommandPressed:(id)sender { - methodDidGetCalled = @"addCommand"; - [blackboardText setEditable:YES]; - [blackboardText setHidden:NO]; - [blackboardText becomeFirstResponder]; -} - --(IBAction)playPauseMusic:(id)sender { - if (musicIsPlaying) { - //pause music - musicIsPlaying = NO; - [playPauseImage setImage:[UIImage imageNamed:@"play.png"]]; - [audioPlayer pause]; - NSLog(@"audioPlayer pause"); - } - else { - //play music - musicIsPlaying = YES; - [playPauseImage setImage:[UIImage imageNamed:@"pause.png"]]; - [audioPlayer play]; - NSLog(@"audioPlayer play"); - - } -} - -- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text -{ - if([text isEqualToString:@"\n"]) { - [textView resignFirstResponder]; - return NO; - } - - return YES; -} - -- (void) textViewDidEndEditing:(UITextView *)textView { - - NSString *msg = blackboardText.text; - if ([methodDidGetCalled isEqualToString: @"speak"]) { - [[SDLBrain getInstance] speakPressed:msg]; - } - else if ([methodDidGetCalled isEqualToString: @"show"]) { - [[SDLBrain getInstance] showPressed:msg]; - - } - else if ([methodDidGetCalled isEqualToString: @"alert"]) { - [[SDLBrain getInstance] alertPressed:msg]; - - } - else if ([methodDidGetCalled isEqualToString: @"addCommand"]) { - [[SDLBrain getInstance] addCommand:msg]; - } - blackboardText.text = @""; - [blackboardText setHidden:YES]; - [blackboardText setEditable:NO]; - -} - --(void)showRPCResponse:(NSNotification *)notification { - - - SDLRPCResponse* response = (SDLRPCResponse*) [notification object]; - - NSString *result = [NSString stringWithFormat:@"%@", [response resultCode]]; - - if([result isEqualToString:@"SUCCESS"]) { - [resultRPCRequest setText:@"Success"]; - [resultRPCRequest setBackgroundColor:[UIColor greenColor]]; - } - else { - [resultRPCRequest setText:@"Failure"]; - [resultRPCRequest setBackgroundColor:[UIColor redColor]]; - - } - [resultRPCRequest setHidden:NO]; - [self performSelector:@selector(hideRPCRequestLabel) withObject:nil afterDelay:3.0]; -} - --(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { - musicIsPlaying = NO; - [playPauseImage setImage:[UIImage imageNamed:@"play.png"]]; -} - --(void)hideRPCRequestLabel { - [resultRPCRequest setHidden:YES]; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - blackboardText.delegate = self; - blackboardText.textColor = [UIColor whiteColor]; - [blackboardText setHidden:YES]; - [blackboardText setEditable:NO]; - [blackboardText setFont:[UIFont fontWithName:@"Arial" size:20]]; - [playPauseImage setImage:[UIImage imageNamed:@"play.png"]]; - [resultRPCRequest setHidden:YES]; - musicIsPlaying = NO; - - NSError *error; - NSURL *path = [[NSBundle mainBundle] URLForResource:@"Sail" withExtension:@"mp3"]; - audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:path error:&error]; - audioPlayer.delegate = self; - audioPlayer.volume = 0.5; - //[audioPlayer prepareToPlay]; -} - -- (void)viewDidUnload -{ - [[SDLBrain getInstance] onProxyClosed]; - - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - --(void) dealloc { - [audioPlayer release]; - [super dealloc]; -} - -@end diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.xib b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.xib deleted file mode 100644 index 398b3cf..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/UserTestViewController.xib +++ /dev/null @@ -1,649 +0,0 @@ - - - - 1552 - 12C3012 - 3084 - 1187.34 - 625.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIButton - IBUIImageView - IBUILabel - IBUITextField - IBUITextView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 292 - {{46, 9}, {229, 50}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Smart Device Link Tester - - 1 - MCAwIDAAA - darkTextColor - - - 0 - 10 - 1 - - MarkerFelt-Thin - Marker Felt - 0 - 24 - - - MarkerFelt-Thin - 24 - 16 - - - - - 292 - {{24, 255}, {118, 50}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - Show - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - delaware_show.jpg - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{178, 255}, {118, 50}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Speak - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - cali_speak.jpg - - - - - - - 292 - {{24, 91}, {272, 147}} - - - - _NS:9 - - NO - IBCocoaTouchFramework - - NSImage - Blank-Blackboard-PSD.png - - - - - 292 - {{40, 101}, {240, 128}} - - - - _NS:9 - YES - YES - IBCocoaTouchFramework - - - 2 - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{107, 67}, {107, 21}} - - - - _NS:9 - - 1 - MC4yMTcyMjc2MjM0IDAuODc3OTcyMTQ2NyAwLjQyNjM2MzMyMDUAA - - NO - YES - 7 - NO - IBCocoaTouchFramework - - - - 0 - 10 - 1 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{24, 330}, {118, 48}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Alert - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - geogia_alert.jpg - - - - - - - 292 - {{178, 330}, {118, 48}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Add Command - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - colorado_addcmd.jpg - - - - - - - 292 - {{206, 199}, {62, 30}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - eraser.png - - - - - - - 292 - {{221, 202}, {32, 23}} - - - - _NS:9 - NO - IBCocoaTouchFramework - - - {{0, 20}, {320, 411}} - - - - - 1 - MSAwLjc2NDQwODY1OSAwLjUyOTg5MDU0OQA - - - - IBCocoaTouchFramework - - - - 292 - {97, 31} - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - - - - - 292 - {95, 19} - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - - view - - - - 3 - - - - blackboardText - - - - 17 - - - - resultRPCRequest - - - - 21 - - - - playPauseImage - - - - 34 - - - - showButtonPressed: - - - 7 - - 7 - - - - speakButtonPressed: - - - 7 - - 8 - - - - alertButtonPressed: - - - 7 - - 23 - - - - addCommandPressed: - - - 7 - - 25 - - - - playPauseMusic: - - - 7 - - 35 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - 11 - - - - - 13 - - - - - 16 - - - - - 20 - - - - - 22 - - - - - 24 - - - - - 27 - - - - - 31 - - - - - 33 - - - - - - - UserTestViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 35 - - - - - UserTestViewController - UIViewController - - id - id - id - id - id - - - - addCommandPressed: - id - - - alertButtonPressed: - id - - - playPauseMusic: - id - - - showButtonPressed: - id - - - speakButtonPressed: - id - - - - UITextView - UIImageView - UILabel - - - - blackboardText - UITextView - - - playPauseImage - UIImageView - - - resultRPCRequest - UILabel - - - - IBProjectSource - ./Classes/UserTestViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - - {400, 301} - {200, 103} - {200, 100} - {200, 99} - {88, 35} - {200, 102} - - 2083 - - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/arrow_down.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/arrow_down.png deleted file mode 100644 index ff6685e56b935dc238373b9563836615948465d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1348 zcmbVMeN5bB81Hcm+1vud#0b%>7Tty$*S@{G_S$f;yY>$5M%m>+JQu%uy}~tc?X4}| zL71CHGLS4H4i?SkW=x#M#5kw>&>5yO%#0d_W`6u3$z=;O#w^Y`x43|BfkXcw`@<&f z`@YZnd!Fa_e03nwRKI3b#VQ0r)`S}PC|oP7x3~y?-wro^1DA3$5Hp*#HZvpYGU7{U zaTyJz#CACClqSxHMdL<{4{rqWOwL2BxcN2!DhYKyj>RV zEisOv^ANMci!G3f2@#ajbQyI!h-!(T07|(Wz(p`FW;03>fWQHX6Ld8oSU1fQ09|}A z=uJNzK%Zq?SgxX14>Nf+#7fC9w*$5HBz5 z%F}WpsB0;7KEtfC41=JDhOB89K`%z`qj;Z_qXSNkAbd1|E$SxzPu6fq2DjSdKkbqi z!5*}>OU(}tOXDM}aAtHk9OJRc{Rm>yL%gpg`&0bZ++3ZVjGfrAiOf`%{tZg+plnBX z4UN&Qp}S3+YjEJh=MQgRJvjUN&7tkcxAk+g=fA){x_NosC%xD9tG;@AaCT|}n_%u7 zomzkW{LX8CO-~CCv^DBy;-h1`=FZy6+jqzMf}@WW<;-B@C1=-#UOPH-PpJ|8arnh8 zox=x5vwPOI9v5D%-C%3@`pEkMU-v6jzkWJkJ5~DIA<|es6n4}(A1e+8PUecspG0z-YknUt9;e0L@HV%2M6%bZ~y=R diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/arrow_up.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/arrow_up.png deleted file mode 100644 index 9912703b1dffecb5a87ec0e0cad274eed3ccb795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 zcmbVMZ%i9y7(Xmy9g{G0V`H0eI}#Tb+PmwYyY@y)+q<^wLJ?b(W-|-d>sxw(_R95G z%b$!gopxD5mL>DgjDff>;+CQAiwQBZNen1X=7J`eIH^XzEO8rinv4bCLW_PN``{&a z@B2RQ^Lw7(^Y2c#G`q`6cb6gvQsz0t`QW-c_o_?ackFP}4Y*V(&Vb^V!b*~t0b&nH zL4bOqdw7ph3_f#w^$$ z6Q5(K7_wk(Mla!wvmhcK>XU)Luenv|>lDl(tkH@#q!?%*3KSkqMZ01NCS}1^?J{tm z6XO`Vs-kpSur*QvZwtywGC+-5LL(3qiBbkFX&}r7b3LjfNCGEyI6-Sjf-%wzL8AEw zgWlv&nDKG0yf1jNU=c-$GdP}1CbdbuR+2k#(rh;4gbvr~G*Cm6=#43SN)t=e7A$Ze zA;@A}5v3TKv&aXf9>sz|rfVTY<6iH&;aDP{D3~%l#m8|{OW@IHF0NJWgyIAL(%4Wt z(b^jaxDOxm^4J|=*IUlIDvV|7o&GOP@EMUq=3sjJWdEfGnP5)mnmvVNnMM7_Kq#&VKef!5;X zfGi#dA(t#g(bWty;sy*{CK|G)4FsK!+)i*3dfC0O_U>)_J4Ek_^xRimSjtQZMS z{XDa@bDTiGcRS`%eC;)wnBDT-!Q`UuL_>G+jpXcH)7Z4l+Va|k#aHLugG0wQXBqTi z`jfhAKi&Gh{_^AwrP}t2+ZA8DuJLz#lRWv(x9S7GJntR3sMge<+V#O!+o>!3vG7;^ z@QDgf^C*}|2P#5!=Sh0oyYHELj@NCSJ9BHaYWU^JlFURPUGdhWt^e#7>Pv4d^zY~W zcSktYrUPe|tXcfCdu`8dS5^LsWvrDqzjhCL}CGrrxzq^bp<&(sh$_N1ca z0v<47!sN(#FGOW%QUQdbaUhxxM(IEp0$?#85`$8)G!hVk5Ga6z0#FhKfwE|c41|Em zhsS!O^=o8lsA|#|yOQ&a3}coF1Xin+Zx!(=+8}_WQmFtG3WUNa)*{McCmGBZMOuR0 z3@C2V(S(^HC=zfnV%bz4Bj>S7UxZ*XYcwy3Ny}uS*pvxum{|bvL4nESifh8!!ldE< z%6O%iI3!q*de z8H~a)(Ga2pr9u#nfuI-!5-X%a5e&yjP(*^bIbMYoBQc;7M$s6hR0TotkWzu73K)(@ zMJR}>pm;YniL@{nsl(lV3D)l<7I`gJhR`_1P_&k!a@`e>YNQy-Vx-Ifk{->601c)i zNY{?*f?mXn;xv(u>s2&m0wyvnBVM6ErIfI$C1OxA8My*R6(U3uFG4_2Apv=lSpEOW znt&A}aFxe@%Ei6K)}U+pviRA>%l5%Zwr6OzIX2u3%;a!94kn=rt?kB0xDn}_femS_B@D9si++r_`LJ$h_N^R zp4Qi_d&|*%hq4vi-{>1z=(BoeAu{&E-k<@Z;ioCRyY?>2obsf<(ZMC4!Oo@DqK+dM zJ?45Obj|Ocb8t`AU{%Mui*KJLnp2GlbFyx<}mdm(-Sv+U4I=PiP}}W z>WfpGJz6~pK=unz=nUd*-3i@_o0Dd-~LbJyMs4!N(k?&hYk{;*JWq!+F1vDi<-K#uNUwQE1OK?!P{ytKX0fk$(EL24r+PJ3TcvKF(Pd*f#_gKiGMw~E;tvtsrcbi=aWmYy#Fh6_@@qqs%7~d`&wowxcJvc@3o}BH9K_Yz02z6Wq#Dh zWONl2Jx$Y$+^pS}I*VS_dh5{Q_Uh1wDz*RSo;v&WY3u!dPyg)b`umZ}lgr`pm}|F= z`SgT4ho0s0PgyTt{p-!eg=f{H9{ek52UNX-&X$r!eN*N8hp#z9_a%r3zoMVRgo8&e zHx4_C@FvTnluKJ07d?AEY#1!Rlo`71mZ4R{tC%ZXJ29wzio_xN+RKgg+>(&uoq_ej z;xgxoHkJ59@Ur|(Lo1^EEyv*S{)k26=a+CF9O!sl+T0iCpT!CJHZQz|GY-1`0!i`7 J=m}+3;Xmi?c%c9Q diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/brief_case.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/brief_case.png deleted file mode 100644 index 837c8cafe9e862f4d5c7b40fff225f47809d95db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1328 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 CX6rQo diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/cog_02.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/cog_02.png deleted file mode 100644 index cd1e8991ed74893970bded6d041edc06ab3aacec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1878 zcmbVNc~BE)6pxCcAW#JnBEk}pLrJomgoLCZhAe?-!mUOGhb37^#O#J-k#LM!z^d2` z1r&+`atVs(c;ZQQP%NznqNo_GRi^4#bx>5KDBU2~{^9sXcV_qdzW2S~d%t(hZjKBO zwXvdFQ79A}Nf;bWu2l0oc@p{Evq*ZCT%3szIT3>=6B&pOr3jUH5(-E(ND3N_BFfCP zU(f&wWr9i_D<|YKsX&2i7>HSiVbEwvG=&lnWY8jtRFnXc&=fTmNPBs@g$AgVfwX0Q zGEk-!p(=G)mJW@{3XfG}r7HMJTF?R@z#t$EXix$H44T!LUSJ5Mjo1~Cd$X8H14dMc z)Ii!NQgT@&Ai{Mh;Ku;z3Xlr{Tn+=`fP4<$7hr)9$b?u-kVl6=fgeu*Lcr)lBfaUA z$%1HDJnD-)1=3Ump%pNh85tRj3^oJTr7$5rpU(tYOcskyYS8tW7=ak*n10Tf1sK&U zbZRZ3#xcNb5lO<+i9j03^iv2LtxWdWFs2_(6qz!n0nsuc2FTQC%yErq>xpReUm9Q3 z*2iXQQD!u%$J2ERvL4BE#=vCmzV67ZNU{+`=+tCUkkv4*NY|hkA%O#Fy&y*PjQAc%m^IU&2Csk&p!kgZ{yMF$9G`!9o}oa=9Te z8wO!96f%aDV0r?<6zG^=HR<;gRw(`|Rv^-$2!ZQjaeVby2SloH0@tf>Eg*{VV?clm zQK&Jq#9W|H@xrK1y#`f^b+`r?$*@5E1qNb&9?6==0ePd53%Rh6E#if+MIb2TfwWPq z^8aLwNs?ij+v7j&GA1H>(7gTJ{N&;D_@Ed$GdglO_G>K!r#XBV=~3YBw4rFmdlkFGN_1$vwNLR6yIAe@Gvlnk_l}CJ*OVp> z)ByEE(l0W!|92^Ha}WT$K(VsW6`I?CHt39cs>aVak4SHsz|qr4;ok@9pa> z%Hb@jo;q-z(z1$Te84x1U(nw5a*t`7%5UzLpGx0MzCvAlbAvJbyY%XOyTk4!RV`d< zPJp!C*Ly-V#=*GW|jF?+mYZq^|?&TAP~sraTmo0o0>M9#NIi0TYi}Ore#&r@hN&Ntm{_Zp_|Uq&O7t~ zsxqap?e#=WBeH$5#%rZTL9DFj&#s$0Y9cq8a^wS5>DA8*+5J6dBhqwk()E=WT1%=- zrnIBy)(v@9)|8izKbnx6cV@z`Kd-#PkunAErO}>5LQAUCrTzSzA;-o8ZZ;d|824?l zjsNZC87g_Xy!V7dYN)U4&Y+FP_-dEItd4Fw`R?=gvJCHxwW*gBeRMe_1g<_yPFt?*Yf!R(H$m9~arWe0$@`p|+^@0=X}D{@t({ zmy(K&TM0>b+K1$b360Jj#6Oh5TjnqyfLFyq90^fjQxw ztGD_*DokyPTa{rk&#O0Gkvq$C*WFFCLYi-3<(W6a;56^L<__!S_v`$r4{G059Z7eU zSC*7?ep6mKmtFC(%{atpJThspxX-EA)a+sr-QId}enLveQEM!I+GhB2UL4Eh8%2v} zly#QoGNP9D9Xnp{x#ViPVj)6+P0wEMKHw5sI(fa@LS%OkoP4Pwfm3$d<91NZ+kn_WSkW|EcLJOw!dtO^*p}5?DCDnEa9nwJNZ6o4!x(21Rqw-ZLYe^ z4sYbV@OV|ZIIHO?V<4_h9&eMl;Pq^|bq+y^-o632MyJ^C%Ojj`teaHKeqQ!e(KP#U z_l2Q=g5>Pd&XUJnx}d_@9!2&wp{_ZGqF3*7TY!#_y$5!j92R=hA68Ve+Pot^-rg1y o_=o(N)O`-dD8DHbjlyCZpvar2)}5)uv{2u{rX2P8=0ga7~l diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/cog_02@2x.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/cog_02@2x.png deleted file mode 100644 index 6667da6719214bb592611387d65bd82bc1345404..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2905 zcmbVOc{r478y|Zqq(ruwMiDU!W5!Ixtd@**NJkuF=EcM;&5R7$C#OR?B0iC&L$*qh zh-24r(n7XMq~;W|Q?{J8Gdeln_s6-;AK!aj@B2K@{oKF%{@vSky@@VPwn~axiXae3 z$=;6WCRved?*@6vw_T_`C0R5DBrkzGCqNKJ;{hNXgX0f??OC)yzzv`=!jInrEI}Zd zASTsI;6-u7(m5uthA@S}(IyBu)*Ow6Bf#Gth{PL@ z5rB0glE3+qoU9;00s$8bgN22KLBq_T99|#{fx%#4a8sD6sfk3xgdffp(1a#zzTUb8 zBEYBfm|Ovq!v?Qer1^6~1y&FV)4xJsaVeC)4YT>*5+z9)Oi1Ix5KuUb#afH&t2STY z2K<-CKWg)-;amXb2JktdJi4SF0eb6TN$&pL(VC)!4c3{*loW*)LgdgxSpZvLPqcza zZlDY%1B)V}EX)xEJRD;RM_C{c76b$mhcPunp)Alu0-CUH7%~Du zLf~;kA`XQj5zUBjA{jwi$J(>`0vekRtovn3{C>ld{uPTQ@Bo^C!=rLIA?qFB62uX3 z_(2>lnBZ;>MSv+ZI+ML7Su4Es|GzsD|kP>rOtVKBa6pNW0OKx`2T;y@4H zcHXEu$<5VYuQI8;23Nk%;c|@|V#h6c`kANlA_E-B(SBobx;*~;a}uxqQ*(V-=*efp z7aNC9b-jH(8xR&a*4cnw80-868o44Gad{U@^4q;nHrFq+wQg=k8&^?(Y*aK%|V!$uy+L4%<2N7|sm8N71HXtP2{M}@HuIpthb#uTcKyv!(yS2&@qcZ|?}P2Ggv zvw<>c+VQ>I&bXfzjqdscwHa|`j!KzlN2(0SYRTT;GO7*jyYmHbQORy`_B%3ZhDDuX zw(b~+jZp3Y{c+>T+b`S2$`*?6dednMme2*Lm)!L@qoy&1mm<>{GtZE5b8h-m4VF=# z<869|FNlI&MIOlWd%StVdFT&mxmHZ>#L|~@LFFIRA1YWCNK@p)QAS18mo;yR4$k)M z2vaL}<_mGYX|&bwhe2^_QE?r*Wq<|=nHpH3kkhsN;Y)u#4ZfB6CjV)x6q|~Hb$MdB zR`rzsgp7l4=? zBCQTqQX24Lp$U0L+&ewpqE~9N>gVBCL-M{LT_gW7nipcNt)p{{PH%2A%k@15;vX?H zE+@>_^+QC#QGQIY`1D*+m-Lcf&Do_l;YKo}uA0MC)VO(V<{*`QOSw+Vx&85RRc8=w zb`|>B+P-94Ui@h3N9@(ErrJ%Tj&3am1VU>4`#c4<)&Nz-*#_x7w(#QEr+QBFc85V1 zx$krITqbZ^$&}J($_fdI!J8?{(akrs@CiauY02`QmdbR?o5Sb4UAL?3lS%_ciDL`I zw+lk#>OKzH><>zEthj8>mSeG0t4POzQQ`fAmztJ$+T5JVnf&Sc=df74~@UEV?0= zmlg5x*9m;~sJfyj-g|;PNxB^RTKwu-2CzED6%W0!|d^^<$r=v%i-ni8nH zb81mXxN&Amyi|5noCR^iMEGfb@Cqn9lGtt=*lK|-XuncxGg2f-wfXSu(Xa}2kR|8HC|*{ZaPhwWd^2<;Wv-7FEu;)_t;G&CO@+sBX`P$)?4wP*Eqp{_sO$zpE z`(5*ioFhK_@~xag4U>uzyefBOI9$oGyMMOsXurEiot)S(b+|RfUN5EWO2$&~xk9(P zSJGA|WAzi1^jErK=hZ|f{at4|Ho*XER&l%P=R2dk_9@ij9p#wtiv|e`9v9Kd=WOc3 z>7&l>!rl4_p2}^HZVpsTXgUq84A0g+QO|yEmQr@(%f~Z~41$^LsYHcQTEDF@+gP_G zbo{U(0uQNF=*^DgMYR=_Y-VR32xBltc3vG$N2rg%CN2Bza~tvVS#Z|;cd}@j+W1LZ z`^#o@F;K$$?R6^|tm>tv6j0N>y!+vhw5mo_iNS;Ogc{kMDL=!TMZu-c^7)E2#=yzFWxPqBQaO+8lH5#-UwoUXz(4ZT8v$3J$&gU z{{19}t4J-#c{y*Da$lD3nD;DW;<%!mmbFu%zS{2%alcLP4b@B{!;Ukmeq8aW3V(xn z`~6Gf${&VPVA*K`1Mx!YA>tvt633+1y?e8?@r{mBXRA_!ZV~3* zch6}90hrR}{Gc!p6@v9hsqaNZIS6cWBIb5~YQUg6%uN2+S-8k$-L zhDOFFre@~0FYR90J2*OddHcNa_45x1|0^OgD*9c_$Hb)Ml+?8JjO?7;y!?W~qT-6m zs_L5By84En?H!$6-95d1qo}dp;}erp(@V=Mt844%jm<60!Qs*I$?4ho#ot^+0LeeG z2=9M_{SPh%0v9nUDG4d)Z!RKYU&2GeKuUH~lAKZbDagiyiB~F=f>|XYtGtbpPg;MU z<%Q=66)V5Y(k;y2X#XJl-+_hwzsUX*?7z6C0U8n_!r+lG08rrgO5IFjV8@klesuPg zBm4jlC{=g&V+6G{Ic&rA6F}-jY)Xr)!|O!H#FY>)nfEzujOCQKmc*dV)$+sN1)-Ll zi@zQXUbm+e1);&fv!3jozsXzz-~>>-Lh%h_cs&e`S^g?Q*Jzf zC{SJjU!U?z)Q%Zl(9K}e3>uczPX|a^y83Ek6sy18?*E%d`~BRl{cnWAj=EVR>xuEuE+T!BMdNBJx_hZtF*Li~$iCu!B1UBb#OZ@x;nj!z9I76I zRw9ST4egcZtdYN;;m01v<`&$e>xp)cIx+7@rJCd0|=rt80lokS$t_Icee#Y$5 z)V989a`S$2vL==Y01q|IY-`Sr*aSMBD#eWYSm@|>U7rzdnlaNQT4hn_qJV_alRmWs z|McgYcJg37XI*Ba&Wu$CozwTlSlsxYDq|oOj1t)$7uFMglur6A zdh8n3C|Jn}OAlAUqNd}nY7v1#sIk~=h+QtvsYpWYhW~M=(RdJjiKCWXoYI`z+@e8! zaM2ijzQ+Q~R@hp2d7H?H+Pqma=zQDkwv3BQ4 zKN%~Pxpa5kTdH+rj*ya_&0O_e;SDjgVJU)tb!dP^e0*WGUjKsCA}p=7OQm@A15_$- zpUnH2b8HRI)#Y)@+&DgG2dPVyQ6FCOL!Fv*xEalJ=+%(|_>2Fa7zo7)L-St3x}H;0FS#$o zdhyuqWJ|GIcYMY0dquoZSv4_3Wt6XwY4~w37asVGy3?fWa%bM?OXs&}uBAs)wjXr^ z(C4Unsn}aNkg%?q23Dn;oFV78|c*FSZ zp+X8Y6B6*TzV%``YsA}PFyP2y^6PVnmq}MWW2Y~m52TME6P54Jl}2YcXl$aVVkNo1 z9znG-HO=poL!z85C9c-SLfl|(c1I+~kWZ(a zrFm8Fxhl}^!zAu3nXY0hbLa-8Rl3j*44;p1FUrLs2DzI^(LKQ`MxxW8>@MjAc~IGL zQGH3$^F~gT)t08>H%2`U@#>Cu*yktErK95M$b4)tWp+>JEpWbo}{ z!O`NW?HXSbeT(yicc?$SO1n7=b@|$PpjA&L(0<(Dmu;tp>hg$eQj1Oj>AGXD33e`` zWBE-h?#dj8hU#%25gz-c7wKjndKBe|iFnXJVtjV)gzHXL3V&m>MUaol2eD(w%fJwI zwAqPyWTu(R@{igSNuIttA$#ZHB(WE+xGE&2nn+StjbyYIG3xfcuyZSU5XwF$SDXZ_h}Ga_62ayuRubryAEb=p;R!UJ#%%}Bv$Fvb){~P zXXQ^hoBP)`M{ASBwUCPzb6fEmuJ?0HD>TcGpU+>ZsF{0`G>p4>|FLDR0q`OF(Uxq+4hxImtVNlZ;bUJrBkeS_*w)whU{{X}Oq!2pkY7fQX0r1@ z>gGXW?4^fw8*=Eix2THmWtZHB0tw6VfukNCpvVme>r&H*XWJYic3yc6?@;1-utQl1RyJ(naSB?e>C>*eur1Rf`i8su!)}%l zzlWwSUhOppme)>M2VNw6`Z5U??q18-7?p4O3DDwtZv-c|Vec!u6rM$nxp6;!Ul||5 z27+5B)x20WEbdNxv}bY_VUOP8B$Z-X8`$MG^n%aDUO6_jv>R5U_FTQU)8jh7)A0q} zSecBE!iqdxzRiAIMw9UCajSTp!*n^ zfH&l$0v=E(`f&>nF5K!RBpFrnT?>kx73vdby%Y;@QiO*onC^KXm|>w^kmkGC z+aGo^ioXmIcO5Jy{)h#s)@Xlfq3f7Q(&Nkdd>Gr+toJ>~;>?ydKV5V_)%U)oirl%U z?Rqza;TH-U6ra%&r7iKo6}%=0?F2*P0vOLdd3ikliY*%6R7H00Wa;Ogr@Hl^A=Jfj z_JpZ6q-|vZP1>DJ_>zkwui0aG?vu%KSsK~4MGsxERB!ijC_BC+BhBusv+k2xfnL!1 zF7eYnEZ%vIh94g1*T`lG-qvg$5U2c}*r6nlL@a0BJ~8D`;HM?YUA_Et!ZnK%z40C= z^TdVzukIFwAN%Kcps@Rhw=pD3nSCf=g5IC7bmwoJj$0I-+?}H@lj)7zS;6toU48lq zr^lWq7;qe+FO2QR;k8T55{v!`YGMlPYo9!@q0nSyjFMVo%cyrxG%X(&-P8+anD}^> zTa-1gL>eBbeUdM`bI9MuomLq5*@r97*f{Q}ym^0b!_rUpx0IYk9|jThITlAs-)ao& zP{jl979!!L{di#GsfST8%aFc~o?c>cQnE7m3GBqY9z&0N7|cG5#kSxgZrtBca(#U} z7?D2P$r++HvU%nF*IDr6AA%VE)*C-wNh3~Xu(WRix(Zx!9KD`dN>FpI(kzzmfX3^g z5##y-aR0&{O6T4>!8*&s^F*CJ7X$O}+IdrK9X4Ow+7-}OH}Sxc&~~$s?_RgoB98a- zb}%~{XMG(HsKhtkcxF^PQdR#4c|+wf-OZo@ z?zd(wKbxsue~GzYLvYT@p4X8rBQ{*rSB{hr<^Q&8wb^DJ7QF+Jx*BbHT9?}?{(2qm z^a}my?2n}1MEgO)2Q7Fv3=dd0^Arww47!7vcQSRP`k%yJ8?X3a`i3?ZJU~Cxcmu2t zHyaiGvt;wmz=PyW&*SWxlQCLR^!AW=Z)#HL3>W$?`d)I#7>?g5#U9*@ih(14cLwk> z3|lLTL`UJY$%e1|=~t^JF;rV31Iypao*Di+LeP3OZP9Reg)xQ02QwP*0G%3r2aJIS z0CGrb=gqCat*6FH@`;8pp(*~4n%8Jk`d`w-1|s@W+aDp`S@S}7PA^Ke)J5-kzK6@6 z*7ov3qwDW=N1OpyS!dmsPbd6t#u;5wg2LX2Jaa==UYE>(yf`-fk2Nj@**Fd%ZiQDyQS`M3Q9IaJR{7ZrBo^*fKnN6|ftl&v} z2}eXg@||6{a%S?TG3yh@@u%kI`8_sPh1F2`lYGi-skGXH^f@`&g=9)o;gJIEC52}M z6Q>>dZKd{+d@k#(QjAI`v$o*92|4<9THWO}@|@!C)iR%dsXWl;@?cB&&Fu3^p7=Ae zLde_BPLV<(yC;3AXvlJu2etDR^*XDv`oV`sjZa|a6&B-Z$O<)%8)o!3lU6xjr%H74 z=2oi3&ymQJUI~9H5v7#gpmU@)uuBoLwa<7I2Qq#`MW)X3ySj~+I?axUIH;b)_TZ}+ z+qkCaCQ zd9okj%}nzaGr$CsDpe*?%7c3Bpg?S~ew?;kj@8qM#a$62)Hmca(==^g5AihJt4=jw z^$1(2L%bH`FIK;<<}$y~Mm-aUT})tgj<)r^EIc3+ zJsM;MSH{Fxy(jfWI&1D9|BiZJZDp;=>mbfXk)yyB-h&m%qY2>D_vKa(u+yT_k^8j@ zaapohVEja0T^IA;dz`JER)2X3R(01<;@>^KrLI^6n%~yUwS(MM=+Ah>D(mi8BQa$m z(8Ft0_#@dKKzeD=f|;go=XhYmSykhq zE$b?*qrV+-!t{Z#53HU60%KOH0|P&4h>Gja_6sD!(1VNzgAD9JbZ1=SS1s?nMM}Ig zM6EmcXt0OH38I2;CnUZoV5SLxq=$M!Vd^6~YuG_KXa z1Ib;Jbqrf1I%4UQ3F>8xs?Y|ii00lkHUDkP#qawb%C5Lu{xZi3tc*?%S|xkfx70bh z965UP`?G&8bZ|?JE&dLzi_(c_aB;qQu6sN?D#0Z=%$+$)WpUqBMx4Dj-?3g>qy$u- zGA3)xMjN+9xhVJ8dvjO2XmCkUclml&nXTTO@t?YBBZG1}S@hrUmWw6uU&$+!pw|VKzM^TGx z%+0OsqvP5OQ?7(+SOZ8o*0x$&JL+e{qkYA)_qP~YXHw>>?;cbR8v!IAz4r8EEG^Dd zG}k{abmaHlj}(`YO6D$(>GvuMcWNflwH?MOilW5F^Tdgr{*x16t-YfBr@~;rR z;M|wN+{yMj5n@61c4WvDS-Laj9wJp;!k%xfcDk3|&KbY2ZunX^hZSd#VFgwYp&MsrtDP0yow>_*Gj ztP_n!#s8FN8#?CeAaqpJWQF# z^>)R6`aeh4r*Ak7_tmAC<<7a&4+{8tZEl)PP%cjG$jm^`G#GE8l1iIC%oo>@(yWD` zzpjT=?7e3-#%u)3rnGCqSy85U2To#idsb;9ceY^M3W%!;h}gy0 z*Jaq$hr9AQ;Q=r1a298+F$g&OPBzN8>hP5dO6OL0I{#lVf4CsWqBnZJa*uD{u5%2f zx=i9AMz^_K)pW3ul$n>xj&6B;xcxZ5pL3o%84pw*Q!9(;IorJzB`ihH#}9-_6!$fO zqb?9TGEIcxphWJMiGuAiJ(XjM$JDgb8wTZTx1%fE={$pTKY!HY|9o1~yP`vBOO^3E z5;_g*p4iqH7rpgr@HH$^O@s=};`c@dih)$VvbPr;|aFm6#%R!;qxq_+-W zNZ==C`)XS->zTL5RqabjJfK6S3XKbrbEDRpZf*=w+VOt{4FQ*-AAC;rfZWFee9(6R zUj881#mgl9GZpG0{Zo^MzuE+f-c)unaea>#qDH7Z5X3GrN72T|UyO>0nTQCr&K7W7 zOeiWv#CaYrbzLXpt8ha~>!roTSH*LUi;cS=r2`jT>01SI(h6fg9U`u*df_k&`lP-Y_@4eYCJXD$Kx~?jS!yfi?D=m~e%U5~ZJ z4~&hF5t3!E8ls89w#2EKk{C&5WHT}uGc&M7KbWAy%sIZS8H#gmv_1zd`ho0&m)t$i z^MC%o|Nr-YyZ(myn&QIJLJY%-y|r8;T1)kJ?Hcqwy>r)hXxXTF0$P*Os>OH}VlF`m zLg1D7HrNPxA+dWBmSb36So8<9fNvKQQY0g<>louw1femkyfPl)L+wxlLD(kBPCWU= zIUIWkEv@C0ZgVB&G zMl?~8fo_oxDxI1WM@*MPkRm?cieWjLNfb&M5$7WWWh4nn(&Jjvj%tnYUmB}wNBxNi zBpP8<=~P3g9<60rFv{J79qEdQ4fB#JqN4B}oD%Akpsaa0Cys86f+#RH&Stk#tebS0 zNSmFa>?~z*IZS4o%}#SH&1P+^hNavVw~4E!>~2RjMR_QkJ?-^ zz+Sl96Tp1w7eT5Bp3DDbUDf@k4;F`A4}z0uifZ3|278R3G=~x^$>IH;n4mt`$6J`hTq@)YQy5a^v?w! z1|Bc%4fG6-JX@IFyt`ns;MR%mbZWZ%`{Jg7RBCZFuQoAt@!+Pl1F6M@-mUrT!*As9 zHt@r~t+5gk3%2g?-mNITS7upw6`L-Yo=slcxaZa|d~;+=lDIkfRR86@Z=IYzI?AZ? z^#=#kzBMzi4IiNg&lflj-aP(f>dM4$Wp`@oa*ek0r|$I7Hl_13|M=c-`f>u7gsQqz z^w8-$^)39L?eTdzImlhT{z}V{n&kDxBr$X8>}<1dYFi@DFx)aXGwt8M{mZ!=EVl?d XyD+Lg|FP*Y{cq>>)N^OtukZT@Z=dDe diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/delaware_show.jpg b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/delaware_show.jpg deleted file mode 100644 index ff313a39d0a159c01e7c66cea54db4245cb2907e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5646 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 A$^ZZW diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/en.lproj/InfoPlist.strings b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/en.lproj/InfoPlist.strings deleted file mode 100644 index 477b28f..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/eraser.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/eraser.png deleted file mode 100644 index a9e7255ede935424f98cd52389cff7a20451a521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6653 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 HDeC_Kkm#>= diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/game_controller.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/game_controller.png deleted file mode 100644 index 7f9d34ad1d898d7b12ef91b351d934aca78b03d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1659 zcmbVNYfuwc6b^#cK^YlDQJkr3puz}bcaxCEN}x$LAwdEGqChPpF2fS530KqLc-&_Em*;IJ7m8{)J1;Q$kYArNMQ5H|vbkVq~9!NBxG zr@Wc8Sx7P}o%ThY1auuq8W9k*TCEH#i$R#OL730ygAfyBG9xIB2y=mfRNEp9<{-BP z6f|UsocHWkxP+cgCv@8swnDQl+al8n1Pg|0y=fW(BfKz zgK~J0uvi4~nGlBu!#pv}7V?=a4u{7@#ayx5#@n#4kj;ZcOes&qm%^|F770;Q$l*v( z77C$KSmMUY4Q5hp&|q%AIOTU5D|sgt5t}eINtjdwk?ZaNrH&v8vyLzV;*>}R3@FqZ z+~AV93iLW&6f@!Zm{w{c^uSbx5&SI-q&zOgn#+c`(~%1~sE{S*N?2kD5^^E>G*
TRA$Khll-ra zH|FY_N^4b&7lFCHOLlzVHB$u6D)HZzv}{LT6)-2+H~RP8pkK4>)Ut*0a+zqIYMao% zH9cH1PcT!O9)9H5=vX(Kb!Rf%dbWS%Y2?Y{;(I@D>=o3ohI%eoo5J>VLM!)IZ|?S% zg%BaPS6uHKtmHO@YSZq|tQPKbUfepb`=I~aLu)<%3{ATK;1~Rw*XF(cp>_MWJ;mqNOQBs%9jR%fm3+mj9UuQ_?^IMSIHysE3KhqXe|@(KfM?2Wk8 zx#&p#uQ49WPj`*+${Pdkj?n!&`$q->iw(OHm6lJ>sR~CsV*SudMD*Yl=j!_Ua&jWN z$YS|wIDQFI)eOg89UFV(7&zbG-ueAdYeDP7oZHVrzs`0hy>RAb1iu{ay1X=IXxD*t zSX-DNShD;ud~NWKWdkF1ZqS2gp4APp9|mPUUz#2~;vCzOIA?DNKlX4#QC0A;-$2WOdtld(6}nNAW59$!DWrQ+MQ)$^bF#AFs1 z1zp*hTQ(8U+aaxI7cYA1k#3iKR68EivFdRBV&9?e^0LS1#^)ZGgx+-INBl`y4{$*KYnedQ{)=oCrAX&{y7f2(#w@P^$I3dGl6t z*rkrzgc8&q>l-#U`!DNHil!munUz~Pk6z^0B0c{dxZv6-PIei}h diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/geogia_alert.jpg b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/geogia_alert.jpg deleted file mode 100644 index 45e81c790a0ab73fae42d9206c956901b0fdd40e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4431 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 J>7V4E{{ld;hExCm diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/main.m b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/main.m deleted file mode 100644 index 419b9db..0000000 --- a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/main.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// - -#import - -#import "AppDelegate.h" - -int main(int argc, char *argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/pause.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/pause.png deleted file mode 100644 index 4c8520258f8fe6f287fa9e28269afee04bf3af79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1110 zcmbVLNodqi7*4HqX{{GQTzUu*6v0W}nY|`rRQ?(S6LQraOq)tgR2@Jl4(eldo_m z!!(zyLXi}6hZV!Mc|FANRokO%hUx68db%-!2|I{~EhojzK7PWnmYL#?C2}C=X}Dw^ znDBA`L~p^E7%^m%>)OY5RuyW%#zbeU_NWsm)fBgASE2jxTHx442pLInOQMRoK2~#m z%qDmcF@OkJG0wv{kmK?mHVPmRU{nB71Og=?DFCwdhojznb4bafOx+hfrMMCyo+1d9 zN`jXr14BYT*QNML=@}FEq^RZ4`zu>x~jSlE5 zxx@`huE%Qq2_CXJ-LRbSCM?iWya@Z&7&bG$YqN_PR;(2iWRen9EyaOUk6aaz8q=h7 zOanlb09WUl|C2R=iV?#0_^VwSSF{Ji?Q-+e!}9oGht7;ohoi0aX*gQvvPdmdKMek? z)w-Hf%%B}ePR_)%^@pZ0c{?y(pQyXukYrkrhXP?2Y{JT#NzRYw@O->fe zH#Z-hnR;^OV(e_O{3x<8cQtwGLgD<29(4T2+-%=^WnsSbcIwUZ{k08;Zr#{^cjrr| srK$aWQ*`y(kLn#|%RtB2cjYY8%zRrl{qXd_{p;bRXVbmtUiZM{Zzb1g&j0`b diff --git a/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/play.png b/SDL_iOS/SmartDeviceLinkTester/SmartDeviceLinkTester/play.png deleted file mode 100644 index ae0f5bd15b662929606f49e49135b77a95e8e1bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1336 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m@_g%B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD#PU%0_}#n6BP2AO_EVu8M)o`HUDF34YC)x{-2sR(CaRb3oXS&*t9 zlv1Jr?YUt$X z;^Js#=IUbXV&LLt=nB*8nO9trn3tRivo{lHFI2AyUcFY%MX8A;`9&f5`8lu@5Rj2y zl3$#WU!dR|Y^rCd;G3A7nFkU9MG(ZlE~!PCWvMA{Mftf3;1IUT#Nq-s3v-~W%}or< zp+0vsb8$3wHg`34HZX8BH&BA=O(7@L^ns4i2PF@r2+=g3lrn$nxAO6x*CUYsPF-QoFuc7uhvn$i=&n_{{#ySi@luyP$z3z%@s zz5TDM<%@s+etYXYV|=8iU}vBIvB-N;tx5Gkp`z}tNQandvjjd*w2=S%*Imz#`O$6T zXL?<#mlo}xk`Sm6XHt6Y&t8^pg$Zn041Q73EM4altWh)>4?QLJeo3XSJ&o{Tw{eu7OlD24tAN@D;8OZ uKi-tVtD$E#D{J1RHD?W;+%9EcWMf$M$?CjJ&V~|DS?1~L=d#Wzp$P!`+s?!Q -- 2.7.4