diff --git a/CHANGELOG.md b/CHANGELOG.md index f141cf03d..3bcfbf9b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,18 +1,49 @@ -# 6.2.3 +# Changelog +## 6.3.0 +### Versions +* Supports [SDL RPC Spec 5.1.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.1.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0). + +### Enhancements +* Support dynamic adding / deleting of menu items when they need to be replaced instead of a full delete / add (https://www.github.com/smartdevicelink/sdl_ios/issues/1144). +* The library can now be used via the [Accio Package Manager](https://github.com/JamitLabs/Accio) (https://www.github.com/smartdevicelink/sdl_ios/issues/1229). +* Update to Swift 5.0 (https://www.github.com/smartdevicelink/sdl_ios/issues/1245). +* Add RPC subscription methods to `SDLManager` for ease of use (https://www.github.com/smartdevicelink/sdl_ios/issues/1257). +* Support subscribing to SystemCapabilities with the SystemCapabilityManager (https://www.github.com/smartdevicelink/sdl_ios/issues/1271). +* Support pushing raw PCM audio buffers into the `SDLAudioStreamManager` (https://www.github.com/smartdevicelink/sdl_ios/issues/1275). + +### Bug Fixes +* Fix soft button manager entering an infinite loop if artwork fails to upload (https://www.github.com/smartdevicelink/sdl_ios/issues/1177). +* Deprecate RPC superclass initializers as they are not for public use (https://www.github.com/smartdevicelink/sdl_ios/issues/1204). +* Fixed the audio stream manager shutting down when the device app was in the background. It now stays active when the app is in the background (https://www.github.com/smartdevicelink/sdl_ios/issues/1224). +* Fixed Alert RPC documentation (https://www.github.com/smartdevicelink/sdl_ios/issues/1233). +* Fix soft button multiple transitions failing (https://www.github.com/smartdevicelink/sdl_ios/issues/1234). +* Fixed numerous IAP transport issues with a near full rewrite of the related classes (https://www.github.com/smartdevicelink/sdl_ios/issues/1239, https://www.github.com/smartdevicelink/sdl_ios/issues/1263, https://www.github.com/smartdevicelink/sdl_ios/issues/1316, https://www.github.com/smartdevicelink/sdl_ios/issues/1321). +* Fixed `SDLManager` delegate methods not getting called in certain circumstances (https://www.github.com/smartdevicelink/sdl_ios/issues/1243, https://www.github.com/smartdevicelink/sdl_ios/issues/1264). +* Fixed `SDLManager.stop` crashes in certain circumstances (https://www.github.com/smartdevicelink/sdl_ios/issues/1268). +* Fixed inaccessible `SDLAudioStreamManager` API (https://www.github.com/smartdevicelink/sdl_ios/issues/1283). +* Fix setting `SDLChoiceSet``vrHelpItems` outside of the initializer not properly setting their position indexes (https://www.github.com/smartdevicelink/sdl_ios/issues/1291). + +### Example Apps +* Fixed `resetConnection` causing a crash (https://www.github.com/smartdevicelink/sdl_ios/issues/1237). + +### Dependencies +* Updated BiSON dependency to v1.2.0 to fix potential buffer overruns (https://www.github.com/smartdevicelink/sdl_ios/issues/1280, https://www.github.com/smartdevicelink/sdl_ios/issues/1285). + +## 6.2.3 ### Versions * Supports [SDL RPC Spec 5.1.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.1.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0). ### Bug Fixes * Fix all lockscreen related crashes when SDL is setup before the main window exists (https://www.github.com/smartdevicelink/sdl_ios/issues/1258). -# 6.2.2 +## 6.2.2 ### Versions * Supports [SDL RPC Spec 5.1.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.1.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0). ### Bug Fixes * Add an explicit exception if SDL is setup before the app's window. The app's window **must** be setup before SDL is started (https://www.github.com/smartdevicelink/sdl_ios/issues/1255). -# 6.2.1 +## 6.2.1 ### Versions * Supports [SDL RPC Spec 5.1.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.1.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0). @@ -28,7 +59,7 @@ * The example apps will now auto-reconnect if disconnected physically from the head unit (https://www.github.com/smartdevicelink/sdl_ios/issues/1237). * Update the example swift app to Swift 5 (https://www.github.com/smartdevicelink/sdl_ios/issues/1172, https://www.github.com/smartdevicelink/sdl_ios/issues/1243, https://www.github.com/smartdevicelink/sdl_ios/issues/1245). -# 6.2.0 +## 6.2.0 ### Versions * Supports [SDL RPC Spec 5.1.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.1.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0). @@ -61,27 +92,27 @@ * Fixed head units that don't support choice set `menuName` required parameter causing issues. Proper errors will now be thrown. (https://github.com/smartdevicelink/sdl_ios/issues/1220) * Fixed app attempting a reconnect after being unregistered for a `PROTOCOL_VIOLATION`. (https://github.com/smartdevicelink/sdl_ios/issues/1223) -# 6.1.2 +## 6.1.2 ### Bug Fixes * Fix external accessories never reconnecting if connected over both Bluetooth and USB when one transport is disconnected (https://github.com/smartdevicelink/sdl_ios/issues/1113). -# 6.1.1 +## 6.1.1 ### Bug Fixes * Fix possible crash when checking text fields in the screen manager (https://github.com/smartdevicelink/sdl_ios/issues/1122). * Fix possible crash when checking language field of `RegisterAppInterfaceResponse` in `SDLLifecycleManager` (https://github.com/smartdevicelink/sdl_ios/issues/1127). -# 6.1.0 (Since RC 2) +## 6.1.0 (Since RC 2) ### Versions * Supports [SDL RPC Spec 5.0.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.0.0) and [SDL Protocol Spec 5.1.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.1.0). ### Changes * None -# 6.1.0 Release Candidate 2 +## 6.1.0 Release Candidate 2 ### Bug Fixes * If a RegisterAppInterface or SetDisplayLayout fail, don't set displayCapabilities to nil in the screen manager [#1108](https://github.com/smartdevicelink/sdl_ios/issues/1108). -# 6.1.0 Release Candidate 1 +## 6.1.0 Release Candidate 1 ### Enhancements * `PlayPause` button name has been added for subscription [#246](https://github.com/smartdevicelink/sdl_ios/issues/246). * Added the ability to play an audio file (such as a jingle) through `TTSChunk`, which may be used in an `Alert` or `Speak` RPC, for example [SDL-0014] [#524](https://github.com/smartdevicelink/sdl_ios/issues/524). @@ -114,27 +145,27 @@ * Fix setting CarWindow `rootViewController` not on main thread [#1101](https://github.com/smartdevicelink/sdl_ios/issues/1101). * Add audio transcode files to default log module map [#1103](https://github.com/smartdevicelink/sdl_ios/issues/1103). -# 6.0.2 +## 6.0.2 ### Bug Fixes * Video streaming apps put into a phone background state can now properly stop the video streaming when it leaves a streamable HMI state. [#1047](https://github.com/smartdevicelink/sdl_ios/issues/1047) -# 6.0.1 +## 6.0.1 ### Bug Fixes * Fixed a crash that could occur in development circumstances if the head unit returns "-1" for an enum * Fixed manually sent Show RPCs causing issues when changing layouts. -# 6.0.0 (Changes since RC1) +## 6.0.0 (Changes since RC1) * None -# 6.0.0 Release Candidate 2 (Changes since RC1) +## 6.0.0 Release Candidate 2 (Changes since RC1) ### Bug Fixes * Fixes generated file names being too long for some SDL implementations. [#976](https://github.com/smartdevicelink/sdl_ios/issues/976) * Unauthorized apps will no longer spin in a reconnection loop. [#977](https://github.com/smartdevicelink/sdl_ios/issues/977) * Fixes needing to clean every time one switches building the example apps. [#982](https://github.com/smartdevicelink/sdl_ios/issues/982) * Speeds up video streaming resets when app goes from background -> foreground on the phone. [#979](https://github.com/smartdevicelink/sdl_ios/issues/979) -# 6.0.0 Release Candidate 1 +## 6.0.0 Release Candidate 1 ### Breaking Changes * Remove `SDLProxy`, `SDLProtocol`, `SDLTransport` and related classes and protocols. [SDL-0016] [#454](https://github.com/smartdevicelink/sdl_ios/issues/454) [SDL-0017] [#525](https://github.com/smartdevicelink/sdl_ios/issues/525) [SDL-0019] [#603](https://github.com/smartdevicelink/sdl_ios/issues/603) @@ -160,7 +191,7 @@ * Fix SDLShow initializer crashes. [#966](https://github.com/smartdevicelink/sdl_ios/issues/966) * Fix mediaTrack field on ScreenManager. [#968](https://github.com/smartdevicelink/sdl_ios/issues/968) -# 5.2.0 +## 5.2.0 ### Enhancements * Add a screen manager which currently handles text, graphics, and soft buttons [SDL-0134] [#862](https://github.com/smartdevicelink/sdl_ios/issues/862) * Add soft button object and states, which allow for declaratively designing soft buttons with multiple states @@ -186,11 +217,11 @@ * Work around a module `ListFiles` bug on previous SDL Core versions [#827](https://github.com/smartdevicelink/sdl_ios/issues/827) * CarWindow will no longer crash on iOS 9 [#904](https://github.com/smartdevicelink/sdl_ios/issues/904) -# 5.1.1 +## 5.1.1 ### Bug Fixes * Fixed import statement, allows for Cocoapods release -# 5.1.0 +## 5.1.0 ### Enhancements * Log unsuccessful RPC responses automatically [#811](https://github.com/smartdevicelink/sdl_ios/issues/811). * IAP Transport reconnection optimizations [#816](https://github.com/smartdevicelink/sdl_ios/issues/816). @@ -212,19 +243,19 @@ ### Other * Remove an unused testing library from the Cartfile [#823](https://github.com/smartdevicelink/sdl_ios/issues/823). -# 5.0.0 +## 5.0.0 No changes since RC3 -# 5.0.0 Release Candidate 3 (changes since RC 2) +## 5.0.0 Release Candidate 3 (changes since RC 2) ### Bug Fixes * Fix a possible crash if the List Files request from the FileManager fails due to disconnection or unregistration. -# 5.0.0 Release Candidate 2 (changes since RC 1) +## 5.0.0 Release Candidate 2 (changes since RC 1) ### Bug Fixes * Fixed podspec * Focus manager will only activate on iOS 9+, it uses APIs only available on iOS 9+ -# 5.0.0 Release Notes +## 5.0.0 Release Notes ### Breaking Changes * `SDLProxy.streamingMediaManager` is now removed. If you wish to use a streaming media manager, you must use `SDLManager.streamingMediaManager`. The streaming media manager has been entirely redesigned and now takes into account both phone and head unit app lifecycles [SDL-0033](https://github.com/smartdevicelink/sdl_ios/issues/583). There is now a streaming media configuration added to `SDLConfiguration`. * `SDLJingle` constants have been removed [#7](https://github.com/smartdevicelink/sdl_ios/issues/7). @@ -271,20 +302,20 @@ No changes since RC3 * `SDLOnLockScreenStatus` does not use constants for property keys [#497](https://github.com/smartdevicelink/sdl_ios/issues/497). * Removed deprecated methods [#679](https://github.com/smartdevicelink/sdl_ios/issues/679). -# 4.7.4 Release Notes +## 4.7.4 Release Notes ### Bug Fixes * Fix for connecting video streaming on Core 4.4.0 (to be released) and above. -# 4.7.3 Release Notes +## 4.7.3 Release Notes ### Bug Fixes * Performance fixes for streaming video. * Fixes for background connection on IAP transports. -# 4.7.2 Release Notes +## 4.7.2 Release Notes ### Bug Fixes * Fixes some head units not connecting properly due to the start service payload length not being set properly. -# 4.7.1 Release Notes +## 4.7.1 Release Notes ### Breaking Changes * This bumps up the minimum supported version to 7.0 due to Xcode 9 changes. The upcoming v5.0.0 will raise the minimum version to 8.0. @@ -295,12 +326,12 @@ No changes since RC3 * Any tests must now be run on Xcode 9. * The travis config file has been updated to run on Xcode 9. -# 4.7.0 Release Notes (since RC 1) +## 4.7.0 Release Notes (since RC 1) ### Bug Fixes * Fixed payloads being created with nil data causing a crash [#715](https://github.com/smartdevicelink/sdl_ios/issues/715). * Fixed documentation warnings. -# 4.7.0 Release Candidate 1 +## 4.7.0 Release Candidate 1 ### Enhancements * This library implements RPC Spec v4.5.0, Protocol Spec v5.0.0. * Added App type enum: `PROJECTION`, for an app that uses video streaming for its interface yet is not a navigation app [SDL-0031](https://github.com/smartdevicelink/sdl_evolution/blob/master/proposals/0031-mobile-projection.md). @@ -325,28 +356,28 @@ No changes since RC3 ### Other * Added a note to the documentation regarding file name length maximums [#640](https://github.com/smartdevicelink/sdl_ios/issues/640). -# 4.6.1 Release Notes +## 4.6.1 Release Notes ### Bug Fixes * Fixes a bug where an app would crash if connected while the app is foregrounded and the vehicle is already in motion. ### Example App * Now compiles correctly. -# 4.6.0 Release Notes (since RC 2) +## 4.6.0 Release Notes (since RC 2) ### Example App * Added a command to send a `GetVehicleData`. ### Known Issues * On DEBUG builds of an app, if a connected Sync Gen 3 head unit goes through a normal shut down sequence (key out, door open), the app will crash. This will not occur on RELEASE builds. -# 4.6.0 Release Candidate 2 Release Notes (since RC 1) +## 4.6.0 Release Candidate 2 Release Notes (since RC 1) ### Bug Fixes * Altered the connection timeframe from 0-10 seconds to 1.5-9.5 seconds to improve connection reliability. (SDL-0067) ### Example App * Fixes a bug causing a crash upon unexpected IAP disconnection and reconnection. -# 4.6.0 Release Candidate 1 Release Notes +## 4.6.0 Release Candidate 1 Release Notes ### Bug Fixes * Fix setting lifecycle configuration `appType` to `nil`. * If an array would return `NSNull`, return an empty array instead. @@ -362,7 +393,7 @@ No changes since RC3 ### Known Issues * When an app is connected over USB, the USB is disconnected, then reconnected, the app will crash. -# 4.5.5 Release Notes +## 4.5.5 Release Notes ### Bug Fixes * Added a check for if `SDLManager` is already started and prevent starting it again. * Prevent infinite loops in IAP transport. @@ -370,7 +401,7 @@ No changes since RC3 ### Example App * Fixed incorrectly setting button state on disconnect. -# 4.5.4 Release Notes +## 4.5.4 Release Notes ### Bug Fixes * Streaming video will not crash if data is unexpectedly NULL. * SDL now compiles on Xcode 8.3. @@ -378,12 +409,12 @@ No changes since RC3 * Internal state machines now throw more descriptive exceptions. -# 4.5.3 Release Notes +## 4.5.3 Release Notes ### Bug Fixes * `SDLManager`'s `delegate` method `hmiLevel:didChangeToLevel:` now only triggers when the HMI level changes, instead of whenever an `onHMIStatus` is received. * Fixed a few crashes in `SDLStreamingMediaManager` for navigation video streaming. -# 4.5.2 Release Notes +## 4.5.2 Release Notes ### Bug Fixes * Fixed unhandled Register App Interface Response warnings causing the manager to disconnect. * Fixed `SDLManager stop` not actually stopping SDL. @@ -393,16 +424,16 @@ No changes since RC3 ### Example Project * Connect / Disconnect button appearance fixed. -# 4.5.1 Release Notes +## 4.5.1 Release Notes ### Bug Fixes * Fixed large file transfers not properly setting their offset. * Check for nil before attempting to send an RPC request. -# 4.5.0 Release Notes (Since Beta 2) +## 4.5.0 Release Notes (Since Beta 2) ### Bug Fixes * Fixed an issue attempting to upload an app icon when the head unit does not support images. -# 4.5.0 Beta 2 Release Notes +## 4.5.0 Beta 2 Release Notes ### Bug Fixes * Fixed an issue with printing incorrect Frame Data when logging. * Fixed an issue with SDLLocationDetails' properties being incorrectly stored. @@ -410,14 +441,14 @@ No changes since RC3 * Fixed an issue with a SDLPerformInteraction initializer causing an infinite loop. * Fixed an issue with uploading a nil SDLFile would cause an infinite loop. -# 4.5.0 Beta 1 Release Notes +## 4.5.0 Beta 1 Release Notes ### Bug Fixes * Altered how Security libraries get the app id so they can start downloads faster. * Fixed a number of RPC initializers to have correct number sizes. * Fixed a video session crash in rare instances when the compression session was NULL. * Fixed waypoint RPCs missing response and notification dispatchers and incorrect spelling on some classes (the old classes are deprecated). -# 4.4.1 Release Notes +## 4.4.1 Release Notes ### Bug Fixes * Subscribing to waypoints should now work (new feature & RPC in v4.4.0). @@ -425,7 +456,7 @@ No changes since RC3 * Fixes a few failing tests that were overlooked. * `SDLUploadFileOperation`s now use the built-in cancel mechanism instead of its own internal flag. -# 4.4.0 Release Notes +## 4.4.0 Release Notes ### Features * [SDL-0003] Adds SendLocation and associated data types. * [SDL-0004] Adds Waypointing as a feature for Last Mile Navigation. @@ -437,7 +468,7 @@ No changes since RC3 ### Tests * Fixes an issue where tests would fail to compile. -# 4.3.0 Release Notes (Since RC 6 + Highlights) +## 4.3.0 Release Notes (Since RC 6 + Highlights) ### Highlights * Adds a lifecycle manager to replace `SDLProxy` and manages much more of the lifecycle based on a declarative `SDLConfiguration`. * Adds a file manager to streamline uploading and deleting files. @@ -463,15 +494,15 @@ No changes since RC3 ### Example App * The example app now shows some example Permission Manager usage and logs to console a few permission manager observer blocks. -# 4.3.0 Release Candidate 6 Release Notes (Since RC 5) +## 4.3.0 Release Candidate 6 Release Notes (Since RC 5) ### Bug Fixes * Fixed several bugs and improved error messaging around what should happen if File Manager fails to start, for example because the head unit does not support files. -# 4.3.0 Release Candidate 5 Release Notes (Since RC 4) +## 4.3.0 Release Candidate 5 Release Notes (Since RC 4) ### Bug Fixes * Fixed an issue where "SmartDeviceLink.h" would not be available through cocoapods. -# 4.3.0 Release Candidate 4 Release Notes (Since RC 3) +## 4.3.0 Release Candidate 4 Release Notes (Since RC 3) ### Bug Fixes * Notification constants should now be compatible both with Swift 3 and with iOS 6/7. * Fixed a few issues with the lock screen and iOS 6/7 support. @@ -482,14 +513,14 @@ No changes since RC3 * Removed xctest testing framework, now just uses xcodebuild. * Explicitly specify which headers are public in Cocoapods spec. -# 4.3.0 Release Candidate 3 Release Notes (Since RC 2) +## 4.3.0 Release Candidate 3 Release Notes (Since RC 2) ### Bug Fixes * Fixed a bug where large putfiles would crash. ### Other * Updated to base v4.2.4 -# 4.3.0 Release Candidate 2 Release Notes (Since RC 1) +## 4.3.0 Release Candidate 2 Release Notes (Since RC 1) ### Bug Fixes * Updated project to Xcode 8 settings and turn on additional warnings and analyzer settings. * Fixed `SDLConsoleController` not using `NSLocalizedString` macro. @@ -499,7 +530,7 @@ No changes since RC3 ### Example App * Add iTunes file sharing to the example app to allow for easier file log retrieval. -# 4.3.0 Release Candidate 1 Release Notes (Since Beta 4) +## 4.3.0 Release Candidate 1 Release Notes (Since Beta 4) ### Enhancements * Removed all usages of NSLog. Now all logs can be turned on or off. * SDL logs are now off by default in the default lifecycle configuration, console logs are on by default in the debug lifecycle configuration. @@ -516,14 +547,14 @@ No changes since RC3 * Fixed UI buttons not updating upon connecting. * Added a soft button. -# 4.3.0 Beta 4 Release Notes (Since Beta 3) +## 4.3.0 Beta 4 Release Notes (Since Beta 3) ### Enhancements * Fix resource bundle not being included via cocoapods, causing a failure on the default lock screen. Also added better failure messages. The resource bundle will still have to be manually added to your app's copy resources build phase. * Reduced resource bundle size by optimizing lock screen images. * RPC handlers are no longer readonly and can now be set outside of the init. * Improved the example app with additional code and features to see how the new dev api works. Stay tuned for a few additional features. -# 4.3.0 Beta 3 Release Notes (Since Beta 2) +## 4.3.0 Beta 3 Release Notes (Since Beta 2) ### Breaking Changes * `resumeHash` is now a configuration property and is not automatically handled. * `SDLFile` and `SDLArtwork` initializers no longer contain "ephemeral", these are renamed to simply start with "file" since they are the default case. @@ -561,7 +592,7 @@ No changes since RC3 * Fixed some instance variables not having generics. * Updated code to match v4.2.3. -# 4.3.0 Beta 2 Release Notes (Since Beta 1) +## 4.3.0 Beta 2 Release Notes (Since Beta 1) ### Enhancements * Starting up `SDLManager` now requires a block which will pass back an error if it failed. * `SDLManager` now provides a method to call in `AppDelegate applicationWillTerminate:` that will prevent killed apps from being unable to re-register. @@ -572,7 +603,7 @@ No changes since RC3 ### Other * Currently removed automatic resumption. Resumption will return in a future build as a manual configuration pass in. -# 4.3.0 Beta 1 Release Notes (Since Alpha 1) +## 4.3.0 Beta 1 Release Notes (Since Alpha 1) ### Breaking Changes * State machine transition names are no longer public to allow for behind the scenes changes without minor or major version changes. @@ -585,7 +616,7 @@ No changes since RC3 * SDLLockScreenManager should use less RAM. * Fixed test failures. -# 4.3.0 Alpha 1 Release Notes +## 4.3.0 Alpha 1 Release Notes ### Deprecations * Deprecate SDLProxy in favor of SDLManager. A future major release will remove and alter many public APIs, but they will not be deprecated in this release because they will not be replaced in this release. @@ -600,7 +631,7 @@ No changes since RC3 * Particular RPCs can now have an additional block used with them that can be called under certain conditions. For example, RPCs that create buttons (such as soft buttons) can have a block handler that will be called when an event occurs on the button. * Underlying the new high-level API are a few dispatchers, particularly the Notification Dispatcher which sends many notifications when new RPC notifications and responses are sent from the remote head unit. This may be used by the developer now, but will become less useful as more managers are released. -# 4.2.4 Release Notes +## 4.2.4 Release Notes ### Bug Fixes * Fixed Touch Manager not always firing single touches. @@ -608,19 +639,19 @@ No changes since RC3 * Updated testing frameworks to support Xcode 8. * Updated example app to support Xcode 8. -# 4.2.3 Release Notes +## 4.2.3 Release Notes ### Bug Fixes * Fixed HTTPS URL schemes not properly uploading data (#432, #438). -# 4.2.2 Release Notes +## 4.2.2 Release Notes ### Bug Fixes * Fixed HTTP URL schemes not being properly altered to HTTPS to account for App Transport Security (#432, #436). -# 4.2.1 Release Notes +## 4.2.1 Release Notes ### Bug Fixes * Fixed SDLStreamingMediaManager encryption status not being set properly (#433, #434). -# 4.2.0 Release Notes (since Beta 1) +## 4.2.0 Release Notes (since Beta 1) ### Enhancements * The Streaming Media Manager will now provide a CVPixelBufferPool with default settings so that you don't have to create one yourself. * Modified Streaming Media Manager `videoSessionAuthenticated` to be `videoSessionEncrypted` and modify the value based on the Start Session ACK encryption flag. @@ -631,7 +662,7 @@ No changes since RC3 ### Other * Documentation updates. -# 4.2.0 Beta 1 Release Notes +## 4.2.0 Beta 1 Release Notes ### Enhancements * Add an AppInfo struct to RegisterAppInterface automatically with some application details, so that the head unit may automatically launch some apps via IAP if supported (#398, #431). * Add a touch manager to the streaming media manager. The touch manager will watch for touch events and generate gesture recognizer-like callbacks (#402, #423). @@ -642,18 +673,18 @@ No changes since RC3 * Store sessionIds and service metadata together in the protocol code (#350). * Fixed a streaming media manager enum casing issue by deprecating the incorrect cased enum and adding a correctly cased one (#383, #411). -# 4.1.5 Release Notes +## 4.1.5 Release Notes ### Bug Fixes * Since Apple is disallowing virtually all HTTP requests in Jan. 2017, SDLURLSession will now take all HTTP requests and attempt them over HTTPS. Some cars off the line still have HTTP URLs hardcoded into them, therefore this is a necessary precaution. -# 4.1.4 Release Notes +## 4.1.4 Release Notes ### Bug Fixes * Fixed exception causing app to crash when SDL Core disconnects in TCP debug mode. Warning: The app may enter an undefined connection state as there is currently no retry strategy in TCP debug mode. ### Other * Update test frameworks -# 4.1.3 Release Notes +## 4.1.3 Release Notes ### Enhancements * Fix unit tests attempting to be built against Xcode 7.1 instead of Xcode 7.3. (#413) * Auto-upload Carthage archives on tag Travis builds. (#413) @@ -666,14 +697,14 @@ No changes since RC3 ### Other * Shift project and code files into the root directory, removing the SmartDeviceLink-iOS directory. (#404) -# 4.1.2 Release Notes +## 4.1.2 Release Notes ### Bugfixes * Enable additional static analyzer rules for Xcode 7.3, fix an associated nullability issue. ### Other * New .gitignore rule to help carthage submodule users. -# 4.1.1 Release Notes +## 4.1.1 Release Notes ### Bug Fixes * Fixed passing in wrong type, causing SDL Protocol v1 to fail. * Fix `SDLRPCStruct` subclasses generating an incorrect description when logged. @@ -682,7 +713,7 @@ No changes since RC3 * Some repository files are now linked into the Xcode project. * Updated testing dependencies for Xcode 7.3 compatibility. -# 4.1.0 Release Notes +## 4.1.0 Release Notes ### Enhancements * The `LAUNCH_APP` system request was implemented. * The proxy now tracks application state and relays that information to the Head Unit on v4 and above. @@ -701,7 +732,7 @@ No changes since RC3 ### Deprecations * Methods relating to sending heartbeat have been deprecated. This should not affect your app in any way. These lower-level classes will be removed in future versions. -# 4.0.3 Release Notes +## 4.0.3 Release Notes ### Enhancements * Implement HTTP System Requests for policy updates @@ -714,7 +745,7 @@ No changes since RC3 * Moved templates and CONTRIBUTING to .github * Enable code coverage by default when testing -# 4.0.2 Release Notes +## 4.0.2 Release Notes ### Bug Fixes * Debug logging is a bit better designed and is faster, and file logging happens on a separate queue. @@ -731,12 +762,12 @@ No changes since RC3 * Travis CI builds are fixed * Pull-Request and Issue templates have been added -# 4.0.1 Release notes +## 4.0.1 Release notes ### Bug Fixes * Fixed some implicit `self` captures with blocks. -# 4.0.0 Release Notes (pre-release) +## 4.0.0 Release Notes (pre-release) ## Final Release (2015-10-5) * Example app plist updated with required [ATS](https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/) keys. diff --git a/Example Apps/Example ObjC/ButtonManager.m b/Example Apps/Example ObjC/ButtonManager.m index 786d5027b..4befdf726 100644 --- a/Example Apps/Example ObjC/ButtonManager.m +++ b/Example Apps/Example ObjC/ButtonManager.m @@ -135,6 +135,9 @@ - (SDLSoftButtonObject *)sdlex_softButtonImagesVisibleWithManager:(SDLManager *) SDLSoftButtonObject *object = [weakself.sdlManager.screenManager softButtonObjectNamed:ImagesVisibleSoftButton]; [object transitionToNextState]; + SDLSoftButtonObject *textButton = [weakself.sdlManager.screenManager softButtonObjectNamed:TextVisibleSoftButton]; + [textButton transitionToNextState]; + SDLLogD(@"Image visibility soft button press fired %d", weakself.imagesEnabled); }]; diff --git a/Example Apps/Example ObjC/ProxyManager.m b/Example Apps/Example ObjC/ProxyManager.m index 525f31766..453e843eb 100644 --- a/Example Apps/Example ObjC/ProxyManager.m +++ b/Example Apps/Example ObjC/ProxyManager.m @@ -54,7 +54,7 @@ - (instancetype)init { return self; } -- (void)startManager { +- (void)sdlex_startManager { __weak typeof (self) weakSelf = self; [self.sdlManager startWithReadyHandler:^(BOOL success, NSError * _Nullable error) { if (!success) { @@ -76,7 +76,10 @@ - (void)startManager { } - (void)stopConnection { - [self.sdlManager stop]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self.sdlManager stop]; + }); + [self sdlex_updateProxyState:ProxyStateStopped]; } @@ -106,10 +109,14 @@ + (SDLLifecycleConfiguration *)sdlex_tcpLifecycleConfiguration { } - (void)sdlex_setupConfigurationWithLifecycleConfiguration:(SDLLifecycleConfiguration *)lifecycleConfiguration { + if (self.sdlManager != nil) { + // Manager already created, just start it again. + [self sdlex_startManager]; + return; + } SDLConfiguration *config = [SDLConfiguration configurationWithLifecycle:lifecycleConfiguration lockScreen:[SDLLockScreenConfiguration enabledConfigurationWithAppIcon:[UIImage imageNamed:ExampleAppLogoName] backgroundColor:nil] logging:[self.class sdlex_logConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration]]; self.sdlManager = [[SDLManager alloc] initWithConfiguration:config delegate:self]; - - [self startManager]; + [self sdlex_startManager]; } + (SDLLifecycleConfiguration *)sdlex_setLifecycleConfigurationPropertiesOnConfiguration:(SDLLifecycleConfiguration *)config { diff --git a/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist b/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist index d5b5c33a3..db70c2cae 100644 --- a/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist +++ b/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 6.2.3 + 6.3.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example Apps/Example ObjC/VehicleDataManager.m b/Example Apps/Example ObjC/VehicleDataManager.m index 999a22616..cc2ee46fa 100644 --- a/Example Apps/Example ObjC/VehicleDataManager.m +++ b/Example Apps/Example ObjC/VehicleDataManager.m @@ -37,7 +37,7 @@ - (instancetype)initWithManager:(SDLManager *)manager refreshUIHandler:(RefreshU _refreshUIHandler = refreshUIHandler; _vehicleOdometerData = @""; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(vehicleDataNotification:) name:SDLDidReceiveVehicleDataNotification object:nil]; + [_sdlManager subscribeToRPC:SDLDidReceiveVehicleDataNotification withObserver:self selector:@selector(vehicleDataNotification:)]; [self sdlex_resetOdometer]; return self; @@ -112,7 +112,7 @@ - (void)vehicleDataNotification:(SDLRPCNotificationNotification *)notification { } SDLOnVehicleData *onVehicleData = (SDLOnVehicleData *)notification.notification; - self.vehicleOdometerData = [NSString stringWithFormat:@"%@: %@ kph", VehicleDataOdometerName, onVehicleData.odometer]; + self.vehicleOdometerData = [NSString stringWithFormat:@"%@: %@ km", VehicleDataOdometerName, onVehicleData.odometer]; if (!self.refreshUIHandler) { return; } self.refreshUIHandler(); diff --git a/Example Apps/Example Swift/ProxyManager.swift b/Example Apps/Example Swift/ProxyManager.swift index fbedae0d5..40a703e4a 100644 --- a/Example Apps/Example Swift/ProxyManager.swift +++ b/Example Apps/Example Swift/ProxyManager.swift @@ -43,6 +43,12 @@ extension ProxyManager { /// /// - Parameter connectionType: The type of transport layer to use. func start(with proxyTransportType: ProxyTransportType) { + guard sdlManager == nil else { + // Manager already created, just start it again. + startManager() + return + } + delegate?.didChangeProxyState(ProxyState.searching) sdlManager = SDLManager(configuration: proxyTransportType == .iap ? ProxyManager.connectIAP() : ProxyManager.connectTCP(), delegate: self) startManager() @@ -55,7 +61,10 @@ extension ProxyManager { return } - sdlManager.stop() + DispatchQueue.main.async { [weak self] in + self?.sdlManager.stop() + } + delegate?.didChangeProxyState(.stopped) } } diff --git a/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist b/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist index 31e903f97..d3ab6c871 100644 --- a/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist +++ b/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 6.2.3 + 6.3.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example Apps/Example Swift/VehicleDataManager.swift b/Example Apps/Example Swift/VehicleDataManager.swift index c5e2b187e..1d78edd42 100644 --- a/Example Apps/Example Swift/VehicleDataManager.swift +++ b/Example Apps/Example Swift/VehicleDataManager.swift @@ -23,7 +23,7 @@ class VehicleDataManager: NSObject { super.init() resetOdometer() - NotificationCenter.default.addObserver(self, selector: #selector(vehicleDataNotification(_:)), name: .SDLDidReceiveVehicleData, object: nil) + self.sdlManager.subscribe(to: .SDLDidReceiveVehicleData, observer: self, selector: #selector(vehicleDataNotification(_:))) } } diff --git a/Package.swift b/Package.swift new file mode 100644 index 000000000..5d8f0c602 --- /dev/null +++ b/Package.swift @@ -0,0 +1,23 @@ +// swift-tools-version:5.0 +import PackageDescription + +let package = Package( + name: "SmartDeviceLink", + products: [ + .library(name: "SmartDeviceLink", targets: ["SmartDeviceLink"]), + .library(name: "SmartDeviceLinkSwift", targets: ["SmartDeviceLinkSwift"]) + ], + targets: [ + .target( + name: "SmartDeviceLink", + path: "SmartDeviceLink" + ), + .target( + name: "SmartDeviceLinkSwift", + dependencies: [ + "SmartDeviceLink" + ], + path: "SmartDeviceLinkSwift" + ), + ] +) diff --git a/README.md b/README.md index 1a6c9ea38..3193abbc3 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ [![CocoaPods Downloads](https://img.shields.io/cocoapods/dt/SmartDeviceLink-iOS.svg?maxAge=172800)](https://cocoapods.org/pods/SmartDeviceLink-iOS) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Slack Status](http://sdlslack.herokuapp.com/badge.svg)](http://slack.smartdevicelink.com) +[![Accio supported](https://img.shields.io/badge/Accio-supported-0A7CF5.svg?style=flat)](https://github.com/JamitLabs/Accio) # SmartDeviceLink (SDL) @@ -35,6 +36,18 @@ See the [changelog](https://github.com/smartdevicelink/sdl_ios/blob/master/CHANG ### Installing +#### Accio + +You can install this library using [Accio/SwiftPM](https://github.com/JamitLabs/Accio) documentation page. Please follow the steps to install and initialization Accio into a current or new application. + +In your Package.swift file , you want to add `.package(url: "https://github.com/smartdevicelink/sdl_ios.git", .from: "6.2.3"),` to the dependencies array. Then add `SmartDeviceLink` to the targets dependencies array. + +Please see [Mainifest format](https://github.com/apple/swift-package-manager/blob/master/Documentation/PackageDescriptionV4.md) to specify dependencies to a specific branch / version of SDL. + +###### Swift + +If you are building a Swift app, then add this instead `SmartDeviceLinkSwift` to the targets dependencies array. + ##### Cocoapods You can install this library using [Cocoapods](https://cocoapods.org/pods/SmartDeviceLink-iOS). You can get started with Cocoapods by [following their install guide](https://guides.cocoapods.org/using/getting-started.html#getting-started), and learn how to use Cocoapods to install dependencies [by following this guide](https://guides.cocoapods.org/using/using-cocoapods.html). diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec index 96c419654..0b91c7649 100644 --- a/SmartDeviceLink-iOS.podspec +++ b/SmartDeviceLink-iOS.podspec @@ -1,13 +1,13 @@ Pod::Spec.new do |s| s.name = "SmartDeviceLink-iOS" -s.version = "6.2.3" +s.version = "6.3.0" s.summary = "Connect your app with cars!" s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS" s.license = { :type => "New BSD", :file => "LICENSE" } s.author = { "SmartDeviceLink Team" => "developer@smartdevicelink.com" } s.platform = :ios, "8.0" -s.dependency 'BiSON', '~> 1.1.1' +s.dependency 'BiSON', '~> 1.2.0' s.source = { :git => "https://github.com/smartdevicelink/sdl_ios.git", :tag => s.version.to_s } s.requires_arc = true s.resource_bundles = { 'SmartDeviceLink' => ['SmartDeviceLink/Assets/**/*'] } @@ -42,6 +42,7 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLArtwork.h', 'SmartDeviceLink/SDLAudioControlData.h', 'SmartDeviceLink/SDLAudioControlCapabilities.h', +'SmartDeviceLink/SDLAudioFile.h', 'SmartDeviceLink/SDLAudioPassThruCapabilities.h', 'SmartDeviceLink/SDLAudioStreamingState.h', 'SmartDeviceLink/SDLAudioStreamingIndicator.h', @@ -204,6 +205,7 @@ ss.public_header_files = [ 'SmartDeviceLink/SDLMediaServiceManifest.h', 'SmartDeviceLink/SDLMediaType.h', 'SmartDeviceLink/SDLMenuCell.h', +'SmartDeviceLink/SDLMenuManagerConstants.h', 'SmartDeviceLink/SDLMenuParams.h', 'SmartDeviceLink/SDLMetadataTags.h', 'SmartDeviceLink/SDLMetadataType.h', diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj index 183bfcf37..6c7379d26 100644 --- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj +++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj @@ -1004,6 +1004,9 @@ 5D6F7A351BC5B9B60070BF37 /* SDLLockScreenViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D6F7A331BC5B9B60070BF37 /* SDLLockScreenViewController.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5D6F7A361BC5B9B60070BF37 /* SDLLockScreenViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6F7A341BC5B9B60070BF37 /* SDLLockScreenViewController.m */; }; 5D6F7A3E1BC811FC0070BF37 /* SDLAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5D6F7A3D1BC811FC0070BF37 /* SDLAssets.xcassets */; }; + 5D75960D22972F830013207C /* TestSystemCapabilityObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D75960C22972F830013207C /* TestSystemCapabilityObserver.m */; }; + 5D75961122972FCA0013207C /* SDLSystemCapabilityObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D75960F22972FCA0013207C /* SDLSystemCapabilityObserver.h */; }; + 5D75961222972FCA0013207C /* SDLSystemCapabilityObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D75961022972FCA0013207C /* SDLSystemCapabilityObserver.m */; }; 5D76E31C1D3805FF00647CFA /* SDLLockScreenManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D76E31B1D3805FF00647CFA /* SDLLockScreenManagerSpec.m */; }; 5D76E3211D39742300647CFA /* SDLViewControllerPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D76E3201D39742300647CFA /* SDLViewControllerPresentable.h */; }; 5D76E3241D39767000647CFA /* SDLLockScreenPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D76E3221D39767000647CFA /* SDLLockScreenPresenter.h */; }; @@ -1073,7 +1076,7 @@ 5D9FC29E1FD8813900ACA5C2 /* SDLAudioStreamManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FC29C1FD8813900ACA5C2 /* SDLAudioStreamManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5D9FC29F1FD8813900ACA5C2 /* SDLAudioStreamManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FC29D1FD8813900ACA5C2 /* SDLAudioStreamManager.m */; }; 5D9FC2A21FD8814A00ACA5C2 /* SDLAudioFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FC2A01FD8814A00ACA5C2 /* SDLAudioFile.m */; }; - 5D9FC2A31FD8814A00ACA5C2 /* SDLAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FC2A11FD8814A00ACA5C2 /* SDLAudioFile.h */; }; + 5D9FC2A31FD8814A00ACA5C2 /* SDLAudioFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FC2A11FD8814A00ACA5C2 /* SDLAudioFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5D9FC2A61FD8815800ACA5C2 /* SDLPCMAudioConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FC2A41FD8815800ACA5C2 /* SDLPCMAudioConverter.h */; }; 5D9FC2A71FD8815800ACA5C2 /* SDLPCMAudioConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FC2A51FD8815800ACA5C2 /* SDLPCMAudioConverter.m */; }; 5D9FDA8F1F2A7D3400A495C8 /* bson_array.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FDA891F2A7D3400A495C8 /* bson_array.c */; }; @@ -1088,6 +1091,12 @@ 5DA026901AD44EE700019F86 /* SDLDialNumberResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA0268F1AD44EE700019F86 /* SDLDialNumberResponseSpec.m */; }; 5DA102A41D4122C700C15826 /* NSMutableDictionary+SafeRemove.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA102A21D4122C700C15826 /* NSMutableDictionary+SafeRemove.h */; }; 5DA102A51D4122C700C15826 /* NSMutableDictionary+SafeRemove.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA102A31D4122C700C15826 /* NSMutableDictionary+SafeRemove.m */; }; + 5DA150C72271FDC20032928D /* SDLSoftButtonTransitionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA150C52271FDC20032928D /* SDLSoftButtonTransitionOperation.h */; }; + 5DA150C82271FDC20032928D /* SDLSoftButtonTransitionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA150C62271FDC20032928D /* SDLSoftButtonTransitionOperation.m */; }; + 5DA150CD2271FE180032928D /* SDLSoftButtonReplaceOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA150CB2271FE180032928D /* SDLSoftButtonReplaceOperation.h */; }; + 5DA150CE2271FE180032928D /* SDLSoftButtonReplaceOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA150CC2271FE180032928D /* SDLSoftButtonReplaceOperation.m */; }; + 5DA150D1227367580032928D /* SDLSoftButtonTransitionOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA150D0227367580032928D /* SDLSoftButtonTransitionOperationSpec.m */; }; + 5DA150D32273676A0032928D /* SDLSoftButtonReplaceOperationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA150D22273676A0032928D /* SDLSoftButtonReplaceOperationSpec.m */; }; 5DA22CB71D075CF200245F5F /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DA22CB31D075CF200245F5F /* Nimble.framework */; }; 5DA22CB81D075CF200245F5F /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DA22CB41D075CF200245F5F /* OCMock.framework */; }; 5DA22CBA1D075CF200245F5F /* Quick.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DA22CB61D075CF200245F5F /* Quick.framework */; }; @@ -1220,8 +1229,17 @@ 5DF40B26208FA7DE00DD6FDA /* SDLMenuManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DF40B25208FA7DE00DD6FDA /* SDLMenuManagerSpec.m */; }; 5DF40B28208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DF40B27208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m */; }; 5DFFB9151BD7C89700DB3F04 /* SDLConnectionManagerType.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DFFB9141BD7C89700DB3F04 /* SDLConnectionManagerType.h */; }; + 752ECDB6228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = 752ECDB4228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h */; }; + 752ECDB7228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m in Sources */ = {isa = PBXBuildFile; fileRef = 752ECDB5228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m */; }; + 752ECDB9228C42E100D945F4 /* SDLMenuRunScoreSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 752ECDB8228C42E100D945F4 /* SDLMenuRunScoreSpec.m */; }; + 752ECDBB228C532600D945F4 /* SDLMenuUpdateAlgorithmSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 752ECDBA228C532600D945F4 /* SDLMenuUpdateAlgorithmSpec.m */; }; + 755F176222A00B7C0041B9CB /* SDLMenuManagerConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 755F176122A00B7C0041B9CB /* SDLMenuManagerConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 756C62762289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h in Headers */ = {isa = PBXBuildFile; fileRef = 756C62742289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h */; }; + 756C62772289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m in Sources */ = {isa = PBXBuildFile; fileRef = 756C62752289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m */; }; 880245A420F79C3400ED195B /* SDLFileManagerConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 880245A220F79C3400ED195B /* SDLFileManagerConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; 880245A520F79C3400ED195B /* SDLFileManagerConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 880245A320F79C3400ED195B /* SDLFileManagerConfiguration.m */; }; + 8803DCEF22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8803DCED22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h */; }; + 8803DCF022C2B84B00FBB7CE /* SDLBackgroundTaskManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8803DCEE22C2B84B00FBB7CE /* SDLBackgroundTaskManager.m */; }; 880D267A220DDD1000B3F496 /* SDLWeatherServiceDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 880D2679220DDD1000B3F496 /* SDLWeatherServiceDataSpec.m */; }; 880D267D220DE5DF00B3F496 /* SDLWeatherServiceManifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 880D267B220DE5DF00B3F496 /* SDLWeatherServiceManifest.h */; settings = {ATTRIBUTES = (Public, ); }; }; 880D267E220DE5DF00B3F496 /* SDLWeatherServiceManifest.m in Sources */ = {isa = PBXBuildFile; fileRef = 880D267C220DE5DF00B3F496 /* SDLWeatherServiceManifest.m */; }; @@ -1229,12 +1247,15 @@ 880E35B42088F75A00181259 /* SDLSystemCapabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 880E35B22088F75A00181259 /* SDLSystemCapabilityManager.m */; }; 880E35B52088F75A00181259 /* SDLSystemCapabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 880E35B32088F75A00181259 /* SDLSystemCapabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; 880E35B82088F78E00181259 /* SDLSystemCapabilityManagerSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 880E35B72088F78E00181259 /* SDLSystemCapabilityManagerSpec.m */; }; + 880FE6272267AE5300723732 /* SDLIAPConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 880FE6252267AE5300723732 /* SDLIAPConstants.h */; }; + 880FE6282267AE5300723732 /* SDLIAPConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 880FE6262267AE5300723732 /* SDLIAPConstants.m */; }; 8815D0EF22330753000F24E6 /* SDLRPCRequestNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D6F17E22319FE000D4BFB3 /* SDLRPCRequestNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8815D0F022330765000F24E6 /* SDLRPCRequestNotificationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C23E8522297BD500EA171F /* SDLRPCRequestNotificationSpec.m */; }; 8815D0F122330781000F24E6 /* SDLRPCRequestNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D6F17D22319FE000D4BFB3 /* SDLRPCRequestNotification.m */; }; 8816772922208B82001FACFF /* SDLNavigationInstructionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8816772822208B82001FACFF /* SDLNavigationInstructionSpec.m */; }; 8816772C222097C3001FACFF /* SDLNavigationServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8816772A222097C3001FACFF /* SDLNavigationServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8816772D222097C3001FACFF /* SDLNavigationServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8816772B222097C3001FACFF /* SDLNavigationServiceData.m */; }; + 8817C2802289F4B900DB2DEC /* SDLIAPDataSessionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8817C27F2289F41D00DB2DEC /* SDLIAPDataSessionDelegate.h */; }; 8818ADD82100FC18007D6F19 /* SDLTurnSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8818ADD62100FC18007D6F19 /* SDLTurnSignal.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8818ADD92100FC18007D6F19 /* SDLTurnSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = 8818ADD72100FC18007D6F19 /* SDLTurnSignal.m */; }; 8818ADDD2100FE0C007D6F19 /* SDLTurnSignalSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 8818ADDC2100FE0C007D6F19 /* SDLTurnSignalSpec.m */; }; @@ -1355,14 +1376,21 @@ 88B58DC922204C9E0011B063 /* SDLNavigationActionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B58DC822204C9E0011B063 /* SDLNavigationActionSpec.m */; }; 88B848C31F45E1A600DED768 /* TestResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B848C21F45E1A600DED768 /* TestResponse.m */; }; 88B848C91F462E3600DED768 /* TestFileProgressResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 88B848C81F462E3600DED768 /* TestFileProgressResponse.m */; }; + 88BCEA922266250B00BB7E70 /* SDLIAPControlSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 88BCEA902266250B00BB7E70 /* SDLIAPControlSession.h */; }; + 88BCEA932266250B00BB7E70 /* SDLIAPControlSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 88BCEA912266250B00BB7E70 /* SDLIAPControlSession.m */; }; + 88BCEA952266592D00BB7E70 /* SDLIAPControlSessionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88BCEA942266592D00BB7E70 /* SDLIAPControlSessionSpec.m */; }; 88C23E8822297C6000EA171F /* SDLRPCResponseNotificationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C23E8722297C6000EA171F /* SDLRPCResponseNotificationSpec.m */; }; 88C23E8A22297DE400EA171F /* SDLRPCNotificationNotificationSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C23E8922297DE400EA171F /* SDLRPCNotificationNotificationSpec.m */; }; 88C282CA220CD17200D02F90 /* SDLGetFileResponseSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C282C9220CD17200D02F90 /* SDLGetFileResponseSpec.m */; }; 88C37F632204EBF000901DC6 /* SDLAppServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88C37F612204EBF000901DC6 /* SDLAppServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; }; 88C37F642204EBF000901DC6 /* SDLAppServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 88C37F622204EBF000901DC6 /* SDLAppServiceData.m */; }; 88D2AAE41F682BB20078D5B2 /* SDLLogConstantsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D2AAE31F682BB20078D5B2 /* SDLLogConstantsSpec.m */; }; + 88D3EBC92267949D00493C38 /* SDLIAPDataSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D3EBC72267949D00493C38 /* SDLIAPDataSession.h */; }; + 88D3EBCA2267949D00493C38 /* SDLIAPDataSession.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D3EBC82267949D00493C38 /* SDLIAPDataSession.m */; }; 88D5EB37220CD95000EC3782 /* SDLWeatherServiceData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D5EB35220CD95000EC3782 /* SDLWeatherServiceData.h */; settings = {ATTRIBUTES = (Public, ); }; }; 88D5EB38220CD95000EC3782 /* SDLWeatherServiceData.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D5EB36220CD95000EC3782 /* SDLWeatherServiceData.m */; }; + 88D99DB52289C82F0039E047 /* SDLIAPControlSessionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D99DB42289BFBE0039E047 /* SDLIAPControlSessionDelegate.h */; }; + 88DDD0F9229ECA57002F9623 /* SDLIAPConstantsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DDD0F8229ECA57002F9623 /* SDLIAPConstantsSpec.m */; }; 88DF998D22035CC600477AC1 /* EAAccessory+OCMock.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DF998C22035CC600477AC1 /* EAAccessory+OCMock.m */; }; 88DF998F22035D1700477AC1 /* SDLIAPSessionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DF998E22035D1700477AC1 /* SDLIAPSessionSpec.m */; }; 88DF999122035D5A00477AC1 /* SDLIAPTransportSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88DF999022035D5A00477AC1 /* SDLIAPTransportSpec.m */; }; @@ -1381,6 +1409,7 @@ 88EED83B1F33BECB00E6C42E /* SDLHapticRectSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EED83A1F33BECB00E6C42E /* SDLHapticRectSpec.m */; }; 88EED83E1F33C5A400E6C42E /* SDLSendHapticData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EED83C1F33C5A400E6C42E /* SDLSendHapticData.h */; settings = {ATTRIBUTES = (Public, ); }; }; 88EED83F1F33C5A400E6C42E /* SDLSendHapticData.m in Sources */ = {isa = PBXBuildFile; fileRef = 88EED83D1F33C5A400E6C42E /* SDLSendHapticData.m */; }; + 88F37A4D226F84BE00DF119B /* SDLIAPDataSessionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88F37A4C226F84BE00DF119B /* SDLIAPDataSessionSpec.m */; }; 88F50D5F220B720E00F34648 /* SDLPerformAppServiceInteractionSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88F50D5E220B720E00F34648 /* SDLPerformAppServiceInteractionSpec.m */; }; 88F65133220C6DC300CAF321 /* SDLWeatherAlertSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 88F65132220C6DC300CAF321 /* SDLWeatherAlertSpec.m */; }; 88F65136220C74FD00CAF321 /* SDLWeatherData.h in Headers */ = {isa = PBXBuildFile; fileRef = 88F65134220C74FD00CAF321 /* SDLWeatherData.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -1477,9 +1506,6 @@ E4139D1E1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.m in Sources */ = {isa = PBXBuildFile; fileRef = E4139D1C1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.m */; }; E9C32B911AB20BA200F283AF /* SDLIAPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C32B891AB20BA200F283AF /* SDLIAPSession.h */; }; E9C32B921AB20BA200F283AF /* SDLIAPSession.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C32B8A1AB20BA200F283AF /* SDLIAPSession.m */; }; - E9C32B931AB20BA200F283AF /* SDLIAPSessionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C32B8B1AB20BA200F283AF /* SDLIAPSessionDelegate.h */; }; - E9C32B941AB20BA200F283AF /* SDLStreamDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C32B8C1AB20BA200F283AF /* SDLStreamDelegate.h */; }; - E9C32B951AB20BA200F283AF /* SDLStreamDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C32B8D1AB20BA200F283AF /* SDLStreamDelegate.m */; }; E9C32B961AB20BA200F283AF /* SDLTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C32B8E1AB20BA200F283AF /* SDLTimer.h */; }; E9C32B971AB20BA200F283AF /* SDLTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C32B8F1AB20BA200F283AF /* SDLTimer.m */; }; E9C32B9C1AB20C5900F283AF /* EAAccessory+SDLProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = E9C32B981AB20C5900F283AF /* EAAccessory+SDLProtocols.h */; }; @@ -2632,6 +2658,10 @@ 5D6F7A331BC5B9B60070BF37 /* SDLLockScreenViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLockScreenViewController.h; sourceTree = ""; }; 5D6F7A341BC5B9B60070BF37 /* SDLLockScreenViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLockScreenViewController.m; sourceTree = ""; }; 5D6F7A3D1BC811FC0070BF37 /* SDLAssets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = SDLAssets.xcassets; path = Assets/SDLAssets.xcassets; sourceTree = ""; }; + 5D75960B22972F830013207C /* TestSystemCapabilityObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = TestSystemCapabilityObserver.h; path = DevAPISpecs/TestSystemCapabilityObserver.h; sourceTree = ""; }; + 5D75960C22972F830013207C /* TestSystemCapabilityObserver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = TestSystemCapabilityObserver.m; path = DevAPISpecs/TestSystemCapabilityObserver.m; sourceTree = ""; }; + 5D75960F22972FCA0013207C /* SDLSystemCapabilityObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapabilityObserver.h; sourceTree = ""; }; + 5D75961022972FCA0013207C /* SDLSystemCapabilityObserver.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityObserver.m; sourceTree = ""; }; 5D76E31B1D3805FF00647CFA /* SDLLockScreenManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLLockScreenManagerSpec.m; path = DevAPISpecs/SDLLockScreenManagerSpec.m; sourceTree = ""; }; 5D76E3201D39742300647CFA /* SDLViewControllerPresentable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLViewControllerPresentable.h; sourceTree = ""; }; 5D76E3221D39767000647CFA /* SDLLockScreenPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLLockScreenPresenter.h; sourceTree = ""; }; @@ -2717,6 +2747,12 @@ 5DA0268F1AD44EE700019F86 /* SDLDialNumberResponseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLDialNumberResponseSpec.m; sourceTree = ""; }; 5DA102A21D4122C700C15826 /* NSMutableDictionary+SafeRemove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableDictionary+SafeRemove.h"; sourceTree = ""; }; 5DA102A31D4122C700C15826 /* NSMutableDictionary+SafeRemove.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableDictionary+SafeRemove.m"; sourceTree = ""; }; + 5DA150C52271FDC20032928D /* SDLSoftButtonTransitionOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSoftButtonTransitionOperation.h; sourceTree = ""; }; + 5DA150C62271FDC20032928D /* SDLSoftButtonTransitionOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonTransitionOperation.m; sourceTree = ""; }; + 5DA150CB2271FE180032928D /* SDLSoftButtonReplaceOperation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLSoftButtonReplaceOperation.h; sourceTree = ""; }; + 5DA150CC2271FE180032928D /* SDLSoftButtonReplaceOperation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonReplaceOperation.m; sourceTree = ""; }; + 5DA150D0227367580032928D /* SDLSoftButtonTransitionOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLSoftButtonTransitionOperationSpec.m; path = DevAPISpecs/SDLSoftButtonTransitionOperationSpec.m; sourceTree = ""; }; + 5DA150D22273676A0032928D /* SDLSoftButtonReplaceOperationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLSoftButtonReplaceOperationSpec.m; sourceTree = ""; }; 5DA22CB31D075CF200245F5F /* Nimble.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Nimble.framework; path = sdl_ios/Carthage/Build/iOS/Nimble.framework; sourceTree = ""; }; 5DA22CB41D075CF200245F5F /* OCMock.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OCMock.framework; path = sdl_ios/Carthage/Build/iOS/OCMock.framework; sourceTree = ""; }; 5DA22CB61D075CF200245F5F /* Quick.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quick.framework; path = sdl_ios/Carthage/Build/iOS/Quick.framework; sourceTree = ""; }; @@ -2849,8 +2885,17 @@ 5DF40B25208FA7DE00DD6FDA /* SDLMenuManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLMenuManagerSpec.m; path = DevAPISpecs/SDLMenuManagerSpec.m; sourceTree = ""; }; 5DF40B27208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SDLVoiceCommandManagerSpec.m; path = DevAPISpecs/SDLVoiceCommandManagerSpec.m; sourceTree = ""; }; 5DFFB9141BD7C89700DB3F04 /* SDLConnectionManagerType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLConnectionManagerType.h; sourceTree = ""; }; + 752ECDB4228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDynamicMenuUpdateAlgorithm.h; sourceTree = ""; }; + 752ECDB5228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDynamicMenuUpdateAlgorithm.m; sourceTree = ""; }; + 752ECDB8228C42E100D945F4 /* SDLMenuRunScoreSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMenuRunScoreSpec.m; sourceTree = ""; }; + 752ECDBA228C532600D945F4 /* SDLMenuUpdateAlgorithmSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLMenuUpdateAlgorithmSpec.m; sourceTree = ""; }; + 755F176122A00B7C0041B9CB /* SDLMenuManagerConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLMenuManagerConstants.h; sourceTree = ""; }; + 756C62742289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLDynamicMenuUpdateRunScore.h; sourceTree = ""; }; + 756C62752289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLDynamicMenuUpdateRunScore.m; sourceTree = ""; }; 880245A220F79C3400ED195B /* SDLFileManagerConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLFileManagerConfiguration.h; sourceTree = ""; }; 880245A320F79C3400ED195B /* SDLFileManagerConfiguration.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLFileManagerConfiguration.m; sourceTree = ""; }; + 8803DCED22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLBackgroundTaskManager.h; sourceTree = ""; }; + 8803DCEE22C2B84B00FBB7CE /* SDLBackgroundTaskManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLBackgroundTaskManager.m; sourceTree = ""; }; 880D2679220DDD1000B3F496 /* SDLWeatherServiceDataSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherServiceDataSpec.m; sourceTree = ""; }; 880D267B220DE5DF00B3F496 /* SDLWeatherServiceManifest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWeatherServiceManifest.h; sourceTree = ""; }; 880D267C220DE5DF00B3F496 /* SDLWeatherServiceManifest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherServiceManifest.m; sourceTree = ""; }; @@ -2858,9 +2903,12 @@ 880E35B22088F75A00181259 /* SDLSystemCapabilityManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityManager.m; sourceTree = ""; }; 880E35B32088F75A00181259 /* SDLSystemCapabilityManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSystemCapabilityManager.h; sourceTree = ""; }; 880E35B72088F78E00181259 /* SDLSystemCapabilityManagerSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSystemCapabilityManagerSpec.m; sourceTree = ""; }; + 880FE6252267AE5300723732 /* SDLIAPConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPConstants.h; sourceTree = ""; }; + 880FE6262267AE5300723732 /* SDLIAPConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPConstants.m; sourceTree = ""; }; 8816772822208B82001FACFF /* SDLNavigationInstructionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationInstructionSpec.m; sourceTree = ""; }; 8816772A222097C3001FACFF /* SDLNavigationServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLNavigationServiceData.h; sourceTree = ""; }; 8816772B222097C3001FACFF /* SDLNavigationServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLNavigationServiceData.m; sourceTree = ""; }; + 8817C27F2289F41D00DB2DEC /* SDLIAPDataSessionDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPDataSessionDelegate.h; sourceTree = ""; }; 8818ADD62100FC18007D6F19 /* SDLTurnSignal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLTurnSignal.h; sourceTree = ""; }; 8818ADD72100FC18007D6F19 /* SDLTurnSignal.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTurnSignal.m; sourceTree = ""; }; 8818ADDC2100FE0C007D6F19 /* SDLTurnSignalSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTurnSignalSpec.m; sourceTree = ""; }; @@ -2976,6 +3024,9 @@ 88B848C21F45E1A600DED768 /* TestResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestResponse.m; sourceTree = ""; }; 88B848C71F462E3600DED768 /* TestFileProgressResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFileProgressResponse.h; sourceTree = ""; }; 88B848C81F462E3600DED768 /* TestFileProgressResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestFileProgressResponse.m; sourceTree = ""; }; + 88BCEA902266250B00BB7E70 /* SDLIAPControlSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPControlSession.h; sourceTree = ""; }; + 88BCEA912266250B00BB7E70 /* SDLIAPControlSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPControlSession.m; sourceTree = ""; }; + 88BCEA942266592D00BB7E70 /* SDLIAPControlSessionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPControlSessionSpec.m; sourceTree = ""; }; 88C23E8522297BD500EA171F /* SDLRPCRequestNotificationSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLRPCRequestNotificationSpec.m; sourceTree = ""; }; 88C23E8722297C6000EA171F /* SDLRPCResponseNotificationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCResponseNotificationSpec.m; sourceTree = ""; }; 88C23E8922297DE400EA171F /* SDLRPCNotificationNotificationSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCNotificationNotificationSpec.m; sourceTree = ""; }; @@ -2983,10 +3034,14 @@ 88C37F612204EBF000901DC6 /* SDLAppServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLAppServiceData.h; sourceTree = ""; }; 88C37F622204EBF000901DC6 /* SDLAppServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLAppServiceData.m; sourceTree = ""; }; 88D2AAE31F682BB20078D5B2 /* SDLLogConstantsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLogConstantsSpec.m; sourceTree = ""; }; + 88D3EBC72267949D00493C38 /* SDLIAPDataSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPDataSession.h; sourceTree = ""; }; + 88D3EBC82267949D00493C38 /* SDLIAPDataSession.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPDataSession.m; sourceTree = ""; }; 88D5EB35220CD95000EC3782 /* SDLWeatherServiceData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWeatherServiceData.h; sourceTree = ""; }; 88D5EB36220CD95000EC3782 /* SDLWeatherServiceData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherServiceData.m; sourceTree = ""; }; 88D6F17D22319FE000D4BFB3 /* SDLRPCRequestNotification.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLRPCRequestNotification.m; sourceTree = ""; }; 88D6F17E22319FE000D4BFB3 /* SDLRPCRequestNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLRPCRequestNotification.h; sourceTree = ""; }; + 88D99DB42289BFBE0039E047 /* SDLIAPControlSessionDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLIAPControlSessionDelegate.h; sourceTree = ""; }; + 88DDD0F8229ECA57002F9623 /* SDLIAPConstantsSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPConstantsSpec.m; sourceTree = ""; }; 88DF998C22035CC600477AC1 /* EAAccessory+OCMock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "EAAccessory+OCMock.m"; sourceTree = ""; }; 88DF998E22035D1700477AC1 /* SDLIAPSessionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPSessionSpec.m; sourceTree = ""; }; 88DF999022035D5A00477AC1 /* SDLIAPTransportSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPTransportSpec.m; sourceTree = ""; }; @@ -3005,6 +3060,7 @@ 88EED83A1F33BECB00E6C42E /* SDLHapticRectSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLHapticRectSpec.m; sourceTree = ""; }; 88EED83C1F33C5A400E6C42E /* SDLSendHapticData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLSendHapticData.h; sourceTree = ""; }; 88EED83D1F33C5A400E6C42E /* SDLSendHapticData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLSendHapticData.m; sourceTree = ""; }; + 88F37A4C226F84BE00DF119B /* SDLIAPDataSessionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLIAPDataSessionSpec.m; sourceTree = ""; }; 88F50D5E220B720E00F34648 /* SDLPerformAppServiceInteractionSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLPerformAppServiceInteractionSpec.m; sourceTree = ""; }; 88F65132220C6DC300CAF321 /* SDLWeatherAlertSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLWeatherAlertSpec.m; sourceTree = ""; }; 88F65134220C74FD00CAF321 /* SDLWeatherData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDLWeatherData.h; sourceTree = ""; }; @@ -3104,9 +3160,6 @@ E4139D1C1F6017770005B6EA /* SDLLifecycleConfigurationUpdate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLLifecycleConfigurationUpdate.m; sourceTree = ""; }; E9C32B891AB20BA200F283AF /* SDLIAPSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIAPSession.h; sourceTree = ""; }; E9C32B8A1AB20BA200F283AF /* SDLIAPSession.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLIAPSession.m; sourceTree = ""; }; - E9C32B8B1AB20BA200F283AF /* SDLIAPSessionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLIAPSessionDelegate.h; sourceTree = ""; }; - E9C32B8C1AB20BA200F283AF /* SDLStreamDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLStreamDelegate.h; sourceTree = ""; }; - E9C32B8D1AB20BA200F283AF /* SDLStreamDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLStreamDelegate.m; sourceTree = ""; }; E9C32B8E1AB20BA200F283AF /* SDLTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDLTimer.h; sourceTree = ""; }; E9C32B8F1AB20BA200F283AF /* SDLTimer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDLTimer.m; sourceTree = ""; }; E9C32B981AB20C5900F283AF /* EAAccessory+SDLProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "EAAccessory+SDLProtocols.h"; sourceTree = ""; }; @@ -3726,10 +3779,8 @@ children = ( 5D0A7380203F23F30001595D /* SDLSoftButtonManager.h */, 5D0A7381203F23F30001595D /* SDLSoftButtonManager.m */, - 5D0A7384203F24060001595D /* SDLSoftButtonState.h */, - 5D0A7385203F24060001595D /* SDLSoftButtonState.m */, - 5D0A7388203F24320001595D /* SDLSoftButtonObject.h */, - 5D0A7389203F24320001595D /* SDLSoftButtonObject.m */, + 5DA150CA2271FE030032928D /* Buttons */, + 5DA150C92271FDF90032928D /* Operations */, ); name = "Soft Button"; sourceTree = ""; @@ -3791,6 +3842,7 @@ 5D339CE5207C0651000CC364 /* Menu */ = { isa = PBXGroup; children = ( + 755F175E229F14F70041B9CB /* Dynamic Menu Update Utilities */, 5D339CEC207C08AB000CC364 /* Cells */, 5D339CF1207C0ACE000CC364 /* SDLMenuManager.h */, 5D339CF2207C0ACE000CC364 /* SDLMenuManager.m */, @@ -4743,6 +4795,8 @@ 5D5934F61A85189500687FB9 /* Utilities */ = { isa = PBXGroup; children = ( + 8803DCED22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h */, + 8803DCEE22C2B84B00FBB7CE /* SDLBackgroundTaskManager.m */, 97E26DEA1E807AD70074A3C7 /* SDLMutableDataQueue.h */, 97E26DEB1E807AD70074A3C7 /* SDLMutableDataQueue.m */, E9C32B831AB20B2900F283AF /* @categories */, @@ -5050,6 +5104,24 @@ name = "Lock Screen UI"; sourceTree = ""; }; + 5D75960A22972F620013207C /* Utilities */ = { + isa = PBXGroup; + children = ( + 5D75960B22972F830013207C /* TestSystemCapabilityObserver.h */, + 5D75960C22972F830013207C /* TestSystemCapabilityObserver.m */, + ); + name = Utilities; + sourceTree = ""; + }; + 5D75960E22972FB90013207C /* Utilities */ = { + isa = PBXGroup; + children = ( + 5D75960F22972FCA0013207C /* SDLSystemCapabilityObserver.h */, + 5D75961022972FCA0013207C /* SDLSystemCapabilityObserver.m */, + ); + name = Utilities; + sourceTree = ""; + }; 5D76E31A1D3805E600647CFA /* LockScreen */ = { isa = PBXGroup; children = ( @@ -5214,6 +5286,37 @@ name = Permissions; sourceTree = ""; }; + 5DA150C92271FDF90032928D /* Operations */ = { + isa = PBXGroup; + children = ( + 5DA150C52271FDC20032928D /* SDLSoftButtonTransitionOperation.h */, + 5DA150C62271FDC20032928D /* SDLSoftButtonTransitionOperation.m */, + 5DA150CB2271FE180032928D /* SDLSoftButtonReplaceOperation.h */, + 5DA150CC2271FE180032928D /* SDLSoftButtonReplaceOperation.m */, + ); + name = Operations; + sourceTree = ""; + }; + 5DA150CA2271FE030032928D /* Buttons */ = { + isa = PBXGroup; + children = ( + 5D0A7384203F24060001595D /* SDLSoftButtonState.h */, + 5D0A7385203F24060001595D /* SDLSoftButtonState.m */, + 5D0A7388203F24320001595D /* SDLSoftButtonObject.h */, + 5D0A7389203F24320001595D /* SDLSoftButtonObject.m */, + ); + name = Buttons; + sourceTree = ""; + }; + 5DA150CF227366900032928D /* Operations */ = { + isa = PBXGroup; + children = ( + 5DA150D0227367580032928D /* SDLSoftButtonTransitionOperationSpec.m */, + 5DA150D22273676A0032928D /* SDLSoftButtonReplaceOperationSpec.m */, + ); + name = Operations; + sourceTree = ""; + }; 5DA23FF11F2FA32A009C0313 /* Audio Service */ = { isa = PBXGroup; children = ( @@ -5342,13 +5445,14 @@ 5DAB5F582098E8BC00A020C8 /* IAP */ = { isa = PBXGroup; children = ( + 884DFBCB2289F6FF00EA8846 /* Data Session */, + 884DFBCA2289F6EA00EA8846 /* Control Session */, E9C32B891AB20BA200F283AF /* SDLIAPSession.h */, E9C32B8A1AB20BA200F283AF /* SDLIAPSession.m */, - E9C32B8B1AB20BA200F283AF /* SDLIAPSessionDelegate.h */, 5D61FADA1A84238A00846EE7 /* SDLIAPTransport.h */, 5D61FADB1A84238A00846EE7 /* SDLIAPTransport.m */, - E9C32B8C1AB20BA200F283AF /* SDLStreamDelegate.h */, - E9C32B8D1AB20BA200F283AF /* SDLStreamDelegate.m */, + 880FE6252267AE5300723732 /* SDLIAPConstants.h */, + 880FE6262267AE5300723732 /* SDLIAPConstants.m */, ); name = IAP; sourceTree = ""; @@ -5377,6 +5481,7 @@ 5DAD5F8220507DED0025624C /* Soft Button */ = { isa = PBXGroup; children = ( + 5DA150CF227366900032928D /* Operations */, 5DAD5F8820508F090025624C /* SDLSoftButtonStateSpec.m */, 5DAD5F8A20508F140025624C /* SDLSoftButtonObjectSpec.m */, 5DAD5F8C20508F220025624C /* SDLSoftButtonManagerSpec.m */, @@ -5724,10 +5829,24 @@ 5DF40B27208FDA9700DD6FDA /* SDLVoiceCommandManagerSpec.m */, 5DAB5F502098994C00A020C8 /* SDLMenuCellSpec.m */, 5DAB5F5220989A8300A020C8 /* SDLVoiceCommandSpec.m */, + 752ECDB8228C42E100D945F4 /* SDLMenuRunScoreSpec.m */, + 752ECDBA228C532600D945F4 /* SDLMenuUpdateAlgorithmSpec.m */, ); name = Menu; sourceTree = ""; }; + 755F175E229F14F70041B9CB /* Dynamic Menu Update Utilities */ = { + isa = PBXGroup; + children = ( + 756C62742289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h */, + 756C62752289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m */, + 752ECDB4228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h */, + 752ECDB5228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m */, + 755F176122A00B7C0041B9CB /* SDLMenuManagerConstants.h */, + ); + name = "Dynamic Menu Update Utilities"; + sourceTree = ""; + }; 880245A120F79BDA00ED195B /* Configuration */ = { isa = PBXGroup; children = ( @@ -5740,6 +5859,7 @@ 880E35B12088F73400181259 /* System Capabilities */ = { isa = PBXGroup; children = ( + 5D75960E22972FB90013207C /* Utilities */, 880E35B32088F75A00181259 /* SDLSystemCapabilityManager.h */, 880E35B22088F75A00181259 /* SDLSystemCapabilityManager.m */, ); @@ -5749,6 +5869,7 @@ 880E35B62088F77C00181259 /* System Capabilities */ = { isa = PBXGroup; children = ( + 5D75960A22972F620013207C /* Utilities */, 880E35B72088F78E00181259 /* SDLSystemCapabilityManagerSpec.m */, ); name = "System Capabilities"; @@ -5833,6 +5954,26 @@ name = "Shared Assets"; sourceTree = ""; }; + 884DFBCA2289F6EA00EA8846 /* Control Session */ = { + isa = PBXGroup; + children = ( + 88D99DB42289BFBE0039E047 /* SDLIAPControlSessionDelegate.h */, + 88BCEA902266250B00BB7E70 /* SDLIAPControlSession.h */, + 88BCEA912266250B00BB7E70 /* SDLIAPControlSession.m */, + ); + name = "Control Session"; + sourceTree = ""; + }; + 884DFBCB2289F6FF00EA8846 /* Data Session */ = { + isa = PBXGroup; + children = ( + 88D3EBC72267949D00493C38 /* SDLIAPDataSession.h */, + 88D3EBC82267949D00493C38 /* SDLIAPDataSession.m */, + 8817C27F2289F41D00DB2DEC /* SDLIAPDataSessionDelegate.h */, + ); + name = "Data Session"; + sourceTree = ""; + }; 88A0AA5F207CFEA60075132C /* Connection */ = { isa = PBXGroup; children = ( @@ -5898,6 +6039,9 @@ 88DF998C22035CC600477AC1 /* EAAccessory+OCMock.m */, 88DF998E22035D1700477AC1 /* SDLIAPSessionSpec.m */, 88DF999022035D5A00477AC1 /* SDLIAPTransportSpec.m */, + 88BCEA942266592D00BB7E70 /* SDLIAPControlSessionSpec.m */, + 88F37A4C226F84BE00DF119B /* SDLIAPDataSessionSpec.m */, + 88DDD0F8229ECA57002F9623 /* SDLIAPConstantsSpec.m */, ); path = iAP; sourceTree = ""; @@ -6084,7 +6228,6 @@ 5DA3F35F1BC448590026F2D0 /* SDLNotificationConstants.h in Headers */, 5DE5ABB71B0E38C90067BB02 /* SDLSystemRequest.h in Headers */, 5DA3F3701BC4489A0026F2D0 /* SDLManager.h in Headers */, - E9C32B931AB20BA200F283AF /* SDLIAPSessionDelegate.h in Headers */, 5DE5ABB81B0E38C90067BB02 /* SDLSystemRequestResponse.h in Headers */, 5D61FCA51A84238C00846EE7 /* SDLEndAudioPassThruResponse.h in Headers */, 5D3E48CB1D7722FE0000BFEF /* NSBundle+SDLBundle.h in Headers */, @@ -6094,6 +6237,7 @@ 5D61FC901A84238C00846EE7 /* SDLDisplayCapabilities.h in Headers */, 5D3E420A20EAAD6500D8C622 /* SDLTPMS.h in Headers */, 5D61FCE81A84238C00846EE7 /* SDLLanguage.h in Headers */, + 8817C2802289F4B900DB2DEC /* SDLIAPDataSessionDelegate.h in Headers */, 5D61FC841A84238C00846EE7 /* SDLDeviceLevelStatus.h in Headers */, 5DB92D321AC9C8BA00C15BB0 /* SDLRPCStruct.h in Headers */, 5D61FD151A84238C00846EE7 /* SDLOnLockScreenStatus.h in Headers */, @@ -6121,8 +6265,8 @@ 5D61FCC91A84238C00846EE7 /* SDLIgnitionStableStatus.h in Headers */, 884E701F21FB983F008D53BA /* SDLAppServiceManifest.h in Headers */, DA9F7E6B1DCBFB0700ACAE48 /* SDLDeliveryMode.h in Headers */, - E9C32B941AB20BA200F283AF /* SDLStreamDelegate.h in Headers */, DA9F7E871DCC049900ACAE48 /* SDLSubscribeWayPoints.h in Headers */, + 88D99DB52289C82F0039E047 /* SDLIAPControlSessionDelegate.h in Headers */, 5D61FDBB1A84238C00846EE7 /* SDLSystemAction.h in Headers */, 5D8A09811F54B4E5002502A2 /* SDLStreamingMediaManagerDataSource.h in Headers */, 5D61FC9C1A84238C00846EE7 /* SDLEmergencyEventType.h in Headers */, @@ -6136,6 +6280,7 @@ E9C32B911AB20BA200F283AF /* SDLIAPSession.h in Headers */, 5D61FCD71A84238C00846EE7 /* SDLInteractionMode.h in Headers */, 8881AFBE2225E9BB00EA870B /* SDLGetCloudAppPropertiesResponse.h in Headers */, + 880FE6272267AE5300723732 /* SDLIAPConstants.h in Headers */, 5D61FC391A84238C00846EE7 /* SDLAlertManeuver.h in Headers */, 5D61FC861A84238C00846EE7 /* SDLDeviceStatus.h in Headers */, DA0C46AF1DCD41E30001F2A8 /* SDLMacros.h in Headers */, @@ -6212,6 +6357,7 @@ 5D61FC451A84238C00846EE7 /* SDLAudioPassThruCapabilities.h in Headers */, 5D61FDC71A84238C00846EE7 /* SDLTextAlignment.h in Headers */, 5D61FD051A84238C00846EE7 /* SDLOnButtonPress.h in Headers */, + 5DA150C72271FDC20032928D /* SDLSoftButtonTransitionOperation.h in Headers */, 5D61FCC51A84238C00846EE7 /* SDLHMIZoneCapabilities.h in Headers */, 884AF94F220B488900E22928 /* SDLOnSystemCapabilityUpdated.h in Headers */, 880D267D220DE5DF00B3F496 /* SDLWeatherServiceManifest.h in Headers */, @@ -6222,6 +6368,7 @@ 5D61FC4F1A84238C00846EE7 /* SDLBodyInformation.h in Headers */, 5D61FDAB1A84238C00846EE7 /* SDLStartTime.h in Headers */, 5D61FD071A84238C00846EE7 /* SDLOnCommand.h in Headers */, + 88D3EBC92267949D00493C38 /* SDLIAPDataSession.h in Headers */, 5D00AC671F140F0A004000D9 /* SDLSystemCapabilityType.h in Headers */, DA9F7E9B1DCC052C00ACAE48 /* SDLLocationDetails.h in Headers */, 5D61FD1D1A84238C00846EE7 /* SDLOnTBTClientState.h in Headers */, @@ -6255,6 +6402,7 @@ 5D61FDF11A84238C00846EE7 /* SDLUpdateTurnList.h in Headers */, 5DB996571F268ECB002D8795 /* SDLControlFramePayloadAudioStartServiceAck.h in Headers */, 5D61FD671A84238C00846EE7 /* SDLResult.h in Headers */, + 755F176222A00B7C0041B9CB /* SDLMenuManagerConstants.h in Headers */, 5D61FD351A84238C00846EE7 /* SDLPowerModeStatus.h in Headers */, 5D61FD971A84238C00846EE7 /* SDLSingleTireStatus.h in Headers */, 5D61FCE21A84238C00846EE7 /* SDLKeyboardLayout.h in Headers */, @@ -6272,6 +6420,7 @@ 5D61FDB11A84238C00846EE7 /* SDLSubscribeVehicleData.h in Headers */, 5DB996601F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.h in Headers */, 5DCF76F51ACDBAD300BB647B /* SDLSendLocation.h in Headers */, + 5D75961122972FCA0013207C /* SDLSystemCapabilityObserver.h in Headers */, 5D61FC9E1A84238C00846EE7 /* SDLEncodedSyncPData.h in Headers */, 1FF7DABA1F75B2A800B46C30 /* SDLFocusableItemLocator.h in Headers */, 5D019276214994AC003500F6 /* NSMutableArray+Safe.h in Headers */, @@ -6283,6 +6432,7 @@ 5D61FC511A84238C00846EE7 /* SDLButtonCapabilities.h in Headers */, 5D61FDE91A84238C00846EE7 /* SDLUnsubscribeButtonResponse.h in Headers */, 5D61FCD51A84238C00846EE7 /* SDLImageType.h in Headers */, + 8803DCEF22C2B84B00FBB7CE /* SDLBackgroundTaskManager.h in Headers */, 5D61FC2F1A84238C00846EE7 /* SDLAddCommandResponse.h in Headers */, 5D0C2A0020D9479B008B56CD /* SDLStreamingVideoLifecycleManager.h in Headers */, 5D61FD631A84238C00846EE7 /* SDLResetGlobalProperties.h in Headers */, @@ -6375,6 +6525,7 @@ 5D61FC821A84238C00846EE7 /* SDLDeviceInfo.h in Headers */, 5DD60D98221C5D7D00A82A4F /* SDLVersion.h in Headers */, 5D61FCA91A84238C00846EE7 /* SDLFileType.h in Headers */, + 756C62762289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.h in Headers */, 8877F5EE1F34A72200DC128A /* SDLSendHapticDataResponse.h in Headers */, DA8966F21E56973700413EAB /* SDLStreamingMediaManagerConstants.h in Headers */, 883C22C8222ED84D00939C4C /* SDLRPCFunctionNames.h in Headers */, @@ -6400,6 +6551,7 @@ 5D61FDE31A84238C00846EE7 /* SDLUnregisterAppInterface.h in Headers */, 5D61FD331A84238C00846EE7 /* SDLPowerModeQualificationStatus.h in Headers */, 5D92937020B5E0E500FCC775 /* SDLDeleteChoicesOperation.h in Headers */, + 5DA150CD2271FE180032928D /* SDLSoftButtonReplaceOperation.h in Headers */, 5D61FE011A84238C00846EE7 /* SDLVehicleDataNotificationStatus.h in Headers */, 5D61FDC91A84238C00846EE7 /* SDLTextField.h in Headers */, 5D6F7A351BC5B9B60070BF37 /* SDLLockScreenViewController.h in Headers */, @@ -6491,6 +6643,7 @@ 8B9376D71F3349FC009605C4 /* SDLMetadataTags.h in Headers */, 5D61FD471A84238C00846EE7 /* SDLProtocolListener.h in Headers */, EE28F9E3209802A500B1B61D /* SDLStreamingProtocolDelegate.h in Headers */, + 88BCEA922266250B00BB7E70 /* SDLIAPControlSession.h in Headers */, 5D61FCA01A84238C00846EE7 /* SDLEncodedSyncPDataResponse.h in Headers */, 5D61FD271A84238C00846EE7 /* SDLPerformAudioPassThruResponse.h in Headers */, 5D61FD251A84238C00846EE7 /* SDLPerformAudioPassThru.h in Headers */, @@ -6515,6 +6668,7 @@ 5D61FCAD1A84238C00846EE7 /* SDLFunctionID.h in Headers */, DA9F7E831DCC047200ACAE48 /* SDLWayPointType.h in Headers */, 5D61FDF51A84238C00846EE7 /* SDLV1ProtocolHeader.h in Headers */, + 752ECDB6228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.h in Headers */, 5D92936320B3551600FCC775 /* SDLKeyboardDelegate.h in Headers */, 5D92936820B3601700FCC775 /* SDLChoiceSetManager.h in Headers */, 5DBF06351E64A9FE00A5CF03 /* SDLLogConstants.h in Headers */, @@ -6683,7 +6837,7 @@ }; 5D61FA1B1A84237100846EE7 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0940; + LastSwiftMigration = 1020; }; 5D61FA251A84237100846EE7 = { CreatedOnToolsVersion = 6.1.1; @@ -6890,6 +7044,7 @@ 1EB59CC4202DB40400343A61 /* SDLSeatControlCapabilities.m in Sources */, 5D61FD261A84238C00846EE7 /* SDLPerformAudioPassThru.m in Sources */, 1EAA471E203410BB000FE74B /* SDLAudioControlCapabilities.m in Sources */, + 88BCEA932266250B00BB7E70 /* SDLIAPControlSession.m in Sources */, 5D61FC971A84238C00846EE7 /* SDLECallConfirmationStatus.m in Sources */, 8816772D222097C3001FACFF /* SDLNavigationServiceData.m in Sources */, 1E5AD04D1F1F79640029B8AF /* SDLDefrostZone.m in Sources */, @@ -6990,6 +7145,7 @@ 5D61FD3C1A84238C00846EE7 /* SDLPresetBankCapabilities.m in Sources */, 5D4631151F2136B60092EFDC /* SDLControlFramePayloadNak.m in Sources */, 5D61FDB81A84238C00846EE7 /* SDLSyncPData.m in Sources */, + 880FE6282267AE5300723732 /* SDLIAPConstants.m in Sources */, 5D61FD221A84238C00846EE7 /* SDLOnVehicleData.m in Sources */, 5D61FCD41A84238C00846EE7 /* SDLImageResolution.m in Sources */, 5D61FDF41A84238C00846EE7 /* SDLUpdateTurnListResponse.m in Sources */, @@ -7025,6 +7181,7 @@ 88EEC5BC220A327B005AA2F9 /* SDLPublishAppServiceResponse.m in Sources */, 5D61FC951A84238C00846EE7 /* SDLDriverDistractionState.m in Sources */, 5DB996611F28C6ED002D8795 /* SDLControlFramePayloadVideoStartServiceAck.m in Sources */, + 5D75961222972FCA0013207C /* SDLSystemCapabilityObserver.m in Sources */, 884E702021FB983F008D53BA /* SDLAppServiceManifest.m in Sources */, 5D61FD961A84238C00846EE7 /* SDLShowResponse.m in Sources */, 5D61FD981A84238C00846EE7 /* SDLSingleTireStatus.m in Sources */, @@ -7035,12 +7192,14 @@ 5D61FD461A84238C00846EE7 /* SDLProtocolHeader.m in Sources */, 5DD8406320FCD6C10082CE04 /* SDLElectronicParkBrakeStatus.m in Sources */, 8BBEA6071F324165003EEA26 /* SDLMetadataType.m in Sources */, + 5DA150C82271FDC20032928D /* SDLSoftButtonTransitionOperation.m in Sources */, 5D61FDBC1A84238C00846EE7 /* SDLSystemAction.m in Sources */, 5D61FC381A84238C00846EE7 /* SDLAlert.m in Sources */, 88AAD4BD2211B76800F1E6D7 /* SDLMediaServiceManifest.m in Sources */, 884E701C21FB8D0F008D53BA /* SDLPublishAppService.m in Sources */, 8831FA49220235B000B8FFB7 /* SDLAppServicesCapabilities.m in Sources */, 884E702421FBA952008D53BA /* SDLAppServiceType.m in Sources */, + 88D3EBCA2267949D00493C38 /* SDLIAPDataSession.m in Sources */, 5D61FD2C1A84238C00846EE7 /* SDLPerformInteractionResponse.m in Sources */, 5D00AC7C1F15287E004000D9 /* SDLPhoneCapability.m in Sources */, 5D61FDF21A84238C00846EE7 /* SDLUpdateTurnList.m in Sources */, @@ -7052,6 +7211,7 @@ 5D61FC5E1A84238C00846EE7 /* SDLChangeRegistrationResponse.m in Sources */, 5D8204231BCEA89A00D0A41B /* SDLFileManager.m in Sources */, 1EB59CC0202DA26000343A61 /* SDLSeatControlData.m in Sources */, + 8803DCF022C2B84B00FBB7CE /* SDLBackgroundTaskManager.m in Sources */, 5D61FC7D1A84238C00846EE7 /* SDLDeleteInteractionChoiceSetResponse.m in Sources */, DAC572661D10C5640004288B /* CGPoint_Util.m in Sources */, 5D00AC681F140F0A004000D9 /* SDLSystemCapabilityType.m in Sources */, @@ -7097,6 +7257,7 @@ 1E5AD0651F207DD50029B8AF /* SDLTemperature.m in Sources */, DA9F7E901DCC04C000ACAE48 /* SDLUnsubscribeWayPointsResponse.m in Sources */, 88F65137220C74FD00CAF321 /* SDLWeatherData.m in Sources */, + 5DA150CE2271FE180032928D /* SDLSoftButtonReplaceOperation.m in Sources */, 5DE372A21ACB2ED300849FAA /* SDLHMICapabilities.m in Sources */, 5D61FDD41A84238C00846EE7 /* SDLTouchEvent.m in Sources */, 5D61FD881A84238C00846EE7 /* SDLSetGlobalProperties.m in Sources */, @@ -7142,6 +7303,7 @@ 8818ADD92100FC18007D6F19 /* SDLTurnSignal.m in Sources */, 5D8B17541AC9E11B006A6E1C /* SDLDialNumberResponse.m in Sources */, DA6223BE1E7B088200878689 /* CVPixelBufferRef+SDLUtil.m in Sources */, + 752ECDB7228B4D6B00D945F4 /* SDLDynamicMenuUpdateAlgorithm.m in Sources */, 1FF7DABC1F75B2BF00B46C30 /* SDLFocusableItemLocator.m in Sources */, EED5CA021F4D18EC00F04000 /* SDLRAWH264Packetizer.m in Sources */, 5D61FC851A84238C00846EE7 /* SDLDeviceLevelStatus.m in Sources */, @@ -7186,7 +7348,6 @@ 5D61FCF11A84238C00846EE7 /* SDLLockScreenStatusManager.m in Sources */, 5D61FDAC1A84238C00846EE7 /* SDLStartTime.m in Sources */, 5D61FDA01A84238C00846EE7 /* SDLSoftButton.m in Sources */, - E9C32B951AB20BA200F283AF /* SDLStreamDelegate.m in Sources */, 5D61FCD21A84238C00846EE7 /* SDLImageFieldName.m in Sources */, 5D61FD761A84238C00846EE7 /* SDLRPCResponse.m in Sources */, 5D3E48761D6F3B330000BFEF /* SDLAsynchronousOperation.m in Sources */, @@ -7196,6 +7357,7 @@ 880D267E220DE5DF00B3F496 /* SDLWeatherServiceManifest.m in Sources */, 5D9FC2A21FD8814A00ACA5C2 /* SDLAudioFile.m in Sources */, E9C32B9F1AB20C5900F283AF /* EAAccessoryManager+SDLProtocols.m in Sources */, + 756C62772289F11F008B57A2 /* SDLDynamicMenuUpdateRunScore.m in Sources */, 5D61FDA81A84238C00846EE7 /* SDLSpeakResponse.m in Sources */, 5DB92D331AC9C8BA00C15BB0 /* SDLRPCStruct.m in Sources */, 1EAA474220355FF3000FE74B /* SDLLightControlCapabilities.m in Sources */, @@ -7312,6 +7474,7 @@ 162E83801A9BDE8B00906325 /* SDLHMIPermissionsSpec.m in Sources */, 1EAA476C2036A52F000FE74B /* SDLLightCapabilitiesSpec.m in Sources */, 5D1654561D3E754F00554D93 /* SDLLifecycleManagerSpec.m in Sources */, + 752ECDBB228C532600D945F4 /* SDLMenuUpdateAlgorithmSpec.m in Sources */, 1EE8C43A1F347D4D00FDC2CF /* SDLRadioStateSpec.m in Sources */, 162E83021A9BDE8B00906325 /* SDLTouchTypeSpec.m in Sources */, 1EAA47722036AEF5000FE74B /* SDLLightNameSpec.m in Sources */, @@ -7319,6 +7482,7 @@ 88DF999122035D5A00477AC1 /* SDLIAPTransportSpec.m in Sources */, 162E838A1A9BDE8B00906325 /* SDLSingleTireStatusSpec.m in Sources */, 5D6EB4CC1BF28DC600693731 /* NSMapTable+SubscriptingSpec.m in Sources */, + 88F37A4D226F84BE00DF119B /* SDLIAPDataSessionSpec.m in Sources */, 162E83051A9BDE8B00906325 /* SDLVehicleDataActiveStatusSpec.m in Sources */, 162E82E61A9BDE8B00906325 /* SDLInteractionModeSpec.m in Sources */, 888F8700221DF4880052FE4C /* SDLAsynchronousRPCOperationSpec.m in Sources */, @@ -7369,12 +7533,14 @@ 162E837E1A9BDE8B00906325 /* SDLGPSDataSpec.m in Sources */, 5DAE06731BDEC6C000F9B498 /* SDLFileSpec.m in Sources */, 162E82E11A9BDE8B00906325 /* SDLHMIZoneCapabilitiesSpec.m in Sources */, + 5D75960D22972F830013207C /* TestSystemCapabilityObserver.m in Sources */, 88B58DBD222042500011B063 /* SDLDirectionSpec.m in Sources */, 162E83721A9BDE8B00906325 /* SDLAudioPassThruCapabilitiesSpec.m in Sources */, 162E83681A9BDE8B00906325 /* SDLSpeakResponseSpec.m in Sources */, 1EB59CD8202DCCD500343A61 /* SDLMassageCushionFirmnessSpec.m in Sources */, 162E83661A9BDE8B00906325 /* SDLShowResponseSpec.m in Sources */, 5D9F50831BEA5C6100FEF399 /* SDLFileManagerSpec.m in Sources */, + 88BCEA952266592D00BB7E70 /* SDLIAPControlSessionSpec.m in Sources */, 88AAD4C02211B7E200F1E6D7 /* SDLMediaServiceManifestSpec.m in Sources */, 5DAB5F512098994C00A020C8 /* SDLMenuCellSpec.m in Sources */, 1EE8C4481F38430900FDC2CF /* SDLRadioControlCapabilitiesSpec.m in Sources */, @@ -7456,7 +7622,9 @@ 162E83171A9BDE8B00906325 /* SDLOnHMIStatusSpec.m in Sources */, 8831FA392201E3D100B8FFB7 /* SDLAppServiceManifestSpec.m in Sources */, 5DE372A41ACB336600849FAA /* SDLHMICapabilitiesSpec.m in Sources */, + 5DA150D32273676A0032928D /* SDLSoftButtonReplaceOperationSpec.m in Sources */, 162E82F71A9BDE8B00906325 /* SDLResultSpec.m in Sources */, + 88DDD0F9229ECA57002F9623 /* SDLIAPConstantsSpec.m in Sources */, 1680B1141A9CD7AD00DBD79E /* SDLV1ProtocolHeaderSpec.m in Sources */, 880D2680220E038800B3F496 /* SDLWeatherServiceManifestSpec.m in Sources */, 88EEC5BE220A3B8B005AA2F9 /* SDLPublishAppServiceResponseSpec.m in Sources */, @@ -7517,6 +7685,7 @@ 5DA23FF61F2FAA31009C0313 /* SDLControlFramePayloadRPCStartServiceSpec.m in Sources */, 162E83201A9BDE8B00906325 /* SDLOnVehicleDataSpec.m in Sources */, 1EAA47762036B847000FE74B /* SDLEqualizerSettingsSpec.m in Sources */, + 752ECDB9228C42E100D945F4 /* SDLMenuRunScoreSpec.m in Sources */, 162E83141A9BDE8B00906325 /* SDLOnDriverDistractionSpec.m in Sources */, 162E83371A9BDE8B00906325 /* SDLResetGlobalPropertiesSpec.m in Sources */, 162E82DF1A9BDE8B00906325 /* SDLGlobalProperySpec.m in Sources */, @@ -7676,6 +7845,7 @@ 5D0A9F931F15560B00CC80DD /* SDLNavigationCapabilitySpec.m in Sources */, 5D64FE7120DA9E6700792F9F /* SDLStreamingAudioLifecycleManagerSpec.m in Sources */, 162E83891A9BDE8B00906325 /* SDLScreenParamsSpec.m in Sources */, + 5DA150D1227367580032928D /* SDLSoftButtonTransitionOperationSpec.m in Sources */, 162E83441A9BDE8B00906325 /* SDLSystemRequestSpec.m in Sources */, 162E83001A9BDE8B00906325 /* SDLTextFieldNameSpec.m in Sources */, DA4353EA1D2721680099B8C4 /* SDLTouchManagerSpec.m in Sources */, @@ -7913,7 +8083,7 @@ MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -7961,7 +8131,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/SmartDeviceLink.podspec b/SmartDeviceLink.podspec index ec64518c4..17fa2cfc8 100644 --- a/SmartDeviceLink.podspec +++ b/SmartDeviceLink.podspec @@ -1,13 +1,13 @@ Pod::Spec.new do |s| s.name = "SmartDeviceLink" -s.version = "6.2.3" +s.version = "6.3.0" s.summary = "Connect your app with cars!" s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS" s.license = { :type => "New BSD", :file => "LICENSE" } s.author = { "SmartDeviceLink Team" => "developer@smartdevicelink.com" } s.platform = :ios, "8.0" -s.dependency 'BiSON', '~> 1.1.1' +s.dependency 'BiSON', '~> 1.2.0' s.source = { :git => "https://github.com/smartdevicelink/sdl_ios.git", :tag => s.version.to_s } s.requires_arc = true s.swift_version = '4.2' @@ -44,6 +44,7 @@ sdefault.public_header_files = [ 'SmartDeviceLink/SDLAudioControlData.h', 'SmartDeviceLink/SDLAudioControlCapabilities.h', 'SmartDeviceLink/SDLAudioPassThruCapabilities.h', +'SmartDeviceLink/SDLAudioFile.h', 'SmartDeviceLink/SDLAudioStreamingState.h', 'SmartDeviceLink/SDLAudioStreamingIndicator.h', 'SmartDeviceLink/SDLAudioStreamManager.h', @@ -205,6 +206,7 @@ sdefault.public_header_files = [ 'SmartDeviceLink/SDLMediaServiceManifest.h', 'SmartDeviceLink/SDLMediaType.h', 'SmartDeviceLink/SDLMenuCell.h', +'SmartDeviceLink/SDLMenuManagerConstants.h', 'SmartDeviceLink/SDLMenuParams.h', 'SmartDeviceLink/SDLMetadataTags.h', 'SmartDeviceLink/SDLMetadataType.h', diff --git a/SmartDeviceLink/Info.plist b/SmartDeviceLink/Info.plist index a140cf4b0..8761e930d 100644 --- a/SmartDeviceLink/Info.plist +++ b/SmartDeviceLink/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 6.2.3 + 6.3.0 CFBundleSignature ???? CFBundleVersion diff --git a/SmartDeviceLink/SDLAddCommand.m b/SmartDeviceLink/SDLAddCommand.m index 074db8846..0613f3193 100644 --- a/SmartDeviceLink/SDLAddCommand.m +++ b/SmartDeviceLink/SDLAddCommand.m @@ -14,11 +14,14 @@ @implementation SDLAddCommand +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameAddCommand]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithHandler:(nullable SDLRPCCommandNotificationHandler)handler { self = [self init]; @@ -103,36 +106,36 @@ - (instancetype)initWithId:(UInt32)commandId vrCommands:(nullable NSArray *)cmdID { - [parameters sdl_setObject:cmdID forName:SDLRPCParameterNameCommandId]; + [self.parameters sdl_setObject:cmdID forName:SDLRPCParameterNameCommandId]; } - (NSNumber *)cmdID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameCommandId ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCommandId ofClass:NSNumber.class error:&error]; } - (void)setMenuParams:(nullable SDLMenuParams *)menuParams { - [parameters sdl_setObject:menuParams forName:SDLRPCParameterNameMenuParams]; + [self.parameters sdl_setObject:menuParams forName:SDLRPCParameterNameMenuParams]; } - (nullable SDLMenuParams *)menuParams { - return [parameters sdl_objectForName:SDLRPCParameterNameMenuParams ofClass:SDLMenuParams.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuParams ofClass:SDLMenuParams.class error:nil]; } - (void)setVrCommands:(nullable NSArray *)vrCommands { - [parameters sdl_setObject:vrCommands forName:SDLRPCParameterNameVRCommands]; + [self.parameters sdl_setObject:vrCommands forName:SDLRPCParameterNameVRCommands]; } - (nullable NSArray *)vrCommands { - return [parameters sdl_objectsForName:SDLRPCParameterNameVRCommands ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRCommands ofClass:NSString.class error:nil]; } - (void)setCmdIcon:(nullable SDLImage *)cmdIcon { - [parameters sdl_setObject:cmdIcon forName:SDLRPCParameterNameCommandIcon]; + [self.parameters sdl_setObject:cmdIcon forName:SDLRPCParameterNameCommandIcon]; } - (nullable SDLImage *)cmdIcon { - return [parameters sdl_objectForName:SDLRPCParameterNameCommandIcon ofClass:SDLImage.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCommandIcon ofClass:SDLImage.class error:nil]; } -(id)copyWithZone:(nullable NSZone *)zone { diff --git a/SmartDeviceLink/SDLAddCommandResponse.m b/SmartDeviceLink/SDLAddCommandResponse.m index 2caf3c6e7..1906f7f64 100644 --- a/SmartDeviceLink/SDLAddCommandResponse.m +++ b/SmartDeviceLink/SDLAddCommandResponse.m @@ -10,11 +10,14 @@ @implementation SDLAddCommandResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameAddCommand]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLAddSubMenu.m b/SmartDeviceLink/SDLAddSubMenu.m index 3a79563a4..48ea43c8a 100644 --- a/SmartDeviceLink/SDLAddSubMenu.m +++ b/SmartDeviceLink/SDLAddSubMenu.m @@ -11,11 +11,14 @@ @implementation SDLAddSubMenu +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameAddSubMenu]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName menuIcon:(nullable SDLImage *)icon position:(UInt8)position { self = [self initWithId:menuId menuName:menuName]; @@ -44,37 +47,37 @@ - (instancetype)initWithId:(UInt32)menuId menuName:(NSString *)menuName { } - (void)setMenuID:(NSNumber *)menuID { - [parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuId]; + [self.parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuId]; } - (NSNumber *)menuID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameMenuId ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuId ofClass:NSNumber.class error:&error]; } - (void)setPosition:(nullable NSNumber *)position { - [parameters sdl_setObject:position forName:SDLRPCParameterNamePosition]; + [self.parameters sdl_setObject:position forName:SDLRPCParameterNamePosition]; } - (nullable NSNumber *)position { - return [parameters sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:nil]; } - (void)setMenuName:(NSString *)menuName { - [parameters sdl_setObject:menuName forName:SDLRPCParameterNameMenuName]; + [self.parameters sdl_setObject:menuName forName:SDLRPCParameterNameMenuName]; } - (NSString *)menuName { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:&error]; } - (void)setMenuIcon:(nullable SDLImage *)menuIcon { - [parameters sdl_setObject:menuIcon forName:SDLRPCParameterNameMenuIcon]; + [self.parameters sdl_setObject:menuIcon forName:SDLRPCParameterNameMenuIcon]; } - (nullable SDLImage *)menuIcon { - return [parameters sdl_objectForName:SDLRPCParameterNameMenuIcon ofClass:[SDLImage class] error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuIcon ofClass:[SDLImage class] error:nil]; } @end diff --git a/SmartDeviceLink/SDLAddSubMenuResponse.m b/SmartDeviceLink/SDLAddSubMenuResponse.m index 78376e491..e47fe724b 100644 --- a/SmartDeviceLink/SDLAddSubMenuResponse.m +++ b/SmartDeviceLink/SDLAddSubMenuResponse.m @@ -10,11 +10,14 @@ @implementation SDLAddSubMenuResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameAddSubMenu]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLAirbagStatus.m b/SmartDeviceLink/SDLAirbagStatus.m index a13f525f8..650a2c5ba 100644 --- a/SmartDeviceLink/SDLAirbagStatus.m +++ b/SmartDeviceLink/SDLAirbagStatus.m @@ -10,74 +10,74 @@ @implementation SDLAirbagStatus - (void)setDriverAirbagDeployed:(SDLVehicleDataEventStatus)driverAirbagDeployed { - [store sdl_setObject:driverAirbagDeployed forName:SDLRPCParameterNameDriverAirbagDeployed]; + [self.store sdl_setObject:driverAirbagDeployed forName:SDLRPCParameterNameDriverAirbagDeployed]; } - (SDLVehicleDataEventStatus)driverAirbagDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameDriverAirbagDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameDriverAirbagDeployed error:&error]; } - (void)setDriverSideAirbagDeployed:(SDLVehicleDataEventStatus)driverSideAirbagDeployed { - [store sdl_setObject:driverSideAirbagDeployed forName:SDLRPCParameterNameDriverSideAirbagDeployed]; + [self.store sdl_setObject:driverSideAirbagDeployed forName:SDLRPCParameterNameDriverSideAirbagDeployed]; } - (SDLVehicleDataEventStatus)driverSideAirbagDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameDriverSideAirbagDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameDriverSideAirbagDeployed error:&error]; } - (void)setDriverCurtainAirbagDeployed:(SDLVehicleDataEventStatus)driverCurtainAirbagDeployed { - [store sdl_setObject:driverCurtainAirbagDeployed forName:SDLRPCParameterNameDriverCurtainAirbagDeployed]; + [self.store sdl_setObject:driverCurtainAirbagDeployed forName:SDLRPCParameterNameDriverCurtainAirbagDeployed]; } - (SDLVehicleDataEventStatus)driverCurtainAirbagDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameDriverCurtainAirbagDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameDriverCurtainAirbagDeployed error:&error]; } - (void)setPassengerAirbagDeployed:(SDLVehicleDataEventStatus)passengerAirbagDeployed { - [store sdl_setObject:passengerAirbagDeployed forName:SDLRPCParameterNamePassengerAirbagDeployed];} + [self.store sdl_setObject:passengerAirbagDeployed forName:SDLRPCParameterNamePassengerAirbagDeployed];} - (SDLVehicleDataEventStatus)passengerAirbagDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePassengerAirbagDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePassengerAirbagDeployed error:&error]; } - (void)setPassengerCurtainAirbagDeployed:(SDLVehicleDataEventStatus)passengerCurtainAirbagDeployed { - [store sdl_setObject:passengerCurtainAirbagDeployed forName:SDLRPCParameterNamePassengerCurtainAirbagDeployed]; + [self.store sdl_setObject:passengerCurtainAirbagDeployed forName:SDLRPCParameterNamePassengerCurtainAirbagDeployed]; } - (SDLVehicleDataEventStatus)passengerCurtainAirbagDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePassengerCurtainAirbagDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePassengerCurtainAirbagDeployed error:&error]; } - (void)setDriverKneeAirbagDeployed:(SDLVehicleDataEventStatus)driverKneeAirbagDeployed { - [store sdl_setObject:driverKneeAirbagDeployed forName:SDLRPCParameterNameDriverKneeAirbagDeployed]; + [self.store sdl_setObject:driverKneeAirbagDeployed forName:SDLRPCParameterNameDriverKneeAirbagDeployed]; } - (SDLVehicleDataEventStatus)driverKneeAirbagDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameDriverKneeAirbagDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameDriverKneeAirbagDeployed error:&error]; } - (void)setPassengerSideAirbagDeployed:(SDLVehicleDataEventStatus)passengerSideAirbagDeployed { - [store sdl_setObject:passengerSideAirbagDeployed forName:SDLRPCParameterNamePassengerSideAirbagDeployed]; + [self.store sdl_setObject:passengerSideAirbagDeployed forName:SDLRPCParameterNamePassengerSideAirbagDeployed]; } - (SDLVehicleDataEventStatus)passengerSideAirbagDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePassengerSideAirbagDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePassengerSideAirbagDeployed error:&error]; } - (void)setPassengerKneeAirbagDeployed:(SDLVehicleDataEventStatus)passengerKneeAirbagDeployed { - [store sdl_setObject:passengerKneeAirbagDeployed forName:SDLRPCParameterNamePassengerKneeAirbagDeployed]; + [self.store sdl_setObject:passengerKneeAirbagDeployed forName:SDLRPCParameterNamePassengerKneeAirbagDeployed]; } - (SDLVehicleDataEventStatus)passengerKneeAirbagDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePassengerKneeAirbagDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePassengerKneeAirbagDeployed error:&error]; } @end diff --git a/SmartDeviceLink/SDLAlert.m b/SmartDeviceLink/SDLAlert.m index 7c9fa67f5..120ed6fe7 100644 --- a/SmartDeviceLink/SDLAlert.m +++ b/SmartDeviceLink/SDLAlert.m @@ -14,11 +14,14 @@ @implementation SDLAlert +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameAlert]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithAlertText1:(nullable NSString *)alertText1 alertText2:(nullable NSString *)alertText2 alertText3:(nullable NSString *)alertText3 { return [self initWithAlertText1:alertText1 alertText2:alertText2 alertText3:alertText3 duration:SDLDefaultDuration]; @@ -75,67 +78,67 @@ - (instancetype)initWithTTSChunks:(nullable NSArray *)ttsChunks a } - (void)setAlertText1:(nullable NSString *)alertText1 { - [parameters sdl_setObject:alertText1 forName:SDLRPCParameterNameAlertText1]; + [self.parameters sdl_setObject:alertText1 forName:SDLRPCParameterNameAlertText1]; } - (nullable NSString *)alertText1 { - return [parameters sdl_objectForName:SDLRPCParameterNameAlertText1 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText1 ofClass:NSString.class error:nil]; } - (void)setAlertText2:(nullable NSString *)alertText2 { - [parameters sdl_setObject:alertText2 forName:SDLRPCParameterNameAlertText2]; + [self.parameters sdl_setObject:alertText2 forName:SDLRPCParameterNameAlertText2]; } - (nullable NSString *)alertText2 { - return [parameters sdl_objectForName:SDLRPCParameterNameAlertText2 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText2 ofClass:NSString.class error:nil]; } - (void)setAlertText3:(nullable NSString *)alertText3 { - [parameters sdl_setObject:alertText3 forName:SDLRPCParameterNameAlertText3]; + [self.parameters sdl_setObject:alertText3 forName:SDLRPCParameterNameAlertText3]; } - (nullable NSString *)alertText3 { - return [parameters sdl_objectForName:SDLRPCParameterNameAlertText3 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAlertText3 ofClass:NSString.class error:nil]; } - (void)setTtsChunks:(nullable NSArray *)ttsChunks { - [parameters sdl_setObject:ttsChunks forName:SDLRPCParameterNameTTSChunks]; + [self.parameters sdl_setObject:ttsChunks forName:SDLRPCParameterNameTTSChunks]; } - (nullable NSArray *)ttsChunks { - return [parameters sdl_objectsForName:SDLRPCParameterNameTTSChunks ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSChunks ofClass:SDLTTSChunk.class error:nil]; } - (void)setDuration:(nullable NSNumber *)duration { - [parameters sdl_setObject:duration forName:SDLRPCParameterNameDuration]; + [self.parameters sdl_setObject:duration forName:SDLRPCParameterNameDuration]; } - (nullable NSNumber *)duration { - return [parameters sdl_objectForName:SDLRPCParameterNameDuration ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDuration ofClass:NSNumber.class error:nil]; } - (void)setPlayTone:(nullable NSNumber *)playTone { - [parameters sdl_setObject:playTone forName:SDLRPCParameterNamePlayTone]; + [self.parameters sdl_setObject:playTone forName:SDLRPCParameterNamePlayTone]; } - (nullable NSNumber *)playTone { - return [parameters sdl_objectForName:SDLRPCParameterNamePlayTone ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePlayTone ofClass:NSNumber.class error:nil]; } - (void)setProgressIndicator:(nullable NSNumber *)progressIndicator { - [parameters sdl_setObject:progressIndicator forName:SDLRPCParameterNameProgressIndicator]; + [self.parameters sdl_setObject:progressIndicator forName:SDLRPCParameterNameProgressIndicator]; } - (nullable NSNumber *)progressIndicator { - return [parameters sdl_objectForName:SDLRPCParameterNameProgressIndicator ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameProgressIndicator ofClass:NSNumber.class error:nil]; } - (void)setSoftButtons:(nullable NSArray *)softButtons { - [parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; + [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; } - (nullable NSArray *)softButtons { - return [parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLAlertManeuver.m b/SmartDeviceLink/SDLAlertManeuver.m index 7eb01682a..c92ee6bd6 100644 --- a/SmartDeviceLink/SDLAlertManeuver.m +++ b/SmartDeviceLink/SDLAlertManeuver.m @@ -14,11 +14,14 @@ @implementation SDLAlertManeuver +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameAlertManeuver]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithTTS:(nullable NSString *)ttsText softButtons:(nullable NSArray *)softButtons { @@ -39,19 +42,19 @@ - (instancetype)initWithTTSChunks:(nullable NSArray *)ttsChunks s } - (void)setTtsChunks:(nullable NSArray *)ttsChunks { - [parameters sdl_setObject:ttsChunks forName:SDLRPCParameterNameTTSChunks]; + [self.parameters sdl_setObject:ttsChunks forName:SDLRPCParameterNameTTSChunks]; } - (nullable NSArray *)ttsChunks { - return [parameters sdl_objectsForName:SDLRPCParameterNameTTSChunks ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSChunks ofClass:SDLTTSChunk.class error:nil]; } - (void)setSoftButtons:(nullable NSArray *)softButtons { - [parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; + [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; } - (nullable NSArray *)softButtons { - return [parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLAlertManeuverResponse.m b/SmartDeviceLink/SDLAlertManeuverResponse.m index 150678cba..89c0f3331 100644 --- a/SmartDeviceLink/SDLAlertManeuverResponse.m +++ b/SmartDeviceLink/SDLAlertManeuverResponse.m @@ -11,11 +11,14 @@ @implementation SDLAlertManeuverResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameAlertManeuver]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLAlertResponse.m b/SmartDeviceLink/SDLAlertResponse.m index a35890723..401b29e76 100644 --- a/SmartDeviceLink/SDLAlertResponse.m +++ b/SmartDeviceLink/SDLAlertResponse.m @@ -11,17 +11,20 @@ @implementation SDLAlertResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameAlert]) { } return self; } +#pragma clang diagnostic pop - (void)setTryAgainTime:(nullable NSNumber *)tryAgainTime { - [parameters sdl_setObject:tryAgainTime forName:SDLRPCParameterNameTryAgainTime];} + [self.parameters sdl_setObject:tryAgainTime forName:SDLRPCParameterNameTryAgainTime];} - (nullable NSNumber *)tryAgainTime { - return [parameters sdl_objectForName:SDLRPCParameterNameTryAgainTime ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTryAgainTime ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLAppInfo.m b/SmartDeviceLink/SDLAppInfo.m index 431382f91..1b7ec0150 100644 --- a/SmartDeviceLink/SDLAppInfo.m +++ b/SmartDeviceLink/SDLAppInfo.m @@ -27,30 +27,30 @@ + (instancetype)currentAppInfo { } - (void)setAppDisplayName:(NSString *)appDisplayName { - [store sdl_setObject:appDisplayName forName:SDLRPCParameterNameAppDisplayName]; + [self.store sdl_setObject:appDisplayName forName:SDLRPCParameterNameAppDisplayName]; } - (NSString *)appDisplayName { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameAppDisplayName ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameAppDisplayName ofClass:NSString.class error:&error]; } - (void)setAppBundleID:(NSString *)appBundleID { - [store sdl_setObject:appBundleID forName:SDLRPCParameterNameAppBundleId]; + [self.store sdl_setObject:appBundleID forName:SDLRPCParameterNameAppBundleId]; } - (NSString *)appBundleID { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameAppBundleId ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameAppBundleId ofClass:NSString.class error:&error]; } - (void)setAppVersion:(NSString *)appVersion { - [store sdl_setObject:appVersion forName:SDLRPCParameterNameAppVersion]; + [self.store sdl_setObject:appVersion forName:SDLRPCParameterNameAppVersion]; } - (NSString *)appVersion { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameAppVersion ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameAppVersion ofClass:NSString.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLAppServiceCapability.m b/SmartDeviceLink/SDLAppServiceCapability.m index 19e30d607..595540cf4 100644 --- a/SmartDeviceLink/SDLAppServiceCapability.m +++ b/SmartDeviceLink/SDLAppServiceCapability.m @@ -40,20 +40,20 @@ - (instancetype)initWithUpdateReason:(nullable SDLServiceUpdateReason)updateReas } - (void)setUpdateReason:(nullable SDLServiceUpdateReason)updateReason { - [store sdl_setObject:updateReason forName:SDLRPCParameterNameUpdateReason]; + [self.store sdl_setObject:updateReason forName:SDLRPCParameterNameUpdateReason]; } - (nullable SDLServiceUpdateReason)updateReason { - return [store sdl_enumForName:SDLRPCParameterNameUpdateReason error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameUpdateReason error:nil]; } - (void)setUpdatedAppServiceRecord:(SDLAppServiceRecord *)updatedAppServiceRecord { - [store sdl_setObject:updatedAppServiceRecord forName:SDLRPCParameterNameUpdatedAppServiceRecord]; + [self.store sdl_setObject:updatedAppServiceRecord forName:SDLRPCParameterNameUpdatedAppServiceRecord]; } - (SDLAppServiceRecord *)updatedAppServiceRecord { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameUpdatedAppServiceRecord ofClass:SDLAppServiceRecord.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameUpdatedAppServiceRecord ofClass:SDLAppServiceRecord.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLAppServiceData.m b/SmartDeviceLink/SDLAppServiceData.m index 5381211c5..13565a7af 100644 --- a/SmartDeviceLink/SDLAppServiceData.m +++ b/SmartDeviceLink/SDLAppServiceData.m @@ -78,45 +78,45 @@ - (instancetype)initWithAppServiceType:(SDLAppServiceType)serviceType serviceId: } - (void)setServiceType:(NSString *)serviceType { - [store sdl_setObject:serviceType forName:SDLRPCParameterNameServiceType]; + [self.store sdl_setObject:serviceType forName:SDLRPCParameterNameServiceType]; } - (NSString *)serviceType { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameServiceType ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameServiceType ofClass:NSString.class error:&error]; } - (void)setServiceId:(NSString *)serviceId { - [store sdl_setObject:serviceId forName:SDLRPCParameterNameServiceID]; + [self.store sdl_setObject:serviceId forName:SDLRPCParameterNameServiceID]; } - (NSString *)serviceId { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameServiceID ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameServiceID ofClass:NSString.class error:&error]; } - (void)setWeatherServiceData:(nullable SDLWeatherServiceData *)weatherServiceData { - [store sdl_setObject:weatherServiceData forName:SDLRPCParameterNameWeatherServiceData]; + [self.store sdl_setObject:weatherServiceData forName:SDLRPCParameterNameWeatherServiceData]; } - (nullable SDLWeatherServiceData *)weatherServiceData { - return [store sdl_objectForName:SDLRPCParameterNameWeatherServiceData ofClass:SDLWeatherServiceData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameWeatherServiceData ofClass:SDLWeatherServiceData.class error:nil]; } - (void)setMediaServiceData:(nullable SDLMediaServiceData *)mediaServiceData { - [store sdl_setObject:mediaServiceData forName:SDLRPCParameterNameMediaServiceData]; + [self.store sdl_setObject:mediaServiceData forName:SDLRPCParameterNameMediaServiceData]; } - (nullable SDLMediaServiceData *)mediaServiceData { - return [store sdl_objectForName:SDLRPCParameterNameMediaServiceData ofClass:SDLMediaServiceData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMediaServiceData ofClass:SDLMediaServiceData.class error:nil]; } - (void)setNavigationServiceData:(nullable SDLNavigationServiceData *)navigationServiceData { - [store sdl_setObject:navigationServiceData forName:SDLRPCParameterNameNavigationServiceData]; + [self.store sdl_setObject:navigationServiceData forName:SDLRPCParameterNameNavigationServiceData]; } - (nullable SDLNavigationServiceData *)navigationServiceData { - return [store sdl_objectForName:SDLRPCParameterNameNavigationServiceData ofClass:SDLNavigationServiceData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNavigationServiceData ofClass:SDLNavigationServiceData.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLAppServiceManifest.m b/SmartDeviceLink/SDLAppServiceManifest.m index ce6c827a7..97afc2e77 100644 --- a/SmartDeviceLink/SDLAppServiceManifest.m +++ b/SmartDeviceLink/SDLAppServiceManifest.m @@ -63,76 +63,76 @@ - (instancetype)initWithServiceName:(nullable NSString *)serviceName serviceType } - (void)setServiceName:(nullable NSString *)serviceName { - [store sdl_setObject:serviceName forName:SDLRPCParameterNameServiceName]; + [self.store sdl_setObject:serviceName forName:SDLRPCParameterNameServiceName]; } - (nullable NSString *)serviceName { - return [store sdl_objectForName:SDLRPCParameterNameServiceName ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameServiceName ofClass:NSString.class error:nil]; } - (void)setServiceType:(NSString *)serviceType { - [store sdl_setObject:serviceType forName:SDLRPCParameterNameServiceType]; + [self.store sdl_setObject:serviceType forName:SDLRPCParameterNameServiceType]; } - (NSString *)serviceType { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameServiceType ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameServiceType ofClass:NSString.class error:&error]; } - (void)setServiceIcon:(nullable SDLImage *)serviceIcon { - [store sdl_setObject:serviceIcon forName:SDLRPCParameterNameServiceIcon]; + [self.store sdl_setObject:serviceIcon forName:SDLRPCParameterNameServiceIcon]; } - (nullable SDLImage *)serviceIcon { - return [store sdl_objectForName:SDLRPCParameterNameServiceIcon ofClass:SDLImage.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameServiceIcon ofClass:SDLImage.class error:nil]; } - (void)setAllowAppConsumers:(nullable NSNumber *)allowAppConsumers { - [store sdl_setObject:allowAppConsumers forName:SDLRPCParameterNameAllowAppConsumers]; + [self.store sdl_setObject:allowAppConsumers forName:SDLRPCParameterNameAllowAppConsumers]; } - (nullable NSNumber *)allowAppConsumers { - return [store sdl_objectForName:SDLRPCParameterNameAllowAppConsumers ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAllowAppConsumers ofClass:NSNumber.class error:nil]; } - (void)setRpcSpecVersion:(nullable SDLSyncMsgVersion *)rpcSpecVersion { - [store sdl_setObject:rpcSpecVersion forName:SDLRPCParameterNameRPCSpecVersion]; + [self.store sdl_setObject:rpcSpecVersion forName:SDLRPCParameterNameRPCSpecVersion]; } - (nullable SDLSyncMsgVersion *)rpcSpecVersion { - return [store sdl_objectForName:SDLRPCParameterNameRPCSpecVersion ofClass:SDLSyncMsgVersion.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRPCSpecVersion ofClass:SDLSyncMsgVersion.class error:nil]; } - (void)setHandledRPCs:(nullable NSArray *> *)handledRPCs { - [store sdl_setObject:handledRPCs forName:SDLRPCParameterNameHandledRPCs]; + [self.store sdl_setObject:handledRPCs forName:SDLRPCParameterNameHandledRPCs]; } - (nullable NSArray *> *)handledRPCs { - return [store sdl_objectsForName:SDLRPCParameterNameHandledRPCs ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameHandledRPCs ofClass:NSNumber.class error:nil]; } - (void)setWeatherServiceManifest:(nullable SDLWeatherServiceManifest *)weatherServiceManifest { - [store sdl_setObject:weatherServiceManifest forName:SDLRPCParameterNameWeatherServiceManifest]; + [self.store sdl_setObject:weatherServiceManifest forName:SDLRPCParameterNameWeatherServiceManifest]; } - (nullable SDLWeatherServiceManifest *)weatherServiceManifest { - return [store sdl_objectForName:SDLRPCParameterNameWeatherServiceManifest ofClass:SDLWeatherServiceManifest.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameWeatherServiceManifest ofClass:SDLWeatherServiceManifest.class error:nil]; } - (void)setMediaServiceManifest:(nullable SDLMediaServiceManifest *)mediaServiceManifest { - [store sdl_setObject:mediaServiceManifest forName:SDLRPCParameterNameMediaServiceManifest]; + [self.store sdl_setObject:mediaServiceManifest forName:SDLRPCParameterNameMediaServiceManifest]; } - (nullable SDLMediaServiceManifest *)mediaServiceManifest { - return [store sdl_objectForName:SDLRPCParameterNameMediaServiceManifest ofClass:SDLMediaServiceManifest.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMediaServiceManifest ofClass:SDLMediaServiceManifest.class error:nil]; } - (void)setNavigationServiceManifest:(nullable SDLNavigationServiceManifest *)navigationServiceManifest { - [store sdl_setObject:navigationServiceManifest forName:SDLRPCParameterNameNavigationServiceManifest]; + [self.store sdl_setObject:navigationServiceManifest forName:SDLRPCParameterNameNavigationServiceManifest]; } - (nullable SDLNavigationServiceManifest *)navigationServiceManifest { - return [store sdl_objectForName:SDLRPCParameterNameNavigationServiceManifest ofClass:SDLNavigationServiceManifest.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNavigationServiceManifest ofClass:SDLNavigationServiceManifest.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLAppServiceRecord.m b/SmartDeviceLink/SDLAppServiceRecord.m index 5677d6776..72711d0a8 100644 --- a/SmartDeviceLink/SDLAppServiceRecord.m +++ b/SmartDeviceLink/SDLAppServiceRecord.m @@ -31,39 +31,39 @@ - (instancetype)initWithServiceID:(NSString *)serviceID serviceManifest:(SDLAppS } - (void)setServiceID:(NSString *)serviceID { - [store sdl_setObject:serviceID forName:SDLRPCParameterNameServiceID]; + [self.store sdl_setObject:serviceID forName:SDLRPCParameterNameServiceID]; } - (NSString *)serviceID { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameServiceID ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameServiceID ofClass:NSString.class error:&error]; } - (void)setServiceManifest:(SDLAppServiceManifest *)serviceManifest { - [store sdl_setObject:serviceManifest forName:SDLRPCParameterNameServiceManifest]; + [self.store sdl_setObject:serviceManifest forName:SDLRPCParameterNameServiceManifest]; } - (SDLAppServiceManifest *)serviceManifest { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameServiceManifest ofClass:SDLAppServiceManifest.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameServiceManifest ofClass:SDLAppServiceManifest.class error:&error]; } - (void)setServicePublished:(NSNumber *)servicePublished { - [store sdl_setObject:servicePublished forName:SDLRPCParameterNameServicePublished]; + [self.store sdl_setObject:servicePublished forName:SDLRPCParameterNameServicePublished]; } - (NSNumber *)servicePublished { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameServicePublished ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameServicePublished ofClass:NSNumber.class error:&error]; } - (void)setServiceActive:(NSNumber *)serviceActive { - [store sdl_setObject:serviceActive forName:SDLRPCParameterNameServiceActive]; + [self.store sdl_setObject:serviceActive forName:SDLRPCParameterNameServiceActive]; } - (NSNumber *)serviceActive { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameServiceActive ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameServiceActive ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLAppServicesCapabilities.m b/SmartDeviceLink/SDLAppServicesCapabilities.m index f0d032c54..a31b5d400 100644 --- a/SmartDeviceLink/SDLAppServicesCapabilities.m +++ b/SmartDeviceLink/SDLAppServicesCapabilities.m @@ -28,11 +28,11 @@ - (instancetype)initWithAppServices:(nullable NSArray } - (void)setAppServices:(nullable NSArray *)appServices { - [store sdl_setObject:appServices forName:SDLRPCParameterNameAppServices]; + [self.store sdl_setObject:appServices forName:SDLRPCParameterNameAppServices]; } - (nullable NSArray *)appServices { - return [store sdl_objectsForName:SDLRPCParameterNameAppServices ofClass:SDLAppServiceCapability.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameAppServices ofClass:SDLAppServiceCapability.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLAsynchronousOperation.h b/SmartDeviceLink/SDLAsynchronousOperation.h index ad0697b2a..b7e0e0614 100644 --- a/SmartDeviceLink/SDLAsynchronousOperation.h +++ b/SmartDeviceLink/SDLAsynchronousOperation.h @@ -12,6 +12,7 @@ @property (copy, nonatomic, readonly, nullable) NSError *error; +- (void)start; - (void)finishOperation; @end diff --git a/SmartDeviceLink/SDLAudioControlCapabilities.m b/SmartDeviceLink/SDLAudioControlCapabilities.m index 9d22c4d94..ad204cc62 100644 --- a/SmartDeviceLink/SDLAudioControlCapabilities.m +++ b/SmartDeviceLink/SDLAudioControlCapabilities.m @@ -35,52 +35,52 @@ - (instancetype)initWithModuleName:(NSString *)name sourceAvailable:(nullable NS } - (void)setModuleName:(NSString *)moduleName { - [store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; + [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; } - (NSString *)moduleName { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; } - (void)setSourceAvailable:(nullable NSNumber *)sourceAvailable { - [store sdl_setObject:sourceAvailable forName:SDLRPCParameterNameSourceAvailable]; + [self.store sdl_setObject:sourceAvailable forName:SDLRPCParameterNameSourceAvailable]; } - (nullable NSNumber *)sourceAvailable { - return [store sdl_objectForName:SDLRPCParameterNameSourceAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSourceAvailable ofClass:NSNumber.class error:nil]; } - (void)setKeepContextAvailable:(nullable NSNumber *)keepContextAvailable { - [store sdl_setObject:keepContextAvailable forName:SDLRPCParameterNameKeepContextAvailable]; + [self.store sdl_setObject:keepContextAvailable forName:SDLRPCParameterNameKeepContextAvailable]; } - (nullable NSNumber *)keepContextAvailable { - return [store sdl_objectForName:SDLRPCParameterNameKeepContextAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameKeepContextAvailable ofClass:NSNumber.class error:nil]; } - (void)setVolumeAvailable:(nullable NSNumber *)volumeAvailable { - [store sdl_setObject:volumeAvailable forName:SDLRPCParameterNameVolumeAvailable]; + [self.store sdl_setObject:volumeAvailable forName:SDLRPCParameterNameVolumeAvailable]; } - (nullable NSNumber *)volumeAvailable { - return [store sdl_objectForName:SDLRPCParameterNameVolumeAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameVolumeAvailable ofClass:NSNumber.class error:nil]; } - (void)setEqualizerAvailable:(nullable NSNumber *)equalizerAvailable { - [store sdl_setObject:equalizerAvailable forName:SDLRPCParameterNameEqualizerAvailable]; + [self.store sdl_setObject:equalizerAvailable forName:SDLRPCParameterNameEqualizerAvailable]; } - (nullable NSNumber *)equalizerAvailable { - return [store sdl_objectForName:SDLRPCParameterNameEqualizerAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameEqualizerAvailable ofClass:NSNumber.class error:nil]; } - (void)setEqualizerMaxChannelId:(nullable NSNumber *)equalizerMaxChannelId { - [store sdl_setObject:equalizerMaxChannelId forName:SDLRPCParameterNameEqualizerMaxChannelId]; + [self.store sdl_setObject:equalizerMaxChannelId forName:SDLRPCParameterNameEqualizerMaxChannelId]; } - (nullable NSNumber *)equalizerMaxChannelId { - return [store sdl_objectForName:SDLRPCParameterNameEqualizerMaxChannelId ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameEqualizerMaxChannelId ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLAudioControlData.m b/SmartDeviceLink/SDLAudioControlData.m index b205aee71..67296c9ae 100644 --- a/SmartDeviceLink/SDLAudioControlData.m +++ b/SmartDeviceLink/SDLAudioControlData.m @@ -25,36 +25,36 @@ - (instancetype)initWithSource:(nullable SDLPrimaryAudioSource)source keepContex } - (void)setSource:(nullable SDLPrimaryAudioSource)source { - [store sdl_setObject:source forName:SDLRPCParameterNameSource]; + [self.store sdl_setObject:source forName:SDLRPCParameterNameSource]; } - (nullable SDLPrimaryAudioSource)source { - return [store sdl_enumForName:SDLRPCParameterNameSource error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameSource error:nil]; } - (void)setKeepContext:(nullable NSNumber *)keepContext { - [store sdl_setObject:keepContext forName:SDLRPCParameterNameKeepContext]; + [self.store sdl_setObject:keepContext forName:SDLRPCParameterNameKeepContext]; } - (nullable NSNumber *)keepContext { - return [store sdl_objectForName:SDLRPCParameterNameKeepContext ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameKeepContext ofClass:NSNumber.class error:nil]; } - (void)setVolume:(nullable NSNumber *)volume { - [store sdl_setObject:volume forName:SDLRPCParameterNameVolume]; + [self.store sdl_setObject:volume forName:SDLRPCParameterNameVolume]; } - (nullable NSNumber *)volume { - return [store sdl_objectForName:SDLRPCParameterNameVolume ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameVolume ofClass:NSNumber.class error:nil]; } - (void)setEqualizerSettings:(nullable NSArray *)equalizerSettings { - [store sdl_setObject:equalizerSettings forName:SDLRPCParameterNameEqualizerSettings]; + [self.store sdl_setObject:equalizerSettings forName:SDLRPCParameterNameEqualizerSettings]; } - (nullable NSArray *)equalizerSettings { - return [store sdl_objectsForName:SDLRPCParameterNameEqualizerSettings ofClass:SDLEqualizerSettings.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameEqualizerSettings ofClass:SDLEqualizerSettings.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLAudioFile.h b/SmartDeviceLink/SDLAudioFile.h index e34c37a8d..794c50cab 100755 --- a/SmartDeviceLink/SDLAudioFile.h +++ b/SmartDeviceLink/SDLAudioFile.h @@ -12,21 +12,49 @@ NS_ASSUME_NONNULL_BEGIN @interface SDLAudioFile : NSObject -@property (copy, nonatomic, readonly) NSURL *inputFileURL; +/** + If initialized with a file URL, the file URL it came from + */ +@property (nullable, copy, nonatomic, readonly) NSURL *inputFileURL; -@property (copy, nonatomic, readonly) NSURL *outputFileURL; +/** + If initialized with a file URL, where the transcoder should produce the transcoded PCM audio file + */ +@property (nullable, copy, nonatomic, readonly) NSURL *outputFileURL; /** In seconds. UINT32_MAX if unknown. */ @property (assign, nonatomic) UInt32 estimatedDuration; +/** + The PCM audio data to be transferred and played + */ @property (copy, nonatomic, readonly) NSData *data; +/** + The size of the PCM audio data in bytes + */ @property (assign, nonatomic, readonly) unsigned long long fileSize; +/** + Initialize an audio file to be queued and played + + @param inputURL The file that exists on the device to be transcoded and queued + @param outputURL The target URL that the transcoded file will be output to + @param duration The duration of the file + @return The audio file object + */ - (instancetype)initWithInputFileURL:(NSURL *)inputURL outputFileURL:(NSURL *)outputURL estimatedDuration:(UInt32)duration; +/** + Initialize a buffer of PCM audio data to be queued and played + + @param data The PCM audio data buffer + @return The audio file object + */ +- (instancetype)initWithData:(NSData *)data; + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLAudioFile.m b/SmartDeviceLink/SDLAudioFile.m index 1d0e2ef98..46b50f540 100755 --- a/SmartDeviceLink/SDLAudioFile.m +++ b/SmartDeviceLink/SDLAudioFile.m @@ -32,6 +32,15 @@ - (instancetype)initWithInputFileURL:(NSURL *)inputURL outputFileURL:(NSURL *)ou return self; } +- (instancetype)initWithData:(NSData *)data { + self = [super init]; + if (!self) { return nil; } + + _data = data; + + return self; +} + - (NSData *)data { if (_data.length == 0) { return [NSData dataWithContentsOfURL:_outputFileURL]; diff --git a/SmartDeviceLink/SDLAudioPassThruCapabilities.m b/SmartDeviceLink/SDLAudioPassThruCapabilities.m index 51c1e64bb..c84263a24 100644 --- a/SmartDeviceLink/SDLAudioPassThruCapabilities.m +++ b/SmartDeviceLink/SDLAudioPassThruCapabilities.m @@ -12,30 +12,30 @@ @implementation SDLAudioPassThruCapabilities - (void)setSamplingRate:(SDLSamplingRate)samplingRate { - [store sdl_setObject:samplingRate forName:SDLRPCParameterNameSamplingRate]; + [self.store sdl_setObject:samplingRate forName:SDLRPCParameterNameSamplingRate]; } - (SDLSamplingRate)samplingRate { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameSamplingRate error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameSamplingRate error:&error]; } - (void)setBitsPerSample:(SDLBitsPerSample)bitsPerSample { - [store sdl_setObject:bitsPerSample forName:SDLRPCParameterNameBitsPerSample]; + [self.store sdl_setObject:bitsPerSample forName:SDLRPCParameterNameBitsPerSample]; } - (SDLBitsPerSample)bitsPerSample { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameBitsPerSample error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameBitsPerSample error:&error]; } - (void)setAudioType:(SDLAudioType)audioType { - [store sdl_setObject:audioType forName:SDLRPCParameterNameAudioType]; + [self.store sdl_setObject:audioType forName:SDLRPCParameterNameAudioType]; } - (SDLAudioType)audioType { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameAudioType error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameAudioType error:&error]; } @end diff --git a/SmartDeviceLink/SDLAudioStreamManager.h b/SmartDeviceLink/SDLAudioStreamManager.h index e6608f8e1..b405cae5d 100755 --- a/SmartDeviceLink/SDLAudioStreamManager.h +++ b/SmartDeviceLink/SDLAudioStreamManager.h @@ -66,6 +66,22 @@ typedef NS_ENUM(NSInteger, SDLAudioStreamManagerError) { */ - (void)pushWithFileURL:(NSURL *)fileURL; +/** + Push a new audio buffer onto the queue. Call `playNextWhenReady` to start playing the pushed audio buffer. + + This data must be of the required PCM format. See SDLSystemCapabilityManager.pcmStreamCapability and SDLAudioPassThruCapability.h. + + This is *an example* of a PCM format used by some head units: + - audioType: PCM + - samplingRate: 16kHZ + - bitsPerSample: 16 bits + + There is generally only one channel to the data. + + @param data The audio buffer to be pushed onto the queue + */ +- (void)pushWithData:(NSData *)data; + /** Play the next item in the queue. If an item is currently playing, it will continue playing and this item will begin playing after it is completed. diff --git a/SmartDeviceLink/SDLAudioStreamManager.m b/SmartDeviceLink/SDLAudioStreamManager.m index 69312b0b5..ff16f2b16 100755 --- a/SmartDeviceLink/SDLAudioStreamManager.m +++ b/SmartDeviceLink/SDLAudioStreamManager.m @@ -46,10 +46,22 @@ - (instancetype)initWithManager:(id)streamManager return self; } +- (void)stop { + dispatch_async(_audioQueue, ^{ + self.shouldPlayWhenReady = NO; + [self.mutableQueue removeAllObjects]; + }); +} + +#pragma mark - Getters + - (NSArray *)queue { return [_mutableQueue copy]; } +#pragma mark - Pushing to the Queue +#pragma mark Files + - (void)pushWithFileURL:(NSURL *)fileURL { dispatch_async(_audioQueue, ^{ [self sdl_pushWithContentsOfURL:fileURL]; @@ -79,6 +91,21 @@ - (void)sdl_pushWithContentsOfURL:(NSURL *)fileURL { } } +#pragma mark Raw Data + +- (void)pushWithData:(NSData *)data { + dispatch_async(_audioQueue, ^{ + [self sdl_pushWithData:data]; + }); +} + +- (void)sdl_pushWithData:(NSData *)data { + SDLAudioFile *audioFile = [[SDLAudioFile alloc] initWithData:data]; + [self.mutableQueue addObject:audioFile]; +} + +#pragma mark Playing from the Queue + - (void)playNextWhenReady { dispatch_async(_audioQueue, ^{ [self sdl_playNextWhenReady]; @@ -104,34 +131,46 @@ - (void)sdl_playNextWhenReady { [self.mutableQueue removeObjectAtIndex:0]; // Strip the first bunch of bytes (because of how Apple outputs the data) and send to the audio stream, if we don't do this, it will make a weird click sound + NSData *audioData = nil; + if (file.inputFileURL != nil) { + audioData = [file.data subdataWithRange:NSMakeRange(5760, (file.data.length - 5760))]; + } else { + audioData = file.data; + } + + // Send the audio file, which starts it playing immediately SDLLogD(@"Playing audio file: %@", file); - NSData *audioData = [file.data subdataWithRange:NSMakeRange(5760, (file.data.length - 5760))]; __block BOOL success = [self.streamManager sendAudioData:audioData]; self.playing = YES; + // Determine the length of the audio PCM data and perform a few items once the audio has finished playing float audioLengthSecs = (float)audioData.length / (float)32000.0; __weak typeof(self) weakself = self; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(audioLengthSecs * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - weakself.playing = NO; + __strong typeof(weakself) strongSelf = weakself; + + strongSelf.playing = NO; NSError *error = nil; - if (weakself.delegate != nil) { - [weakself.delegate audioStreamManager:weakself fileDidFinishPlaying:file.inputFileURL successfully:success]; + if (strongSelf.delegate != nil) { + if (file.inputFileURL != nil) { + [strongSelf.delegate audioStreamManager:strongSelf fileDidFinishPlaying:file.inputFileURL successfully:success]; + } else if ([strongSelf.delegate respondsToSelector:@selector(audioStreamManager:dataBufferDidFinishPlayingSuccessfully:)]) { + [strongSelf.delegate audioStreamManager:strongSelf dataBufferDidFinishPlayingSuccessfully:success]; + } } + SDLLogD(@"Ending Audio file: %@", file); [[NSFileManager defaultManager] removeItemAtURL:file.outputFileURL error:&error]; - if (weakself.delegate != nil && error != nil) { - [weakself.delegate audioStreamManager:weakself errorDidOccurForFile:file.inputFileURL error:error]; + if (strongSelf.delegate != nil && error != nil) { + if (file.inputFileURL != nil) { + [strongSelf.delegate audioStreamManager:strongSelf errorDidOccurForFile:file.inputFileURL error:error]; + } else if ([strongSelf.delegate respondsToSelector:@selector(audioStreamManager:errorDidOccurForDataBuffer:)]) { + [strongSelf.delegate audioStreamManager:strongSelf errorDidOccurForDataBuffer:error]; + } } }); } -- (void)stop { - dispatch_async(_audioQueue, ^{ - self.shouldPlayWhenReady = NO; - [self.mutableQueue removeAllObjects]; - }); -} - @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLAudioStreamManagerDelegate.h b/SmartDeviceLink/SDLAudioStreamManagerDelegate.h index acad1472c..04235d95d 100755 --- a/SmartDeviceLink/SDLAudioStreamManagerDelegate.h +++ b/SmartDeviceLink/SDLAudioStreamManagerDelegate.h @@ -29,12 +29,30 @@ NS_ASSUME_NONNULL_BEGIN /** Called when a file from the SDLAudioStreamManager could not play - @param audioManager A reference to the audio stream manager + @param audioManager A reference to the audio stream manager @param fileURL The URL that failed @param error The error that occurred */ - (void)audioStreamManager:(SDLAudioStreamManager *)audioManager errorDidOccurForFile:(NSURL *)fileURL error:(NSError *)error; +@optional + +/** + Called when a data buffer from the SDLAudioStreamManager finishes playing + + @param audioManager A reference to the audio stream manager + @param successfully Whether or not the data buffer played successfully + */ +- (void)audioStreamManager:(SDLAudioStreamManager *)audioManager dataBufferDidFinishPlayingSuccessfully:(BOOL)successfully; + +/** + Called when a data buffer from the SDLAudioStreamManager could not play + + @param audioManager A reference to the audio stream manager + @param error The error that occurred + */ +- (void)audioStreamManager:(SDLAudioStreamManager *)audioManager errorDidOccurForDataBuffer:(NSError *)error; + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLBackgroundTaskManager.h b/SmartDeviceLink/SDLBackgroundTaskManager.h new file mode 100644 index 000000000..0732b6fda --- /dev/null +++ b/SmartDeviceLink/SDLBackgroundTaskManager.h @@ -0,0 +1,44 @@ +// +// SDLBackgroundTaskManager.h +// SmartDeviceLink +// +// Created by Nicole on 6/25/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * Class for managing a background task. + */ +@interface SDLBackgroundTaskManager : NSObject + +- (instancetype)init NS_UNAVAILABLE; + +/** + * Convenience init for starting a background task with a specific name. + * + * @param backgroundTaskName The name for the background task + * @return A SDLBackgroundTaskManager object + */ +- (instancetype)initWithBackgroundTaskName:(NSString *)backgroundTaskName; + +/** + * Starts a background task that allows the app to establish a session while app is backgrounded. If the app is not currently backgrounded, the background task will remain dormant until the app moves to the background. + */ +- (void)startBackgroundTask; + +/** + * Cleans up a background task when it is stopped. This should be called when: + * + * 1. The app has established a session. + * 2. The system has called the `expirationHandler` for the background task. The system may kill the app if the background task is not ended when `expirationHandler` is called. + */ +- (void)endBackgroundTask; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLBackgroundTaskManager.m b/SmartDeviceLink/SDLBackgroundTaskManager.m new file mode 100644 index 000000000..2109a40cd --- /dev/null +++ b/SmartDeviceLink/SDLBackgroundTaskManager.m @@ -0,0 +1,68 @@ +// +// SDLBackgroundTaskManager.m +// SmartDeviceLink +// +// Created by Nicole on 6/25/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "SDLBackgroundTaskManager.h" + +#import "SDLLogMacros.h" + + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLBackgroundTaskManager () +@property (copy, nonatomic) NSString *backgroundTaskName; +@property (assign, nonatomic) UIBackgroundTaskIdentifier currentBackgroundTaskId; + +@end + +@implementation SDLBackgroundTaskManager + +- (instancetype)initWithBackgroundTaskName:(NSString *)backgroundTaskName { + SDLLogV(@"SDLBackgroundTaskManager init with name %@", backgroundTaskName); + self = [super init]; + if (!self) { + return nil; + } + + _backgroundTaskName = backgroundTaskName; + + return self; +} + +- (void)startBackgroundTask { + if (self.currentBackgroundTaskId != UIBackgroundTaskInvalid) { + SDLLogV(@"The %@ background task is already running.", self.backgroundTaskName); + return; + } + + __weak typeof(self) weakself = self; + self.currentBackgroundTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithName:self.backgroundTaskName expirationHandler:^{ + SDLLogD(@"The %@ background task expired", self.backgroundTaskName); + [weakself endBackgroundTask]; + }]; + + SDLLogD(@"The %@ background task started with id: %lu", self.backgroundTaskName, (unsigned long)self.currentBackgroundTaskId); +} + +- (void)endBackgroundTask { + if (self.currentBackgroundTaskId == UIBackgroundTaskInvalid) { + SDLLogV(@"Background task already ended. Returning..."); + return; + } + + SDLLogD(@"Ending background task with id: %lu", (unsigned long)self.currentBackgroundTaskId); + [[UIApplication sharedApplication] endBackgroundTask:self.currentBackgroundTaskId]; + self.currentBackgroundTaskId = UIBackgroundTaskInvalid; +} + +- (void)dealloc { + [self endBackgroundTask]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLBeltStatus.m b/SmartDeviceLink/SDLBeltStatus.m index 1432b9453..89a5271e3 100644 --- a/SmartDeviceLink/SDLBeltStatus.m +++ b/SmartDeviceLink/SDLBeltStatus.m @@ -12,138 +12,138 @@ @implementation SDLBeltStatus - (void)setDriverBeltDeployed:(SDLVehicleDataEventStatus)driverBeltDeployed { - [store sdl_setObject:driverBeltDeployed forName:SDLRPCParameterNameDriverBeltDeployed]; + [self.store sdl_setObject:driverBeltDeployed forName:SDLRPCParameterNameDriverBeltDeployed]; } - (SDLVehicleDataEventStatus)driverBeltDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameDriverBeltDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameDriverBeltDeployed error:&error]; } - (void)setPassengerBeltDeployed:(SDLVehicleDataEventStatus)passengerBeltDeployed { - [store sdl_setObject:passengerBeltDeployed forName:SDLRPCParameterNamePassengerBeltDeployed]; + [self.store sdl_setObject:passengerBeltDeployed forName:SDLRPCParameterNamePassengerBeltDeployed]; } - (SDLVehicleDataEventStatus)passengerBeltDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePassengerBeltDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePassengerBeltDeployed error:&error]; } - (void)setPassengerBuckleBelted:(SDLVehicleDataEventStatus)passengerBuckleBelted { - [store sdl_setObject:passengerBuckleBelted forName:SDLRPCParameterNamePassengerBuckleBelted]; + [self.store sdl_setObject:passengerBuckleBelted forName:SDLRPCParameterNamePassengerBuckleBelted]; } - (SDLVehicleDataEventStatus)passengerBuckleBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePassengerBuckleBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePassengerBuckleBelted error:&error]; } - (void)setDriverBuckleBelted:(SDLVehicleDataEventStatus)driverBuckleBelted { - [store sdl_setObject:driverBuckleBelted forName:SDLRPCParameterNameDriverBuckleBelted]; + [self.store sdl_setObject:driverBuckleBelted forName:SDLRPCParameterNameDriverBuckleBelted]; } - (SDLVehicleDataEventStatus)driverBuckleBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameDriverBuckleBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameDriverBuckleBelted error:&error]; } - (void)setLeftRow2BuckleBelted:(SDLVehicleDataEventStatus)leftRow2BuckleBelted { - [store sdl_setObject:leftRow2BuckleBelted forName:SDLRPCParameterNameLeftRow2BuckleBelted]; + [self.store sdl_setObject:leftRow2BuckleBelted forName:SDLRPCParameterNameLeftRow2BuckleBelted]; } - (SDLVehicleDataEventStatus)leftRow2BuckleBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameLeftRow2BuckleBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameLeftRow2BuckleBelted error:&error]; } - (void)setPassengerChildDetected:(SDLVehicleDataEventStatus)passengerChildDetected { - [store sdl_setObject:passengerChildDetected forName:SDLRPCParameterNamePassengerChildDetected]; + [self.store sdl_setObject:passengerChildDetected forName:SDLRPCParameterNamePassengerChildDetected]; } - (SDLVehicleDataEventStatus)passengerChildDetected { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePassengerChildDetected error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePassengerChildDetected error:&error]; } - (void)setRightRow2BuckleBelted:(SDLVehicleDataEventStatus)rightRow2BuckleBelted { - [store sdl_setObject:rightRow2BuckleBelted forName:SDLRPCParameterNameRightRow2BuckleBelted]; + [self.store sdl_setObject:rightRow2BuckleBelted forName:SDLRPCParameterNameRightRow2BuckleBelted]; } - (SDLVehicleDataEventStatus)rightRow2BuckleBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameRightRow2BuckleBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameRightRow2BuckleBelted error:&error]; } - (void)setMiddleRow2BuckleBelted:(SDLVehicleDataEventStatus)middleRow2BuckleBelted { - [store sdl_setObject:middleRow2BuckleBelted forName:SDLRPCParameterNameMiddleRow2BuckleBelted]; + [self.store sdl_setObject:middleRow2BuckleBelted forName:SDLRPCParameterNameMiddleRow2BuckleBelted]; } - (SDLVehicleDataEventStatus)middleRow2BuckleBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameMiddleRow2BuckleBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameMiddleRow2BuckleBelted error:&error]; } - (void)setMiddleRow3BuckleBelted:(SDLVehicleDataEventStatus)middleRow3BuckleBelted { - [store sdl_setObject:middleRow3BuckleBelted forName:SDLRPCParameterNameMiddleRow3BuckleBelted]; + [self.store sdl_setObject:middleRow3BuckleBelted forName:SDLRPCParameterNameMiddleRow3BuckleBelted]; } - (SDLVehicleDataEventStatus)middleRow3BuckleBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameMiddleRow3BuckleBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameMiddleRow3BuckleBelted error:&error]; } - (void)setLeftRow3BuckleBelted:(SDLVehicleDataEventStatus)leftRow3BuckleBelted { - [store sdl_setObject:leftRow3BuckleBelted forName:SDLRPCParameterNameLeftRow3BuckleBelted]; + [self.store sdl_setObject:leftRow3BuckleBelted forName:SDLRPCParameterNameLeftRow3BuckleBelted]; } - (SDLVehicleDataEventStatus)leftRow3BuckleBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameLeftRow3BuckleBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameLeftRow3BuckleBelted error:&error]; } - (void)setRightRow3BuckleBelted:(SDLVehicleDataEventStatus)rightRow3BuckleBelted { - [store sdl_setObject:rightRow3BuckleBelted forName:SDLRPCParameterNameRightRow3BuckleBelted]; + [self.store sdl_setObject:rightRow3BuckleBelted forName:SDLRPCParameterNameRightRow3BuckleBelted]; } - (SDLVehicleDataEventStatus)rightRow3BuckleBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameRightRow3BuckleBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameRightRow3BuckleBelted error:&error]; } - (void)setLeftRearInflatableBelted:(SDLVehicleDataEventStatus)leftRearInflatableBelted { - [store sdl_setObject:leftRearInflatableBelted forName:SDLRPCParameterNameLeftRearInflatableBelted]; + [self.store sdl_setObject:leftRearInflatableBelted forName:SDLRPCParameterNameLeftRearInflatableBelted]; } - (SDLVehicleDataEventStatus)leftRearInflatableBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameLeftRearInflatableBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameLeftRearInflatableBelted error:&error]; } - (void)setRightRearInflatableBelted:(SDLVehicleDataEventStatus)rightRearInflatableBelted { - [store sdl_setObject:rightRearInflatableBelted forName:SDLRPCParameterNameRightRearInflatableBelted]; + [self.store sdl_setObject:rightRearInflatableBelted forName:SDLRPCParameterNameRightRearInflatableBelted]; } - (SDLVehicleDataEventStatus)rightRearInflatableBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameRightRearInflatableBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameRightRearInflatableBelted error:&error]; } - (void)setMiddleRow1BeltDeployed:(SDLVehicleDataEventStatus)middleRow1BeltDeployed { - [store sdl_setObject:middleRow1BeltDeployed forName:SDLRPCParameterNameMiddleRow1BeltDeployed]; + [self.store sdl_setObject:middleRow1BeltDeployed forName:SDLRPCParameterNameMiddleRow1BeltDeployed]; } - (SDLVehicleDataEventStatus)middleRow1BeltDeployed { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameMiddleRow1BeltDeployed error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameMiddleRow1BeltDeployed error:&error]; } - (void)setMiddleRow1BuckleBelted:(SDLVehicleDataEventStatus)middleRow1BuckleBelted { - [store sdl_setObject:middleRow1BuckleBelted forName:SDLRPCParameterNameMiddleRow1BuckleBelted]; + [self.store sdl_setObject:middleRow1BuckleBelted forName:SDLRPCParameterNameMiddleRow1BuckleBelted]; } - (SDLVehicleDataEventStatus)middleRow1BuckleBelted { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameMiddleRow1BuckleBelted error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameMiddleRow1BuckleBelted error:&error]; } @end diff --git a/SmartDeviceLink/SDLBodyInformation.m b/SmartDeviceLink/SDLBodyInformation.m index 5591998a3..fe8aa8b29 100644 --- a/SmartDeviceLink/SDLBodyInformation.m +++ b/SmartDeviceLink/SDLBodyInformation.m @@ -14,62 +14,62 @@ @implementation SDLBodyInformation - (void)setParkBrakeActive:(NSNumber *)parkBrakeActive { - [store sdl_setObject:parkBrakeActive forName:SDLRPCParameterNameParkBrakeActive]; + [self.store sdl_setObject:parkBrakeActive forName:SDLRPCParameterNameParkBrakeActive]; } - (NSNumber *)parkBrakeActive { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameParkBrakeActive ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameParkBrakeActive ofClass:NSNumber.class error:&error]; } - (void)setIgnitionStableStatus:(SDLIgnitionStableStatus)ignitionStableStatus { - [store sdl_setObject:ignitionStableStatus forName:SDLRPCParameterNameIgnitionStableStatus]; + [self.store sdl_setObject:ignitionStableStatus forName:SDLRPCParameterNameIgnitionStableStatus]; } - (SDLIgnitionStableStatus)ignitionStableStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameIgnitionStableStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameIgnitionStableStatus error:&error]; } - (void)setIgnitionStatus:(SDLIgnitionStatus)ignitionStatus { - [store sdl_setObject:ignitionStatus forName:SDLRPCParameterNameIgnitionStatus]; + [self.store sdl_setObject:ignitionStatus forName:SDLRPCParameterNameIgnitionStatus]; } - (SDLIgnitionStatus)ignitionStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameIgnitionStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameIgnitionStatus error:&error]; } - (void)setDriverDoorAjar:(nullable NSNumber *)driverDoorAjar { - [store sdl_setObject:driverDoorAjar forName:SDLRPCParameterNameDriverDoorAjar]; + [self.store sdl_setObject:driverDoorAjar forName:SDLRPCParameterNameDriverDoorAjar]; } - (nullable NSNumber *)driverDoorAjar { - return [store sdl_objectForName:SDLRPCParameterNameDriverDoorAjar ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDriverDoorAjar ofClass:NSNumber.class error:nil]; } - (void)setPassengerDoorAjar:(nullable NSNumber *)passengerDoorAjar { - [store sdl_setObject:passengerDoorAjar forName:SDLRPCParameterNamePassengerDoorAjar]; + [self.store sdl_setObject:passengerDoorAjar forName:SDLRPCParameterNamePassengerDoorAjar]; } - (nullable NSNumber *)passengerDoorAjar { - return [store sdl_objectForName:SDLRPCParameterNamePassengerDoorAjar ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePassengerDoorAjar ofClass:NSNumber.class error:nil]; } - (void)setRearLeftDoorAjar:(nullable NSNumber *)rearLeftDoorAjar { - [store sdl_setObject:rearLeftDoorAjar forName:SDLRPCParameterNameRearLeftDoorAjar]; + [self.store sdl_setObject:rearLeftDoorAjar forName:SDLRPCParameterNameRearLeftDoorAjar]; } - (nullable NSNumber *)rearLeftDoorAjar { - return [store sdl_objectForName:SDLRPCParameterNameRearLeftDoorAjar ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRearLeftDoorAjar ofClass:NSNumber.class error:nil]; } - (void)setRearRightDoorAjar:(nullable NSNumber *)rearRightDoorAjar { - [store sdl_setObject:rearRightDoorAjar forName:SDLRPCParameterNameRearRightDoorAjar]; + [self.store sdl_setObject:rearRightDoorAjar forName:SDLRPCParameterNameRearRightDoorAjar]; } - (nullable NSNumber *)rearRightDoorAjar { - return [store sdl_objectForName:SDLRPCParameterNameRearRightDoorAjar ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRearRightDoorAjar ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLButtonCapabilities.m b/SmartDeviceLink/SDLButtonCapabilities.m index 79fbc3fdf..12cd24847 100644 --- a/SmartDeviceLink/SDLButtonCapabilities.m +++ b/SmartDeviceLink/SDLButtonCapabilities.m @@ -11,39 +11,39 @@ @implementation SDLButtonCapabilities - (void)setName:(SDLButtonName)name { - [store sdl_setObject:name forName:SDLRPCParameterNameName]; + [self.store sdl_setObject:name forName:SDLRPCParameterNameName]; } - (SDLButtonName)name { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameName error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameName error:&error]; } - (void)setShortPressAvailable:(NSNumber *)shortPressAvailable { - [store sdl_setObject:shortPressAvailable forName:SDLRPCParameterNameShortPressAvailable]; + [self.store sdl_setObject:shortPressAvailable forName:SDLRPCParameterNameShortPressAvailable]; } - (NSNumber *)shortPressAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameShortPressAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameShortPressAvailable ofClass:NSNumber.class error:&error]; } - (void)setLongPressAvailable:(NSNumber *)longPressAvailable { - [store sdl_setObject:longPressAvailable forName:SDLRPCParameterNameLongPressAvailable]; + [self.store sdl_setObject:longPressAvailable forName:SDLRPCParameterNameLongPressAvailable]; } - (NSNumber *)longPressAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLongPressAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLongPressAvailable ofClass:NSNumber.class error:&error]; } - (void)setUpDownAvailable:(NSNumber *)upDownAvailable { - [store sdl_setObject:upDownAvailable forName:SDLRPCParameterNameUpDownAvailable]; + [self.store sdl_setObject:upDownAvailable forName:SDLRPCParameterNameUpDownAvailable]; } - (NSNumber *)upDownAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameUpDownAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameUpDownAvailable ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLButtonPress.m b/SmartDeviceLink/SDLButtonPress.m index 7823edbe2..f79152830 100644 --- a/SmartDeviceLink/SDLButtonPress.m +++ b/SmartDeviceLink/SDLButtonPress.m @@ -11,11 +11,14 @@ @implementation SDLButtonPress +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameButtonPress]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithButtonName:(SDLButtonName) buttonName moduleType:(SDLModuleType) moduleType { self = [self init]; @@ -30,30 +33,30 @@ - (instancetype)initWithButtonName:(SDLButtonName) buttonName moduleType:(SDLMod } - (void)setModuleType:(SDLModuleType)moduleType { - [parameters sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType]; + [self.parameters sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType]; } - (SDLModuleType)moduleType { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameModuleType error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameModuleType error:&error]; } - (void)setButtonName:(SDLButtonName)buttonName { - [parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; + [self.parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; } - (SDLButtonName)buttonName { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; } - (void)setButtonPressMode:(SDLButtonPressMode)buttonPressMode { - [parameters sdl_setObject:buttonPressMode forName:SDLRPCParameterNameButtonPressMode]; + [self.parameters sdl_setObject:buttonPressMode forName:SDLRPCParameterNameButtonPressMode]; } - (SDLButtonPressMode)buttonPressMode { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameButtonPressMode error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonPressMode error:&error]; } @end diff --git a/SmartDeviceLink/SDLButtonPressResponse.m b/SmartDeviceLink/SDLButtonPressResponse.m index 6b0beb802..0dde4c52e 100644 --- a/SmartDeviceLink/SDLButtonPressResponse.m +++ b/SmartDeviceLink/SDLButtonPressResponse.m @@ -10,11 +10,14 @@ @implementation SDLButtonPressResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameButtonPress]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLChangeRegistration.m b/SmartDeviceLink/SDLChangeRegistration.m index 828653a39..87a14cb9d 100644 --- a/SmartDeviceLink/SDLChangeRegistration.m +++ b/SmartDeviceLink/SDLChangeRegistration.m @@ -13,11 +13,14 @@ @implementation SDLChangeRegistration +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameChangeRegistration]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithLanguage:(SDLLanguage)language hmiDisplayLanguage:(SDLLanguage)hmiDisplayLanguage { self = [self initWithLanguage:language hmiDisplayLanguage:hmiDisplayLanguage appName:nil ttsName:nil ngnMediaScreenAppName:nil vrSynonyms:nil]; @@ -45,53 +48,53 @@ - (instancetype)initWithLanguage:(SDLLanguage)language hmiDisplayLanguage:(SDLLa } - (void)setLanguage:(SDLLanguage)language { - [parameters sdl_setObject:language forName:SDLRPCParameterNameLanguage]; + [self.parameters sdl_setObject:language forName:SDLRPCParameterNameLanguage]; } - (SDLLanguage)language { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameLanguage error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameLanguage error:&error]; } - (void)setHmiDisplayLanguage:(SDLLanguage )hmiDisplayLanguage { - [parameters sdl_setObject:hmiDisplayLanguage forName:SDLRPCParameterNameHMIDisplayLanguage]; + [self.parameters sdl_setObject:hmiDisplayLanguage forName:SDLRPCParameterNameHMIDisplayLanguage]; } - (SDLLanguage)hmiDisplayLanguage { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguage error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguage error:&error]; } - (void)setAppName:(nullable NSString *)appName { - [parameters sdl_setObject:appName forName:SDLRPCParameterNameAppName]; + [self.parameters sdl_setObject:appName forName:SDLRPCParameterNameAppName]; } - (nullable NSString *)appName { - return [[parameters sdl_objectForName:SDLRPCParameterNameAppName ofClass:NSString.class error:nil] copy]; + return [[self.parameters sdl_objectForName:SDLRPCParameterNameAppName ofClass:NSString.class error:nil] copy]; } - (void)setTtsName:(nullable NSArray *)ttsName { - [parameters sdl_setObject:ttsName forName:SDLRPCParameterNameTTSName]; + [self.parameters sdl_setObject:ttsName forName:SDLRPCParameterNameTTSName]; } - (nullable NSArray *)ttsName { - return [parameters sdl_objectsForName:SDLRPCParameterNameTTSName ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSName ofClass:SDLTTSChunk.class error:nil]; } - (void)setNgnMediaScreenAppName:(nullable NSString *)ngnMediaScreenAppName { - [parameters sdl_setObject:ngnMediaScreenAppName forName:SDLRPCParameterNameNGNMediaScreenAppName]; + [self.parameters sdl_setObject:ngnMediaScreenAppName forName:SDLRPCParameterNameNGNMediaScreenAppName]; } - (nullable NSString *)ngnMediaScreenAppName { - return [parameters sdl_objectForName:SDLRPCParameterNameNGNMediaScreenAppName ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameNGNMediaScreenAppName ofClass:NSString.class error:nil]; } - (void)setVrSynonyms:(nullable NSArray *)vrSynonyms { - [parameters sdl_setObject:vrSynonyms forName:SDLRPCParameterNameVRSynonyms]; + [self.parameters sdl_setObject:vrSynonyms forName:SDLRPCParameterNameVRSynonyms]; } - (nullable NSArray *)vrSynonyms { - return [parameters sdl_objectsForName:SDLRPCParameterNameVRSynonyms ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRSynonyms ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLChangeRegistrationResponse.m b/SmartDeviceLink/SDLChangeRegistrationResponse.m index 0765ffb00..a40493503 100644 --- a/SmartDeviceLink/SDLChangeRegistrationResponse.m +++ b/SmartDeviceLink/SDLChangeRegistrationResponse.m @@ -12,11 +12,14 @@ @implementation SDLChangeRegistrationResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameChangeRegistration]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLChoice.m b/SmartDeviceLink/SDLChoice.m index 0734c2a66..e384ddf86 100644 --- a/SmartDeviceLink/SDLChoice.m +++ b/SmartDeviceLink/SDLChoice.m @@ -39,61 +39,61 @@ - (instancetype)initWithId:(UInt16)choiceId menuName:(NSString *)menuName vrComm } - (void)setChoiceID:(NSNumber *)choiceID { - [store sdl_setObject:choiceID forName:SDLRPCParameterNameChoiceId]; + [self.store sdl_setObject:choiceID forName:SDLRPCParameterNameChoiceId]; } - (NSNumber *)choiceID { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameChoiceId ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameChoiceId ofClass:NSNumber.class error:&error]; } - (void)setMenuName:(NSString *)menuName { - [store sdl_setObject:menuName forName:SDLRPCParameterNameMenuName]; + [self.store sdl_setObject:menuName forName:SDLRPCParameterNameMenuName]; } - (NSString *)menuName { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:&error]; } - (void)setVrCommands:(nullable NSArray *)vrCommands { - [store sdl_setObject:vrCommands forName:SDLRPCParameterNameVRCommands]; + [self.store sdl_setObject:vrCommands forName:SDLRPCParameterNameVRCommands]; } - (nullable NSArray *)vrCommands { - return [store sdl_objectsForName:SDLRPCParameterNameVRCommands ofClass:NSString.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameVRCommands ofClass:NSString.class error:nil]; } - (void)setImage:(nullable SDLImage *)image { - [store sdl_setObject:image forName:SDLRPCParameterNameImage]; + [self.store sdl_setObject:image forName:SDLRPCParameterNameImage]; } - (nullable SDLImage *)image { - return [store sdl_objectForName:SDLRPCParameterNameImage ofClass:SDLImage.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameImage ofClass:SDLImage.class error:nil]; } - (void)setSecondaryText:(nullable NSString *)secondaryText { - [store sdl_setObject:secondaryText forName:SDLRPCParameterNameSecondaryText]; + [self.store sdl_setObject:secondaryText forName:SDLRPCParameterNameSecondaryText]; } - (nullable NSString *)secondaryText { - return [store sdl_objectForName:SDLRPCParameterNameSecondaryText ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSecondaryText ofClass:NSString.class error:nil]; } - (void)setTertiaryText:(nullable NSString *)tertiaryText { - [store sdl_setObject:tertiaryText forName:SDLRPCParameterNameTertiaryText]; + [self.store sdl_setObject:tertiaryText forName:SDLRPCParameterNameTertiaryText]; } - (nullable NSString *)tertiaryText { - return [store sdl_objectForName:SDLRPCParameterNameTertiaryText ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTertiaryText ofClass:NSString.class error:nil]; } - (void)setSecondaryImage:(nullable SDLImage *)secondaryImage { - [store sdl_setObject:secondaryImage forName:SDLRPCParameterNameSecondaryImage]; + [self.store sdl_setObject:secondaryImage forName:SDLRPCParameterNameSecondaryImage]; } - (nullable SDLImage *)secondaryImage { - return [store sdl_objectForName:SDLRPCParameterNameSecondaryImage ofClass:SDLImage.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSecondaryImage ofClass:SDLImage.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLChoiceSet.m b/SmartDeviceLink/SDLChoiceSet.m index da58749b4..0892e611d 100644 --- a/SmartDeviceLink/SDLChoiceSet.m +++ b/SmartDeviceLink/SDLChoiceSet.m @@ -57,7 +57,7 @@ - (instancetype)initWithTitle:(NSString *)title delegate:(id 500) { - SDLLogW(@"Attempted to create a choice set with a %lu length. Only 500 characters are supported", (unsigned long)title.length); + SDLLogW(@"Attempted to create a choice set title with a %lu length. Only 500 characters are supported", (unsigned long)title.length); return nil; } @@ -123,6 +123,14 @@ + (void)setDefaultLayout:(SDLChoiceSetLayout)defaultLayout { _defaultLayout = defaultLayout; } +- (void)setHelpList:(nullable NSArray *)helpList { + _helpList = helpList; + + for (NSUInteger i = 0; i < _helpList.count; i++) { + _helpList[i].position = @(i + 1); + } +} + #pragma mark - Etc. - (NSString *)description { diff --git a/SmartDeviceLink/SDLChoiceSetManager.m b/SmartDeviceLink/SDLChoiceSetManager.m index 21dff1cc5..037878fc5 100644 --- a/SmartDeviceLink/SDLChoiceSetManager.m +++ b/SmartDeviceLink/SDLChoiceSetManager.m @@ -183,7 +183,13 @@ - (void)didEnterStateStartupError { #pragma mark Upload / Delete - (void)preloadChoices:(NSArray *)choices withCompletionHandler:(nullable SDLPreloadChoiceCompletionHandler)handler { - if (![self.currentState isEqualToString:SDLChoiceManagerStateReady]) { return; } + if ([self.currentState isEqualToString:SDLChoiceManagerStateShutdown]) { + if (handler != nil) { + NSError *error = [NSError sdl_choiceSetManager_incorrectState:self.currentState]; + handler(error); + } + return; + } NSMutableSet *choicesToUpload = [[self sdl_choicesToBeUploadedWithArray:choices] mutableCopy]; [choicesToUpload minusSet:self.preloadedMutableChoices]; @@ -372,7 +378,7 @@ - (void)sdl_findIdsOnChoices:(NSSet *)choices { } } -#pragma mark - Setters +#pragma mark - Keyboard Configuration - (void)setKeyboardConfiguration:(nullable SDLKeyboardProperties *)keyboardConfiguration { if (keyboardConfiguration == nil) { diff --git a/SmartDeviceLink/SDLClimateControlCapabilities.m b/SmartDeviceLink/SDLClimateControlCapabilities.m index e34c8405f..e2e488a94 100644 --- a/SmartDeviceLink/SDLClimateControlCapabilities.m +++ b/SmartDeviceLink/SDLClimateControlCapabilities.m @@ -39,132 +39,132 @@ - (instancetype)initWithModuleName:(NSString *)moduleName fanSpeedAvailable:(BOO } - (void)setModuleName:(NSString *)moduleName { - [store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; + [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; } - (NSString *)moduleName { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; } - (void)setFanSpeedAvailable:(nullable NSNumber *)fanSpeedAvailable { - [store sdl_setObject:fanSpeedAvailable forName:SDLRPCParameterNameFanSpeedAvailable]; + [self.store sdl_setObject:fanSpeedAvailable forName:SDLRPCParameterNameFanSpeedAvailable]; } - (nullable NSNumber *)fanSpeedAvailable { - return [store sdl_objectForName:SDLRPCParameterNameFanSpeedAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameFanSpeedAvailable ofClass:NSNumber.class error:nil]; } - (void)setDesiredTemperatureAvailable:(nullable NSNumber *)desiredTemperatureAvailable { - [store sdl_setObject:desiredTemperatureAvailable forName:SDLRPCParameterNameDesiredTemperatureAvailable]; + [self.store sdl_setObject:desiredTemperatureAvailable forName:SDLRPCParameterNameDesiredTemperatureAvailable]; } - (nullable NSNumber *)desiredTemperatureAvailable { - return [store sdl_objectForName:SDLRPCParameterNameDesiredTemperatureAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDesiredTemperatureAvailable ofClass:NSNumber.class error:nil]; } - (void)setAcEnableAvailable:(nullable NSNumber *)acEnableAvailable { - [store sdl_setObject:acEnableAvailable forName:SDLRPCParameterNameACEnableAvailable]; + [self.store sdl_setObject:acEnableAvailable forName:SDLRPCParameterNameACEnableAvailable]; } - (nullable NSNumber *)acEnableAvailable { - return [store sdl_objectForName:SDLRPCParameterNameACEnableAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameACEnableAvailable ofClass:NSNumber.class error:nil]; } - (void)setAcMaxEnableAvailable:(nullable NSNumber *)acMaxEnableAvailable { - [store sdl_setObject:acMaxEnableAvailable forName:SDLRPCParameterNameACMaxEnableAvailable]; + [self.store sdl_setObject:acMaxEnableAvailable forName:SDLRPCParameterNameACMaxEnableAvailable]; } - (nullable NSNumber *)acMaxEnableAvailable { - return [store sdl_objectForName:SDLRPCParameterNameACMaxEnableAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameACMaxEnableAvailable ofClass:NSNumber.class error:nil]; } - (void)setCirculateAirEnableAvailable:(nullable NSNumber *)circulateAirEnableAvailable { - [store sdl_setObject:circulateAirEnableAvailable forName:SDLRPCParameterNameCirculateAirEnableAvailable]; + [self.store sdl_setObject:circulateAirEnableAvailable forName:SDLRPCParameterNameCirculateAirEnableAvailable]; } - (nullable NSNumber *)circulateAirEnableAvailable { - return [store sdl_objectForName:SDLRPCParameterNameCirculateAirEnableAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCirculateAirEnableAvailable ofClass:NSNumber.class error:nil]; } - (void)setAutoModeEnableAvailable:(nullable NSNumber *)autoModeEnableAvailable { - [store sdl_setObject:autoModeEnableAvailable forName:SDLRPCParameterNameAutoModeEnableAvailable]; + [self.store sdl_setObject:autoModeEnableAvailable forName:SDLRPCParameterNameAutoModeEnableAvailable]; } - (nullable NSNumber *)autoModeEnableAvailable { - return [store sdl_objectForName:SDLRPCParameterNameAutoModeEnableAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAutoModeEnableAvailable ofClass:NSNumber.class error:nil]; } - (void)setDualModeEnableAvailable:(nullable NSNumber *)dualModeEnableAvailable { - [store sdl_setObject:dualModeEnableAvailable forName:SDLRPCParameterNameDualModeEnableAvailable]; + [self.store sdl_setObject:dualModeEnableAvailable forName:SDLRPCParameterNameDualModeEnableAvailable]; } - (nullable NSNumber *)dualModeEnableAvailable { - return [store sdl_objectForName:SDLRPCParameterNameDualModeEnableAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDualModeEnableAvailable ofClass:NSNumber.class error:nil]; } - (void)setDefrostZoneAvailable:(nullable NSNumber *)defrostZoneAvailable { - [store sdl_setObject:defrostZoneAvailable forName:SDLRPCParameterNameDefrostZoneAvailable]; + [self.store sdl_setObject:defrostZoneAvailable forName:SDLRPCParameterNameDefrostZoneAvailable]; } - (nullable NSNumber *)defrostZoneAvailable { - return [store sdl_objectForName:SDLRPCParameterNameDefrostZoneAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDefrostZoneAvailable ofClass:NSNumber.class error:nil]; } - (void)setDefrostZone:(nullable NSArray *)defrostZone { - [store sdl_setObject:defrostZone forName:SDLRPCParameterNameDefrostZone]; + [self.store sdl_setObject:defrostZone forName:SDLRPCParameterNameDefrostZone]; } - (nullable NSArray *)defrostZone { - return [store sdl_enumsForName:SDLRPCParameterNameDefrostZone error:nil]; + return [self.store sdl_enumsForName:SDLRPCParameterNameDefrostZone error:nil]; } - (void)setVentilationModeAvailable:(nullable NSNumber *)ventilationModeAvailable { - [store sdl_setObject:ventilationModeAvailable forName:SDLRPCParameterNameVentilationModeAvailable]; + [self.store sdl_setObject:ventilationModeAvailable forName:SDLRPCParameterNameVentilationModeAvailable]; } - (nullable NSNumber *)ventilationModeAvailable { - return [store sdl_objectForName:SDLRPCParameterNameVentilationModeAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameVentilationModeAvailable ofClass:NSNumber.class error:nil]; } - (void)setVentilationMode:(nullable NSArray *)ventilationMode { - [store sdl_setObject:ventilationMode forName:SDLRPCParameterNameVentilationMode]; + [self.store sdl_setObject:ventilationMode forName:SDLRPCParameterNameVentilationMode]; } - (nullable NSArray *)ventilationMode { - return [store sdl_enumsForName:SDLRPCParameterNameVentilationMode error:nil]; + return [self.store sdl_enumsForName:SDLRPCParameterNameVentilationMode error:nil]; } - (void)setHeatedSteeringWheelAvailable:(nullable NSNumber *)heatedSteeringWheelAvailable { - [store sdl_setObject:heatedSteeringWheelAvailable forName:SDLRPCParameterNameHeatedSteeringWheelAvailable]; + [self.store sdl_setObject:heatedSteeringWheelAvailable forName:SDLRPCParameterNameHeatedSteeringWheelAvailable]; } - (nullable NSNumber *)heatedSteeringWheelAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHeatedSteeringWheelAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatedSteeringWheelAvailable ofClass:NSNumber.class error:nil]; } - (void)setHeatedWindshieldAvailable:(nullable NSNumber *)heatedWindshieldAvailable { - [store sdl_setObject:heatedWindshieldAvailable forName:SDLRPCParameterNameHeatedWindshieldAvailable]; + [self.store sdl_setObject:heatedWindshieldAvailable forName:SDLRPCParameterNameHeatedWindshieldAvailable]; } - (nullable NSNumber *)heatedWindshieldAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHeatedWindshieldAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatedWindshieldAvailable ofClass:NSNumber.class error:nil]; } - (void)setHeatedRearWindowAvailable:(nullable NSNumber *)heatedRearWindowAvailable { - [store sdl_setObject:heatedRearWindowAvailable forName:SDLRPCParameterNameHeatedRearWindowAvailable]; + [self.store sdl_setObject:heatedRearWindowAvailable forName:SDLRPCParameterNameHeatedRearWindowAvailable]; } - (nullable NSNumber *)heatedRearWindowAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHeatedRearWindowAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatedRearWindowAvailable ofClass:NSNumber.class error:nil]; } - (void)setHeatedMirrorsAvailable:(nullable NSNumber *)heatedMirrorsAvailable { - [store sdl_setObject:heatedMirrorsAvailable forName:SDLRPCParameterNameHeatedMirrorsAvailable]; + [self.store sdl_setObject:heatedMirrorsAvailable forName:SDLRPCParameterNameHeatedMirrorsAvailable]; } - (nullable NSNumber *)heatedMirrorsAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHeatedMirrorsAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatedMirrorsAvailable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLClimateControlData.m b/SmartDeviceLink/SDLClimateControlData.m index f5e312e58..e84e87821 100644 --- a/SmartDeviceLink/SDLClimateControlData.m +++ b/SmartDeviceLink/SDLClimateControlData.m @@ -39,115 +39,115 @@ - (instancetype)initWithFanSpeed:(nullable NSNumber *)fanSpeed desiredTe } - (void)setFanSpeed:(nullable NSNumber *)fanSpeed { - [store sdl_setObject:fanSpeed forName:SDLRPCParameterNameFanSpeed]; + [self.store sdl_setObject:fanSpeed forName:SDLRPCParameterNameFanSpeed]; } - (nullable NSNumber *)fanSpeed { - return [store sdl_objectForName:SDLRPCParameterNameFanSpeed ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameFanSpeed ofClass:NSNumber.class error:nil]; } - (void)setCurrentTemperature:(nullable SDLTemperature *)currentTemperature { - [store sdl_setObject:currentTemperature forName:SDLRPCParameterNameCurrentTemperature]; + [self.store sdl_setObject:currentTemperature forName:SDLRPCParameterNameCurrentTemperature]; } - (nullable SDLTemperature *)currentTemperature { - return [store sdl_objectForName:SDLRPCParameterNameCurrentTemperature ofClass:SDLTemperature.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCurrentTemperature ofClass:SDLTemperature.class error:nil]; } - (void)setDesiredTemperature:(nullable SDLTemperature *)desiredTemperature { - [store sdl_setObject:desiredTemperature forName:SDLRPCParameterNameDesiredTemperature]; + [self.store sdl_setObject:desiredTemperature forName:SDLRPCParameterNameDesiredTemperature]; } - (nullable SDLTemperature *)desiredTemperature { - return [store sdl_objectForName:SDLRPCParameterNameDesiredTemperature ofClass:SDLTemperature.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDesiredTemperature ofClass:SDLTemperature.class error:nil]; } - (void)setAcEnable:(nullable NSNumber *)acEnable { - [store sdl_setObject:acEnable forName:SDLRPCParameterNameACEnable]; + [self.store sdl_setObject:acEnable forName:SDLRPCParameterNameACEnable]; } - (nullable NSNumber *)acEnable { - return [store sdl_objectForName:SDLRPCParameterNameACEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameACEnable ofClass:NSNumber.class error:nil]; } - (void)setCirculateAirEnable:(nullable NSNumber *)circulateAirEnable { - [store sdl_setObject:circulateAirEnable forName:SDLRPCParameterNameCirculateAirEnable]; + [self.store sdl_setObject:circulateAirEnable forName:SDLRPCParameterNameCirculateAirEnable]; } - (nullable NSNumber *)circulateAirEnable { - return [store sdl_objectForName:SDLRPCParameterNameCirculateAirEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCirculateAirEnable ofClass:NSNumber.class error:nil]; } - (void)setAutoModeEnable:(nullable NSNumber *)autoModeEnable { - [store sdl_setObject:autoModeEnable forName:SDLRPCParameterNameAutoModeEnable]; + [self.store sdl_setObject:autoModeEnable forName:SDLRPCParameterNameAutoModeEnable]; } - (nullable NSNumber *)autoModeEnable { - return [store sdl_objectForName:SDLRPCParameterNameAutoModeEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAutoModeEnable ofClass:NSNumber.class error:nil]; } - (void)setDefrostZone:(nullable SDLDefrostZone)defrostZone { - [store sdl_setObject:defrostZone forName:SDLRPCParameterNameDefrostZone]; + [self.store sdl_setObject:defrostZone forName:SDLRPCParameterNameDefrostZone]; } - (nullable SDLDefrostZone)defrostZone { - return [store sdl_enumForName:SDLRPCParameterNameDefrostZone error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameDefrostZone error:nil]; } - (void)setDualModeEnable:(nullable NSNumber *)dualModeEnable { - [store sdl_setObject:dualModeEnable forName:SDLRPCParameterNameDualModeEnable]; + [self.store sdl_setObject:dualModeEnable forName:SDLRPCParameterNameDualModeEnable]; } - (nullable NSNumber *)dualModeEnable { - return [store sdl_objectForName:SDLRPCParameterNameDualModeEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDualModeEnable ofClass:NSNumber.class error:nil]; } - (void)setAcMaxEnable:(nullable NSNumber *)acMaxEnable { - [store sdl_setObject:acMaxEnable forName:SDLRPCParameterNameACMaxEnable]; + [self.store sdl_setObject:acMaxEnable forName:SDLRPCParameterNameACMaxEnable]; } - (nullable NSNumber *)acMaxEnable { - return [store sdl_objectForName:SDLRPCParameterNameACMaxEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameACMaxEnable ofClass:NSNumber.class error:nil]; } - (void)setVentilationMode:(nullable SDLVentilationMode)ventilationMode { - [store sdl_setObject:ventilationMode forName:SDLRPCParameterNameVentilationMode]; + [self.store sdl_setObject:ventilationMode forName:SDLRPCParameterNameVentilationMode]; } - (nullable SDLVentilationMode)ventilationMode { - return [store sdl_enumForName:SDLRPCParameterNameVentilationMode error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameVentilationMode error:nil]; } - (void)setHeatedSteeringWheelEnable:(nullable NSNumber *)heatedSteeringWheelEnable { - [store sdl_setObject:heatedSteeringWheelEnable forName:SDLRPCParameterNameHeatedSteeringWheelEnable]; + [self.store sdl_setObject:heatedSteeringWheelEnable forName:SDLRPCParameterNameHeatedSteeringWheelEnable]; } - (nullable NSNumber *)heatedSteeringWheelEnable { - return [store sdl_objectForName:SDLRPCParameterNameHeatedSteeringWheelEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatedSteeringWheelEnable ofClass:NSNumber.class error:nil]; } - (void)setHeatedWindshieldEnable:(nullable NSNumber *)heatedWindshieldEnable { - [store sdl_setObject:heatedWindshieldEnable forName:SDLRPCParameterNameHeatedWindshieldEnable]; + [self.store sdl_setObject:heatedWindshieldEnable forName:SDLRPCParameterNameHeatedWindshieldEnable]; } - (nullable NSNumber *)heatedWindshieldEnable { - return [store sdl_objectForName:SDLRPCParameterNameHeatedWindshieldEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatedWindshieldEnable ofClass:NSNumber.class error:nil]; } - (void)setHeatedRearWindowEnable:(nullable NSNumber *)heatedRearWindowEnable { - [store sdl_setObject:heatedRearWindowEnable forName:SDLRPCParameterNameHeatedRearWindowEnable]; + [self.store sdl_setObject:heatedRearWindowEnable forName:SDLRPCParameterNameHeatedRearWindowEnable]; } - (nullable NSNumber *)heatedRearWindowEnable { - return [store sdl_objectForName:SDLRPCParameterNameHeatedRearWindowEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatedRearWindowEnable ofClass:NSNumber.class error:nil]; } - (void)setHeatedMirrorsEnable:(nullable NSNumber *)heatedMirrorsEnable { - [store sdl_setObject:heatedMirrorsEnable forName:SDLRPCParameterNameHeatedMirrorsEnable]; + [self.store sdl_setObject:heatedMirrorsEnable forName:SDLRPCParameterNameHeatedMirrorsEnable]; } - (nullable NSNumber *)heatedMirrorsEnable { - return [store sdl_objectForName:SDLRPCParameterNameHeatedMirrorsEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatedMirrorsEnable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLCloudAppProperties.m b/SmartDeviceLink/SDLCloudAppProperties.m index 389ab0144..3a2ad32a2 100644 --- a/SmartDeviceLink/SDLCloudAppProperties.m +++ b/SmartDeviceLink/SDLCloudAppProperties.m @@ -44,60 +44,60 @@ - (instancetype)initWithAppID:(NSString *)appID nicknames:(nullable NSArray *)nicknames { - [store sdl_setObject:nicknames forName:SDLRPCParameterNameNicknames]; + [self.store sdl_setObject:nicknames forName:SDLRPCParameterNameNicknames]; } - (nullable NSArray *)nicknames { - return [store sdl_objectsForName:SDLRPCParameterNameNicknames ofClass:NSString.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameNicknames ofClass:NSString.class error:nil]; } - (void)setAppID:(NSString *)appID { - [store sdl_setObject:appID forName:SDLRPCParameterNameAppId]; + [self.store sdl_setObject:appID forName:SDLRPCParameterNameAppId]; } - (NSString *)appID { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameAppId ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameAppId ofClass:NSString.class error:&error]; } - (void)setEnabled:(nullable NSNumber *)enabled { - [store sdl_setObject:enabled forName:SDLRPCParameterNameEnabled]; + [self.store sdl_setObject:enabled forName:SDLRPCParameterNameEnabled]; } - (nullable NSNumber *)enabled { - return [store sdl_objectForName:SDLRPCParameterNameEnabled ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameEnabled ofClass:NSNumber.class error:nil]; } - (void)setAuthToken:(nullable NSString *)authToken { - [store sdl_setObject:authToken forName:SDLRPCParameterNameAuthToken]; + [self.store sdl_setObject:authToken forName:SDLRPCParameterNameAuthToken]; } - (nullable NSString *)authToken { - return [store sdl_objectForName:SDLRPCParameterNameAuthToken ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAuthToken ofClass:NSString.class error:nil]; } - (void)setCloudTransportType:(nullable NSString *)cloudTransportType { - [store sdl_setObject:cloudTransportType forName:SDLRPCParameterNameCloudTransportType]; + [self.store sdl_setObject:cloudTransportType forName:SDLRPCParameterNameCloudTransportType]; } - (nullable NSString *)cloudTransportType { - return [store sdl_objectForName:SDLRPCParameterNameCloudTransportType ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCloudTransportType ofClass:NSString.class error:nil]; } - (void)setHybridAppPreference:(nullable SDLHybridAppPreference)hybridAppPreference { - [store sdl_setObject:hybridAppPreference forName:SDLRPCParameterNameHybridAppPreference]; + [self.store sdl_setObject:hybridAppPreference forName:SDLRPCParameterNameHybridAppPreference]; } - (nullable SDLHybridAppPreference)hybridAppPreference { - return [store sdl_enumForName:SDLRPCParameterNameHybridAppPreference error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameHybridAppPreference error:nil]; } - (void)setEndpoint:(nullable NSString *)endpoint { - [store sdl_setObject:endpoint forName:SDLRPCParameterNameEndpoint]; + [self.store sdl_setObject:endpoint forName:SDLRPCParameterNameEndpoint]; } - (nullable NSString *)endpoint { - return [store sdl_objectForName:SDLRPCParameterNameEndpoint ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameEndpoint ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLClusterModeStatus.m b/SmartDeviceLink/SDLClusterModeStatus.m index 05b635357..1558c0522 100644 --- a/SmartDeviceLink/SDLClusterModeStatus.m +++ b/SmartDeviceLink/SDLClusterModeStatus.m @@ -11,39 +11,39 @@ @implementation SDLClusterModeStatus - (void)setPowerModeActive:(NSNumber *)powerModeActive { - [store sdl_setObject:powerModeActive forName:SDLRPCParameterNamePowerModeActive]; + [self.store sdl_setObject:powerModeActive forName:SDLRPCParameterNamePowerModeActive]; } - (NSNumber *)powerModeActive { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNamePowerModeActive ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNamePowerModeActive ofClass:NSNumber.class error:&error]; } - (void)setPowerModeQualificationStatus:(SDLPowerModeQualificationStatus)powerModeQualificationStatus { - [store sdl_setObject:powerModeQualificationStatus forName:SDLRPCParameterNamePowerModeQualificationStatus]; + [self.store sdl_setObject:powerModeQualificationStatus forName:SDLRPCParameterNamePowerModeQualificationStatus]; } - (SDLPowerModeQualificationStatus)powerModeQualificationStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePowerModeQualificationStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePowerModeQualificationStatus error:&error]; } - (void)setCarModeStatus:(SDLCarModeStatus)carModeStatus { - [store sdl_setObject:carModeStatus forName:SDLRPCParameterNameCarModeStatus]; + [self.store sdl_setObject:carModeStatus forName:SDLRPCParameterNameCarModeStatus]; } - (SDLCarModeStatus)carModeStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameCarModeStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameCarModeStatus error:&error]; } - (void)setPowerModeStatus:(SDLPowerModeStatus)powerModeStatus { - [store sdl_setObject:powerModeStatus forName:SDLRPCParameterNamePowerModeStatus]; + [self.store sdl_setObject:powerModeStatus forName:SDLRPCParameterNamePowerModeStatus]; } - (SDLPowerModeStatus)powerModeStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePowerModeStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePowerModeStatus error:&error]; } @end diff --git a/SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.m b/SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.m index be5460bb4..2dd186b1f 100644 --- a/SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.m +++ b/SmartDeviceLink/SDLControlFramePayloadAudioStartServiceAck.m @@ -65,7 +65,11 @@ - (nullable NSData *)data { } - (void)sdl_parse:(NSData *)data { - BsonObject payloadObject = bson_object_from_bytes((BytePtr)data.bytes); + BsonObject payloadObject; + size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length); + if (retval <= 0) { + return; + } self.mtu = bson_object_get_int64(&payloadObject, SDLControlFrameMTUKey); diff --git a/SmartDeviceLink/SDLControlFramePayloadEndService.m b/SmartDeviceLink/SDLControlFramePayloadEndService.m index 372400e7d..cabfb09df 100644 --- a/SmartDeviceLink/SDLControlFramePayloadEndService.m +++ b/SmartDeviceLink/SDLControlFramePayloadEndService.m @@ -65,7 +65,11 @@ - (nullable NSData *)data { } - (void)sdl_parse:(NSData *)data { - BsonObject payloadObject = bson_object_from_bytes((BytePtr)data.bytes); + BsonObject payloadObject; + size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length); + if (retval <= 0) { + return; + } self.hashId = bson_object_get_int32(&payloadObject, SDLControlFrameHashIdKey); diff --git a/SmartDeviceLink/SDLControlFramePayloadNak.m b/SmartDeviceLink/SDLControlFramePayloadNak.m index 15f5c517c..55b9a6dad 100644 --- a/SmartDeviceLink/SDLControlFramePayloadNak.m +++ b/SmartDeviceLink/SDLControlFramePayloadNak.m @@ -70,7 +70,12 @@ - (nullable NSData *)data { } - (void)sdl_parse:(NSData *)data { - BsonObject payloadObject = bson_object_from_bytes((BytePtr)data.bytes); + BsonObject payloadObject; + size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length); + if (retval <= 0) { + return; + } + BsonArray *arrayObject = bson_object_get_array(&payloadObject, SDLControlFrameRejectedParams); if (arrayObject == NULL) { return; diff --git a/SmartDeviceLink/SDLControlFramePayloadRPCStartService.m b/SmartDeviceLink/SDLControlFramePayloadRPCStartService.m index d943d6a47..6409884d0 100644 --- a/SmartDeviceLink/SDLControlFramePayloadRPCStartService.m +++ b/SmartDeviceLink/SDLControlFramePayloadRPCStartService.m @@ -64,7 +64,11 @@ - (nullable NSData *)data { } - (void)sdl_parse:(NSData *)data { - BsonObject payloadObject = bson_object_from_bytes((BytePtr)data.bytes); + BsonObject payloadObject; + size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length); + if (retval <= 0) { + return; + } char *utf8String = bson_object_get_string(&payloadObject, SDLControlFrameProtocolVersionKey); if (utf8String != NULL) { diff --git a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m b/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m index b9e54d9a3..e6afae672 100644 --- a/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m +++ b/SmartDeviceLink/SDLControlFramePayloadRPCStartServiceAck.m @@ -114,7 +114,11 @@ - (nullable NSData *)data { } - (void)sdl_parse:(NSData *)data { - BsonObject payloadObject = bson_object_from_bytes((BytePtr)data.bytes); + BsonObject payloadObject; + size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length); + if (retval <= 0) { + return; + } self.hashId = bson_object_get_int32(&payloadObject, SDLControlFrameHashIdKey); self.mtu = bson_object_get_int64(&payloadObject, SDLControlFrameMTUKey); diff --git a/SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.m b/SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.m index 570d41fa5..600fd1b61 100644 --- a/SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.m +++ b/SmartDeviceLink/SDLControlFramePayloadRegisterSecondaryTransportNak.m @@ -64,7 +64,11 @@ - (nullable NSData *)data { } - (void)sdl_parse:(NSData *)data { - BsonObject payloadObject = bson_object_from_bytes((BytePtr)data.bytes); + BsonObject payloadObject; + size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length); + if (retval <= 0) { + return; + } char *reasonString = bson_object_get_string(&payloadObject, SDLControlFrameReasonKey); if (reasonString != NULL) { diff --git a/SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.m b/SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.m index daaf3f13c..24b49ccec 100644 --- a/SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.m +++ b/SmartDeviceLink/SDLControlFramePayloadTransportEventUpdate.m @@ -80,7 +80,11 @@ - (nullable NSData *)data { } - (void)sdl_parse:(NSData *)data { - BsonObject payloadObject = bson_object_from_bytes((BytePtr)data.bytes); + BsonObject payloadObject; + size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length); + if (retval <= 0) { + return; + } char *utf8String = bson_object_get_string(&payloadObject, SDLControlFrameTCPIPAddressKey); if (utf8String != NULL) { diff --git a/SmartDeviceLink/SDLControlFramePayloadVideoStartService.m b/SmartDeviceLink/SDLControlFramePayloadVideoStartService.m index d33698ebb..d8dc841be 100644 --- a/SmartDeviceLink/SDLControlFramePayloadVideoStartService.m +++ b/SmartDeviceLink/SDLControlFramePayloadVideoStartService.m @@ -87,7 +87,11 @@ - (nullable NSData *)data { } - (void)sdl_parse:(NSData *)data { - BsonObject payloadObject = bson_object_from_bytes((BytePtr)data.bytes); + BsonObject payloadObject; + size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length); + if (retval <= 0) { + return; + } self.height = bson_object_get_int32(&payloadObject, SDLControlFrameHeightKey); self.width = bson_object_get_int32(&payloadObject, SDLControlFrameWidthKey); diff --git a/SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.m b/SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.m index d690d6690..7f071df50 100644 --- a/SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.m +++ b/SmartDeviceLink/SDLControlFramePayloadVideoStartServiceAck.m @@ -93,7 +93,11 @@ - (nullable NSData *)data { } - (void)sdl_parse:(NSData *)data { - BsonObject payloadObject = bson_object_from_bytes((BytePtr)data.bytes); + BsonObject payloadObject; + size_t retval = bson_object_from_bytes_len(&payloadObject, (BytePtr)data.bytes, data.length); + if (retval <= 0) { + return; + } self.mtu = bson_object_get_int64(&payloadObject, SDLControlFrameMTUKey); self.height = bson_object_get_int32(&payloadObject, SDLControlFrameHeightKey); diff --git a/SmartDeviceLink/SDLCreateInteractionChoiceSet.m b/SmartDeviceLink/SDLCreateInteractionChoiceSet.m index d35a0470b..00ee17093 100644 --- a/SmartDeviceLink/SDLCreateInteractionChoiceSet.m +++ b/SmartDeviceLink/SDLCreateInteractionChoiceSet.m @@ -13,11 +13,14 @@ @implementation SDLCreateInteractionChoiceSet +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameCreateInteractionChoiceSet]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithId:(UInt32)choiceId choiceSet:(NSArray *)choiceSet { self = [self init]; @@ -31,21 +34,21 @@ - (instancetype)initWithId:(UInt32)choiceId choiceSet:(NSArray *)ch } - (void)setInteractionChoiceSetID:(NSNumber *)interactionChoiceSetID { - [parameters sdl_setObject:interactionChoiceSetID forName:SDLRPCParameterNameInteractionChoiceSetId]; + [self.parameters sdl_setObject:interactionChoiceSetID forName:SDLRPCParameterNameInteractionChoiceSetId]; } - (NSNumber *)interactionChoiceSetID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameInteractionChoiceSetId ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInteractionChoiceSetId ofClass:NSNumber.class error:&error]; } - (void)setChoiceSet:(NSArray *)choiceSet { - [parameters sdl_setObject:choiceSet forName:SDLRPCParameterNameChoiceSet]; + [self.parameters sdl_setObject:choiceSet forName:SDLRPCParameterNameChoiceSet]; } - (NSArray *)choiceSet { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameChoiceSet ofClass:SDLChoice.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameChoiceSet ofClass:SDLChoice.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.m b/SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.m index bc5fee627..37b8bad2e 100644 --- a/SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.m +++ b/SmartDeviceLink/SDLCreateInteractionChoiceSetResponse.m @@ -12,11 +12,14 @@ @implementation SDLCreateInteractionChoiceSetResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameCreateInteractionChoiceSet]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLDIDResult.m b/SmartDeviceLink/SDLDIDResult.m index 885a64839..4f661d895 100644 --- a/SmartDeviceLink/SDLDIDResult.m +++ b/SmartDeviceLink/SDLDIDResult.m @@ -11,29 +11,29 @@ @implementation SDLDIDResult - (void)setResultCode:(SDLVehicleDataResultCode)resultCode { - [store sdl_setObject:resultCode forName:SDLRPCParameterNameResultCode]; + [self.store sdl_setObject:resultCode forName:SDLRPCParameterNameResultCode]; } - (SDLVehicleDataResultCode)resultCode { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameResultCode error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameResultCode error:&error]; } - (void)setDidLocation:(NSNumber *)didLocation { - [store sdl_setObject:didLocation forName:SDLRPCParameterNameDIDLocation]; + [self.store sdl_setObject:didLocation forName:SDLRPCParameterNameDIDLocation]; } - (NSNumber *)didLocation { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameDIDLocation ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameDIDLocation ofClass:NSNumber.class error:&error]; } - (void)setData:(nullable NSString *)data { - [store sdl_setObject:data forName:SDLRPCParameterNameData]; + [self.store sdl_setObject:data forName:SDLRPCParameterNameData]; } - (nullable NSString *)data { - return [store sdl_objectForName:SDLRPCParameterNameData ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameData ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLDateTime.m b/SmartDeviceLink/SDLDateTime.m index bb496cd9c..c5a45214a 100644 --- a/SmartDeviceLink/SDLDateTime.m +++ b/SmartDeviceLink/SDLDateTime.m @@ -59,84 +59,84 @@ - (instancetype)initWithHour:(UInt8)hour minute:(UInt8)minute second:(UInt8)seco } - (void)setMillisecond:(NSNumber *)millisecond { - [store sdl_setObject:millisecond forName:SDLRPCParameterNameMillisecond]; + [self.store sdl_setObject:millisecond forName:SDLRPCParameterNameMillisecond]; } - (NSNumber *)millisecond { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMillisecond ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMillisecond ofClass:NSNumber.class error:&error]; } - (void)setSecond:(NSNumber *)second { - [store sdl_setObject:second forName:SDLRPCParameterNameSecond]; + [self.store sdl_setObject:second forName:SDLRPCParameterNameSecond]; } - (NSNumber *)second { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameSecond ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameSecond ofClass:NSNumber.class error:&error]; } - (void)setMinute:(NSNumber *)minute { - [store sdl_setObject:minute forName:SDLRPCParameterNameMinute]; + [self.store sdl_setObject:minute forName:SDLRPCParameterNameMinute]; } - (NSNumber *)minute { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMinute ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMinute ofClass:NSNumber.class error:&error]; } - (void)setHour:(NSNumber *)hour { - [store sdl_setObject:hour forName:SDLRPCParameterNameHour]; + [self.store sdl_setObject:hour forName:SDLRPCParameterNameHour]; } - (NSNumber *)hour { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameHour ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameHour ofClass:NSNumber.class error:&error]; } - (void)setDay:(NSNumber *)day { - [store sdl_setObject:day forName:SDLRPCParameterNameDay]; + [self.store sdl_setObject:day forName:SDLRPCParameterNameDay]; } - (NSNumber *)day { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameDay ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameDay ofClass:NSNumber.class error:&error]; } - (void)setMonth:(NSNumber *)month { - [store sdl_setObject:month forName:SDLRPCParameterNameMonth]; + [self.store sdl_setObject:month forName:SDLRPCParameterNameMonth]; } - (NSNumber *)month { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMonth ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMonth ofClass:NSNumber.class error:&error]; } - (void)setYear:(NSNumber *)year { - [store sdl_setObject:year forName:SDLRPCParameterNameYear]; + [self.store sdl_setObject:year forName:SDLRPCParameterNameYear]; } - (NSNumber *)year { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameYear ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameYear ofClass:NSNumber.class error:&error]; } - (void)setTimezoneMinuteOffset:(NSNumber *)timezoneMinuteOffset { - [store sdl_setObject:timezoneMinuteOffset forName:SDLRPCParameterNameTimezoneMinuteOffset]; + [self.store sdl_setObject:timezoneMinuteOffset forName:SDLRPCParameterNameTimezoneMinuteOffset]; } - (NSNumber *)timezoneMinuteOffset { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameTimezoneMinuteOffset ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameTimezoneMinuteOffset ofClass:NSNumber.class error:&error]; } - (void)setTimezoneHourOffset:(NSNumber *)timezoneHourOffset { - [store sdl_setObject:timezoneHourOffset forName:SDLRPCParameterNameTimezoneHourOffset]; + [self.store sdl_setObject:timezoneHourOffset forName:SDLRPCParameterNameTimezoneHourOffset]; } - (NSNumber *)timezoneHourOffset { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameTimezoneHourOffset ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameTimezoneHourOffset ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLDeleteCommand.m b/SmartDeviceLink/SDLDeleteCommand.m index cc8b80feb..563cde435 100644 --- a/SmartDeviceLink/SDLDeleteCommand.m +++ b/SmartDeviceLink/SDLDeleteCommand.m @@ -12,11 +12,14 @@ @implementation SDLDeleteCommand +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDeleteCommand]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithId:(UInt32)commandId { self = [self init]; @@ -30,12 +33,12 @@ - (instancetype)initWithId:(UInt32)commandId { } - (void)setCmdID:(NSNumber *)cmdID { - [parameters sdl_setObject:cmdID forName:SDLRPCParameterNameCommandId]; + [self.parameters sdl_setObject:cmdID forName:SDLRPCParameterNameCommandId]; } - (NSNumber *)cmdID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameCommandId ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCommandId ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLDeleteCommandResponse.m b/SmartDeviceLink/SDLDeleteCommandResponse.m index cdfb646fe..57460a834 100644 --- a/SmartDeviceLink/SDLDeleteCommandResponse.m +++ b/SmartDeviceLink/SDLDeleteCommandResponse.m @@ -12,11 +12,14 @@ @implementation SDLDeleteCommandResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDeleteCommand]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLDeleteFile.m b/SmartDeviceLink/SDLDeleteFile.m index 007959f47..8c1a0573a 100644 --- a/SmartDeviceLink/SDLDeleteFile.m +++ b/SmartDeviceLink/SDLDeleteFile.m @@ -12,11 +12,14 @@ @implementation SDLDeleteFile +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDeleteFile]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithFileName:(NSString *)fileName { self = [self init]; @@ -30,12 +33,12 @@ - (instancetype)initWithFileName:(NSString *)fileName { } - (void)setSyncFileName:(NSString *)syncFileName { - [parameters sdl_setObject:syncFileName forName:SDLRPCParameterNameSyncFileName]; + [self.parameters sdl_setObject:syncFileName forName:SDLRPCParameterNameSyncFileName]; } - (NSString *)syncFileName { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameSyncFileName ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncFileName ofClass:NSString.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLDeleteFileResponse.m b/SmartDeviceLink/SDLDeleteFileResponse.m index cddc4f1a2..17db0cb17 100644 --- a/SmartDeviceLink/SDLDeleteFileResponse.m +++ b/SmartDeviceLink/SDLDeleteFileResponse.m @@ -12,18 +12,21 @@ @implementation SDLDeleteFileResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDeleteFile]) { } return self; } +#pragma clang diagnostic pop - (void)setSpaceAvailable:(nullable NSNumber *)spaceAvailable { - [parameters sdl_setObject:spaceAvailable forName:SDLRPCParameterNameSpaceAvailable]; + [self.parameters sdl_setObject:spaceAvailable forName:SDLRPCParameterNameSpaceAvailable]; } - (nullable NSNumber *)spaceAvailable { - return [parameters sdl_objectForName:SDLRPCParameterNameSpaceAvailable ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpaceAvailable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLDeleteInteractionChoiceSet.m b/SmartDeviceLink/SDLDeleteInteractionChoiceSet.m index 8c749aaea..20174145f 100644 --- a/SmartDeviceLink/SDLDeleteInteractionChoiceSet.m +++ b/SmartDeviceLink/SDLDeleteInteractionChoiceSet.m @@ -12,11 +12,14 @@ @implementation SDLDeleteInteractionChoiceSet +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDeleteInteractionChoiceSet]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithId:(UInt32)choiceId { self = [self init]; @@ -30,12 +33,12 @@ - (instancetype)initWithId:(UInt32)choiceId { } - (void)setInteractionChoiceSetID:(NSNumber *)interactionChoiceSetID { - [parameters sdl_setObject:interactionChoiceSetID forName:SDLRPCParameterNameInteractionChoiceSetId]; + [self.parameters sdl_setObject:interactionChoiceSetID forName:SDLRPCParameterNameInteractionChoiceSetId]; } - (NSNumber *)interactionChoiceSetID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameInteractionChoiceSetId ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInteractionChoiceSetId ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.m b/SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.m index 2a0047a79..abc14d757 100644 --- a/SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.m +++ b/SmartDeviceLink/SDLDeleteInteractionChoiceSetResponse.m @@ -12,11 +12,14 @@ @implementation SDLDeleteInteractionChoiceSetResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDeleteInteractionChoiceSet]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLDeleteSubMenu.m b/SmartDeviceLink/SDLDeleteSubMenu.m index 6e260712e..2fd29100e 100644 --- a/SmartDeviceLink/SDLDeleteSubMenu.m +++ b/SmartDeviceLink/SDLDeleteSubMenu.m @@ -12,11 +12,14 @@ @implementation SDLDeleteSubMenu +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDeleteSubMenu]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithId:(UInt32)menuId { self = [self init]; @@ -30,12 +33,12 @@ - (instancetype)initWithId:(UInt32)menuId { } - (void)setMenuID:(NSNumber *)menuID { - [parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuId]; + [self.parameters sdl_setObject:menuID forName:SDLRPCParameterNameMenuId]; } - (NSNumber *)menuID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameMenuId ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuId ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLDeleteSubMenuResponse.m b/SmartDeviceLink/SDLDeleteSubMenuResponse.m index 1a9309a13..d9c3355ea 100644 --- a/SmartDeviceLink/SDLDeleteSubMenuResponse.m +++ b/SmartDeviceLink/SDLDeleteSubMenuResponse.m @@ -12,11 +12,14 @@ @implementation SDLDeleteSubMenuResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDeleteSubMenu]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLDeviceInfo.m b/SmartDeviceLink/SDLDeviceInfo.m index cd4474166..a28f2759a 100644 --- a/SmartDeviceLink/SDLDeviceInfo.m +++ b/SmartDeviceLink/SDLDeviceInfo.m @@ -30,51 +30,51 @@ + (instancetype)currentDevice { } - (void)setHardware:(nullable NSString *)hardware { - [store sdl_setObject:hardware forName:SDLRPCParameterNameHardware]; + [self.store sdl_setObject:hardware forName:SDLRPCParameterNameHardware]; } - (nullable NSString *)hardware { - return [store sdl_objectForName:SDLRPCParameterNameHardware ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHardware ofClass:NSString.class error:nil]; } - (void)setFirmwareRev:(nullable NSString *)firmwareRev { - [store sdl_setObject:firmwareRev forName:SDLRPCParameterNameFirmwareRevision]; + [self.store sdl_setObject:firmwareRev forName:SDLRPCParameterNameFirmwareRevision]; } - (nullable NSString *)firmwareRev { - return [store sdl_objectForName:SDLRPCParameterNameFirmwareRevision ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameFirmwareRevision ofClass:NSString.class error:nil]; } - (void)setOs:(nullable NSString *)os { - [store sdl_setObject:os forName:SDLRPCParameterNameOS]; + [self.store sdl_setObject:os forName:SDLRPCParameterNameOS]; } - (nullable NSString *)os { - return [store sdl_objectForName:SDLRPCParameterNameOS ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameOS ofClass:NSString.class error:nil]; } - (void)setOsVersion:(nullable NSString *)osVersion { - [store sdl_setObject:osVersion forName:SDLRPCParameterNameOSVersion]; + [self.store sdl_setObject:osVersion forName:SDLRPCParameterNameOSVersion]; } - (nullable NSString *)osVersion { - return [store sdl_objectForName:SDLRPCParameterNameOSVersion ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameOSVersion ofClass:NSString.class error:nil]; } - (void)setCarrier:(nullable NSString *)carrier { - [store sdl_setObject:carrier forName:SDLRPCParameterNameCarrier]; + [self.store sdl_setObject:carrier forName:SDLRPCParameterNameCarrier]; } - (nullable NSString *)carrier { - return [store sdl_objectForName:SDLRPCParameterNameCarrier ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCarrier ofClass:NSString.class error:nil]; } - (void)setMaxNumberRFCOMMPorts:(nullable NSNumber *)maxNumberRFCOMMPorts { - [store sdl_setObject:maxNumberRFCOMMPorts forName:SDLRPCParameterNameMaxNumberRFCOMMPorts]; + [self.store sdl_setObject:maxNumberRFCOMMPorts forName:SDLRPCParameterNameMaxNumberRFCOMMPorts]; } - (nullable NSNumber *)maxNumberRFCOMMPorts { - return [store sdl_objectForName:SDLRPCParameterNameMaxNumberRFCOMMPorts ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMaxNumberRFCOMMPorts ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLDeviceStatus.m b/SmartDeviceLink/SDLDeviceStatus.m index 048e4f8c4..2b9101233 100644 --- a/SmartDeviceLink/SDLDeviceStatus.m +++ b/SmartDeviceLink/SDLDeviceStatus.m @@ -13,102 +13,102 @@ @implementation SDLDeviceStatus - (void)setVoiceRecOn:(NSNumber *)voiceRecOn { - [store sdl_setObject:voiceRecOn forName:SDLRPCParameterNameVoiceRecognitionOn]; + [self.store sdl_setObject:voiceRecOn forName:SDLRPCParameterNameVoiceRecognitionOn]; } - (NSNumber *)voiceRecOn { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameVoiceRecognitionOn ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameVoiceRecognitionOn ofClass:NSNumber.class error:&error]; } - (void)setBtIconOn:(NSNumber *)btIconOn { - [store sdl_setObject:btIconOn forName:SDLRPCParameterNameBluetoothIconOn]; + [self.store sdl_setObject:btIconOn forName:SDLRPCParameterNameBluetoothIconOn]; } - (NSNumber *)btIconOn { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameBluetoothIconOn ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameBluetoothIconOn ofClass:NSNumber.class error:&error]; } - (void)setCallActive:(NSNumber *)callActive { - [store sdl_setObject:callActive forName:SDLRPCParameterNameCallActive]; + [self.store sdl_setObject:callActive forName:SDLRPCParameterNameCallActive]; } - (NSNumber *)callActive { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameCallActive ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameCallActive ofClass:NSNumber.class error:&error]; } - (void)setPhoneRoaming:(NSNumber *)phoneRoaming { - [store sdl_setObject:phoneRoaming forName:SDLRPCParameterNamePhoneRoaming]; + [self.store sdl_setObject:phoneRoaming forName:SDLRPCParameterNamePhoneRoaming]; } - (NSNumber *)phoneRoaming { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNamePhoneRoaming ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNamePhoneRoaming ofClass:NSNumber.class error:&error]; } - (void)setTextMsgAvailable:(NSNumber *)textMsgAvailable { - [store sdl_setObject:textMsgAvailable forName:SDLRPCParameterNameTextMessageAvailable]; + [self.store sdl_setObject:textMsgAvailable forName:SDLRPCParameterNameTextMessageAvailable]; } - (NSNumber *)textMsgAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameTextMessageAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameTextMessageAvailable ofClass:NSNumber.class error:&error]; } - (void)setBattLevelStatus:(SDLDeviceLevelStatus )battLevelStatus { - [store sdl_setObject:battLevelStatus forName:SDLRPCParameterNameBatteryLevelStatus]; + [self.store sdl_setObject:battLevelStatus forName:SDLRPCParameterNameBatteryLevelStatus]; } - (SDLDeviceLevelStatus)battLevelStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameBatteryLevelStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameBatteryLevelStatus error:&error]; } - (void)setStereoAudioOutputMuted:(NSNumber *)stereoAudioOutputMuted { - [store sdl_setObject:stereoAudioOutputMuted forName:SDLRPCParameterNameStereoAudioOutputMuted]; + [self.store sdl_setObject:stereoAudioOutputMuted forName:SDLRPCParameterNameStereoAudioOutputMuted]; } - (NSNumber *)stereoAudioOutputMuted { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameStereoAudioOutputMuted ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameStereoAudioOutputMuted ofClass:NSNumber.class error:&error]; } - (void)setMonoAudioOutputMuted:(NSNumber *)monoAudioOutputMuted { - [store sdl_setObject:monoAudioOutputMuted forName:SDLRPCParameterNameMonoAudioOutputMuted]; + [self.store sdl_setObject:monoAudioOutputMuted forName:SDLRPCParameterNameMonoAudioOutputMuted]; } - (NSNumber *)monoAudioOutputMuted { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMonoAudioOutputMuted ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMonoAudioOutputMuted ofClass:NSNumber.class error:&error]; } - (void)setSignalLevelStatus:(SDLDeviceLevelStatus)signalLevelStatus { - [store sdl_setObject:signalLevelStatus forName:SDLRPCParameterNameSignalLevelStatus]; + [self.store sdl_setObject:signalLevelStatus forName:SDLRPCParameterNameSignalLevelStatus]; } - (SDLDeviceLevelStatus)signalLevelStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameSignalLevelStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameSignalLevelStatus error:&error]; } - (void)setPrimaryAudioSource:(SDLPrimaryAudioSource)primaryAudioSource { - [store sdl_setObject:primaryAudioSource forName:SDLRPCParameterNamePrimaryAudioSource]; + [self.store sdl_setObject:primaryAudioSource forName:SDLRPCParameterNamePrimaryAudioSource]; } - (SDLPrimaryAudioSource)primaryAudioSource { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePrimaryAudioSource error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePrimaryAudioSource error:&error]; } - (void)setECallEventActive:(NSNumber *)eCallEventActive { - [store sdl_setObject:eCallEventActive forName:SDLRPCParameterNameECallEventActive]; + [self.store sdl_setObject:eCallEventActive forName:SDLRPCParameterNameECallEventActive]; } - (NSNumber *)eCallEventActive { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameECallEventActive ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameECallEventActive ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLDiagnosticMessage.m b/SmartDeviceLink/SDLDiagnosticMessage.m index 89f636c26..b7d4e4016 100644 --- a/SmartDeviceLink/SDLDiagnosticMessage.m +++ b/SmartDeviceLink/SDLDiagnosticMessage.m @@ -12,11 +12,14 @@ @implementation SDLDiagnosticMessage +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDiagnosticMessage]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithTargetId:(UInt16)targetId length:(UInt16)length data:(NSArray *)data { self = [self init]; @@ -32,30 +35,30 @@ - (instancetype)initWithTargetId:(UInt16)targetId length:(UInt16)length data:(NS } - (void)setTargetID:(NSNumber *)targetID { - [parameters sdl_setObject:targetID forName:SDLRPCParameterNameTargetId]; + [self.parameters sdl_setObject:targetID forName:SDLRPCParameterNameTargetId]; } - (NSNumber *)targetID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameTargetId ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTargetId ofClass:NSNumber.class error:&error]; } - (void)setMessageLength:(NSNumber *)messageLength { - [parameters sdl_setObject:messageLength forName:SDLRPCParameterNameMessageLength]; + [self.parameters sdl_setObject:messageLength forName:SDLRPCParameterNameMessageLength]; } - (NSNumber *)messageLength { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameMessageLength ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMessageLength ofClass:NSNumber.class error:&error]; } - (void)setMessageData:(NSArray *> *)messageData { - [parameters sdl_setObject:messageData forName:SDLRPCParameterNameMessageData]; + [self.parameters sdl_setObject:messageData forName:SDLRPCParameterNameMessageData]; } - (NSArray *> *)messageData { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameMessageData ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameMessageData ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLDiagnosticMessageResponse.m b/SmartDeviceLink/SDLDiagnosticMessageResponse.m index 6b275135a..8863f97ec 100644 --- a/SmartDeviceLink/SDLDiagnosticMessageResponse.m +++ b/SmartDeviceLink/SDLDiagnosticMessageResponse.m @@ -11,19 +11,22 @@ @implementation SDLDiagnosticMessageResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDiagnosticMessage]) { } return self; } +#pragma clang diagnostic pop - (void)setMessageDataResult:(NSArray *> *)messageDataResult { - [parameters sdl_setObject:messageDataResult forName:SDLRPCParameterNameMessageDataResult]; + [self.parameters sdl_setObject:messageDataResult forName:SDLRPCParameterNameMessageDataResult]; } - (NSArray *> *)messageDataResult { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameMessageDataResult ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameMessageDataResult ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLDialNumber.m b/SmartDeviceLink/SDLDialNumber.m index 47c312416..eaed1eb41 100644 --- a/SmartDeviceLink/SDLDialNumber.m +++ b/SmartDeviceLink/SDLDialNumber.m @@ -10,11 +10,14 @@ @implementation SDLDialNumber +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDialNumber]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithNumber:(NSString *)number { self = [self init]; @@ -28,12 +31,12 @@ - (instancetype)initWithNumber:(NSString *)number { } - (void)setNumber:(NSString *)number { - [parameters sdl_setObject:number forName:SDLRPCParameterNameNumber]; + [self.parameters sdl_setObject:number forName:SDLRPCParameterNameNumber]; } - (NSString *)number { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameNumber ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameNumber ofClass:NSString.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLDialNumberResponse.m b/SmartDeviceLink/SDLDialNumberResponse.m index 0b9e02c58..b8073cf9d 100644 --- a/SmartDeviceLink/SDLDialNumberResponse.m +++ b/SmartDeviceLink/SDLDialNumberResponse.m @@ -12,11 +12,14 @@ @implementation SDLDialNumberResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameDialNumber]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLDisplayCapabilities.m b/SmartDeviceLink/SDLDisplayCapabilities.m index 8667eafa8..b85208a83 100644 --- a/SmartDeviceLink/SDLDisplayCapabilities.m +++ b/SmartDeviceLink/SDLDisplayCapabilities.m @@ -14,79 +14,79 @@ @implementation SDLDisplayCapabilities - (void)setDisplayType:(SDLDisplayType)displayType { - [store sdl_setObject:displayType forName:SDLRPCParameterNameDisplayType]; + [self.store sdl_setObject:displayType forName:SDLRPCParameterNameDisplayType]; } - (SDLDisplayType)displayType { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameDisplayType error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameDisplayType error:&error]; } - (void)setDisplayName:(nullable NSString *)displayName { - [store sdl_setObject:displayName forName:SDLRPCParameterNameDisplayName]; + [self.store sdl_setObject:displayName forName:SDLRPCParameterNameDisplayName]; } - (nullable NSString *)displayName { - return [store sdl_objectForName:SDLRPCParameterNameDisplayName ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDisplayName ofClass:NSString.class error:nil]; } - (void)setTextFields:(NSArray *)textFields { - [store sdl_setObject:textFields forName:SDLRPCParameterNameTextFields]; + [self.store sdl_setObject:textFields forName:SDLRPCParameterNameTextFields]; } - (NSArray *)textFields { NSError *error = nil; - return [store sdl_objectsForName:SDLRPCParameterNameTextFields ofClass:SDLTextField.class error:&error]; + return [self.store sdl_objectsForName:SDLRPCParameterNameTextFields ofClass:SDLTextField.class error:&error]; } - (void)setImageFields:(nullable NSArray *)imageFields { - [store sdl_setObject:imageFields forName:SDLRPCParameterNameImageFields]; + [self.store sdl_setObject:imageFields forName:SDLRPCParameterNameImageFields]; } - (nullable NSArray *)imageFields { - return [store sdl_objectsForName:SDLRPCParameterNameImageFields ofClass:SDLImageField.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameImageFields ofClass:SDLImageField.class error:nil]; } - (void)setMediaClockFormats:(NSArray *)mediaClockFormats { - [store sdl_setObject:mediaClockFormats forName:SDLRPCParameterNameMediaClockFormats]; + [self.store sdl_setObject:mediaClockFormats forName:SDLRPCParameterNameMediaClockFormats]; } - (NSArray *)mediaClockFormats { NSError *error = nil; - return [store sdl_enumsForName:SDLRPCParameterNameMediaClockFormats error:&error]; + return [self.store sdl_enumsForName:SDLRPCParameterNameMediaClockFormats error:&error]; } - (void)setGraphicSupported:(NSNumber *)graphicSupported { - [store sdl_setObject:graphicSupported forName:SDLRPCParameterNameGraphicSupported]; + [self.store sdl_setObject:graphicSupported forName:SDLRPCParameterNameGraphicSupported]; } - (NSNumber *)graphicSupported { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameGraphicSupported ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameGraphicSupported ofClass:NSNumber.class error:&error]; } - (void)setTemplatesAvailable:(nullable NSArray *)templatesAvailable { - [store sdl_setObject:templatesAvailable forName:SDLRPCParameterNameTemplatesAvailable]; + [self.store sdl_setObject:templatesAvailable forName:SDLRPCParameterNameTemplatesAvailable]; } - (nullable NSArray *)templatesAvailable { - return [store sdl_objectsForName:SDLRPCParameterNameTemplatesAvailable ofClass:NSString.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameTemplatesAvailable ofClass:NSString.class error:nil]; } - (void)setScreenParams:(nullable SDLScreenParams *)screenParams { - [store sdl_setObject:screenParams forName:SDLRPCParameterNameScreenParams]; + [self.store sdl_setObject:screenParams forName:SDLRPCParameterNameScreenParams]; } - (nullable SDLScreenParams *)screenParams { - return [store sdl_objectForName:SDLRPCParameterNameScreenParams ofClass:SDLScreenParams.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameScreenParams ofClass:SDLScreenParams.class error:nil]; } - (void)setNumCustomPresetsAvailable:(nullable NSNumber *)numCustomPresetsAvailable { - [store sdl_setObject:numCustomPresetsAvailable forName:SDLRPCParameterNameNumberCustomPresetsAvailable]; + [self.store sdl_setObject:numCustomPresetsAvailable forName:SDLRPCParameterNameNumberCustomPresetsAvailable]; } - (nullable NSNumber *)numCustomPresetsAvailable { - return [store sdl_objectForName:SDLRPCParameterNameNumberCustomPresetsAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNumberCustomPresetsAvailable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.h b/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.h new file mode 100644 index 000000000..64d7d2585 --- /dev/null +++ b/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.h @@ -0,0 +1,28 @@ +// +// SDLMenuUpdateAlgorithm.h +// SmartDeviceLink +// +// Created by Justin Gluck on 5/14/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +@class SDLDynamicMenuUpdateRunScore; +@class SDLMenuCell; + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLDynamicMenuUpdateAlgorithm : NSObject + +/** + Compares the old and the new menus to find the best combination of add and delete commands + + @param oldMenuCells The old menu array + @param updatedMenuCells The new menu array + */ ++ (nullable SDLDynamicMenuUpdateRunScore *)compareOldMenuCells:(NSArray *)oldMenuCells updatedMenuCells:(NSArray *)updatedMenuCells; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.m b/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.m new file mode 100644 index 000000000..51bfd14e2 --- /dev/null +++ b/SmartDeviceLink/SDLDynamicMenuUpdateAlgorithm.m @@ -0,0 +1,104 @@ +// +// SDLMenuUpdateAlgorithm.m +// SmartDeviceLink +// +// Created by Justin Gluck on 5/14/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "SDLDynamicMenuUpdateAlgorithm.h" +#import "SDLDynamicMenuUpdateRunScore.h" +#import "SDLMenuCell.h" +#import "SDLLogMacros.h" +#import "SDLMenuManagerConstants.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLDynamicMenuUpdateAlgorithm + +#pragma mark - Update Menu Cells ++ (nullable SDLDynamicMenuUpdateRunScore *)compareOldMenuCells:(NSArray *)oldMenuCells updatedMenuCells:(NSArray *)updatedMenuCells{ + if (oldMenuCells.count > 0 && updatedMenuCells.count == 0) { + return [[SDLDynamicMenuUpdateRunScore alloc] initWithOldStatus:[SDLDynamicMenuUpdateAlgorithm sdl_buildAllDeleteStatusesforMenu:oldMenuCells] updatedStatus:@[] score:0]; + }else if (oldMenuCells.count == 0 && updatedMenuCells.count > 0) { + return [[SDLDynamicMenuUpdateRunScore alloc] initWithOldStatus:@[] updatedStatus:[SDLDynamicMenuUpdateAlgorithm sdl_buildAllAddStatusesForMenu:updatedMenuCells] score:updatedMenuCells.count]; + } else if (oldMenuCells.count == 0 && updatedMenuCells.count == 0) { + return nil; + } + + return [SDLDynamicMenuUpdateAlgorithm sdl_startCompareAtRun:0 oldMenuCells:oldMenuCells updatedMenuCells:updatedMenuCells]; +} + ++ (nullable SDLDynamicMenuUpdateRunScore *)sdl_startCompareAtRun:(NSUInteger)startRun oldMenuCells:(NSArray *)oldMenuCells updatedMenuCells:(NSArray *)updatedMenuCells { + SDLDynamicMenuUpdateRunScore *bestScore = nil; + + for (NSUInteger run = startRun; run < oldMenuCells.count; run++) { + // Set the menu status as a 1-1 array, start off will oldMenus = all Deletes, newMenu = all Adds + NSMutableArray *oldMenuStatus = [SDLDynamicMenuUpdateAlgorithm sdl_buildAllDeleteStatusesforMenu:oldMenuCells]; + NSMutableArray *newMenuStatus = [SDLDynamicMenuUpdateAlgorithm sdl_buildAllAddStatusesForMenu:updatedMenuCells]; + + NSUInteger startIndex = 0; + for (NSUInteger oldCellIndex = run; oldCellIndex < oldMenuCells.count; oldCellIndex++) { //For each old item + // Create inner loop to compare old cells to new cells to find a match, if a match if found we mark the index at match for both the old and the new status to keep since we do not want to send RPCs for those cases + for (NSUInteger newCellIndex = startIndex; newCellIndex < updatedMenuCells.count; newCellIndex++) { + if ([oldMenuCells[oldCellIndex] isEqual:updatedMenuCells[newCellIndex]]) { + oldMenuStatus[oldCellIndex] = @(MenuCellStateKeep); + newMenuStatus[newCellIndex] = @(MenuCellStateKeep); + startIndex = newCellIndex + 1; + break; + } + } + } + + // Add RPC are the biggest operation so we need to find the run with the least amount of Adds. We will reset the run we use each time a runscore is less than the current score. + NSUInteger numberOfAdds = 0; + for (NSUInteger status = 0; status < newMenuStatus.count; status++) { + // 0 = Delete 1 = Add 2 = Keep + if (newMenuStatus[status].integerValue == MenuCellStateAdd) { + numberOfAdds++; + } + } + + // As soon as we a run that requires 0 Adds we will use it since we cant do better then 0 + if (numberOfAdds == 0) { + bestScore = [[SDLDynamicMenuUpdateRunScore alloc] initWithOldStatus:oldMenuStatus updatedStatus:newMenuStatus score:numberOfAdds]; + return bestScore; + } + // if we havent create the bestScore object or if the current score beats the old score then we will create a new bestScore + if (bestScore == nil || numberOfAdds < bestScore.score) { + bestScore = [[SDLDynamicMenuUpdateRunScore alloc] initWithOldStatus:oldMenuStatus updatedStatus:newMenuStatus score:numberOfAdds]; + } + } + + return bestScore; +} + +/** + Builds a 1-1 array of Deletes for every element in the array + + @param oldMenu The old menu array + */ ++ (NSMutableArray *)sdl_buildAllDeleteStatusesforMenu:(NSArray *)oldMenu { + NSMutableArray *oldMenuStatus = [[NSMutableArray alloc] init]; + for (NSUInteger index = 0; index < oldMenu.count; index++) { + [oldMenuStatus addObject:@(MenuCellStateDelete)]; + } + return [oldMenuStatus mutableCopy]; +} + +/** + Builds a 1-1 array of Adds for every element in the array + + @param newMenu The new menu array + */ ++ (NSMutableArray *)sdl_buildAllAddStatusesForMenu:(NSArray *)newMenu { + NSMutableArray *newMenuStatus = [[NSMutableArray alloc] init]; + for (NSUInteger index = 0; index < newMenu.count; index++) { + [newMenuStatus addObject:@(MenuCellStateAdd)]; + } + return [newMenuStatus mutableCopy]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.h b/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.h new file mode 100644 index 000000000..12f251970 --- /dev/null +++ b/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.h @@ -0,0 +1,34 @@ +// +// SDLMenuRunScore.h +// SmartDeviceLink +// +// Created by Justin Gluck on 5/13/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLDynamicMenuUpdateRunScore : NSObject + +/** + Will contain all the Deletes and Keeps + */ +@property (copy, nonatomic, readonly) NSArray *oldStatus; + +/** + Will contain all the Adds and Keeps + */ +@property (copy, nonatomic, readonly) NSArray *updatedStatus; + +/** + Will contain the score, number of total Adds that will need to be created + */ +@property (assign, nonatomic, readonly) NSUInteger score; + +- (instancetype)initWithOldStatus:(NSArray *)oldStatus updatedStatus:(NSArray *)updatedStatus score:(NSUInteger)score; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.m b/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.m new file mode 100644 index 000000000..5066904a5 --- /dev/null +++ b/SmartDeviceLink/SDLDynamicMenuUpdateRunScore.m @@ -0,0 +1,28 @@ +// +// SDLMenuRunScore.m +// SmartDeviceLink +// +// Created by Justin Gluck on 5/13/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "SDLDynamicMenuUpdateRunScore.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLDynamicMenuUpdateRunScore + +- (instancetype)initWithOldStatus:(NSArray *)oldStatus updatedStatus:(NSArray *)updatedStatus score:(NSUInteger)score { + self = [super init]; + if (!self) { return nil; } + + _oldStatus = oldStatus; + _updatedStatus = updatedStatus; + _score = score; + + return self; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLECallInfo.m b/SmartDeviceLink/SDLECallInfo.m index 4b77e3e3d..61820ed2e 100644 --- a/SmartDeviceLink/SDLECallInfo.m +++ b/SmartDeviceLink/SDLECallInfo.m @@ -11,30 +11,30 @@ @implementation SDLECallInfo - (void)setECallNotificationStatus:(SDLVehicleDataNotificationStatus)eCallNotificationStatus { - [store sdl_setObject:eCallNotificationStatus forName:SDLRPCParameterNameECallNotificationStatus]; + [self.store sdl_setObject:eCallNotificationStatus forName:SDLRPCParameterNameECallNotificationStatus]; } - (SDLVehicleDataNotificationStatus)eCallNotificationStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameECallNotificationStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameECallNotificationStatus error:&error]; } - (void)setAuxECallNotificationStatus:(SDLVehicleDataNotificationStatus)auxECallNotificationStatus { - [store sdl_setObject:auxECallNotificationStatus forName:SDLRPCParameterNameAuxECallNotificationStatus]; + [self.store sdl_setObject:auxECallNotificationStatus forName:SDLRPCParameterNameAuxECallNotificationStatus]; } - (SDLVehicleDataNotificationStatus)auxECallNotificationStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameAuxECallNotificationStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameAuxECallNotificationStatus error:&error]; } - (void)setECallConfirmationStatus:(SDLECallConfirmationStatus)eCallConfirmationStatus { - [store sdl_setObject:eCallConfirmationStatus forName:SDLRPCParameterNameECallConfirmationStatus]; + [self.store sdl_setObject:eCallConfirmationStatus forName:SDLRPCParameterNameECallConfirmationStatus]; } - (SDLECallConfirmationStatus)eCallConfirmationStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameECallConfirmationStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameECallConfirmationStatus error:&error]; } @end diff --git a/SmartDeviceLink/SDLEmergencyEvent.m b/SmartDeviceLink/SDLEmergencyEvent.m index e2869823c..0052ac078 100644 --- a/SmartDeviceLink/SDLEmergencyEvent.m +++ b/SmartDeviceLink/SDLEmergencyEvent.m @@ -11,48 +11,48 @@ @implementation SDLEmergencyEvent - (void)setEmergencyEventType:(SDLEmergencyEventType)emergencyEventType { - [store sdl_setObject:emergencyEventType forName:SDLRPCParameterNameEmergencyEventType]; + [self.store sdl_setObject:emergencyEventType forName:SDLRPCParameterNameEmergencyEventType]; } - (SDLEmergencyEventType)emergencyEventType { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameEmergencyEventType error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameEmergencyEventType error:&error]; } - (void)setFuelCutoffStatus:(SDLFuelCutoffStatus)fuelCutoffStatus { - [store sdl_setObject:fuelCutoffStatus forName:SDLRPCParameterNameFuelCutoffStatus]; + [self.store sdl_setObject:fuelCutoffStatus forName:SDLRPCParameterNameFuelCutoffStatus]; } - (SDLFuelCutoffStatus)fuelCutoffStatus { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameFuelCutoffStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameFuelCutoffStatus error:&error]; } - (void)setRolloverEvent:(SDLVehicleDataEventStatus)rolloverEvent { - [store sdl_setObject:rolloverEvent forName:SDLRPCParameterNameRolloverEvent]; + [self.store sdl_setObject:rolloverEvent forName:SDLRPCParameterNameRolloverEvent]; } - (SDLVehicleDataEventStatus)rolloverEvent { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameRolloverEvent error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameRolloverEvent error:&error]; } - (void)setMaximumChangeVelocity:(NSNumber *)maximumChangeVelocity { - [store sdl_setObject:maximumChangeVelocity forName:SDLRPCParameterNameMaximumChangeVelocity]; + [self.store sdl_setObject:maximumChangeVelocity forName:SDLRPCParameterNameMaximumChangeVelocity]; } - (NSNumber *)maximumChangeVelocity { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMaximumChangeVelocity ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMaximumChangeVelocity ofClass:NSNumber.class error:&error]; } - (void)setMultipleEvents:(SDLVehicleDataEventStatus)multipleEvents { - [store sdl_setObject:multipleEvents forName:SDLRPCParameterNameMultipleEvents]; + [self.store sdl_setObject:multipleEvents forName:SDLRPCParameterNameMultipleEvents]; } - (SDLVehicleDataEventStatus)multipleEvents { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameMultipleEvents error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameMultipleEvents error:&error]; } @end diff --git a/SmartDeviceLink/SDLEncodedSyncPData.m b/SmartDeviceLink/SDLEncodedSyncPData.m index 913e2f53a..1d03e2c99 100644 --- a/SmartDeviceLink/SDLEncodedSyncPData.m +++ b/SmartDeviceLink/SDLEncodedSyncPData.m @@ -12,19 +12,22 @@ @implementation SDLEncodedSyncPData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameEncodedSyncPData]) { } return self; } +#pragma clang diagnostic pop - (void)setData:(NSArray *)data { - [parameters sdl_setObject:data forName:SDLRPCParameterNameData]; + [self.parameters sdl_setObject:data forName:SDLRPCParameterNameData]; } - (NSArray *)data { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameData ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameData ofClass:NSString.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLEncodedSyncPDataResponse.m b/SmartDeviceLink/SDLEncodedSyncPDataResponse.m index c71ce9f11..d25d87d16 100644 --- a/SmartDeviceLink/SDLEncodedSyncPDataResponse.m +++ b/SmartDeviceLink/SDLEncodedSyncPDataResponse.m @@ -12,11 +12,14 @@ @implementation SDLEncodedSyncPDataResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameEncodedSyncPData]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLEndAudioPassThru.m b/SmartDeviceLink/SDLEndAudioPassThru.m index 93e7afb4a..3bc00b4fb 100644 --- a/SmartDeviceLink/SDLEndAudioPassThru.m +++ b/SmartDeviceLink/SDLEndAudioPassThru.m @@ -12,11 +12,14 @@ @implementation SDLEndAudioPassThru +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameEndAudioPassThru]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLEndAudioPassThruResponse.m b/SmartDeviceLink/SDLEndAudioPassThruResponse.m index ff1b88da6..e6a99a143 100644 --- a/SmartDeviceLink/SDLEndAudioPassThruResponse.m +++ b/SmartDeviceLink/SDLEndAudioPassThruResponse.m @@ -12,11 +12,14 @@ @implementation SDLEndAudioPassThruResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameEndAudioPassThru]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLEqualizerSettings.m b/SmartDeviceLink/SDLEqualizerSettings.m index 988177006..7db9a3597 100644 --- a/SmartDeviceLink/SDLEqualizerSettings.m +++ b/SmartDeviceLink/SDLEqualizerSettings.m @@ -22,29 +22,29 @@ - (instancetype)initWithChannelId:(UInt8)channelId channelSetting:(UInt8)channel } - (void)setChannelId:(NSNumber *)channelId { - [store sdl_setObject:channelId forName:SDLRPCParameterNameChannelId]; + [self.store sdl_setObject:channelId forName:SDLRPCParameterNameChannelId]; } - (NSNumber *)channelId { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameChannelId ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameChannelId ofClass:NSNumber.class error:&error]; } - (void)setChannelName:(nullable NSString *)channelName { - [store sdl_setObject:channelName forName:SDLRPCParameterNameChannelName]; + [self.store sdl_setObject:channelName forName:SDLRPCParameterNameChannelName]; } - (nullable NSString *)channelName { - return [store sdl_objectForName:SDLRPCParameterNameChannelName ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameChannelName ofClass:NSString.class error:nil]; } - (void)setChannelSetting:(NSNumber *)channelSetting { - [store sdl_setObject:channelSetting forName:SDLRPCParameterNameChannelSetting]; + [self.store sdl_setObject:channelSetting forName:SDLRPCParameterNameChannelSetting]; } - (NSNumber *)channelSetting { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameChannelSetting ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameChannelSetting ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLError.h b/SmartDeviceLink/SDLError.h index 9c6209c5b..715305a24 100644 --- a/SmartDeviceLink/SDLError.h +++ b/SmartDeviceLink/SDLError.h @@ -68,6 +68,7 @@ extern SDLErrorDomain *const SDLErrorDomainRPCStore; + (NSError *)sdl_choiceSetManager_choiceDeletionFailed:(NSDictionary *)userInfo; + (NSError *)sdl_choiceSetManager_choiceUploadFailed:(NSDictionary *)userInfo; + (NSError *)sdl_choiceSetManager_failedToCreateMenuItems; ++ (NSError *)sdl_choiceSetManager_incorrectState:(NSString *)state; #pragma mark Transport @@ -90,6 +91,7 @@ extern SDLErrorDomain *const SDLErrorDomainRPCStore; + (NSException *)sdl_invalidSoftButtonStateException; + (NSException *)sdl_carWindowOrientationException; + (NSException *)sdl_invalidLockscreenSetupException; ++ (NSException *)sdl_invalidSelectorExceptionWithSelector:(SEL)selector; @end diff --git a/SmartDeviceLink/SDLError.m b/SmartDeviceLink/SDLError.m index 7e5a0e95b..8a716c5b0 100644 --- a/SmartDeviceLink/SDLError.m +++ b/SmartDeviceLink/SDLError.m @@ -8,6 +8,8 @@ #import "SDLError.h" +#import "SDLChoiceSetManager.h" + NS_ASSUME_NONNULL_BEGIN #pragma mark Error Domains @@ -237,6 +239,16 @@ + (NSError *)sdl_choiceSetManager_failedToCreateMenuItems { return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorFailedToCreateMenuItems userInfo:userInfo]; } ++ (NSError *)sdl_choiceSetManager_incorrectState:(SDLChoiceManagerState *)state { + NSString *errorString = [NSString stringWithFormat:@"Choice Set Manager error invalid state: %@", state]; + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: errorString, + NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The choice set manager could be in an invalid state because the head unit doesn't support choice sets or the manager failed to set up correctly.", nil), + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"If you are setting the menuName, it is possible that the head unit is sending incorrect displayCapabilities.", nil) + }; + return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorInvalidState userInfo:userInfo]; +} + #pragma mark Transport + (NSError *)sdl_transport_unknownError { @@ -328,6 +340,12 @@ + (NSException *)sdl_invalidLockscreenSetupException { userInfo:nil]; } ++ (NSException *)sdl_invalidSelectorExceptionWithSelector:(SEL)selector { + return [NSException exceptionWithName:@"com.sdl.systemCapabilityManager.selectorException" + reason:[NSString stringWithFormat:@"Capability observation selector: %@ does not match possible selectors, which must have either 0 or 1 parameters", NSStringFromSelector(selector)] + userInfo:nil]; +} + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLErrorConstants.h b/SmartDeviceLink/SDLErrorConstants.h index 8cbed860e..f7c7bcc2a 100644 --- a/SmartDeviceLink/SDLErrorConstants.h +++ b/SmartDeviceLink/SDLErrorConstants.h @@ -123,7 +123,8 @@ typedef NS_ENUM(NSInteger, SDLChoiceSetManagerError) { SDLChoiceSetManagerErrorPendingPresentationDeleted = -1, SDLChoiceSetManagerErrorDeletionFailed = -2, SDLChoiceSetManagerErrorUploadFailed = -3, - SDLChoiceSetManagerErrorFailedToCreateMenuItems = -4 + SDLChoiceSetManagerErrorFailedToCreateMenuItems = -4, + SDLChoiceSetManagerErrorInvalidState = -5 }; /** diff --git a/SmartDeviceLink/SDLFileManager.m b/SmartDeviceLink/SDLFileManager.m index 911ec889f..eef7e92ac 100644 --- a/SmartDeviceLink/SDLFileManager.m +++ b/SmartDeviceLink/SDLFileManager.m @@ -404,8 +404,6 @@ - (void)sdl_uploadFile:(SDLFile *)file completionHandler:(nullable SDLFileManage if ([self sdl_canFileBeUploadedAgain:file maxUploadCount:maxUploadCount failedFileUploadsCount:self.failedFileUploadsCount]) { SDLLogD(@"Attempting to resend file with name %@ after a failed upload attempt", file.name); return [self sdl_uploadFile:file completionHandler:handler]; - } else { - SDLLogE(@"File named %@ failed to upload. Max number of upload attempts reached", file.name); } } @@ -526,11 +524,28 @@ - (float)sdl_uploadPercentage:(float)totalBytes uploadedBytes:(float)uploadedByt * @return True if the file still needs to be (re)sent to Core; false if not. */ - (BOOL)sdl_canFileBeUploadedAgain:(nullable SDLFile *)file maxUploadCount:(UInt8)maxUploadCount failedFileUploadsCount:(NSMutableDictionary *> *)failedFileUploadsCount { - if (!file || [self hasUploadedFile:file]) { + if (![self.currentState isEqualToString:SDLFileManagerStateReady]) { + SDLLogW(@"File named %@ failed to upload. The file manager has shutdown so the file upload will not retry.", file.name); + return NO; + } + + if (!file) { + SDLLogE(@"File can not be uploaded because it is not a valid file."); + return NO; + } + + if ([self hasUploadedFile:file]) { + SDLLogD(@"File named %@ has already been uploaded.", file.name); return NO; } + NSNumber *failedUploadCount = failedFileUploadsCount[file.name]; - return (failedUploadCount == nil) ? YES : (failedUploadCount.integerValue < maxUploadCount); + BOOL canFileBeUploadedAgain = (failedUploadCount == nil) ? YES : (failedUploadCount.integerValue < maxUploadCount); + if (!canFileBeUploadedAgain) { + SDLLogE(@"File named %@ failed to upload. Max number of upload attempts reached.", file.name); + } + + return canFileBeUploadedAgain; } /** diff --git a/SmartDeviceLink/SDLFuelRange.m b/SmartDeviceLink/SDLFuelRange.m index 01d704484..1512a0957 100644 --- a/SmartDeviceLink/SDLFuelRange.m +++ b/SmartDeviceLink/SDLFuelRange.m @@ -16,19 +16,19 @@ @implementation SDLFuelRange - (void)setType:(nullable SDLFuelType)type { - [store sdl_setObject:type forName:SDLRPCParameterNameType]; + [self.store sdl_setObject:type forName:SDLRPCParameterNameType]; } - (nullable SDLFuelType)type { - return [store sdl_enumForName:SDLRPCParameterNameType error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameType error:nil]; } - (void)setRange:(nullable NSNumber *)range { - [store sdl_setObject:range forName:SDLRPCParameterNameRange]; + [self.store sdl_setObject:range forName:SDLRPCParameterNameRange]; } - (nullable NSNumber *)range { - return [store sdl_objectForName:SDLRPCParameterNameRange ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRange ofClass:NSNumber.class error:nil]; } diff --git a/SmartDeviceLink/SDLGPSData.m b/SmartDeviceLink/SDLGPSData.m index 11caf5f5c..e6e68d8e3 100644 --- a/SmartDeviceLink/SDLGPSData.m +++ b/SmartDeviceLink/SDLGPSData.m @@ -11,149 +11,149 @@ @implementation SDLGPSData - (void)setLongitudeDegrees:(NSNumber *)longitudeDegrees { - [store sdl_setObject:longitudeDegrees forName:SDLRPCParameterNameLongitudeDegrees]; + [self.store sdl_setObject:longitudeDegrees forName:SDLRPCParameterNameLongitudeDegrees]; } - (NSNumber *)longitudeDegrees { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLongitudeDegrees ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLongitudeDegrees ofClass:NSNumber.class error:&error]; } - (void)setLatitudeDegrees:(NSNumber *)latitudeDegrees { - [store sdl_setObject:latitudeDegrees forName:SDLRPCParameterNameLatitudeDegrees]; + [self.store sdl_setObject:latitudeDegrees forName:SDLRPCParameterNameLatitudeDegrees]; } - (NSNumber *)latitudeDegrees { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLatitudeDegrees ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLatitudeDegrees ofClass:NSNumber.class error:&error]; } - (void)setUtcYear:(nullable NSNumber *)utcYear { - [store sdl_setObject:utcYear forName:SDLRPCParameterNameUTCYear]; + [self.store sdl_setObject:utcYear forName:SDLRPCParameterNameUTCYear]; } - (nullable NSNumber *)utcYear { - return [store sdl_objectForName:SDLRPCParameterNameUTCYear ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameUTCYear ofClass:NSNumber.class error:nil]; } - (void)setUtcMonth:(nullable NSNumber *)utcMonth { - [store sdl_setObject:utcMonth forName:SDLRPCParameterNameUTCMonth]; + [self.store sdl_setObject:utcMonth forName:SDLRPCParameterNameUTCMonth]; } - (nullable NSNumber *)utcMonth { - return [store sdl_objectForName:SDLRPCParameterNameUTCMonth ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameUTCMonth ofClass:NSNumber.class error:nil]; } - (void)setUtcDay:(nullable NSNumber *)utcDay { - [store sdl_setObject:utcDay forName:SDLRPCParameterNameUTCDay]; + [self.store sdl_setObject:utcDay forName:SDLRPCParameterNameUTCDay]; } - (nullable NSNumber *)utcDay { - return [store sdl_objectForName:SDLRPCParameterNameUTCDay ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameUTCDay ofClass:NSNumber.class error:nil]; } - (void)setUtcHours:(nullable NSNumber *)utcHours { - [store sdl_setObject:utcHours forName:SDLRPCParameterNameUTCHours]; + [self.store sdl_setObject:utcHours forName:SDLRPCParameterNameUTCHours]; } - (nullable NSNumber *)utcHours { - return [store sdl_objectForName:SDLRPCParameterNameUTCHours ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameUTCHours ofClass:NSNumber.class error:nil]; } - (void)setUtcMinutes:(nullable NSNumber *)utcMinutes { - [store sdl_setObject:utcMinutes forName:SDLRPCParameterNameUTCMinutes]; + [self.store sdl_setObject:utcMinutes forName:SDLRPCParameterNameUTCMinutes]; } - (nullable NSNumber *)utcMinutes { - return [store sdl_objectForName:SDLRPCParameterNameUTCMinutes ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameUTCMinutes ofClass:NSNumber.class error:nil]; } - (void)setUtcSeconds:(nullable NSNumber *)utcSeconds { - [store sdl_setObject:utcSeconds forName:SDLRPCParameterNameUTCSeconds]; + [self.store sdl_setObject:utcSeconds forName:SDLRPCParameterNameUTCSeconds]; } - (nullable NSNumber *)utcSeconds { - return [store sdl_objectForName:SDLRPCParameterNameUTCSeconds ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameUTCSeconds ofClass:NSNumber.class error:nil]; } - (void)setCompassDirection:(nullable SDLCompassDirection)compassDirection { - [store sdl_setObject:compassDirection forName:SDLRPCParameterNameCompassDirection]; + [self.store sdl_setObject:compassDirection forName:SDLRPCParameterNameCompassDirection]; } - (nullable SDLCompassDirection)compassDirection { - return [store sdl_enumForName:SDLRPCParameterNameCompassDirection error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameCompassDirection error:nil]; } - (void)setPdop:(nullable NSNumber *)pdop { - [store sdl_setObject:pdop forName:SDLRPCParameterNamePDOP]; + [self.store sdl_setObject:pdop forName:SDLRPCParameterNamePDOP]; } - (nullable NSNumber *)pdop { - return [store sdl_objectForName:SDLRPCParameterNamePDOP ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePDOP ofClass:NSNumber.class error:nil]; } - (void)setHdop:(nullable NSNumber *)hdop { - [store sdl_setObject:hdop forName:SDLRPCParameterNameHDOP]; + [self.store sdl_setObject:hdop forName:SDLRPCParameterNameHDOP]; } - (nullable NSNumber *)hdop { - return [store sdl_objectForName:SDLRPCParameterNameHDOP ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHDOP ofClass:NSNumber.class error:nil]; } - (void)setVdop:(nullable NSNumber *)vdop { - [store sdl_setObject:vdop forName:SDLRPCParameterNameVDOP]; + [self.store sdl_setObject:vdop forName:SDLRPCParameterNameVDOP]; } - (nullable NSNumber *)vdop { - return [store sdl_objectForName:SDLRPCParameterNameVDOP ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameVDOP ofClass:NSNumber.class error:nil]; } - (void)setActual:(nullable NSNumber *)actual { - [store sdl_setObject:actual forName:SDLRPCParameterNameActual]; + [self.store sdl_setObject:actual forName:SDLRPCParameterNameActual]; } - (nullable NSNumber *)actual { - return [store sdl_objectForName:SDLRPCParameterNameActual ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameActual ofClass:NSNumber.class error:nil]; } - (void)setSatellites:(nullable NSNumber *)satellites { - [store sdl_setObject:satellites forName:SDLRPCParameterNameSatellites]; + [self.store sdl_setObject:satellites forName:SDLRPCParameterNameSatellites]; } - (nullable NSNumber *)satellites { - return [store sdl_objectForName:SDLRPCParameterNameSatellites ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSatellites ofClass:NSNumber.class error:nil]; } - (void)setDimension:(nullable SDLDimension)dimension { - [store sdl_setObject:dimension forName:SDLRPCParameterNameDimension]; + [self.store sdl_setObject:dimension forName:SDLRPCParameterNameDimension]; } - (nullable SDLDimension)dimension { - return [store sdl_enumForName:SDLRPCParameterNameDimension error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameDimension error:nil]; } - (void)setAltitude:(nullable NSNumber *)altitude { - [store sdl_setObject:altitude forName:SDLRPCParameterNameAltitude]; + [self.store sdl_setObject:altitude forName:SDLRPCParameterNameAltitude]; } - (nullable NSNumber *)altitude { - return [store sdl_objectForName:SDLRPCParameterNameAltitude ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAltitude ofClass:NSNumber.class error:nil]; } - (void)setHeading:(nullable NSNumber *)heading { - [store sdl_setObject:heading forName:SDLRPCParameterNameHeading]; + [self.store sdl_setObject:heading forName:SDLRPCParameterNameHeading]; } - (nullable NSNumber *)heading { - return [store sdl_objectForName:SDLRPCParameterNameHeading ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeading ofClass:NSNumber.class error:nil]; } - (void)setSpeed:(nullable NSNumber *)speed { - [store sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; + [self.store sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; } - (nullable NSNumber *)speed { - return [store sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGenericResponse.m b/SmartDeviceLink/SDLGenericResponse.m index 949c4c061..59cca10f2 100644 --- a/SmartDeviceLink/SDLGenericResponse.m +++ b/SmartDeviceLink/SDLGenericResponse.m @@ -12,11 +12,14 @@ @implementation SDLGenericResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGenericResponse]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLGetAppServiceData.m b/SmartDeviceLink/SDLGetAppServiceData.m index d8fb73e65..55efbbdd9 100644 --- a/SmartDeviceLink/SDLGetAppServiceData.m +++ b/SmartDeviceLink/SDLGetAppServiceData.m @@ -16,11 +16,14 @@ @implementation SDLGetAppServiceData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetAppServiceData]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithAppServiceType:(SDLAppServiceType)serviceType { self = [self init]; @@ -53,20 +56,20 @@ - (instancetype)initWithServiceType:(SDLAppServiceType)serviceType subscribe:(BO } - (void)setServiceType:(NSString *)serviceType { - [parameters sdl_setObject:serviceType forName:SDLRPCParameterNameServiceType]; + [self.parameters sdl_setObject:serviceType forName:SDLRPCParameterNameServiceType]; } - (NSString *)serviceType { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameServiceType ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameServiceType ofClass:NSString.class error:&error]; } - (void)setSubscribe:(nullable NSNumber *)subscribe { - [parameters sdl_setObject:subscribe forName:SDLRPCParameterNameSubscribe]; + [self.parameters sdl_setObject:subscribe forName:SDLRPCParameterNameSubscribe]; } - (nullable NSNumber *)subscribe { - return [parameters sdl_objectForName:SDLRPCParameterNameSubscribe ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSubscribe ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetAppServiceDataResponse.m b/SmartDeviceLink/SDLGetAppServiceDataResponse.m index de67e4cc8..110d6732a 100644 --- a/SmartDeviceLink/SDLGetAppServiceDataResponse.m +++ b/SmartDeviceLink/SDLGetAppServiceDataResponse.m @@ -17,11 +17,14 @@ @implementation SDLGetAppServiceDataResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetAppServiceData]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithAppServiceData:(SDLAppServiceData *)serviceData { self = [self init]; @@ -35,11 +38,11 @@ - (instancetype)initWithAppServiceData:(SDLAppServiceData *)serviceData { } - (void)setServiceData:(nullable SDLAppServiceData *)serviceData { - [parameters sdl_setObject:serviceData forName:SDLRPCParameterNameServiceData]; + [self.parameters sdl_setObject:serviceData forName:SDLRPCParameterNameServiceData]; } - (nullable SDLAppServiceData *)serviceData { - return [parameters sdl_objectForName:SDLRPCParameterNameServiceData ofClass:SDLAppServiceData.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameServiceData ofClass:SDLAppServiceData.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetCloudAppProperties.m b/SmartDeviceLink/SDLGetCloudAppProperties.m index c6ab76e5c..030c2bdd8 100644 --- a/SmartDeviceLink/SDLGetCloudAppProperties.m +++ b/SmartDeviceLink/SDLGetCloudAppProperties.m @@ -16,11 +16,14 @@ @implementation SDLGetCloudAppProperties +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetCloudAppProperties]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithAppID:(NSString *)appID { self = [self init]; @@ -34,12 +37,12 @@ - (instancetype)initWithAppID:(NSString *)appID { } - (void)setAppID:(NSString *)appID { - [parameters sdl_setObject:appID forName:SDLRPCParameterNameAppId]; + [self.parameters sdl_setObject:appID forName:SDLRPCParameterNameAppId]; } - (NSString *)appID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameAppId ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAppId ofClass:NSString.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m b/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m index 64d7a011d..6114c4636 100644 --- a/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m +++ b/SmartDeviceLink/SDLGetCloudAppPropertiesResponse.m @@ -18,11 +18,14 @@ @implementation SDLGetCloudAppPropertiesResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetCloudAppProperties]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithProperties:(SDLCloudAppProperties *)properties { self = [self init]; @@ -36,11 +39,11 @@ - (instancetype)initWithProperties:(SDLCloudAppProperties *)properties { } - (void)setProperties:(nullable SDLCloudAppProperties *)properties { - [parameters sdl_setObject:properties forName:SDLRPCParameterNameProperties]; + [self.parameters sdl_setObject:properties forName:SDLRPCParameterNameProperties]; } - (nullable SDLCloudAppProperties *)properties { - return [parameters sdl_objectForName:SDLRPCParameterNameProperties ofClass:SDLCloudAppProperties.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameProperties ofClass:SDLCloudAppProperties.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetDTCs.m b/SmartDeviceLink/SDLGetDTCs.m index 61b7e0b74..95fcff1b8 100644 --- a/SmartDeviceLink/SDLGetDTCs.m +++ b/SmartDeviceLink/SDLGetDTCs.m @@ -12,11 +12,14 @@ @implementation SDLGetDTCs +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetDTCs]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithECUName:(UInt16)name mask:(UInt8)mask { self = [self initWithECUName:name]; @@ -41,20 +44,20 @@ - (instancetype)initWithECUName:(UInt16)name { } - (void)setEcuName:(NSNumber *)ecuName { - [parameters sdl_setObject:ecuName forName:SDLRPCParameterNameECUName]; + [self.parameters sdl_setObject:ecuName forName:SDLRPCParameterNameECUName]; } - (NSNumber *)ecuName { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameECUName ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECUName ofClass:NSNumber.class error:&error]; } - (void)setDtcMask:(nullable NSNumber *)dtcMask { - [parameters sdl_setObject:dtcMask forName:SDLRPCParameterNameDTCMask]; + [self.parameters sdl_setObject:dtcMask forName:SDLRPCParameterNameDTCMask]; } - (nullable NSNumber *)dtcMask { - return [parameters sdl_objectForName:SDLRPCParameterNameDTCMask ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDTCMask ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetDTCsResponse.m b/SmartDeviceLink/SDLGetDTCsResponse.m index ce31face1..087990a88 100644 --- a/SmartDeviceLink/SDLGetDTCsResponse.m +++ b/SmartDeviceLink/SDLGetDTCsResponse.m @@ -12,28 +12,31 @@ @implementation SDLGetDTCsResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetDTCs]) { } return self; } +#pragma clang diagnostic pop - (void)setEcuHeader:(NSNumber *)ecuHeader { - [parameters sdl_setObject:ecuHeader forName:SDLRPCParameterNameECUHeader]; + [self.parameters sdl_setObject:ecuHeader forName:SDLRPCParameterNameECUHeader]; } - (NSNumber *)ecuHeader { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameECUHeader ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECUHeader ofClass:NSNumber.class error:&error]; } - (void)setDtc:(NSArray *)dtc { - [parameters sdl_setObject:dtc forName:SDLRPCParameterNameDTC]; + [self.parameters sdl_setObject:dtc forName:SDLRPCParameterNameDTC]; } - (NSArray *)dtc { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameDTC ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameDTC ofClass:NSString.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLGetFile.m b/SmartDeviceLink/SDLGetFile.m index 3bd11d2e9..239a034ba 100644 --- a/SmartDeviceLink/SDLGetFile.m +++ b/SmartDeviceLink/SDLGetFile.m @@ -17,11 +17,14 @@ @implementation SDLGetFile +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetFile]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithFileName:(NSString *)fileName { self = [self init]; @@ -59,44 +62,44 @@ - (instancetype)initWithFileName:(NSString *)fileName appServiceId:(nullable NSS } - (void)setFileName:(NSString *)fileName { - [parameters sdl_setObject:fileName forName:SDLRPCParameterNameFilename]; + [self.parameters sdl_setObject:fileName forName:SDLRPCParameterNameFilename]; } - (NSString *)fileName { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameFilename ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFilename ofClass:NSString.class error:&error]; } - (void)setAppServiceId:(nullable NSString *)appServiceId { - [parameters sdl_setObject:appServiceId forName:SDLRPCParameterNameAppServiceId]; + [self.parameters sdl_setObject:appServiceId forName:SDLRPCParameterNameAppServiceId]; } - (nullable NSString *)appServiceId { - return [parameters sdl_objectForName:SDLRPCParameterNameAppServiceId ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAppServiceId ofClass:NSString.class error:nil]; } - (void)setFileType:(nullable SDLFileType)fileType { - [parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType]; + [self.parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType]; } - (nullable SDLFileType)fileType { - return [parameters sdl_enumForName:SDLRPCParameterNameFileType error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameFileType error:nil]; } - (void)setOffset:(nullable NSNumber *)offset { - [parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset]; + [self.parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset]; } - (nullable NSNumber *)offset { - return [parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil]; } - (void)setLength:(nullable NSNumber *)length { - [parameters sdl_setObject:length forName:SDLRPCParameterNameLength]; + [self.parameters sdl_setObject:length forName:SDLRPCParameterNameLength]; } - (nullable NSNumber *)length { - return [parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetFileResponse.m b/SmartDeviceLink/SDLGetFileResponse.m index 14e86e8ce..57a2b3f7f 100644 --- a/SmartDeviceLink/SDLGetFileResponse.m +++ b/SmartDeviceLink/SDLGetFileResponse.m @@ -16,11 +16,14 @@ @implementation SDLGetFileResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetFile]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithOffset:(UInt32)offset length:(UInt32)length fileType:(nullable SDLFileType)fileType crc:(UInt32)crc { self = [self init]; @@ -37,35 +40,35 @@ - (instancetype)initWithOffset:(UInt32)offset length:(UInt32)length fileType:(nu } - (void)setOffset:(nullable NSNumber *)offset { - [parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset]; + [self.parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset]; } - (nullable NSNumber *)offset { - return [parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil]; } - (void)setLength:(nullable NSNumber *)length { - [parameters sdl_setObject:length forName:SDLRPCParameterNameLength]; + [self.parameters sdl_setObject:length forName:SDLRPCParameterNameLength]; } - (nullable NSNumber *)length { - return [parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil]; } - (void)setFileType:(nullable SDLFileType)fileType { - [parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType]; + [self.parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType]; } - (nullable SDLFileType)fileType { - return [parameters sdl_enumForName:SDLRPCParameterNameFileType error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameFileType error:nil]; } - (void)setCrc:(nullable NSNumber *)crc { - [parameters sdl_setObject:crc forName:SDLRPCParameterNameCRC]; + [self.parameters sdl_setObject:crc forName:SDLRPCParameterNameCRC]; } - (nullable NSNumber *)crc { - return [parameters sdl_objectForName:SDLRPCParameterNameCRC ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCRC ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetInteriorVehicleData.m b/SmartDeviceLink/SDLGetInteriorVehicleData.m index f91938fa3..4f283fb49 100755 --- a/SmartDeviceLink/SDLGetInteriorVehicleData.m +++ b/SmartDeviceLink/SDLGetInteriorVehicleData.m @@ -11,11 +11,14 @@ @implementation SDLGetInteriorVehicleData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetInteriorVehicleData]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithModuleType:(SDLModuleType)moduleType; { self = [self init]; @@ -53,20 +56,20 @@ - (instancetype)initAndUnsubscribeToModuleType:(SDLModuleType)moduleType { } - (void)setModuleType:(SDLModuleType)moduleType { - [parameters sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType]; + [self.parameters sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType]; } - (SDLModuleType)moduleType { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameModuleType error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameModuleType error:&error]; } - (void)setSubscribe:(nullable NSNumber *)subscribe { - [parameters sdl_setObject:subscribe forName:SDLRPCParameterNameSubscribe]; + [self.parameters sdl_setObject:subscribe forName:SDLRPCParameterNameSubscribe]; } - (nullable NSNumber *)subscribe { - return [parameters sdl_objectForName:SDLRPCParameterNameSubscribe ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSubscribe ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m b/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m index 3a7096cb3..d57c35ad8 100644 --- a/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m +++ b/SmartDeviceLink/SDLGetInteriorVehicleDataResponse.m @@ -13,27 +13,30 @@ @implementation SDLGetInteriorVehicleDataResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetInteriorVehicleData]) { } return self; } +#pragma clang diagnostic pop - (void)setModuleData:(SDLModuleData *)moduleData { - [parameters sdl_setObject:moduleData forName:SDLRPCParameterNameModuleData]; + [self.parameters sdl_setObject:moduleData forName:SDLRPCParameterNameModuleData]; } - (SDLModuleData *)moduleData { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameModuleData ofClass:SDLModuleData.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameModuleData ofClass:SDLModuleData.class error:&error]; } - (void)setIsSubscribed:(nullable NSNumber *)isSubscribed { - [parameters sdl_setObject:isSubscribed forName:SDLRPCParameterNameIsSubscribed]; + [self.parameters sdl_setObject:isSubscribed forName:SDLRPCParameterNameIsSubscribed]; } - (nullable NSNumber *)isSubscribed { - return [parameters sdl_objectForName:SDLRPCParameterNameIsSubscribed ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameIsSubscribed ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetSystemCapability.m b/SmartDeviceLink/SDLGetSystemCapability.m index df14d5212..0e966de18 100644 --- a/SmartDeviceLink/SDLGetSystemCapability.m +++ b/SmartDeviceLink/SDLGetSystemCapability.m @@ -17,11 +17,14 @@ @implementation SDLGetSystemCapability +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetSystemCapability]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithType:(SDLSystemCapabilityType)type { self = [self init]; @@ -46,20 +49,20 @@ - (instancetype)initWithType:(SDLSystemCapabilityType)type subscribe:(BOOL)subsc } - (void)setSystemCapabilityType:(SDLSystemCapabilityType)type { - [parameters sdl_setObject:type forName:SDLRPCParameterNameSystemCapabilityType]; + [self.parameters sdl_setObject:type forName:SDLRPCParameterNameSystemCapabilityType]; } - (SDLSystemCapabilityType)systemCapabilityType { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameSystemCapabilityType error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameSystemCapabilityType error:&error]; } - (void)setSubscribe:(nullable NSNumber *)subscribe { - [parameters sdl_setObject:subscribe forName:SDLRPCParameterNameSubscribe]; + [self.parameters sdl_setObject:subscribe forName:SDLRPCParameterNameSubscribe]; } - (nullable NSNumber *)subscribe { - return [parameters sdl_objectForName:SDLRPCParameterNameSubscribe ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSubscribe ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetSystemCapabilityResponse.m b/SmartDeviceLink/SDLGetSystemCapabilityResponse.m index e1cd63f90..c3abcc757 100644 --- a/SmartDeviceLink/SDLGetSystemCapabilityResponse.m +++ b/SmartDeviceLink/SDLGetSystemCapabilityResponse.m @@ -18,6 +18,8 @@ @implementation SDLGetSystemCapabilityResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { self = [super initWithName:SDLRPCFunctionNameGetSystemCapability]; if (!self) { @@ -26,14 +28,15 @@ - (instancetype)init { return self; } +#pragma clang diagnostic pop - (void)setSystemCapability:(SDLSystemCapability *)systemCapability { - [parameters sdl_setObject:systemCapability forName:SDLRPCParameterNameSystemCapability]; + [self.parameters sdl_setObject:systemCapability forName:SDLRPCParameterNameSystemCapability]; } - (SDLSystemCapability *)systemCapability { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameSystemCapability ofClass:SDLSystemCapability.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSystemCapability ofClass:SDLSystemCapability.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLGetVehicleData.m b/SmartDeviceLink/SDLGetVehicleData.m index 9856e2443..7ed2bb189 100644 --- a/SmartDeviceLink/SDLGetVehicleData.m +++ b/SmartDeviceLink/SDLGetVehicleData.m @@ -12,11 +12,14 @@ @implementation SDLGetVehicleData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetVehicleData]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure vin:(BOOL)vin wiperStatus:(BOOL)wiperStatus { return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:NO emergencyEvent:emergencyEvent engineOilLife:NO engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:NO gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:NO vin:vin wiperStatus:wiperStatus]; @@ -67,243 +70,243 @@ - (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPositio } - (void)setGps:(nullable NSNumber *)gps { - [parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; + [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; } - (nullable NSNumber *)gps { - return [parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil]; } - (void)setSpeed:(nullable NSNumber *)speed { - [parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; + [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; } - (nullable NSNumber *)speed { - return [parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; } - (void)setRpm:(nullable NSNumber *)rpm { - [parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; + [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; } - (nullable NSNumber *)rpm { - return [parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel:(nullable NSNumber *)fuelLevel { - [parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; + [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; } - (nullable NSNumber *)fuelLevel { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel_State:(nullable NSNumber *)fuelLevel_State { - [parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; + [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; } - (nullable NSNumber *)fuelLevel_State { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil]; } - (void)setFuelRange:(nullable NSNumber *)fuelRange { - [parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; + [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; } - (nullable NSNumber *)fuelRange { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil]; } - (void)setInstantFuelConsumption:(nullable NSNumber *)instantFuelConsumption { - [parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; + [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; } - (nullable NSNumber *)instantFuelConsumption { - return [parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; } - (void)setExternalTemperature:(nullable NSNumber *)externalTemperature { - [parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; + [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; } - (nullable NSNumber *)externalTemperature { - return [parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; } - (void)setVin:(nullable NSNumber *)vin { - [parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN]; + [self.parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN]; } - (nullable NSNumber *)vin { - return [parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSNumber.class error:nil]; } - (void)setPrndl:(nullable NSNumber *)prndl { - [parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; + [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; } - (nullable NSNumber *)prndl { - return [parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil]; } - (void)setTirePressure:(nullable NSNumber *)tirePressure { - [parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; + [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; } - (nullable NSNumber *)tirePressure { - return [parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil]; } - (void)setOdometer:(nullable NSNumber *)odometer { - [parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; + [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; } - (nullable NSNumber *)odometer { - return [parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; } - (void)setBeltStatus:(nullable NSNumber *)beltStatus { - [parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; + [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; } - (nullable NSNumber *)beltStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil]; } - (void)setBodyInformation:(nullable NSNumber *)bodyInformation { - [parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; + [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; } - (nullable NSNumber *)bodyInformation { - return [parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil]; } - (void)setDeviceStatus:(nullable NSNumber *)deviceStatus { - [parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; + [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; } - (nullable NSNumber *)deviceStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil]; } - (void)setDriverBraking:(nullable NSNumber *)driverBraking { - [parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; + [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; } - (nullable NSNumber *)driverBraking { - return [parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil]; } - (void)setWiperStatus:(nullable NSNumber *)wiperStatus { - [parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; + [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; } - (nullable NSNumber *)wiperStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil]; } - (void)setHeadLampStatus:(nullable NSNumber *)headLampStatus { - [parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; + [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; } - (nullable NSNumber *)headLampStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil]; } - (void)setEngineOilLife:(nullable NSNumber *)engineOilLife { - [parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; + [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; } - (nullable NSNumber *)engineOilLife { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; } - (void)setEngineTorque:(nullable NSNumber *)engineTorque { - [parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; + [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; } - (nullable NSNumber *)engineTorque { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; } - (void)setAccPedalPosition:(nullable NSNumber *)accPedalPosition { - [parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; + [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; } - (nullable NSNumber *)accPedalPosition { - return [parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; } - (void)setSteeringWheelAngle:(nullable NSNumber *)steeringWheelAngle { - [parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; + [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; } - (nullable NSNumber *)steeringWheelAngle { - return [parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; } - (void)setECallInfo:(nullable NSNumber *)eCallInfo { - [parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; + [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; } - (nullable NSNumber *)eCallInfo { - return [parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil]; } - (void)setAirbagStatus:(nullable NSNumber *)airbagStatus { - [parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; + [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; } - (nullable NSNumber *)airbagStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil]; } - (void)setEmergencyEvent:(nullable NSNumber *)emergencyEvent { - [parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; + [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; } - (nullable NSNumber *)emergencyEvent { - return [parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil]; } - (void)setClusterModeStatus:(nullable NSNumber *)clusterModeStatus { - [parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; + [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; } - (nullable NSNumber *)clusterModeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil]; } - (void)setMyKey:(nullable NSNumber *)myKey { - [parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; + [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; } - (nullable NSNumber *)myKey { - return [parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil]; } - (void)setElectronicParkBrakeStatus:(nullable NSNumber *)electronicParkBrakeStatus { - [parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; + [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; } - (nullable NSNumber *)electronicParkBrakeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil]; } - (void)setTurnSignal:(nullable NSNumber *)turnSignal { - [parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; + [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; } - (nullable NSNumber *)turnSignal { - return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil]; } - (void)setCloudAppVehicleID:(nullable NSNumber *)cloudAppVehicleID { - [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; + [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; } - (nullable NSNumber *)cloudAppVehicleID { - return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetVehicleDataResponse.m b/SmartDeviceLink/SDLGetVehicleDataResponse.m index 6e7266a34..2b47a92b3 100644 --- a/SmartDeviceLink/SDLGetVehicleDataResponse.m +++ b/SmartDeviceLink/SDLGetVehicleDataResponse.m @@ -24,250 +24,253 @@ @implementation SDLGetVehicleDataResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetVehicleData]) { } return self; } +#pragma clang diagnostic pop - (void)setGps:(nullable SDLGPSData *)gps { - [parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; + [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; } - (nullable SDLGPSData *)gps { - return [parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLGPSData.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLGPSData.class error:nil]; } - (void)setSpeed:(nullable NSNumber *)speed { - [parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; + [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; } - (nullable NSNumber *)speed { - return [parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; } - (void)setRpm:(nullable NSNumber *)rpm { - [parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; + [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; } - (nullable NSNumber *)rpm { - return [parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel:(nullable NSNumber *)fuelLevel { - [parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; + [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; } - (nullable NSNumber *)fuelLevel { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel_State:(nullable SDLComponentVolumeStatus)fuelLevel_State { - [parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; + [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; } - (nullable SDLComponentVolumeStatus)fuelLevel_State { - return [parameters sdl_enumForName:SDLRPCParameterNameFuelLevelState error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameFuelLevelState error:nil]; } - (void)setInstantFuelConsumption:(nullable NSNumber *)instantFuelConsumption { - [parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; + [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; } - (void)setFuelRange:(nullable NSArray *)fuelRange { - [parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; + [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; } - (nullable NSArray *)fuelRange { - return [parameters sdl_objectsForName:SDLRPCParameterNameFuelRange ofClass:SDLFuelRange.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameFuelRange ofClass:SDLFuelRange.class error:nil]; } - (nullable NSNumber *)instantFuelConsumption { - return [parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; } - (void)setExternalTemperature:(nullable NSNumber *)externalTemperature { - [parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; + [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; } - (nullable NSNumber *)externalTemperature { - return [parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; } - (void)setVin:(nullable NSString *)vin { - [parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN]; + [self.parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN]; } - (nullable NSString *)vin { - return [parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSString.class error:nil]; } - (void)setPrndl:(nullable SDLPRNDL)prndl { - [parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; + [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; } - (nullable SDLPRNDL)prndl { - return [parameters sdl_enumForName:SDLRPCParameterNamePRNDL error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNamePRNDL error:nil]; } - (void)setTirePressure:(nullable SDLTireStatus *)tirePressure { - [parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; + [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; } - (nullable SDLTireStatus *)tirePressure { - return [parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLTireStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLTireStatus.class error:nil]; } - (void)setOdometer:(nullable NSNumber *)odometer { - [parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; + [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; } - (nullable NSNumber *)odometer { - return [parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; } - (void)setBeltStatus:(nullable SDLBeltStatus *)beltStatus { - [parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; + [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; } - (nullable SDLBeltStatus *)beltStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLBeltStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLBeltStatus.class error:nil]; } - (void)setBodyInformation:(nullable SDLBodyInformation *)bodyInformation { - [parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; + [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; } - (nullable SDLBodyInformation *)bodyInformation { - return [parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLBodyInformation.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLBodyInformation.class error:nil]; } - (void)setDeviceStatus:(nullable SDLDeviceStatus *)deviceStatus { - [parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; + [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; } - (nullable SDLDeviceStatus *)deviceStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLDeviceStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLDeviceStatus.class error:nil]; } - (void)setDriverBraking:(nullable SDLVehicleDataEventStatus)driverBraking { - [parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; + [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; } - (nullable SDLVehicleDataEventStatus)driverBraking { - return [parameters sdl_enumForName:SDLRPCParameterNameDriverBraking error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameDriverBraking error:nil]; } - (void)setWiperStatus:(nullable SDLWiperStatus)wiperStatus { - [parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; + [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; } - (nullable SDLWiperStatus)wiperStatus { - return [parameters sdl_enumForName:SDLRPCParameterNameWiperStatus error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameWiperStatus error:nil]; } - (void)setHeadLampStatus:(nullable SDLHeadLampStatus *)headLampStatus { - [parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; + [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; } - (nullable SDLHeadLampStatus *)headLampStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLHeadLampStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLHeadLampStatus.class error:nil]; } - (void)setEngineOilLife:(nullable NSNumber *)engineOilLife { - [parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; + [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; } - (nullable NSNumber *)engineOilLife { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; } - (void)setEngineTorque:(nullable NSNumber *)engineTorque { - [parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; + [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; } - (nullable NSNumber *)engineTorque { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; } - (void)setAccPedalPosition:(nullable NSNumber *)accPedalPosition { - [parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; + [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; } - (nullable NSNumber *)accPedalPosition { - return [parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; } - (void)setSteeringWheelAngle:(nullable NSNumber *)steeringWheelAngle { - [parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; + [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; } - (nullable NSNumber *)steeringWheelAngle { - return [parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; } - (void)setECallInfo:(nullable SDLECallInfo *)eCallInfo { - [parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; + [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; } - (nullable SDLECallInfo *)eCallInfo { - return [parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLECallInfo.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLECallInfo.class error:nil]; } - (void)setAirbagStatus:(nullable SDLAirbagStatus *)airbagStatus { - [parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; + [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; } - (nullable SDLAirbagStatus *)airbagStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLAirbagStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLAirbagStatus.class error:nil]; } - (void)setEmergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent { - [parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; + [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; } - (nullable SDLEmergencyEvent *)emergencyEvent { - return [parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLEmergencyEvent.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLEmergencyEvent.class error:nil]; } - (void)setClusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus { - [parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; + [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; } - (nullable SDLClusterModeStatus *)clusterModeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:SDLClusterModeStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:SDLClusterModeStatus.class error:nil]; } - (void)setMyKey:(nullable SDLMyKey *)myKey { - [parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; + [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; } - (nullable SDLMyKey *)myKey { - return [parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLMyKey.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLMyKey.class error:nil]; } - (void)setElectronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus { - [parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; + [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; } - (nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus { - return [parameters sdl_enumForName:SDLRPCParameterNameElectronicParkBrakeStatus error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameElectronicParkBrakeStatus error:nil]; } - (void)setTurnSignal:(nullable SDLTurnSignal)turnSignal { - [parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; + [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; } - (nullable SDLTurnSignal)turnSignal { - return [parameters sdl_enumForName:SDLRPCParameterNameTurnSignal error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameTurnSignal error:nil]; } - (void)setCloudAppVehicleID:(nullable NSString *)cloudAppVehicleID { - [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; + [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; } - (nullable NSString *)cloudAppVehicleID { - return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetWayPoints.m b/SmartDeviceLink/SDLGetWayPoints.m index 1c3ebe700..6e7f7a489 100644 --- a/SmartDeviceLink/SDLGetWayPoints.m +++ b/SmartDeviceLink/SDLGetWayPoints.m @@ -11,11 +11,14 @@ @implementation SDLGetWayPoints +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetWayPoints]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithType:(SDLWayPointType)type { @@ -30,11 +33,11 @@ - (instancetype)initWithType:(SDLWayPointType)type { } - (void)setWaypointType:(nullable SDLWayPointType)waypointType { - [parameters sdl_setObject:waypointType forName:SDLRPCParameterNameWayPointType]; + [self.parameters sdl_setObject:waypointType forName:SDLRPCParameterNameWayPointType]; } - (nullable SDLWayPointType)waypointType { - return [parameters sdl_enumForName:SDLRPCParameterNameWayPointType error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameWayPointType error:nil]; } @end diff --git a/SmartDeviceLink/SDLGetWayPointsResponse.m b/SmartDeviceLink/SDLGetWayPointsResponse.m index 19e5ca6cb..fec11281a 100644 --- a/SmartDeviceLink/SDLGetWayPointsResponse.m +++ b/SmartDeviceLink/SDLGetWayPointsResponse.m @@ -12,18 +12,21 @@ @implementation SDLGetWayPointsResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameGetWayPoints]) { } return self; } +#pragma clang diagnostic pop - (void)setWaypoints:(nullable NSArray *)waypoints { - [parameters sdl_setObject:waypoints forName:SDLRPCParameterNameWayPoints]; + [self.parameters sdl_setObject:waypoints forName:SDLRPCParameterNameWayPoints]; } - (nullable NSArray *)waypoints { - return [parameters sdl_objectsForName:SDLRPCParameterNameWayPoints ofClass:SDLLocationDetails.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameWayPoints ofClass:SDLLocationDetails.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLHMICapabilities.m b/SmartDeviceLink/SDLHMICapabilities.m index 11fa60306..353d90a27 100644 --- a/SmartDeviceLink/SDLHMICapabilities.m +++ b/SmartDeviceLink/SDLHMICapabilities.m @@ -12,27 +12,27 @@ @implementation SDLHMICapabilities - (void)setNavigation:(nullable NSNumber *)navigation { - [store sdl_setObject:navigation forName:SDLRPCParameterNameNavigation]; + [self.store sdl_setObject:navigation forName:SDLRPCParameterNameNavigation]; } - (nullable NSNumber *)navigation { - return [store sdl_objectForName:SDLRPCParameterNameNavigation ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNavigation ofClass:NSNumber.class error:nil]; } - (void)setPhoneCall:(nullable NSNumber *)phoneCall { - [store sdl_setObject:phoneCall forName:SDLRPCParameterNamePhoneCall]; + [self.store sdl_setObject:phoneCall forName:SDLRPCParameterNamePhoneCall]; } - (nullable NSNumber *)phoneCall { - return [store sdl_objectForName:SDLRPCParameterNamePhoneCall ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePhoneCall ofClass:NSNumber.class error:nil]; } - (void)setVideoStreaming:(nullable NSNumber *)videoStreaming { - [store sdl_setObject:videoStreaming forName:SDLRPCParameterNameVideoStreaming]; + [self.store sdl_setObject:videoStreaming forName:SDLRPCParameterNameVideoStreaming]; } - (nullable NSNumber *)videoStreaming { - return [store sdl_objectForName:SDLRPCParameterNameVideoStreaming ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameVideoStreaming ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLHMIPermissions.m b/SmartDeviceLink/SDLHMIPermissions.m index b48ca2be4..5cd8bb8a7 100644 --- a/SmartDeviceLink/SDLHMIPermissions.m +++ b/SmartDeviceLink/SDLHMIPermissions.m @@ -12,21 +12,21 @@ @implementation SDLHMIPermissions - (void)setAllowed:(NSArray *)allowed { - [store sdl_setObject:allowed forName:SDLRPCParameterNameAllowed]; + [self.store sdl_setObject:allowed forName:SDLRPCParameterNameAllowed]; } - (NSArray *)allowed { NSError *error = nil; - return [store sdl_enumsForName:SDLRPCParameterNameAllowed error:&error]; + return [self.store sdl_enumsForName:SDLRPCParameterNameAllowed error:&error]; } - (void)setUserDisallowed:(NSArray *)userDisallowed { - [store sdl_setObject:userDisallowed forName:SDLRPCParameterNameUserDisallowed]; + [self.store sdl_setObject:userDisallowed forName:SDLRPCParameterNameUserDisallowed]; } - (NSArray *)userDisallowed { NSError *error = nil; - return [store sdl_enumsForName:SDLRPCParameterNameUserDisallowed error:&error]; + return [self.store sdl_enumsForName:SDLRPCParameterNameUserDisallowed error:&error]; } @end diff --git a/SmartDeviceLink/SDLHMISettingsControlCapabilities.m b/SmartDeviceLink/SDLHMISettingsControlCapabilities.m index fc93c8005..82eff7c81 100644 --- a/SmartDeviceLink/SDLHMISettingsControlCapabilities.m +++ b/SmartDeviceLink/SDLHMISettingsControlCapabilities.m @@ -33,37 +33,37 @@ - (instancetype)initWithModuleName:(NSString *)moduleName distanceUnitAvailable: } - (void)setModuleName:(NSString *)moduleName { - [store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; + [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; } - (NSString *)moduleName { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; } - (void)setDistanceUnitAvailable:(nullable NSNumber *)distanceUnitAvailable { - [store sdl_setObject:distanceUnitAvailable forName:SDLRPCParameterNameDistanceUnitAvailable]; + [self.store sdl_setObject:distanceUnitAvailable forName:SDLRPCParameterNameDistanceUnitAvailable]; } - (nullable NSNumber *)distanceUnitAvailable { - return [store sdl_objectForName:SDLRPCParameterNameDistanceUnitAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDistanceUnitAvailable ofClass:NSNumber.class error:nil]; } - (void)setTemperatureUnitAvailable:(nullable NSNumber *)temperatureUnitAvailable { - [store sdl_setObject:temperatureUnitAvailable forName:SDLRPCParameterNameTemperatureUnitAvailable]; + [self.store sdl_setObject:temperatureUnitAvailable forName:SDLRPCParameterNameTemperatureUnitAvailable]; } - (nullable NSNumber *)temperatureUnitAvailable { - return [store sdl_objectForName:SDLRPCParameterNameTemperatureUnitAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTemperatureUnitAvailable ofClass:NSNumber.class error:nil]; } - (void)setDisplayModeUnitAvailable:(nullable NSNumber *)displayModeUnitAvailable { - [store sdl_setObject:displayModeUnitAvailable forName:SDLRPCParameterNameDisplayModeUnitAvailable]; + [self.store sdl_setObject:displayModeUnitAvailable forName:SDLRPCParameterNameDisplayModeUnitAvailable]; } - (nullable NSNumber *)displayModeUnitAvailable { - return [store sdl_objectForName:SDLRPCParameterNameDisplayModeUnitAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDisplayModeUnitAvailable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLHMISettingsControlData.m b/SmartDeviceLink/SDLHMISettingsControlData.m index 15a36ed52..df7982e85 100644 --- a/SmartDeviceLink/SDLHMISettingsControlData.m +++ b/SmartDeviceLink/SDLHMISettingsControlData.m @@ -22,27 +22,27 @@ - (instancetype)initWithDisplaymode:(SDLDisplayMode)displayMode temperatureUnit: } - (void)setDisplayMode:(nullable SDLDisplayMode)displayMode { - [store sdl_setObject:displayMode forName:SDLRPCParameterNameDisplayMode]; + [self.store sdl_setObject:displayMode forName:SDLRPCParameterNameDisplayMode]; } - (nullable SDLDisplayMode)displayMode { - return [store sdl_enumForName:SDLRPCParameterNameDisplayMode error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameDisplayMode error:nil]; } - (void)setDistanceUnit:(nullable SDLDistanceUnit)distanceUnit { - [store sdl_setObject:distanceUnit forName:SDLRPCParameterNameDistanceUnit]; + [self.store sdl_setObject:distanceUnit forName:SDLRPCParameterNameDistanceUnit]; } - (nullable SDLDistanceUnit)distanceUnit { - return [store sdl_enumForName:SDLRPCParameterNameDistanceUnit error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameDistanceUnit error:nil]; } - (void)setTemperatureUnit:(nullable SDLTemperatureUnit)temperatureUnit { - [store sdl_setObject:temperatureUnit forName:SDLRPCParameterNameTemperatureUnit]; + [self.store sdl_setObject:temperatureUnit forName:SDLRPCParameterNameTemperatureUnit]; } - (nullable SDLTemperatureUnit)temperatureUnit { - return [store sdl_enumForName:SDLRPCParameterNameTemperatureUnit error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameTemperatureUnit error:nil]; } @end diff --git a/SmartDeviceLink/SDLHapticRect.m b/SmartDeviceLink/SDLHapticRect.m index b7d74c3a3..6641f528c 100644 --- a/SmartDeviceLink/SDLHapticRect.m +++ b/SmartDeviceLink/SDLHapticRect.m @@ -28,20 +28,20 @@ - (instancetype)initWithId:(UInt32)id rect:(nonnull SDLRectangle *)rect { } - (void)setId:(NSNumber *)id { - [store sdl_setObject:id forName:SDLRPCParameterNameId]; + [self.store sdl_setObject:id forName:SDLRPCParameterNameId]; } - (NSNumber *)id { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameId ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameId ofClass:NSNumber.class error:&error]; } - (void)setRect:(SDLRectangle *)rect { - [store sdl_setObject:rect forName:SDLRPCParameterNameRect]; + [self.store sdl_setObject:rect forName:SDLRPCParameterNameRect]; } - (SDLRectangle *)rect { - return [store sdl_objectForName:SDLRPCParameterNameRect ofClass:SDLRectangle.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRect ofClass:SDLRectangle.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLHeadLampStatus.m b/SmartDeviceLink/SDLHeadLampStatus.m index 89bad48ee..e9f018f02 100644 --- a/SmartDeviceLink/SDLHeadLampStatus.m +++ b/SmartDeviceLink/SDLHeadLampStatus.m @@ -12,29 +12,29 @@ @implementation SDLHeadLampStatus - (void)setLowBeamsOn:(NSNumber *)lowBeamsOn { - [store sdl_setObject:lowBeamsOn forName:SDLRPCParameterNameLowBeamsOn]; + [self.store sdl_setObject:lowBeamsOn forName:SDLRPCParameterNameLowBeamsOn]; } - (NSNumber *)lowBeamsOn { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLowBeamsOn ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLowBeamsOn ofClass:NSNumber.class error:&error]; } - (void)setHighBeamsOn:(NSNumber *)highBeamsOn { - [store sdl_setObject:highBeamsOn forName:SDLRPCParameterNameHighBeamsOn]; + [self.store sdl_setObject:highBeamsOn forName:SDLRPCParameterNameHighBeamsOn]; } - (NSNumber *)highBeamsOn { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameHighBeamsOn ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameHighBeamsOn ofClass:NSNumber.class error:&error]; } - (void)setAmbientLightSensorStatus:(nullable SDLAmbientLightStatus)ambientLightSensorStatus { - [store sdl_setObject:ambientLightSensorStatus forName:SDLRPCParameterNameAmbientLightSensorStatus]; + [self.store sdl_setObject:ambientLightSensorStatus forName:SDLRPCParameterNameAmbientLightSensorStatus]; } - (nullable SDLAmbientLightStatus)ambientLightSensorStatus { - return [store sdl_enumForName:SDLRPCParameterNameAmbientLightSensorStatus error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameAmbientLightSensorStatus error:nil]; } @end diff --git a/SmartDeviceLink/SDLIAPConstants.h b/SmartDeviceLink/SDLIAPConstants.h new file mode 100644 index 000000000..0f72f93fd --- /dev/null +++ b/SmartDeviceLink/SDLIAPConstants.h @@ -0,0 +1,14 @@ +// +// SDLIAPConstants.h +// SmartDeviceLink +// +// Created by Nicole on 4/17/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +extern NSString *const ControlProtocolString; +extern NSString *const IndexedProtocolStringPrefix; +extern NSString *const LegacyProtocolString; +extern NSString *const MultiSessionProtocolString; diff --git a/SmartDeviceLink/SDLIAPConstants.m b/SmartDeviceLink/SDLIAPConstants.m new file mode 100644 index 000000000..3990d7686 --- /dev/null +++ b/SmartDeviceLink/SDLIAPConstants.m @@ -0,0 +1,14 @@ +// +// SDLIAPConstants.m +// SmartDeviceLink +// +// Created by Nicole on 4/17/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "SDLIAPConstants.h" + +NSString *const ControlProtocolString = @"com.smartdevicelink.prot0"; +NSString *const IndexedProtocolStringPrefix = @"com.smartdevicelink.prot"; +NSString *const LegacyProtocolString = @"com.ford.sync.prot0"; +NSString *const MultiSessionProtocolString = @"com.smartdevicelink.multisession"; diff --git a/SmartDeviceLink/SDLIAPControlSession.h b/SmartDeviceLink/SDLIAPControlSession.h new file mode 100644 index 000000000..03940ef98 --- /dev/null +++ b/SmartDeviceLink/SDLIAPControlSession.h @@ -0,0 +1,39 @@ +// +// SDLIAPControlSession.h +// SmartDeviceLink +// +// Created by Nicole on 4/16/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +#import "SDLIAPSession.h" + +@class EAAccessory; + +@protocol SDLIAPControlSessionDelegate; + +NS_ASSUME_NONNULL_BEGIN + +/** + * The communications channel between the app and the SDL enabled accessory. The control session is used to get the unique protocol string needed to create a session with Core. The control session is only used with legacy head units that do not support the multisession protocol (the multisession protocol allows multiple apps to connect over the same protocol string). A control session is needed because each SDL enabled app needs to connect to the accessory using a unique protocol string. + * + * When the protocol string is received from Core, the control session is closed as a new session with Core must be established with the received protocol string. Core has ~10 seconds to send the protocol string, otherwise the control session is closed and new attempt is made to establish a control session with Core. + */ +@interface SDLIAPControlSession : SDLIAPSession + +- (instancetype)init NS_UNAVAILABLE; + +/** + * Creates a new control session. + * + * @param accessory The accessory to connect to. + * @param delegate The control session delegate + * @return A SDLIAPControlSession object + */ +- (instancetype)initWithAccessory:(nullable EAAccessory *)accessory delegate:(id)delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLIAPControlSession.m b/SmartDeviceLink/SDLIAPControlSession.m new file mode 100644 index 000000000..e6505e4b3 --- /dev/null +++ b/SmartDeviceLink/SDLIAPControlSession.m @@ -0,0 +1,265 @@ +// +// SDLIAPControlSession.m +// SmartDeviceLink +// +// Created by Nicole on 4/16/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "SDLIAPControlSession.h" + +#import "EAAccessory+SDLProtocols.h" +#import "EAAccessoryManager+SDLProtocols.h" +#import "SDLIAPConstants.h" +#import "SDLIAPControlSessionDelegate.h" +#import "SDLIAPSession.h" +#import "SDLLogMacros.h" +#import "SDLTimer.h" + + +NS_ASSUME_NONNULL_BEGIN + +int const ProtocolIndexTimeoutSeconds = 10; + +@interface SDLIAPControlSession () + +@property (nullable, strong, nonatomic) SDLTimer *protocolIndexTimer; +@property (weak, nonatomic) id delegate; + +@end + +@implementation SDLIAPControlSession + +#pragma mark - Session lifecycle + +- (instancetype)initWithAccessory:(nullable EAAccessory *)accessory delegate:(id)delegate { + SDLLogV(@"SDLIAPControlSession init"); + + self = [super initWithAccessory:accessory forProtocol:ControlProtocolString]; + if (!self) { return nil; } + + _protocolIndexTimer = nil; + _delegate = delegate; + + return self; +} + +#pragma mark Start + +- (void)startSession { + if (self.accessory == nil) { + SDLLogW(@"There is no control session in progress, attempting to create a new control session."); + if (self.delegate == nil) { return; } + [self.delegate controlSessionShouldRetry]; + } else { + SDLLogD(@"Starting a control session with accessory (%@)", self.accessory.name); + + if (![self sdl_startStreams]) { + SDLLogW(@"Control session failed to setup with accessory: %@. Attempting to create a new control session", self.accessory); + [self destroySession]; + if (self.delegate == nil) { return; } + [self.delegate controlSessionShouldRetry]; + } else { + SDLLogD(@"Waiting for the protocol string from Core, setting timer for %d seconds", ProtocolIndexTimeoutSeconds); + self.protocolIndexTimer = [self sdl_createControlSessionProtocolIndexStringDataTimeoutTimer]; + } + } +} + +- (BOOL)sdl_startStreams { + if (![super createSession]) { return NO; } + + // No need for its own thread as only a small amount of data will be transmitted before control session is destroyed + SDLLogD(@"Created the control session successfully"); + [super startStream:self.eaSession.outputStream]; + [super startStream:self.eaSession.inputStream]; + + return YES; +} + +#pragma mark Stop + +- (void)destroySession { + SDLLogD(@"Destroying the control session"); + [self sdl_destroySession]; +} + +/** + * Makes sure the session is closed and destroyed on the main thread. + */ +- (void)sdl_destroySession { + if ([NSThread isMainThread]) { + [self sdl_stopAndDestroySession]; + } else { + dispatch_sync(dispatch_get_main_queue(), ^{ + [self sdl_stopAndDestroySession]; + }); + } +} + +/** + * Closes the session streams and then destroys the session. + */ +- (void)sdl_stopAndDestroySession { + NSAssert(NSThread.isMainThread, @"%@ must only be called on the main thread", NSStringFromSelector(_cmd)); + + [super stopStream:self.eaSession.outputStream]; + [super stopStream:self.eaSession.inputStream]; + [super cleanupClosedSession]; +} + + +#pragma mark - NSStreamDelegate + +/** + * Handles events on the input/output streams of the open session. + * + * @param stream The stream (either input or output) that the event occured on + * @param eventCode The stream event code + */ +- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode { + switch (eventCode) { + case NSStreamEventOpenCompleted: { + [self sdl_streamDidOpen:stream]; + break; + } + case NSStreamEventHasBytesAvailable: { + [self sdl_streamHasBytesAvailable:(NSInputStream *)stream]; + break; + } + case NSStreamEventErrorOccurred: { + [self sdl_streamDidError:stream]; + break; + } + case NSStreamEventEndEncountered: { + [self sdl_streamDidEnd:stream]; + break; + } + case NSStreamEventNone: + case NSStreamEventHasSpaceAvailable: + default: { + break; + } + } +} + +/** + * Called when the session gets a `NSStreamEventOpenCompleted`. When both the input and output streams open, start a timer to get data from Core within a certain timeframe. + * + * @param stream The stream that got the event code. + */ +- (void)sdl_streamDidOpen:(NSStream *)stream { + if (stream == [self.eaSession outputStream]) { + SDLLogD(@"Control session output stream opened"); + self.isOutputStreamOpen = YES; + } else if (stream == [self.eaSession inputStream]) { + SDLLogD(@"Control session input stream opened"); + self.isInputStreamOpen = YES; + } + + // When both streams are open, session initialization is complete. Let the delegate know. + if (self.isInputStreamOpen && self.isOutputStreamOpen) { + SDLLogV(@"Control session I/O streams opened for protocol: %@", self.protocolString); + [self sdl_startControlSessionProtocolIndexStringDataTimeoutTimer]; + } +} + +/** + * Called when the session gets a `NSStreamEventEndEncountered` event code. The current session is closed and a new session is attempted. + */ +- (void)sdl_streamDidEnd:(NSStream *)stream { + SDLLogD(@"Control stream ended"); + + // End events come in pairs, only perform this once per set. + [self.protocolIndexTimer cancel]; + [self destroySession]; + + if (self.delegate == nil) { return; } + [self.delegate controlSessionShouldRetry]; +} + +/** + * Called when the session gets a `NSStreamEventHasBytesAvailable` event code. A protocol string is created from the received data. Since a new session needs to be established with the protocol string, the current session is closed and a new session is created. + */ +- (void)sdl_streamHasBytesAvailable:(NSInputStream *)inputStream { + SDLLogV(@"Control stream received data"); + + // Read in the stream a single byte at a time + uint8_t buf[1]; + NSInteger len = [inputStream read:buf maxLength:1]; + if (len <= 0) { + SDLLogV(@"No data in the control stream"); + return; + } + + // If we have data from the control stream, use the data to create the protocol string needed to establish the data session. + NSString *indexedProtocolString = [NSString stringWithFormat:@"%@%@", IndexedProtocolStringPrefix, @(buf[0])]; + SDLLogD(@"Control Stream will switch to protocol %@", indexedProtocolString); + + // Destroy the control session as it is no longer needed, and then create the data session. + [self destroySession]; + + if (self.accessory.isConnected) { + if (self.delegate != nil) { + [self.delegate controlSession:self didReceiveProtocolString:indexedProtocolString]; + } + [self.protocolIndexTimer cancel]; + } +} + +/** + * Called when the session gets a `NSStreamEventErrorOccurred` event code. The current session is closed and a new session is attempted. + */ +- (void)sdl_streamDidError:(NSStream *)stream { + SDLLogE(@"Control stream error"); + + [self.protocolIndexTimer cancel]; + [self destroySession]; + + if (self.delegate == nil) { return; } + [self.delegate controlSessionShouldRetry]; +} + +#pragma mark - Timer + +/** + * Creates a timer for the session. Core has ~10 seconds to send the protocol string, otherwise when the timer's elapsed block is called, the current session is closed and a new session is attempted. + * + * @return A timer + */ +- (SDLTimer *)sdl_createControlSessionProtocolIndexStringDataTimeoutTimer { + SDLTimer *protocolIndexTimer = [[SDLTimer alloc] initWithDuration:ProtocolIndexTimeoutSeconds repeat:NO]; + + __weak typeof(self) weakSelf = self; + void (^elapsedBlock)(void) = ^{ + __strong typeof(weakSelf) strongSelf = weakSelf; + SDLLogW(@"Control session failed to get the protocol string from Core after %d seconds, retrying.", ProtocolIndexTimeoutSeconds); + [strongSelf sdl_destroySession]; + + if (strongSelf.delegate == nil) { return; } + [strongSelf.delegate controlSessionShouldRetry]; + }; + + protocolIndexTimer.elapsedBlock = elapsedBlock; + return protocolIndexTimer; +} + +/** + * Starts a timer for the session. Core has ~10 seconds to send the protocol string, otherwise the control session is closed and the delegate will be notified that it should attempt to establish a new control session. + */ +- (void)sdl_startControlSessionProtocolIndexStringDataTimeoutTimer { + if (self.protocolIndexTimer == nil) { return; } + [self.protocolIndexTimer start]; +} + +#pragma mark - Lifecycle Destruction + +- (void)dealloc { + SDLLogV(@"SDLIAPControlSession dealloc"); + [self destroySession]; + _protocolIndexTimer = nil; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLIAPControlSessionDelegate.h b/SmartDeviceLink/SDLIAPControlSessionDelegate.h new file mode 100644 index 000000000..67ba2b042 --- /dev/null +++ b/SmartDeviceLink/SDLIAPControlSessionDelegate.h @@ -0,0 +1,23 @@ +// +// SDLIAPControlSessionDelegate.h +// SmartDeviceLink-iOS +// +// Created by Nicole on 5/13/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +@class SDLIAPControlSession; + +NS_ASSUME_NONNULL_BEGIN + +@protocol SDLIAPControlSessionDelegate + +- (void)controlSessionShouldRetry; +- (void)controlSession:(SDLIAPControlSession *)controlSession didReceiveProtocolString:(NSString *)protocolString; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/SmartDeviceLink/SDLIAPDataSession.h b/SmartDeviceLink/SDLIAPDataSession.h new file mode 100644 index 000000000..463af6e9f --- /dev/null +++ b/SmartDeviceLink/SDLIAPDataSession.h @@ -0,0 +1,40 @@ +// +// SDLIAPDataSession.h +// SmartDeviceLink +// +// Created by Nicole on 4/17/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +#import "SDLIAPSession.h" + +@protocol SDLIAPDataSessionDelegate; + + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLIAPDataSession : SDLIAPSession + +- (instancetype)init NS_UNAVAILABLE; + +/** + * Creates a new data session. + * + * @param accessory The new connected accessory. + * @param delegate The data session delegate + * @return A SDLIAPSession object + */ +- (instancetype)initWithAccessory:(nullable EAAccessory *)accessory delegate:(id)delegate forProtocol:(NSString *)protocol; + +/** + * Sends data to Core via the data session. + * + * @param data The data to send to Core + */ +- (void)sendData:(NSData *)data; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLIAPDataSession.m b/SmartDeviceLink/SDLIAPDataSession.m new file mode 100644 index 000000000..5bf61e304 --- /dev/null +++ b/SmartDeviceLink/SDLIAPDataSession.m @@ -0,0 +1,379 @@ +// +// SDLIAPDataSession.m +// SmartDeviceLink +// +// Created by Nicole on 4/17/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "SDLIAPDataSession.h" + +#import "SDLGlobals.h" +#import "SDLIAPConstants.h" +#import "SDLIAPDataSessionDelegate.h" +#import "SDLIAPSession.h" +#import "SDLLogMacros.h" +#import "SDLMutableDataQueue.h" + +NSString *const IOStreamThreadName = @"com.smartdevicelink.iostream"; +NSTimeInterval const IOStreamThreadWaitSecs = 1.0; + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLIAPDataSession () + +@property (nullable, nonatomic, strong) NSThread *ioStreamThread; +@property (nonatomic, strong) SDLMutableDataQueue *sendDataQueue; +@property (weak, nonatomic) id delegate; +@property (nonatomic, strong) dispatch_semaphore_t canceledSemaphore; + +@end + +@implementation SDLIAPDataSession + +#pragma mark - Session lifecycle + +- (instancetype)initWithAccessory:(nullable EAAccessory *)accessory delegate:(id)delegate forProtocol:(NSString *)protocol; { + SDLLogV(@"SDLIAPDataSession init"); + + self = [super initWithAccessory:accessory forProtocol:protocol]; + if (!self) { return nil; } + + _delegate = delegate; + _sendDataQueue = [[SDLMutableDataQueue alloc] init]; + _canceledSemaphore = dispatch_semaphore_create(0); + + return self; +} + +#pragma mark Start + +- (void)startSession { + if (self.accessory == nil) { + SDLLogW(@"Failed to setup data session"); + if (self.delegate == nil) { return; } + [self.delegate dataSessionShouldRetry]; + } else { + SDLLogD(@"Starting data session with accessory: %@, using protocol: %@", self.accessory.name, self.protocolString); + + if (![super createSession]) { + SDLLogW(@"Data session failed to setup with accessory: %@. Retrying...", self.accessory); + [self destroySession]; + if (self.delegate == nil) { return; } + [self.delegate dataSessionShouldRetry]; + } + + if (self.eaSession != nil) { + self.ioStreamThread = [[NSThread alloc] initWithTarget:self selector:@selector(sdl_accessoryEventLoop) object:nil]; + [self.ioStreamThread setName:IOStreamThreadName]; + [self.ioStreamThread start]; + } + } +} + +#pragma mark Stop + +- (void)destroySession { + SDLLogD(@"Destroying the data session"); + [self sdl_destroySession]; + [self.sendDataQueue removeAllObjects]; +} + +/** + * Makes sure the session is closed and destroyed on the main thread. + */ +- (void)sdl_destroySession { + if ([NSThread isMainThread]) { + [self sdl_stopAndDestroySession]; + } else { + dispatch_sync(dispatch_get_main_queue(), ^{ + [self sdl_stopAndDestroySession]; + }); + } +} + +/** + * Waits for the session streams to close on the I/O Thread and then destroys the session. + */ +- (void)sdl_stopAndDestroySession { + NSAssert(NSThread.isMainThread, @"%@ must only be called on the main thread", NSStringFromSelector(_cmd)); + + if (self.ioStreamThread == nil) { + SDLLogV(@"Stopping data session but no thread established."); + [super cleanupClosedSession]; + return; + } + + [self.ioStreamThread cancel]; + + // Waiting for the I/O streams of the data session to close + [self sdl_isIOThreadCanceled:self.canceledSemaphore completionHandler:^(BOOL success) { + if (success == NO) { + SDLLogE(@"Destroying thread (IOStreamThread) for data session when I/O streams have not yet closed."); + } + self.ioStreamThread = nil; + [super cleanupClosedSession]; + }]; +} + +/** + * Wait for the data session to detroy its input and output streams. The data EASession can not be destroyed until both streams have closed. + * + * @param canceledSemaphore When the canceled semaphore is released, the data session's input and output streams have been destroyed. + * @param completionHandler Returns whether or not the data session's I/O streams were closed successfully. + */ +- (void)sdl_isIOThreadCanceled:(dispatch_semaphore_t)canceledSemaphore completionHandler:(void (^)(BOOL success))completionHandler { + long lWait = dispatch_semaphore_wait(canceledSemaphore, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(IOStreamThreadWaitSecs * NSEC_PER_SEC))); + if (lWait == 0) { + SDLLogD(@"Stream thread canceled successfully"); + return completionHandler(YES); + } else { + SDLLogE(@"Failed to cancel stream thread"); + return completionHandler(NO); + } +} + +#pragma mark - Sending data + +- (void)sendData:(NSData *)data { + // Enqueue the data for transmission on the IO thread + [self.sendDataQueue enqueueBuffer:data.mutableCopy]; + + [self performSelector:@selector(sdl_dequeueAndWriteToOutputStream) onThread:self.ioStreamThread withObject:nil waitUntilDone:NO]; +} + +/** + * Sends any queued data to Core on the output stream for the session. + */ +- (void)sdl_dequeueAndWriteToOutputStream { + if ([self.ioStreamThread isCancelled]) { + SDLLogW(@"Attempted to send data on I/O thread but the thread is cancelled."); + return; + } + + NSOutputStream *ostream = self.eaSession.outputStream; + if (!ostream.hasSpaceAvailable) { + SDLLogV(@"Attempted to send data with output stream but there is no space available."); + return; + } + + NSMutableData *remainder = [self.sendDataQueue frontBuffer]; + if (remainder == nil) { + SDLLogV(@"No more data to write to data session's output stream. Returning"); + return; + } + + NSUInteger bytesRemaining = remainder.length; + NSInteger bytesWritten = [ostream write:remainder.bytes maxLength:bytesRemaining]; + + if (bytesWritten < 0) { + if (ostream.streamError != nil) { + // Once a stream has reported an error, it cannot be re-used for read or write operations. Shut down the stream and attempt to create a new session. + [self sdl_streamDidError:ostream]; + } else { + // The write operation failed but there is no further information about the error. This can occur when disconnecting from an external accessory. + SDLLogE(@"Output stream write operation failed"); + } + } else if (bytesWritten == bytesRemaining) { + // Remove the data from the queue + [self.sendDataQueue popBuffer]; + } else { + // Cleave the sent bytes from the data, the remainder will sit at the head of the queue + [remainder replaceBytesInRange:NSMakeRange(0, (NSUInteger)bytesWritten) withBytes:NULL length:0]; + } +} + +#pragma mark - NSStreamDelegate + +/** + * Handles events on the input/output streams of the open session. + * + * @param stream The stream (either input or output) that the event occured on + * @param eventCode The stream event code + */ +- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode { + switch (eventCode) { + case NSStreamEventOpenCompleted: { + [self sdl_streamDidOpen:stream]; + break; + } + case NSStreamEventHasBytesAvailable: { + [self sdl_streamHasBytesAvailable:(NSInputStream *)stream]; + break; + } + case NSStreamEventHasSpaceAvailable: { + [self sdl_streamHasSpaceToWrite]; + break; + } + case NSStreamEventErrorOccurred: { + [self sdl_streamDidError:stream]; + break; + } + case NSStreamEventEndEncountered: { + [self sdl_streamDidEnd:stream]; + break; + } + case NSStreamEventNone: + default: { + break; + } + } +} + +/** + * Called when the session gets a `NSStreamEventOpenCompleted`. When both the input and output streams open, notify the lifecycle manager that a connection has been established with the accessory. + * + * @param stream The stream that got the event code. + */ +- (void)sdl_streamDidOpen:(NSStream *)stream { + if (stream == [self.eaSession outputStream]) { + SDLLogD(@"Data session output stream opened"); + self.isOutputStreamOpen = YES; + } else if (stream == [self.eaSession inputStream]) { + SDLLogD(@"Data session input stream opened"); + self.isInputStreamOpen = YES; + } + + // When both streams are open, session initialization is complete. Let the delegate know. + if (self.isInputStreamOpen && self.isOutputStreamOpen) { + SDLLogV(@"Data session I/O streams opened for protocol: %@", self.protocolString); + if (self.delegate == nil) { return; } + [self.delegate dataSessionDidConnect]; + } +} + +/** + * Called when the session gets a `NSStreamEventEndEncountered` event code. The current session is closed and a new session is attempted. + */ +- (void)sdl_streamDidEnd:(NSStream *)stream { + NSAssert(!NSThread.isMainThread, @"%@ should only be called on the IO thread", NSStringFromSelector(_cmd)); + + SDLLogD(@"Data stream ended"); + if (self.accessory == nil) { + SDLLogD(@"Data session is nil"); + return; + } + + // The handler will be called on the I/O thread, but the session stop method must be called on the main thread + dispatch_async(dispatch_get_main_queue(), ^{ + [self destroySession]; + + if (self.delegate == nil) { return; } + [self.delegate dataSessionShouldRetry]; + }); + + // To prevent deadlocks the handler must return to the runloop and not block the thread +} + +/** + * Called when the session gets a `NSStreamEventHasBytesAvailable` event code. The data is passed to the listener. + */ +- (void)sdl_streamHasBytesAvailable:(NSInputStream *)inputStream { + NSAssert(!NSThread.isMainThread, @"%@ should only be called on the IO thread", NSStringFromSelector(_cmd)); + uint8_t buf[[[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC]]; + while (inputStream.streamStatus == NSStreamStatusOpen && inputStream.hasBytesAvailable) { + // It is necessary to check the stream status and whether there are bytes available because the dataStreamHasBytesHandler is executed on the IO thread and the accessory disconnect notification arrives on the main thread, causing data to be passed to the delegate while the main thread is tearing down the transport. + NSInteger bytesRead = [inputStream read:buf maxLength:[[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC]]; + if (bytesRead < 0) { + SDLLogE(@"Failed to read from data stream"); + break; + } + + NSData *dataIn = [NSData dataWithBytes:buf length:(NSUInteger)bytesRead]; + SDLLogBytes(dataIn, SDLLogBytesDirectionReceive); + + if (bytesRead > 0) { + if (self.delegate == nil) { return; } + [self.delegate dataSessionDidReceiveData:dataIn]; + } else { + break; + } + } +} + +/** + * Called when the session gets a `NSStreamEventHasSpaceAvailable` event code. Send any queued data to Core. + */ +- (void)sdl_streamHasSpaceToWrite { + [self sdl_dequeueAndWriteToOutputStream]; +} + +/** + * Called when the session gets a `NSStreamEventErrorOccurred` event code. The current session is closed and a new session is attempted. + */ +- (void)sdl_streamDidError:(NSStream *)stream { + NSAssert(!NSThread.isMainThread, @"%@ should only be called on the IO thread", NSStringFromSelector(_cmd)); + + SDLLogE(@"Data session %s stream errored", stream == self.eaSession.inputStream ? "input" : "output"); + + // To prevent deadlocks the handler must return to the runloop and not block the thread + dispatch_async(dispatch_get_main_queue(), ^{ + [self destroySession]; + if (![self.protocolString isEqualToString:LegacyProtocolString]) { + if (self.delegate == nil) { return; } + [self.delegate dataSessionShouldRetry]; + } + }); +} + +#pragma mark - Stream lifecycle + +// Data session I/O thread +- (void)sdl_accessoryEventLoop { + @autoreleasepool { + NSAssert(self.eaSession != nil, @"Session must be assigned before calling"); + if (!self.eaSession) { + return; + } + + [self startStream:self.eaSession.inputStream]; + [self startStream:self.eaSession.outputStream]; + + SDLLogD(@"Starting the accessory event loop on thread: %@", NSThread.currentThread.name); + + while (!self.ioStreamThread.cancelled) { + // Enqueued data will be written to and read from the streams in the runloop + [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.25f]]; + } + + SDLLogD(@"Closing the accessory event loop on thread: %@", NSThread.currentThread.name); + + // Close I/O streams of the data session. When the streams are closed. Notify the thread that it can close + [self sdl_closeSession]; + + dispatch_semaphore_signal(self.canceledSemaphore); + } +} + +// Must be called on accessoryEventLoop. +- (void)sdl_closeSession { + if (self.eaSession == nil) { + return; + } + + SDLLogD(@"Closing EASession for accessory connection id: %tu, name: %@", self.connectionID, self.eaSession.accessory.name); + + [self stopStream:[self.eaSession inputStream]]; + [self stopStream:[self.eaSession outputStream]]; +} + +- (void)startStream:(NSStream *)stream { + NSAssert([[NSThread currentThread] isEqual:self.ioStreamThread] || [NSThread isMainThread], @"startStream is being called on the wrong thread!!!"); + [super startStream:stream]; +} + +- (void)stopStream:(NSStream *)stream { + NSAssert([[NSThread currentThread] isEqual:self.ioStreamThread] || [NSThread isMainThread], @"stopStream is being called on the wrong thread!!!"); + [super stopStream:stream]; +} + +#pragma mark - Lifecycle Destruction + +- (void)dealloc { + SDLLogV(@"SDLIAPDataSession dealloc"); + [self destroySession]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLIAPDataSessionDelegate.h b/SmartDeviceLink/SDLIAPDataSessionDelegate.h new file mode 100644 index 000000000..687da5f56 --- /dev/null +++ b/SmartDeviceLink/SDLIAPDataSessionDelegate.h @@ -0,0 +1,21 @@ +// +// SDLIAPDataSessionDelegate.h +// SmartDeviceLink-iOS +// +// Created by Nicole on 5/13/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol SDLIAPDataSessionDelegate + +- (void)dataSessionShouldRetry; +- (void)dataSessionDidReceiveData:(NSData *)data; +- (void)dataSessionDidConnect; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLIAPSession.h b/SmartDeviceLink/SDLIAPSession.h index 542d93786..75b1f6d55 100644 --- a/SmartDeviceLink/SDLIAPSession.h +++ b/SmartDeviceLink/SDLIAPSession.h @@ -2,31 +2,101 @@ // SDLIAPSession.h // -#import "SDLIAPSessionDelegate.h" #import #import -@class SDLStreamDelegate; NS_ASSUME_NONNULL_BEGIN -typedef void (^SessionCompletionHandler)(BOOL success); -@interface SDLIAPSession : NSObject +@interface SDLIAPSession : NSObject -@property (nullable, strong, nonatomic) EAAccessory *accessory; -@property (nullable, strong, nonatomic) NSString *protocol; -@property (nullable, strong, nonatomic) EASession *easession; -@property (nullable, weak, nonatomic) id delegate; -@property (nullable, strong, nonatomic) SDLStreamDelegate *streamDelegate; +/** + * The accessory with which to open a session. + */ +@property (nullable, strong, nonatomic, readonly) EAAccessory *accessory; + +/** + * The session created between the app and the accessory. + */ +@property (nullable, strong, nonatomic, readonly) EASession *eaSession; + +/** + * The unique protocol string used to create the session with the accessory. + */ +@property (nullable, strong, nonatomic, readonly) NSString *protocolString; + +/** + * Returns whether or not both the input and output streams for the session are closed. + */ @property (assign, readonly, getter=isStopped) BOOL stopped; -- (instancetype)initWithAccessory:(EAAccessory *)accessory - forProtocol:(NSString *)protocol; +/** + * The input stream for the session is open when a `NSStreamEventOpenCompleted` event is received for the input stream. The input stream is closed when the stream status is `NSStreamStatusClosed`. + */ +@property (nonatomic, assign) BOOL isInputStreamOpen; + +/** + * The output stream for the session is open when a `NSStreamEventOpenCompleted` event is received for the output stream. The output stream has been closed when the stream status is `NSStreamStatusClosed`. + */ +@property (nonatomic, assign) BOOL isOutputStreamOpen; + +/** + * The unique ID assigned to the session between the app and accessory. If no session exists the value will be 0. + */ +@property (assign, nonatomic, readonly) NSUInteger connectionID; + +/** + * Returns whether the session has open I/O streams. + */ +@property (assign, nonatomic, readonly, getter=isSessionInProgress) BOOL sessionInProgress; + +/** + * Convenience initializer for setting an accessory and protocol string. + * + * @param accessory The accessory with which to open a session + * @param protocol The unique protocol string used to create the session with the accessory + * @return A SDLIAPSession object + */ +- (instancetype)initWithAccessory:(nullable EAAccessory *)accessory forProtocol:(NSString *)protocol; + +/** + * Starts a session. + */ +- (void)startSession; + +/** + * Stops the current session. + */ +- (void)destroySession; + +/** + * Creates a session with the accessory. + * + * @return Whether or not the session was created successfully + */ +- (BOOL)createSession; + +/** + * Starts a session input or output stream. + * + * @param stream The stream to be started. + */ +- (void)startStream:(NSStream *)stream; + +/** + * Stops a session input or output stream. + * + * @param stream The stream to be stopped. + */ +- (void)stopStream:(NSStream *)stream; + +/** + * Cleans up a closed session + */ +- (void)cleanupClosedSession; + -- (BOOL)start; -- (void)stop; -- (void)sendData:(NSData *)data; @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLIAPSession.m b/SmartDeviceLink/SDLIAPSession.m index 6fc39be9a..96844b3a7 100644 --- a/SmartDeviceLink/SDLIAPSession.m +++ b/SmartDeviceLink/SDLIAPSession.m @@ -5,299 +5,103 @@ #import "SDLIAPSession.h" #import "SDLLogMacros.h" #import "SDLMutableDataQueue.h" -#import "SDLStreamDelegate.h" #import "SDLTimer.h" NS_ASSUME_NONNULL_BEGIN -NSString *const IOStreamThreadName = @"com.smartdevicelink.iostream"; -NSTimeInterval const StreamThreadWaitSecs = 10.0; - @interface SDLIAPSession () -@property (nonatomic, assign) BOOL isInputStreamOpen; -@property (nonatomic, assign) BOOL isOutputStreamOpen; -@property (nonatomic, assign) BOOL isDataSession; -@property (nullable, nonatomic, strong) NSThread *ioStreamThread; -@property (nonatomic, strong) SDLMutableDataQueue *sendDataQueue; -@property (nonatomic, strong) dispatch_semaphore_t canceledSemaphore; +@property (nullable, strong, nonatomic, readwrite) EASession *eaSession; +@property (nullable, strong, nonatomic, readwrite) EAAccessory *accessory; +@property (nullable, strong, nonatomic, readwrite) NSString *protocolString; @end - @implementation SDLIAPSession #pragma mark - Lifecycle -- (instancetype)initWithAccessory:(EAAccessory *)accessory forProtocol:(NSString *)protocol { - SDLLogD(@"SDLIAPSession initWithAccessory:%@ forProtocol:%@", accessory, protocol); +- (instancetype)initWithAccessory:(nullable EAAccessory *)accessory forProtocol:(NSString *)protocol { + SDLLogD(@"SDLIAPSession init with accessory:%@ for protocol:%@", accessory.name, protocol); self = [super init]; - if (self) { - _isDataSession = [protocol isEqualToString:@"com.smartdevicelink.prot0"] ? NO : YES; - _accessory = accessory; - _protocol = protocol; - _canceledSemaphore = dispatch_semaphore_create(0); - _sendDataQueue = [[SDLMutableDataQueue alloc] init]; - _isInputStreamOpen = NO; - _isOutputStreamOpen = NO; - } - return self; -} - - -#pragma mark - Public Stream Lifecycle - -- (BOOL)start { - SDLLogD(@"Opening EASession withAccessory:%@ forProtocol:%@", _accessory.name, _protocol); - self.easession = [[EASession alloc] initWithAccessory:self.accessory forProtocol:self.protocol]; - return [self sdl_startWithSession:self.easession]; -} - -- (BOOL)sdl_startWithSession:(EASession *)session { - __weak typeof(self) weakSelf = self; - if (session == nil) { - SDLLogE(@"Error creating the session object"); - return NO; - } else { - SDLLogD(@"Created the session object successfully"); - __strong typeof(self) strongSelf = weakSelf; - strongSelf.streamDelegate.streamErrorHandler = [self streamErroredHandler]; - strongSelf.streamDelegate.streamOpenHandler = [self streamOpenedHandler]; - if (self.isDataSession) { - self.streamDelegate.streamHasSpaceHandler = [self sdl_streamHasSpaceHandler]; - // Start I/O event loop processing events in iAP channel - self.ioStreamThread = [[NSThread alloc] initWithTarget:self selector:@selector(sdl_accessoryEventLoop) object:nil]; - [self.ioStreamThread setName:IOStreamThreadName]; - [self.ioStreamThread start]; - } else { - // Set up control session -- no need for its own thread - [self startStream:self.easession.outputStream]; - [self startStream:self.easession.inputStream]; - } - return YES; - } -} - -- (void)stop { - if ([NSThread isMainThread]) { - [self sdl_stop]; - } else { - dispatch_sync(dispatch_get_main_queue(), ^{ - [self sdl_stop]; - }); - } -} - -- (void)sdl_stop { - NSAssert(NSThread.isMainThread, @"%@ must only be called on the main thread", NSStringFromSelector(_cmd)); - if (self.isDataSession) { - [self.ioStreamThread cancel]; - - [self sdl_isIOThreadCanceled:self.canceledSemaphore completionHandler:^(BOOL success) { - if (success == NO) { - SDLLogE(@"About to destroy a thread that has not yet closed."); - } - self.ioStreamThread = nil; - self.isDataSession = NO; - }]; - } else { - // Stop control session - [self stopStream:self.easession.outputStream]; - [self stopStream:self.easession.inputStream]; - } - self.easession = nil; -} - -- (void)sdl_isIOThreadCanceled:(dispatch_semaphore_t)canceledSemaphore completionHandler:(void (^)(BOOL success))completionHandler { - long lWait = dispatch_semaphore_wait(canceledSemaphore, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(StreamThreadWaitSecs * NSEC_PER_SEC))); - if (lWait == 0) { - SDLLogD(@"Stream thread canceled successfully"); - return completionHandler(YES); - } else { - SDLLogE(@"Failed to cancel stream thread"); - return completionHandler(NO); - } -} - -- (BOOL)isStopped { - return !self.isOutputStreamOpen && !self.isInputStreamOpen; -} + if (!self) { return nil; } -#pragma mark - data send methods - -- (void)sendData:(NSData *)data { - // Enqueue the data for transmission on the IO thread - [self.sendDataQueue enqueueBuffer:data.mutableCopy]; - - [self performSelector:@selector(sdl_dequeueAndWriteToOutputStream) onThread:self.ioStreamThread withObject:nil waitUntilDone:NO]; -} - -- (void)sdl_dequeueAndWriteToOutputStream { - NSOutputStream *ostream = self.easession.outputStream; - if (!ostream.hasSpaceAvailable) { - return; - } - - NSMutableData *remainder = [self.sendDataQueue frontBuffer]; - - if (remainder != nil && ostream.streamStatus == NSStreamStatusOpen) { - NSUInteger bytesRemaining = remainder.length; - NSInteger bytesWritten = [ostream write:remainder.bytes maxLength:bytesRemaining]; - if (bytesWritten < 0) { - if (ostream.streamError != nil) { - [self sdl_handleOutputStreamWriteError:ostream.streamError]; - } else { - // The write operation failed but there is no further information about the error. This can occur when disconnecting from an external accessory. - SDLLogE(@"Output stream write operation failed"); - } - } else if (bytesWritten == bytesRemaining) { - // Remove the data from the queue - [self.sendDataQueue popBuffer]; - } else { - // Cleave the sent bytes from the data, the remainder will sit at the head of the queue - [remainder replaceBytesInRange:NSMakeRange(0, (NSUInteger)bytesWritten) withBytes:NULL length:0]; - } - } -} + _accessory = accessory; + _protocolString = protocol; + _isInputStreamOpen = NO; + _isOutputStreamOpen = NO; -- (void)sdl_handleOutputStreamWriteError:(NSError *)error { - SDLLogE(@"Output stream error: %@", error); - // TODO: We should look at the domain and the code as a tuple and decide how to handle the error based on both values. For now, if the stream is closed, we will flush the send queue and leave it as-is otherwise so that temporary error conditions can be dealt with by retrying - if (self.easession == nil || - self.easession.outputStream == nil || - self.easession.outputStream.streamStatus != NSStreamStatusOpen) { - [self.sendDataQueue removeAllObjects]; - } + return self; } -#pragma mark - background I/O for data session - -// Data session I/O thread -- (void)sdl_accessoryEventLoop { - @autoreleasepool { - NSAssert(self.easession, @"_session must be assigned before calling"); - - if (!self.easession) { - return; - } - - [self startStream:self.easession.inputStream]; - [self startStream:self.easession.outputStream]; - - SDLLogD(@"Starting the accessory event loop"); - while (!NSThread.currentThread.cancelled) { - // Enqueued data will be written to and read from the streams in the runloop - [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.25f]]; - } - - SDLLogD(@"Closing the accessory session for id: %tu, name: %@", self.easession.accessory.connectionID, self.easession.accessory.name); +#pragma mark - Abstract Methods - // Close I/O streams of the iAP session - [self sdl_closeSession]; - dispatch_semaphore_signal(self.canceledSemaphore); - } -} +- (void)startSession {} -// Must be called on accessoryEventLoop. -- (void)sdl_closeSession { - if (!self.easession) { - return; - } +- (void)destroySession {} - SDLLogD(@"Close EASession for accessory id: %tu, name: %@", self.easession.accessory.connectionID, self.easession.accessory.name); +#pragma mark - Private Stream Lifecycle Helpers - [self stopStream:[self.easession inputStream]]; - [self stopStream:[self.easession outputStream]]; +- (BOOL)createSession { + SDLLogD(@"Opening EASession with accessory: %@", self.accessory.name); + self.eaSession = [[EASession alloc] initWithAccessory:self.accessory forProtocol:self.protocolString]; + return (self.eaSession != nil); } - -#pragma mark - Private Stream Lifecycle Helpers - - (void)startStream:(NSStream *)stream { - stream.delegate = self.streamDelegate; - NSAssert((self.isDataSession && [[NSThread currentThread] isEqual:self.ioStreamThread]) || [NSThread isMainThread], @"startStream is being called on the wrong thread!!!"); + stream.delegate = self; [stream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [stream open]; } - (void)stopStream:(NSStream *)stream { - // Verify stream is in a state that can be closed. - // (N.B. Closing a stream that has not been opened has very, very bad effects.) - - // When you disconect the cable you get a stream end event and come here but stream is already in closed state. - // Still need to remove from run loop. - - NSAssert((self.isDataSession && [[NSThread currentThread] isEqual:self.ioStreamThread]) || [NSThread isMainThread], @"stopStream is being called on the wrong thread!!!"); - + // Verify stream is in a state that can be closed. Closing a stream that has not been opened has very bad effects. NSUInteger status1 = stream.streamStatus; if (status1 != NSStreamStatusNotOpen && status1 != NSStreamStatusClosed) { [stream close]; } + // When the USB cable is disconnected, the app will will call this method after the `NSStreamEventEndEncountered` event. The stream will already be in the closed state but it still needs to be removed from the run loop. [stream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [stream setDelegate:nil]; NSUInteger status2 = stream.streamStatus; if (status2 == NSStreamStatusClosed) { - if (stream == [self.easession inputStream]) { - SDLLogD(@"Input Stream Closed"); + if (stream == [self.eaSession inputStream]) { + SDLLogD(@"Input stream closed"); self.isInputStreamOpen = NO; - } else if (stream == [self.easession outputStream]) { - SDLLogD(@"Output Stream Closed"); + } else if (stream == [self.eaSession outputStream]) { + SDLLogD(@"Output stream closed"); self.isOutputStreamOpen = NO; } } } +- (void)cleanupClosedSession { + if (self.eaSession == nil) { + SDLLogD(@"Attempting to close session with accessory: %@, but it is already closed", self.accessory.name); + return; + } -#pragma mark - Stream Handlers - -- (SDLStreamOpenHandler)streamOpenedHandler { - __weak typeof(self) weakSelf = self; - - return ^(NSStream *stream) { - __strong typeof(weakSelf) strongSelf = weakSelf; - - if (stream == [strongSelf.easession outputStream]) { - SDLLogD(@"Output Stream Opened"); - strongSelf.isOutputStreamOpen = YES; - } else if (stream == [strongSelf.easession inputStream]) { - SDLLogD(@"Input Stream Opened"); - strongSelf.isInputStreamOpen = YES; - } - - // When both streams are open, session initialization is complete. Let the delegate know. - if (strongSelf.isInputStreamOpen && strongSelf.isOutputStreamOpen) { - [strongSelf.delegate onSessionInitializationCompleteForSession:weakSelf]; - } - }; + self.eaSession = nil; + SDLLogD(@"Session closed with: %@", self.accessory.name); + self.accessory.delegate = nil; } -- (SDLStreamErrorHandler)streamErroredHandler { - __weak typeof(self) weakSelf = self; - - return ^(NSStream *stream) { - __strong typeof(weakSelf) strongSelf = weakSelf; +#pragma mark - Getters - SDLLogW(@"Stream Error: %@", stream); - [strongSelf.delegate onSessionStreamsEnded:strongSelf]; - }; +- (BOOL)isStopped { + return !self.isOutputStreamOpen && !self.isInputStreamOpen; } -- (SDLStreamHasSpaceHandler)sdl_streamHasSpaceHandler { - __weak typeof(self) weakSelf = self; - - return ^(NSStream *stream) { - __strong typeof(weakSelf) strongSelf = weakSelf; - - if (!strongSelf.isDataSession) { - return; - } +- (NSUInteger)connectionID { + return self.eaSession.accessory.connectionID; +} - [strongSelf sdl_dequeueAndWriteToOutputStream]; - }; +- (BOOL)isSessionInProgress { + return !self.isStopped; } @end diff --git a/SmartDeviceLink/SDLIAPSessionDelegate.h b/SmartDeviceLink/SDLIAPSessionDelegate.h deleted file mode 100644 index 66d182aaa..000000000 --- a/SmartDeviceLink/SDLIAPSessionDelegate.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// SDLIAPSessionDelegate.h -// - -#import -@class SDLIAPSession; - -NS_ASSUME_NONNULL_BEGIN - -@protocol SDLIAPSessionDelegate - -/** - * Session initialized - * - * @param session A SDLIAPSession object - */ -- (void)onSessionInitializationCompleteForSession:(SDLIAPSession *)session; - - -/** - * Session ended - * - * @param session A SDLIAPSession object - */ -- (void)onSessionStreamsEnded:(SDLIAPSession *)session; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLIAPTransport.h b/SmartDeviceLink/SDLIAPTransport.h index 6934ffc27..5b768788a 100644 --- a/SmartDeviceLink/SDLIAPTransport.h +++ b/SmartDeviceLink/SDLIAPTransport.h @@ -4,21 +4,11 @@ #import #import "SDLTransportType.h" -#import "SDLIAPSessionDelegate.h" -NS_ASSUME_NONNULL_BEGIN - -@interface SDLIAPTransport : NSObject -/** - * Session for establishing a connection with Core. Once the connection has been established, the session is closed and a session is established. A `controlSession` is not needed if the head unit supports the multisession protocol string. - */ -@property (nullable, strong, nonatomic) SDLIAPSession *controlSession; +NS_ASSUME_NONNULL_BEGIN -/** - * Session for transporting data between the app and Core. - */ -@property (nullable, strong, nonatomic) SDLIAPSession *session; +@interface SDLIAPTransport : NSObject /** * The subscribed listener. diff --git a/SmartDeviceLink/SDLIAPTransport.m b/SmartDeviceLink/SDLIAPTransport.m index b0fa07177..d67b2f11e 100644 --- a/SmartDeviceLink/SDLIAPTransport.m +++ b/SmartDeviceLink/SDLIAPTransport.m @@ -1,103 +1,64 @@ // SDLIAPTransport.h -// #import #import +#import "SDLIAPTransport.h" + #import "EAAccessory+SDLProtocols.h" #import "EAAccessoryManager+SDLProtocols.h" #import "SDLGlobals.h" -#import "SDLIAPSession.h" -#import "SDLIAPTransport.h" -#import "SDLIAPTransport.h" +#import "SDLIAPConstants.h" +#import "SDLIAPControlSession.h" +#import "SDLIAPControlSessionDelegate.h" +#import "SDLIAPDataSession.h" +#import "SDLIAPDataSessionDelegate.h" #import "SDLLogMacros.h" -#import "SDLStreamDelegate.h" -#import "SDLTimer.h" #import NS_ASSUME_NONNULL_BEGIN -NSString *const LegacyProtocolString = @"com.ford.sync.prot0"; -NSString *const ControlProtocolString = @"com.smartdevicelink.prot0"; -NSString *const IndexedProtocolStringPrefix = @"com.smartdevicelink.prot"; -NSString *const MultiSessionProtocolString = @"com.smartdevicelink.multisession"; -NSString *const BackgroundTaskName = @"com.sdl.transport.iap.backgroundTask"; - int const CreateSessionRetries = 3; -int const ProtocolIndexTimeoutSeconds = 10; -@interface SDLIAPTransport () { - BOOL _alreadyDestructed; -} +@interface SDLIAPTransport () +@property (nullable, strong, nonatomic) SDLIAPControlSession *controlSession; +@property (nullable, strong, nonatomic) SDLIAPDataSession *dataSession; @property (assign, nonatomic) int retryCounter; @property (assign, nonatomic) BOOL sessionSetupInProgress; -@property (nonatomic, assign) UIBackgroundTaskIdentifier backgroundTaskId; -@property (nullable, strong, nonatomic) SDLTimer *protocolIndexTimer; +@property (assign, nonatomic) BOOL transportDestroyed; @property (assign, nonatomic) BOOL accessoryConnectDuringActiveSession; + @end @implementation SDLIAPTransport - (instancetype)init { - SDLLogV(@"SDLIAPTransport Init"); - if (self = [super init]) { - _alreadyDestructed = NO; - _sessionSetupInProgress = NO; - _session = nil; - _controlSession = nil; - _retryCounter = 0; - _protocolIndexTimer = nil; - _accessoryConnectDuringActiveSession = NO; - - // Get notifications if an accessory connects in future - [self sdl_startEventListening]; - - // Wait for setup to complete before scanning for accessories + SDLLogV(@"SDLIAPTransport init"); + self = [super init]; + if (!self) { + return nil; } - - return self; -} -#pragma mark - Background Task + _sessionSetupInProgress = NO; + _transportDestroyed = NO; + _dataSession = nil; + _controlSession = nil; + _retryCounter = 0; + _accessoryConnectDuringActiveSession = NO; -/** - * Starts a background task that allows the app to search for accessories and while the app is in the background. - */ -- (void)sdl_backgroundTaskStart { - if (self.backgroundTaskId != UIBackgroundTaskInvalid) { - SDLLogV(@"A background task is already running. No need to start a background task. Returning..."); - return; - } - - self.backgroundTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithName:BackgroundTaskName expirationHandler:^{ - SDLLogD(@"Background task expired"); - [self sdl_backgroundTaskEnd]; - }]; + // Get notifications if an accessory connects in future + [self sdl_startEventListening]; - SDLLogD(@"Started a background task with id: %lu", (unsigned long)self.backgroundTaskId); -} + // Wait for setup to complete before scanning for accessories -/** - * Cleans up a background task when it is stopped. - */ -- (void)sdl_backgroundTaskEnd { - if (self.backgroundTaskId == UIBackgroundTaskInvalid) { - SDLLogV(@"No background task running. No need to stop the background task. Returning..."); - return; - } - - SDLLogD(@"Ending background task with id: %lu", (unsigned long)self.backgroundTaskId); - [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTaskId]; - self.backgroundTaskId = UIBackgroundTaskInvalid; + return self; } #pragma mark - Notifications -#pragma mark Subscription - /** * Registers for system notifications about connected accessories and the app life cycle. */ @@ -107,22 +68,10 @@ - (void)sdl_startEventListening { selector:@selector(sdl_accessoryConnected:) name:EAAccessoryDidConnectNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_accessoryDisconnected:) name:EAAccessoryDidDisconnectNotification object:nil]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(sdl_applicationWillEnterForeground:) - name:UIApplicationWillEnterForegroundNotification - object:nil]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(sdl_applicationDidEnterBackground:) - name:UIApplicationDidEnterBackgroundNotification - object:nil]; - [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; } @@ -131,10 +80,9 @@ - (void)sdl_startEventListening { */ - (void)sdl_stopEventListening { SDLLogV(@"SDLIAPTransport stopped listening for events"); - [[NSNotificationCenter defaultCenter] removeObserver:self]; + [[EAAccessoryManager sharedAccessoryManager] unregisterForLocalNotifications]; } - #pragma mark EAAccessory Notifications /** @@ -145,18 +93,13 @@ - (void)sdl_stopEventListening { - (void)sdl_accessoryConnected:(NSNotification *)notification { EAAccessory *newAccessory = [notification.userInfo objectForKey:EAAccessoryKey]; - if ([self sdl_isSessionActive:self.session newAccessory:newAccessory]) { + if ([self sdl_isDataSessionActive:self.dataSession newAccessory:newAccessory]) { self.accessoryConnectDuringActiveSession = YES; return; } double retryDelay = self.sdl_retryDelay; SDLLogD(@"Accessory Connected (%@), Opening in %0.03fs", notification.userInfo[EAAccessoryKey], retryDelay); - - if ([[UIApplication sharedApplication] applicationState] != UIApplicationStateActive) { - SDLLogD(@"Accessory connected while app is in background. Starting background task."); - [self sdl_backgroundTaskStart]; - } self.retryCounter = 0; [self performSelector:@selector(sdl_connect:) withObject:nil afterDelay:retryDelay]; @@ -165,12 +108,16 @@ - (void)sdl_accessoryConnected:(NSNotification *)notification { /** * Checks if the newly connected accessory connected while a data session is already opened. This can happen when a session is established over bluetooth and then the user connects to the same head unit with a USB cord. * - * @param session The current data session, which may be nil + * @param dataSession The current data session * @param newAccessory The newly connected accessory * @return True if the accessory connected while a data session is already in progress; false if not */ -- (BOOL)sdl_isSessionActive:(SDLIAPSession *)session newAccessory:(EAAccessory *)newAccessory { - if ((session != nil) && (session.accessory.connectionID != newAccessory.connectionID)) { +- (BOOL)sdl_isDataSessionActive:(nullable SDLIAPDataSession *)dataSession newAccessory:(EAAccessory *)newAccessory { + if (dataSession == nil || !dataSession.isSessionInProgress) { + return NO; + } + + if (dataSession.isSessionInProgress && (dataSession.connectionID != newAccessory.connectionID)) { SDLLogD(@"Switching transports from Bluetooth to USB. Waiting for disconnect notification."); return YES; } @@ -179,207 +126,142 @@ - (BOOL)sdl_isSessionActive:(SDLIAPSession *)session newAccessory:(EAAccessory * } /** - * Handles a notification sent by the system when an accessory has been disconnected by cleaning up after the disconnected device. Only check for the data session, the control session is handled separately + * Handles a notification sent by the system when an accessory has been disconnected by cleaning up after the disconnected device. * * @param notification Contains information about the connected accessory */ - (void)sdl_accessoryDisconnected:(NSNotification *)notification { EAAccessory *accessory = [notification.userInfo objectForKey:EAAccessoryKey]; - SDLLogD(@"Accessory with serial number %@ and connectionID %lu disconnecting.", accessory.serialNumber, (unsigned long)accessory.connectionID); + SDLLogD(@"Accessory with serial number: %@, and connectionID: %lu disconnecting.", accessory.serialNumber, (unsigned long)accessory.connectionID); if (self.accessoryConnectDuringActiveSession == YES) { SDLLogD(@"Switching transports from Bluetooth to USB. Will reconnect over Bluetooth after disconnecting the USB session."); self.accessoryConnectDuringActiveSession = NO; } - if (self.controlSession == nil && self.session == nil) { - SDLLogV(@"Accessory (%@), disconnected, but no session is in progress", accessory.serialNumber); - } else if (accessory.connectionID == self.controlSession.accessory.connectionID) { - SDLLogV(@"Accessory (%@) disconnected during a control session", accessory.serialNumber); - } else if (accessory.connectionID == self.session.accessory.connectionID) { - SDLLogV(@"Accessory (%@) disconnected during a data session", accessory.serialNumber); + if (!self.controlSession.isSessionInProgress && !self.dataSession.isSessionInProgress) { + SDLLogV(@"Accessory (%@, %@), disconnected, but no session is in progress.", accessory.name, accessory.serialNumber); + [self sdl_closeSessions]; + } else if (self.dataSession.isSessionInProgress) { + // The data session has been established. Tell the delegate that the transport has disconnected. The lifecycle manager will destroy and create a new transport object. + SDLLogV(@"Accessory (%@, %@) disconnected during a data session", accessory.name, accessory.serialNumber); + [self sdl_destroyTransport]; + } else if (self.controlSession.isSessionInProgress) { + // The data session has yet to be established so the transport has not yet connected. DO NOT unregister for notifications from the accessory. + SDLLogV(@"Accessory (%@, %@) disconnected during a control session", accessory.name, accessory.serialNumber); + [self sdl_closeSessions]; } else { - SDLLogV(@"Accessory (%@) disconnecting during an unknown session", accessory.serialNumber); + SDLLogV(@"Accessory (%@, %@) disconnecting during an unknown session", accessory.name, accessory.serialNumber); + [self sdl_closeSessions]; } +} - [self sdl_destroySession]; +/** + * Closes and cleans up the sessions after a control session has been closed. Since a data session has not been established, the lifecycle manager has not transitioned to state started. Do not unregister for notifications from accessory connections/disconnections otherwise the library will not be able to connect to an accessory again. + */ +- (void)sdl_closeSessions { + self.retryCounter = 0; + self.sessionSetupInProgress = NO; + [self.controlSession destroySession]; + [self.dataSession destroySession]; } -- (void)sdl_destroySession { +/** + * Tells the lifecycle manager that the data session has been closed. The lifecycle manager will destroy it's `SDLIAPTransport` object and then create a new one to listen for a new connection to the accessory. + */ +- (void)sdl_destroyTransport { self.retryCounter = 0; self.sessionSetupInProgress = NO; + self.transportDestroyed = YES; [self disconnect]; [self.delegate onTransportDisconnected]; } -#pragma mark App Lifecycle Notifications +#pragma mark - Stream Lifecycle -/** - * Handles a notification sent by the system when the app enters the foreground. - * - * If the app is still searching for an accessory, a background task will be started so the app can still search for and/or connect with an accessory while it is in the background. - * - * @param notification Notification - */ -- (void)sdl_applicationWillEnterForeground:(NSNotification *)notification { - SDLLogV(@"App foregrounded, attempting connection"); - [self sdl_backgroundTaskEnd]; - [self connect]; -} +#pragma mark SDLTransportTypeProtocol /** - * Handles a notification sent by the system when the app enters the background. + * Sends data to Core * - * @param notification Notification + * @param data The data to be sent to Core */ -- (void)sdl_applicationDidEnterBackground:(NSNotification *)notification { - SDLLogV(@"App backgrounded, starting background task"); - [self sdl_backgroundTaskStart]; -} - -#pragma mark - Stream Lifecycle - -- (void)connect { - UIApplicationState state = [UIApplication sharedApplication].applicationState; - if (state != UIApplicationStateActive) { - SDLLogV(@"App inactive on connect, starting background task"); - [self sdl_backgroundTaskStart]; +- (void)sendData:(NSData *)data { + if (!self.dataSession.sessionInProgress) { + SDLLogW(@"Attempting to send data to Core but there is no data session in progress"); + return; } - - [self sdl_connect:nil]; + [self.dataSession sendData:data]; } /** - * Starts the process to connect to an accessory. If no accessory specified, scans for a valid accessory. - * - * @param accessory The accessory to attempt connection with or nil to scan for accessories. + * Attempts to connect to an accessory. */ -- (void)sdl_connect:(nullable EAAccessory *)accessory { - if (!self.session && !self.sessionSetupInProgress) { - // We don't have a session are not attempting to set one up, attempt to connect - SDLLogV(@"Session not setup, starting setup"); - self.sessionSetupInProgress = YES; - [self sdl_establishSessionWithAccessory:accessory]; - } else if (self.session) { - // Session already established - SDLLogV(@"Session already established"); - } else { - // Session attempting to be established - SDLLogV(@"Session setup already in progress"); - } +- (void)connect { + [self sdl_connect:nil]; } /** - * Cleans up after a disconnected accessory by closing any open input streams. + * Cleans up after a disconnected accessory by closing any open I/O streams. */ - (void)disconnect { - // Stop event listening here so that even if the transport is disconnected by the proxy we unregister for accessory local notifications + // Stop event listening here so that even if the transport is disconnected by `SDLProxy` when there is a start session timeout, the class unregisters for accessory notifications [self sdl_stopEventListening]; - if (self.controlSession != nil) { - SDLLogD(@"Disconnecting control session"); - [self.controlSession stop]; - self.controlSession.streamDelegate = nil; - self.controlSession = nil; - } else if (self.session != nil) { - SDLLogD(@"Disconnecting data session"); - [self.session stop]; - self.session.streamDelegate = nil; - self.session = nil; - } -} + self.retryCounter = 0; + self.sessionSetupInProgress = NO; + self.transportDestroyed = YES; -#pragma mark - Creating Session Streams + [self.controlSession destroySession]; + [self.dataSession destroySession]; +} -/** - * Attempt to connect an accessory using the control or legacy protocols, then return whether or not we've generated an IAP session. - * - * @param accessory The accessory to attempt a connection with - * @return Whether or not we succesfully created a session. - */ -- (BOOL)sdl_connectAccessory:(EAAccessory *)accessory { - BOOL connecting = NO; - if ([self.class sdl_supportsRequiredProtocolStrings] != nil) { - NSString *failedString = [self.class sdl_supportsRequiredProtocolStrings]; - SDLLogE(@"A required External Accessory protocol string is missing from the info.plist: %@", failedString); - NSAssert(NO, @"Some SDL protocol strings are not supported, check the README for all strings that must be included in your info.plist file. Missing string: %@", failedString); - return connecting; - } - if ([accessory supportsProtocol:MultiSessionProtocolString] && SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9")) { - [self sdl_createIAPDataSessionWithAccessory:accessory forProtocol:MultiSessionProtocolString]; - connecting = YES; - } else if ([accessory supportsProtocol:ControlProtocolString]) { - [self sdl_createIAPControlSessionWithAccessory:accessory]; - connecting = YES; - } else if ([accessory supportsProtocol:LegacyProtocolString]) { - [self sdl_createIAPDataSessionWithAccessory:accessory forProtocol:LegacyProtocolString]; - connecting = YES; - } - return connecting; -} +#pragma mark Helpers /** - Check all required protocol strings in the info.plist dictionary. - - @return A missing protocol string or nil if all strings are supported. + * Starts the process to connect to an accessory. If no accessory specified, scans for a valid accessory. + * + * @param accessory The accessory to attempt connection with or nil to scan for accessories. */ -+ (nullable NSString *)sdl_supportsRequiredProtocolStrings { - NSArray *protocolStrings = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UISupportedExternalAccessoryProtocols"]; - - if (![protocolStrings containsObject:MultiSessionProtocolString]) { - return MultiSessionProtocolString; - } - - if (![protocolStrings containsObject:LegacyProtocolString]) { - return LegacyProtocolString; +- (void)sdl_connect:(nullable EAAccessory *)accessory { + if (self.transportDestroyed) { + SDLLogV(@"Will not attempt to connect to an accessory because the data session disconnected. Waiting for lifecycle manager to create a new transport object."); + return; } - for (int i = 0; i < 30; i++) { - NSString *indexedProtocolString = [NSString stringWithFormat:@"%@%i", IndexedProtocolStringPrefix, i]; - if (![protocolStrings containsObject:indexedProtocolString]) { - return indexedProtocolString; - } + if ((self.dataSession == nil || !self.dataSession.isSessionInProgress) && !self.sessionSetupInProgress) { + // No data session has been established are not attempting to set one up, attempt to connect + SDLLogV(@"No data session in progress. Starting setup."); + self.sessionSetupInProgress = YES; + [self sdl_establishSessionWithAccessory:accessory]; + } else if (self.dataSession.isSessionInProgress) { + SDLLogW(@"Data session I/O streams already opened. Ignoring attempt to create session."); + } else { + SDLLogW(@"Data session I/O streams are currently being opened. Ignoring attempt to create session."); } - - return nil; } /** - * Attempt to establish a session with an accessory, or if nil is passed, to scan for one. + * Attempts to establish a session with the passed accessory. If nil is passed the accessory manager is checked for connected SDL enabled accessories. * * @param accessory The accessory to try to establish a session with, or nil to scan all connected accessories. */ - (void)sdl_establishSessionWithAccessory:(nullable EAAccessory *)accessory { - SDLLogD(@"Attempting to connect accessory: %@", accessory.name); + SDLLogD(@"Attempting to connect accessory named: %@, with connectionID: %lu", accessory.name, (unsigned long)accessory.connectionID); if (self.retryCounter < CreateSessionRetries) { self.retryCounter++; - - EAAccessory *sdlAccessory = accessory; - // If we are being called from sdl_connectAccessory, the EAAccessoryDidConnectNotification will contain the SDL accessory to connect to and we can connect without searching the accessory manager's connected accessory list. Otherwise, we fall through to a search. - if (sdlAccessory != nil && [self sdl_connectAccessory:sdlAccessory]) { - // Connection underway, exit - SDLLogV(@"Connection already underway"); - return; - } - if ([self.class sdl_supportsRequiredProtocolStrings] != nil) { - NSString *failedString = [self.class sdl_supportsRequiredProtocolStrings]; - SDLLogE(@"A required External Accessory protocol string is missing from the info.plist: %@", failedString); - NSAssert(NO, @"Some SDL protocol strings are not supported, check the README for all strings that must be included in your info.plist file. Missing string: %@", failedString); + // If the accessory is not `nil` attempt to create a session with the accessory. + if (accessory != nil && [self sdl_establishSessionWithConnectedAccessory:accessory]) { + // Session was created successfully with the accessory return; } - - // Determine if we can start a multi-app session or a legacy (single-app) session - if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:MultiSessionProtocolString]) && SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9")) { - [self sdl_createIAPDataSessionWithAccessory:sdlAccessory forProtocol:MultiSessionProtocolString]; - } else if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:ControlProtocolString])) { - [self sdl_createIAPControlSessionWithAccessory:sdlAccessory]; - } else if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:LegacyProtocolString])) { - [self sdl_createIAPDataSessionWithAccessory:sdlAccessory forProtocol:LegacyProtocolString]; - } else { - // No compatible accessory - SDLLogV(@"No accessory supporting SDL was found, dismissing setup"); + + // Search through the EAAccessoryManager's connected accessory list for an SDL enabled accessory and attempt to create a session with the accessory. + BOOL sessionEstablished = [self sdl_establishSessionWithAccessory]; + if (!sessionEstablished) { + SDLLogV(@"No accessory supporting SDL was found, dismissing setup. Available connected accessories: %@", EAAccessoryManager.sharedAccessoryManager.connectedAccessories); self.sessionSetupInProgress = NO; } } else { @@ -389,334 +271,256 @@ - (void)sdl_establishSessionWithAccessory:(nullable EAAccessory *)accessory { } } -- (void)sdl_createIAPControlSessionWithAccessory:(EAAccessory *)accessory { - SDLLogD(@"Starting IAP control session (%@)", accessory); - self.controlSession = [[SDLIAPSession alloc] initWithAccessory:accessory forProtocol:ControlProtocolString]; - - if (self.controlSession) { - self.controlSession.delegate = self; - - if (self.protocolIndexTimer == nil) { - self.protocolIndexTimer = [[SDLTimer alloc] initWithDuration:ProtocolIndexTimeoutSeconds repeat:NO]; - } else { - [self.protocolIndexTimer cancel]; - } - - __weak typeof(self) weakSelf = self; - void (^elapsedBlock)(void) = ^{ - __strong typeof(weakSelf) strongSelf = weakSelf; - - SDLLogW(@"Control session timeout"); - [strongSelf.controlSession stop]; - strongSelf.controlSession.streamDelegate = nil; - strongSelf.controlSession = nil; - [strongSelf sdl_retryEstablishSession]; - }; - self.protocolIndexTimer.elapsedBlock = elapsedBlock; - - SDLStreamDelegate *controlStreamDelegate = [[SDLStreamDelegate alloc] init]; - controlStreamDelegate.streamHasBytesHandler = [self sdl_controlStreamHasBytesHandlerForAccessory:accessory]; - controlStreamDelegate.streamEndHandler = [self sdl_controlStreamEndedHandler]; - controlStreamDelegate.streamErrorHandler = [self sdl_controlStreamErroredHandler]; - self.controlSession.streamDelegate = controlStreamDelegate; - - if (![self.controlSession start]) { - SDLLogW(@"Control session failed to setup (%@)", accessory); - self.controlSession.streamDelegate = nil; - self.controlSession = nil; - [self sdl_retryEstablishSession]; - } - } else { - SDLLogW(@"Failed to setup control session (%@)", accessory); - [self sdl_retryEstablishSession]; - } -} - -- (void)sdl_createIAPDataSessionWithAccessory:(EAAccessory *)accessory forProtocol:(NSString *)protocol { - SDLLogD(@"Starting data session (%@:%@)", protocol, accessory); - self.session = [[SDLIAPSession alloc] initWithAccessory:accessory forProtocol:protocol]; - if (self.session) { - self.session.delegate = self; - - SDLStreamDelegate *ioStreamDelegate = [[SDLStreamDelegate alloc] init]; - self.session.streamDelegate = ioStreamDelegate; - ioStreamDelegate.streamHasBytesHandler = [self sdl_dataStreamHasBytesHandler]; - ioStreamDelegate.streamEndHandler = [self sdl_dataStreamEndedHandler]; - ioStreamDelegate.streamErrorHandler = [self sdl_dataStreamErroredHandler]; - - if (![self.session start]) { - SDLLogW(@"Data session failed to setup (%@)", accessory); - self.session.streamDelegate = nil; - self.session = nil; - [self sdl_retryEstablishSession]; - } - } else { - SDLLogW(@"Failed to setup data session (%@)", accessory); - [self sdl_retryEstablishSession]; - } -} - +/** + * Stops any ongoing sessions if necessary and tries to find an accessory which which to create a session. + */ - (void)sdl_retryEstablishSession { // Current strategy disallows automatic retries. self.sessionSetupInProgress = NO; - if (self.session != nil) { - [self.session stop]; - self.session.delegate = nil; - self.session = nil; - } - + [self.controlSession destroySession]; + [self.dataSession destroySession]; + // Search connected accessories [self sdl_connect:nil]; } -// This gets called after both I/O streams of the session have opened. -- (void)onSessionInitializationCompleteForSession:(SDLIAPSession *)session { - // Control Session Opened - if ([ControlProtocolString isEqualToString:session.protocol]) { - SDLLogD(@"Control Session Established"); - - if (!self.session) { - [self.protocolIndexTimer start]; - } - } - - // Data Session Opened - if (![ControlProtocolString isEqualToString:session.protocol]) { - self.sessionSetupInProgress = NO; - SDLLogD(@"Data Session Established"); - [self.delegate onTransportConnected]; - } -} +#pragma mark - Session Delegates -#pragma mark - Session End +#pragma mark Control Session -// Retry establishSession on Stream End events only if it was the control session and we haven't already connected on non-control protocol -- (void)onSessionStreamsEnded:(SDLIAPSession *)session { - SDLLogV(@"Session streams ended (%@)", session.protocol); - if (!self.session && [ControlProtocolString isEqualToString:session.protocol]) { - [session stop]; - [self sdl_retryEstablishSession]; - } +/** + * Called when the control session should be retried. + */ +- (void)controlSessionShouldRetry { + SDLLogV(@"Retrying the control session"); + [self sdl_retryEstablishSession]; } - -#pragma mark - Data Transmission - -- (void)sendData:(NSData *)data { - if (self.session == nil || !self.session.accessory.connected) { - return; - } - - [self.session sendData:data]; +/** + * Called when the control session got the protocol string successfully and the data session can be opened with the protocol string. + * + * @param controlSession The control session + * @param protocolString The protocol string to be used to open the data session + */ +- (void)controlSession:(nonnull SDLIAPControlSession *)controlSession didReceiveProtocolString:(nonnull NSString *)protocolString { + self.dataSession = [[SDLIAPDataSession alloc] initWithAccessory:controlSession.accessory delegate:self forProtocol:protocolString]; + [self.dataSession startSession]; } -#pragma mark - Stream Handlers -#pragma mark Control Stream - -- (SDLStreamEndHandler)sdl_controlStreamEndedHandler { - __weak typeof(self) weakSelf = self; - - return ^(NSStream *stream) { - __strong typeof(weakSelf) strongSelf = weakSelf; - SDLLogD(@"Control stream ended"); - - // End events come in pairs, only perform this once per set. - if (strongSelf.controlSession != nil) { - [strongSelf.protocolIndexTimer cancel]; - [strongSelf.controlSession stop]; - strongSelf.controlSession.streamDelegate = nil; - strongSelf.controlSession = nil; - [strongSelf sdl_retryEstablishSession]; - } - }; -} +#pragma mark Data Session -- (SDLStreamHasBytesHandler)sdl_controlStreamHasBytesHandlerForAccessory:(EAAccessory *)accessory { - __weak typeof(self) weakSelf = self; - - return ^(NSInputStream *istream) { - __strong typeof(weakSelf) strongSelf = weakSelf; - SDLLogV(@"Control stream received data"); - - // Read in the stream a single byte at a time - uint8_t buf[1]; - NSInteger len = [istream read:buf maxLength:1]; - if (len <= 0) { - return; - } - - // If we have data from the stream - // Determine protocol string of the data session, then create that data session - NSString *indexedProtocolString = [NSString stringWithFormat:@"%@%@", IndexedProtocolStringPrefix, @(buf[0])]; - SDLLogD(@"Control Stream will switch to protocol %@", indexedProtocolString); - - // Destroy the control session - dispatch_sync(dispatch_get_main_queue(), ^{ - [strongSelf.controlSession stop]; - strongSelf.controlSession.streamDelegate = nil; - strongSelf.controlSession = nil; - }); - - if (accessory.isConnected) { - dispatch_async(dispatch_get_main_queue(), ^{ - [strongSelf sdl_createIAPDataSessionWithAccessory:accessory forProtocol:indexedProtocolString]; - [strongSelf.protocolIndexTimer cancel]; - }); - } +/** + * Called when the data session receives data from Core + * + * @param data The received data + */ +- (void)dataSessionDidReceiveData:(nonnull NSData *)data { + [self.delegate onDataReceived:data]; +} - [strongSelf sdl_backgroundTaskStart]; - }; +/** + * Called when the data session should be retried. + */ +- (void)dataSessionShouldRetry { + SDLLogV(@"Retrying the data session"); + [self sdl_retryEstablishSession]; } -- (SDLStreamErrorHandler)sdl_controlStreamErroredHandler { - __weak typeof(self) weakSelf = self; - - return ^(NSStream *stream) { - __strong typeof(weakSelf) strongSelf = weakSelf; - SDLLogE(@"Control stream error"); - - [strongSelf.protocolIndexTimer cancel]; - [strongSelf.controlSession stop]; - strongSelf.controlSession.streamDelegate = nil; - strongSelf.controlSession = nil; - [strongSelf sdl_retryEstablishSession]; - }; +/** + * Called when the data session has been established. Notify the delegate that the transport has been connected. + */ +- (void)dataSessionDidConnect { + self.sessionSetupInProgress = NO; + [self.delegate onTransportConnected]; } -#pragma mark Data Stream +#pragma mark - Helpers -- (SDLStreamEndHandler)sdl_dataStreamEndedHandler { - __weak typeof(self) weakSelf = self; - return ^(NSStream *stream) { - NSAssert(!NSThread.isMainThread, @"%@ should only be called on the IO thread", NSStringFromSelector(_cmd)); - __strong typeof(weakSelf) strongSelf = weakSelf; +#pragma mark Protocol Strings - SDLLogD(@"Data stream ended"); - if (strongSelf.session == nil) { - SDLLogD(@"Data session is nil"); - return; - } - // The handler will be called on the IO thread, but the session stop method must be called on the main thread - dispatch_async(dispatch_get_main_queue(), ^{ - [strongSelf.session stop]; - strongSelf.session.streamDelegate = nil; - strongSelf.session = nil; - - [strongSelf sdl_retryEstablishSession]; - }); - - // To prevent deadlocks the handler must return to the runloop and not block the thread - }; +/** + * Checks if the app's info.plist contains all the required protocol strings. + * + * @return True if the app's info.plist has all required protocol strings; false if not. + */ ++ (BOOL)sdl_plistContainsAllSupportedProtocolStrings { + if ([self.class sdl_supportsRequiredProtocolStrings] != nil) { + NSString *failedString = [self.class sdl_supportsRequiredProtocolStrings]; + SDLLogE(@"A required External Accessory protocol string is missing from the info.plist: %@", failedString); + NSAssert(NO, @"Some SDL protocol strings are not supported, check the README for all strings that must be included in your info.plist file. Missing string: %@", failedString); + return NO; + } + return YES; } -- (SDLStreamHasBytesHandler)sdl_dataStreamHasBytesHandler { - __weak typeof(self) weakSelf = self; - return ^(NSInputStream *istream) { - NSAssert(!NSThread.isMainThread, @"%@ should only be called on the IO thread", NSStringFromSelector(_cmd)); - __strong typeof(weakSelf) strongSelf = weakSelf; - uint8_t buf[[[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC]]; - while (istream.streamStatus == NSStreamStatusOpen && istream.hasBytesAvailable) { - // It is necessary to check the stream status and whether there are bytes available because the dataStreamHasBytesHandler is executed on the IO thread and the accessory disconnect notification arrives on the main thread, causing data to be passed to the delegate while the main thread is tearing down the transport. - - NSInteger bytesRead = [istream read:buf maxLength:[[SDLGlobals sharedGlobals] mtuSizeForServiceType:SDLServiceTypeRPC]]; - if (bytesRead < 0) { - SDLLogE(@"Failed to read from data stream"); - break; - } - - NSData *dataIn = [NSData dataWithBytes:buf length:(NSUInteger)bytesRead]; - SDLLogBytes(dataIn, SDLLogBytesDirectionReceive); - - if (bytesRead > 0) { - [strongSelf.delegate onDataReceived:dataIn]; - } else { - break; - } +/** + * Compares all required protocol strings against the protocol strings in the info.plist dictionary. + * + * @return A missing protocol string or nil if all strings are supported. + */ ++ (nullable NSString *)sdl_supportsRequiredProtocolStrings { + NSArray *protocolStrings = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UISupportedExternalAccessoryProtocols"]; + + if (![protocolStrings containsObject:MultiSessionProtocolString]) { + return MultiSessionProtocolString; + } + + if (![protocolStrings containsObject:LegacyProtocolString]) { + return LegacyProtocolString; + } + + for (int i = 0; i < 30; i++) { + NSString *indexedProtocolString = [NSString stringWithFormat:@"%@%i", IndexedProtocolStringPrefix, i]; + if (![protocolStrings containsObject:indexedProtocolString]) { + return indexedProtocolString; } + } - [strongSelf sdl_backgroundTaskStart]; - }; + return nil; } -- (SDLStreamErrorHandler)sdl_dataStreamErroredHandler { - __weak typeof(self) weakSelf = self; - return ^(NSStream *stream) { - NSAssert(!NSThread.isMainThread, @"%@ should only be called on the IO thread", NSStringFromSelector(_cmd)); - __strong typeof(weakSelf) strongSelf = weakSelf; - SDLLogE(@"Data stream error"); - dispatch_async(dispatch_get_main_queue(), ^{ - [strongSelf.session stop]; - strongSelf.session.streamDelegate = nil; - strongSelf.session = nil; - if (![LegacyProtocolString isEqualToString:strongSelf.session.protocol]) { - [strongSelf sdl_retryEstablishSession]; - } - }); - - // To prevent deadlocks the handler must return to the runloop and not block the thread - }; -} +#pragma mark Retry Delay +/** + * Generates a random number of seconds between 1.5 and 9.5 used to delay the retry control and data session attempts. + * + * @return A random number of seconds. + */ - (double)sdl_retryDelay { const double MinRetrySeconds = 1.5; const double MaxRetrySeconds = 9.5; double RetryRangeSeconds = MaxRetrySeconds - MinRetrySeconds; - + static double appDelaySeconds = 0; - + // HAX: This pull the app name and hashes it in an attempt to provide a more even distribution of retry delays. The evidence that this does so is anecdotal. A more ideal solution would be to use a list of known, installed SDL apps on the phone to try and deterministically generate an even delay. if (appDelaySeconds == 0) { NSString *appName = [[NSProcessInfo processInfo] processName]; if (appName == nil) { appName = @"noname"; } - + // Run the app name through an md5 hasher const char *ptr = [appName UTF8String]; unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH]; CC_MD5(ptr, (unsigned int)strlen(ptr), md5Buffer); - + // Generate a string of the hex hash NSMutableString *output = [NSMutableString stringWithString:@"0x"]; for (int i = 0; i < 8; i++) { [output appendFormat:@"%02X", md5Buffer[i]]; } - + // Transform the string into a number between 0 and 1 unsigned long long firstHalf; NSScanner *pScanner = [NSScanner scannerWithString:output]; [pScanner scanHexLongLong:&firstHalf]; double hashBasedValueInRange0to1 = ((double)firstHalf) / 0xffffffffffffffff; - + // Transform the number into a number between min and max appDelaySeconds = ((RetryRangeSeconds * hashBasedValueInRange0to1) + MinRetrySeconds); } - + return appDelaySeconds; } +#pragma mark Create Sessions -#pragma mark - Lifecycle Destruction +/** + * List of protocol strings supported by SDL enabled head units. Newer head units use the multisession protocol string which allows multiple apps to connect over 1 protocol string. Legacy head units use the control or legacy protocol string which only allows 1 app to connect over 1 protocol string. + * + * @return A list of SDL accessory supported protocol strings ordered from most recently supported to least preferred. + */ ++ (NSArray *)protocolStrings { + // Order of the protocol strings is important!! + return @[MultiSessionProtocolString, ControlProtocolString, LegacyProtocolString]; +} -- (void)sdl_destructObjects { - if (!_alreadyDestructed) { - [self sdl_backgroundTaskEnd]; - _alreadyDestructed = YES; - self.controlSession = nil; - self.session = nil; - self.delegate = nil; - self.sessionSetupInProgress = NO; - self.accessoryConnectDuringActiveSession = NO; +/** + * Attempts to create a session with a connected accessory. + * + * @param connectedAccessory The connected accessory + * @return True if a session was started with the connected accessory, false if not + */ +- (BOOL)sdl_establishSessionWithConnectedAccessory:(EAAccessory *)connectedAccessory { + for (NSString *protocolString in [self.class protocolStrings]) { + if (![connectedAccessory supportsProtocol:protocolString]) { + continue; + } + + BOOL connecting = [self createSessionWithAccessory:connectedAccessory protocolString:protocolString]; + if (connecting) { + return connecting; + } + } + + return NO; +} + +/** + * Searches through the EAAccessoryManager's list of connected accessories for an SDL enabled accessory. If an accessory is found a session is attempted with the accessory. + * + * @return True if a session was started with the connected accessory, false if no session could be created or if no SDL enabled accessory was found. + */ +- (BOOL)sdl_establishSessionWithAccessory { + for (NSString *protocolString in [self.class protocolStrings]) { + EAAccessory *sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:protocolString]; + if (sdlAccessory == nil) { + continue; + } + + BOOL connecting = [self createSessionWithAccessory:sdlAccessory protocolString:protocolString]; + if (connecting) { + return connecting; + } } + + return NO; } +/** + * Creates a session with a passed accessory and protocol string. If the accessory supports the multisession protocol string, a data session can be created right away with the accessory. If the accessory does not support the multisession protocol string, but does support the control protocol string, two sessions must be created. First, a control session is created to get the new protocol string needed to create a data session with the accessory. Then, the control session is destroyed and the data session created with the new protocol string. + * + * @param accessory The connected accessory + * @param protocolString The unique protocol string used to create the session with the accessory + * @return True if a session was started with the connected accessory, false if no session could be created or if no SDL enabled accessory was found. + */ +- (BOOL)createSessionWithAccessory:(EAAccessory *)accessory protocolString:(NSString *)protocolString { + if (![self.class sdl_plistContainsAllSupportedProtocolStrings]) { + return NO; + } + + if ([protocolString isEqualToString:MultiSessionProtocolString] && SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9")) { + self.dataSession = [[SDLIAPDataSession alloc] initWithAccessory:accessory delegate:self forProtocol:protocolString]; + [self.dataSession startSession]; + return YES; + } else if ([protocolString isEqualToString:ControlProtocolString]) { + self.controlSession = [[SDLIAPControlSession alloc] initWithAccessory:accessory delegate:self]; + [self.controlSession startSession]; + return YES; + } else if ([protocolString isEqualToString:LegacyProtocolString]) { + self.dataSession = [[SDLIAPDataSession alloc] initWithAccessory:accessory delegate:self forProtocol:protocolString]; + [self.dataSession startSession]; + return YES; + } + + return NO; +} + + +#pragma mark - Lifecycle Destruction + - (void)dealloc { + SDLLogV(@"SDLIAPTransport dealloc"); [self disconnect]; - [self sdl_destructObjects]; - SDLLogD(@"SDLIAPTransport dealloc"); + self.controlSession = nil; + self.dataSession = nil; + self.delegate = nil; + self.sessionSetupInProgress = NO; + self.accessoryConnectDuringActiveSession = NO; } @end diff --git a/SmartDeviceLink/SDLImage.m b/SmartDeviceLink/SDLImage.m index 7a2dd72cd..740cb4584 100644 --- a/SmartDeviceLink/SDLImage.m +++ b/SmartDeviceLink/SDLImage.m @@ -57,29 +57,29 @@ - (instancetype)initWithStaticIconName:(SDLStaticIconName)staticIconName { #pragma mark - Getters / Setters - (void)setValue:(NSString *)value { - [store sdl_setObject:value forName:SDLRPCParameterNameValue]; + [self.store sdl_setObject:value forName:SDLRPCParameterNameValue]; } - (NSString *)value { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameValue ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameValue ofClass:NSString.class error:&error]; } - (void)setImageType:(SDLImageType)imageType { - [store sdl_setObject:imageType forName:SDLRPCParameterNameImageType]; + [self.store sdl_setObject:imageType forName:SDLRPCParameterNameImageType]; } - (SDLImageType)imageType { - return [store sdl_enumForName:SDLRPCParameterNameImageType error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameImageType error:nil]; } - (void)setIsTemplate:(NSNumber *)isTemplate { - [store sdl_setObject:isTemplate forName:SDLRPCParameterNameImageTemplate]; + [self.store sdl_setObject:isTemplate forName:SDLRPCParameterNameImageTemplate]; } - (NSNumber *)isTemplate { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameImageTemplate ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameImageTemplate ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLImageField.m b/SmartDeviceLink/SDLImageField.m index 94a6ccedc..e866db1d7 100644 --- a/SmartDeviceLink/SDLImageField.m +++ b/SmartDeviceLink/SDLImageField.m @@ -13,29 +13,29 @@ @implementation SDLImageField - (void)setName:(SDLImageFieldName)name { - [store sdl_setObject:name forName:SDLRPCParameterNameName]; + [self.store sdl_setObject:name forName:SDLRPCParameterNameName]; } - (SDLImageFieldName)name { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameName error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameName error:&error]; } - (void)setImageTypeSupported:(NSArray *)imageTypeSupported { - [store sdl_setObject:imageTypeSupported forName:SDLRPCParameterNameImageTypeSupported]; + [self.store sdl_setObject:imageTypeSupported forName:SDLRPCParameterNameImageTypeSupported]; } - (NSArray *)imageTypeSupported { NSError *error = nil; - return [store sdl_enumsForName:SDLRPCParameterNameImageTypeSupported error:&error]; + return [self.store sdl_enumsForName:SDLRPCParameterNameImageTypeSupported error:&error]; } - (void)setImageResolution:(nullable SDLImageResolution *)imageResolution { - [store sdl_setObject:imageResolution forName:SDLRPCParameterNameImageResolution]; + [self.store sdl_setObject:imageResolution forName:SDLRPCParameterNameImageResolution]; } - (nullable SDLImageResolution *)imageResolution { - return [store sdl_objectForName:SDLRPCParameterNameImageResolution ofClass:SDLImageResolution.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameImageResolution ofClass:SDLImageResolution.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLImageResolution.m b/SmartDeviceLink/SDLImageResolution.m index b85bf8e9b..b94e81996 100644 --- a/SmartDeviceLink/SDLImageResolution.m +++ b/SmartDeviceLink/SDLImageResolution.m @@ -22,21 +22,21 @@ - (instancetype)initWithWidth:(uint16_t)width height:(uint16_t)height { } - (void)setResolutionWidth:(NSNumber *)resolutionWidth { - [store sdl_setObject:resolutionWidth forName:SDLRPCParameterNameResolutionWidth]; + [self.store sdl_setObject:resolutionWidth forName:SDLRPCParameterNameResolutionWidth]; } - (NSNumber *)resolutionWidth { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameResolutionWidth ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameResolutionWidth ofClass:NSNumber.class error:&error]; } - (void)setResolutionHeight:(NSNumber *)resolutionHeight { - [store sdl_setObject:resolutionHeight forName:SDLRPCParameterNameResolutionHeight]; + [self.store sdl_setObject:resolutionHeight forName:SDLRPCParameterNameResolutionHeight]; } - (NSNumber *)resolutionHeight { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameResolutionHeight ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameResolutionHeight ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLKeyboardProperties.m b/SmartDeviceLink/SDLKeyboardProperties.m index 1e6376f24..2e90ad4c1 100644 --- a/SmartDeviceLink/SDLKeyboardProperties.m +++ b/SmartDeviceLink/SDLKeyboardProperties.m @@ -26,43 +26,43 @@ - (instancetype)initWithLanguage:(nullable SDLLanguage)language layout:(nullable } - (void)setLanguage:(nullable SDLLanguage)language { - [store sdl_setObject:language forName:SDLRPCParameterNameLanguage]; + [self.store sdl_setObject:language forName:SDLRPCParameterNameLanguage]; } - (nullable SDLLanguage)language { - return [store sdl_enumForName:SDLRPCParameterNameLanguage error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameLanguage error:nil]; } - (void)setKeyboardLayout:(nullable SDLKeyboardLayout)keyboardLayout { - [store sdl_setObject:keyboardLayout forName:SDLRPCParameterNameKeyboardLayout]; + [self.store sdl_setObject:keyboardLayout forName:SDLRPCParameterNameKeyboardLayout]; } - (nullable SDLKeyboardLayout)keyboardLayout { - return [store sdl_enumForName:SDLRPCParameterNameKeyboardLayout error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameKeyboardLayout error:nil]; } - (void)setKeypressMode:(nullable SDLKeypressMode)keypressMode { - [store sdl_setObject:keypressMode forName:SDLRPCParameterNameKeypressMode]; + [self.store sdl_setObject:keypressMode forName:SDLRPCParameterNameKeypressMode]; } - (nullable SDLKeypressMode)keypressMode { - return [store sdl_enumForName:SDLRPCParameterNameKeypressMode error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameKeypressMode error:nil]; } - (void)setLimitedCharacterList:(nullable NSArray *)limitedCharacterList { - [store sdl_setObject:limitedCharacterList forName:SDLRPCParameterNameLimitedCharacterList]; + [self.store sdl_setObject:limitedCharacterList forName:SDLRPCParameterNameLimitedCharacterList]; } - (nullable NSArray *)limitedCharacterList { - return [store sdl_objectsForName:SDLRPCParameterNameLimitedCharacterList ofClass:NSString.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameLimitedCharacterList ofClass:NSString.class error:nil]; } - (void)setAutoCompleteText:(nullable NSString *)autoCompleteText { - [store sdl_setObject:autoCompleteText forName:SDLRPCParameterNameAutoCompleteText]; + [self.store sdl_setObject:autoCompleteText forName:SDLRPCParameterNameAutoCompleteText]; } - (nullable NSString *)autoCompleteText { - return [store sdl_objectForName:SDLRPCParameterNameAutoCompleteText ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAutoCompleteText ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLLifecycleManager.m b/SmartDeviceLink/SDLLifecycleManager.m index 0c3b257ab..908f5c43f 100644 --- a/SmartDeviceLink/SDLLifecycleManager.m +++ b/SmartDeviceLink/SDLLifecycleManager.m @@ -12,6 +12,7 @@ #import "NSMapTable+Subscripting.h" #import "SDLAsynchronousRPCRequestOperation.h" +#import "SDLBackgroundTaskManager.h" #import "SDLChangeRegistration.h" #import "SDLChoiceSetManager.h" #import "SDLConfiguration.h" @@ -57,7 +58,6 @@ #import "SDLUnregisterAppInterface.h" #import "SDLVersion.h" - NS_ASSUME_NONNULL_BEGIN SDLLifecycleState *const SDLLifecycleStateStopped = @"Stopped"; @@ -72,6 +72,8 @@ SDLLifecycleState *const SDLLifecycleStateUnregistering = @"Unregistering"; SDLLifecycleState *const SDLLifecycleStateReady = @"Ready"; +NSString *const BackgroundTaskTransportName = @"com.sdl.transport.backgroundTask"; + #pragma mark - SDLManager Private Interface @interface SDLLifecycleManager () @@ -88,6 +90,7 @@ @interface SDLLifecycleManager () *)densityAvailable { - [store sdl_setObject:densityAvailable forName:SDLRPCParameterNameDensityAvailable]; + [self.store sdl_setObject:densityAvailable forName:SDLRPCParameterNameDensityAvailable]; } - (nullable NSNumber *)densityAvailable { - return [store sdl_objectForName:SDLRPCParameterNameDensityAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDensityAvailable ofClass:NSNumber.class error:nil]; } - (void)setColorAvailable:(nullable NSNumber *)colorAvailable { - [store sdl_setObject:colorAvailable forName:SDLRPCParameterNameRGBColorSpaceAvailable]; + [self.store sdl_setObject:colorAvailable forName:SDLRPCParameterNameRGBColorSpaceAvailable]; } - (nullable NSNumber *)colorAvailable { - return [store sdl_objectForName:SDLRPCParameterNameRGBColorSpaceAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRGBColorSpaceAvailable ofClass:NSNumber.class error:nil]; } - (void)setStatusAvailable:(nullable NSNumber *)statusAvailable { - [store sdl_setObject:statusAvailable forName:SDLRPCParameterNameStatusAvailable]; + [self.store sdl_setObject:statusAvailable forName:SDLRPCParameterNameStatusAvailable]; } - (nullable NSNumber *)statusAvailable { - return [store sdl_objectForName:SDLRPCParameterNameStatusAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameStatusAvailable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLLightControlCapabilities.m b/SmartDeviceLink/SDLLightControlCapabilities.m index 478e60f29..88c38e437 100644 --- a/SmartDeviceLink/SDLLightControlCapabilities.m +++ b/SmartDeviceLink/SDLLightControlCapabilities.m @@ -23,22 +23,22 @@ - (instancetype)initWithModuleName:(NSString *)moduleName supportedLights:(NSArr } - (void)setModuleName:(NSString *)moduleName { - [store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; + [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; } - (NSString *)moduleName { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; } - (void)setSupportedLights:(NSArray *)supportedLights { - [store sdl_setObject:supportedLights forName:SDLRPCParameterNameSupportedLights]; + [self.store sdl_setObject:supportedLights forName:SDLRPCParameterNameSupportedLights]; } - (NSArray *)supportedLights { NSError *error = nil; - return [store sdl_objectsForName:SDLRPCParameterNameSupportedLights ofClass:SDLLightCapabilities.class error:&error]; + return [self.store sdl_objectsForName:SDLRPCParameterNameSupportedLights ofClass:SDLLightCapabilities.class error:&error]; } diff --git a/SmartDeviceLink/SDLLightControlData.m b/SmartDeviceLink/SDLLightControlData.m index 586fe9a2d..f9699d805 100644 --- a/SmartDeviceLink/SDLLightControlData.m +++ b/SmartDeviceLink/SDLLightControlData.m @@ -21,12 +21,12 @@ -(instancetype)initWithLightStates:(NSArray *)lightState { } - (void)setLightState:(NSArray *)lightState { - [store sdl_setObject:lightState forName:SDLRPCParameterNameLightState]; + [self.store sdl_setObject:lightState forName:SDLRPCParameterNameLightState]; } - (NSArray *)lightState { NSError *error = nil; - return [store sdl_objectsForName:SDLRPCParameterNameLightState ofClass:SDLLightState.class error:&error]; + return [self.store sdl_objectsForName:SDLRPCParameterNameLightState ofClass:SDLLightState.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLLightState.m b/SmartDeviceLink/SDLLightState.m index 28357d3ef..cfd13c2f9 100644 --- a/SmartDeviceLink/SDLLightState.m +++ b/SmartDeviceLink/SDLLightState.m @@ -48,37 +48,37 @@ - (instancetype)initWithId:(SDLLightName)id lightStatus:(SDLLightStatus)lightSta } - (void)setId:(SDLLightName)id { - [store sdl_setObject:id forName:SDLRPCParameterNameId]; + [self.store sdl_setObject:id forName:SDLRPCParameterNameId]; } - (SDLLightName)id { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameId error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameId error:&error]; } - (void)setStatus:(SDLLightStatus)status { - [store sdl_setObject:status forName:SDLRPCParameterNameStatus]; + [self.store sdl_setObject:status forName:SDLRPCParameterNameStatus]; } - (SDLLightStatus)status { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameStatus error:&error]; } - (void)setDensity:(nullable NSNumber *)density { - [store sdl_setObject:density forName:SDLRPCParameterNameDensity]; + [self.store sdl_setObject:density forName:SDLRPCParameterNameDensity]; } - (nullable NSNumber *)density { - return [store sdl_objectForName:SDLRPCParameterNameDensity ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDensity ofClass:NSNumber.class error:nil]; } - (void)setColor:(nullable SDLRGBColor *)color { - [store sdl_setObject:color forName:SDLRPCParameterNameColor]; + [self.store sdl_setObject:color forName:SDLRPCParameterNameColor]; } - (nullable SDLRGBColor *)color { - return [store sdl_objectForName:SDLRPCParameterNameColor ofClass:SDLRGBColor.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameColor ofClass:SDLRGBColor.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLListFiles.m b/SmartDeviceLink/SDLListFiles.m index f9ee924ed..2dd53639e 100644 --- a/SmartDeviceLink/SDLListFiles.m +++ b/SmartDeviceLink/SDLListFiles.m @@ -12,11 +12,14 @@ @implementation SDLListFiles +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameListFiles]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLListFilesResponse.m b/SmartDeviceLink/SDLListFilesResponse.m index e3ef9e8b0..a70c842b1 100644 --- a/SmartDeviceLink/SDLListFilesResponse.m +++ b/SmartDeviceLink/SDLListFilesResponse.m @@ -12,26 +12,29 @@ @implementation SDLListFilesResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameListFiles]) { } return self; } +#pragma clang diagnostic pop - (void)setFilenames:(nullable NSArray *)filenames { - [parameters sdl_setObject:filenames forName:SDLRPCParameterNameFilenames]; + [self.parameters sdl_setObject:filenames forName:SDLRPCParameterNameFilenames]; } - (nullable NSArray *)filenames { - return [parameters sdl_objectsForName:SDLRPCParameterNameFilenames ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameFilenames ofClass:NSString.class error:nil]; } - (void)setSpaceAvailable:(nullable NSNumber *)spaceAvailable { - [parameters sdl_setObject:spaceAvailable forName:SDLRPCParameterNameSpaceAvailable]; + [self.parameters sdl_setObject:spaceAvailable forName:SDLRPCParameterNameSpaceAvailable]; } - (nullable NSNumber *)spaceAvailable { - return [parameters sdl_objectForName:SDLRPCParameterNameSpaceAvailable ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpaceAvailable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLLocationCoordinate.m b/SmartDeviceLink/SDLLocationCoordinate.m index 79bd42028..5130f75c7 100644 --- a/SmartDeviceLink/SDLLocationCoordinate.m +++ b/SmartDeviceLink/SDLLocationCoordinate.m @@ -23,21 +23,21 @@ - (instancetype)initWithLatitudeDegrees:(float)latitudeDegrees longitudeDegrees: } - (void)setLongitudeDegrees:(NSNumber *)longitudeDegrees { - [store sdl_setObject:longitudeDegrees forName:SDLRPCParameterNameLongitudeDegrees]; + [self.store sdl_setObject:longitudeDegrees forName:SDLRPCParameterNameLongitudeDegrees]; } - (NSNumber *)longitudeDegrees { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLongitudeDegrees ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLongitudeDegrees ofClass:NSNumber.class error:&error]; } - (void)setLatitudeDegrees:(NSNumber *)latitudeDegrees { - [store sdl_setObject:latitudeDegrees forName:SDLRPCParameterNameLatitudeDegrees]; + [self.store sdl_setObject:latitudeDegrees forName:SDLRPCParameterNameLatitudeDegrees]; } - (NSNumber *)latitudeDegrees { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLatitudeDegrees ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLatitudeDegrees ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLLocationDetails.m b/SmartDeviceLink/SDLLocationDetails.m index 8de7aa7ea..6d34852e8 100644 --- a/SmartDeviceLink/SDLLocationDetails.m +++ b/SmartDeviceLink/SDLLocationDetails.m @@ -41,59 +41,59 @@ - (instancetype)initWithCoordinate:(SDLLocationCoordinate *)coordinate locationN } - (void)setCoordinate:(nullable SDLLocationCoordinate *)coordinate { - [store sdl_setObject:coordinate forName:SDLRPCParameterNameLocationCoordinate]; + [self.store sdl_setObject:coordinate forName:SDLRPCParameterNameLocationCoordinate]; } - (nullable SDLLocationCoordinate *)coordinate { - return [store sdl_objectForName:SDLRPCParameterNameLocationCoordinate ofClass:SDLLocationCoordinate.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameLocationCoordinate ofClass:SDLLocationCoordinate.class error:nil]; } - (void)setLocationName:(nullable NSString *)locationName { - [store sdl_setObject:locationName forName:SDLRPCParameterNameLocationName]; + [self.store sdl_setObject:locationName forName:SDLRPCParameterNameLocationName]; } - (nullable NSString *)locationName { - return [store sdl_objectForName:SDLRPCParameterNameLocationName ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameLocationName ofClass:NSString.class error:nil]; } - (void)setAddressLines:(nullable NSArray *)addressLines { - [store sdl_setObject:addressLines forName:SDLRPCParameterNameAddressLines]; + [self.store sdl_setObject:addressLines forName:SDLRPCParameterNameAddressLines]; } - (nullable NSArray *)addressLines { - return [store sdl_objectsForName:SDLRPCParameterNameAddressLines ofClass:NSString.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameAddressLines ofClass:NSString.class error:nil]; } - (void)setLocationDescription:(nullable NSString *)locationDescription { - [store sdl_setObject:locationDescription forName:SDLRPCParameterNameLocationDescription]; + [self.store sdl_setObject:locationDescription forName:SDLRPCParameterNameLocationDescription]; } - (nullable NSString *)locationDescription { - return [store sdl_objectForName:SDLRPCParameterNameLocationDescription ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameLocationDescription ofClass:NSString.class error:nil]; } - (void)setPhoneNumber:(nullable NSString *)phoneNumber { - [store sdl_setObject:phoneNumber forName:SDLRPCParameterNamePhoneNumber]; + [self.store sdl_setObject:phoneNumber forName:SDLRPCParameterNamePhoneNumber]; } - (nullable NSString *)phoneNumber { - return [store sdl_objectForName:SDLRPCParameterNamePhoneNumber ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePhoneNumber ofClass:NSString.class error:nil]; } - (void)setLocationImage:(nullable SDLImage *)locationImage { - [store sdl_setObject:locationImage forName:SDLRPCParameterNameLocationImage]; + [self.store sdl_setObject:locationImage forName:SDLRPCParameterNameLocationImage]; } - (nullable SDLImage *)locationImage { - return [store sdl_objectForName:SDLRPCParameterNameLocationImage ofClass:SDLImage.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameLocationImage ofClass:SDLImage.class error:nil]; } - (void)setSearchAddress:(nullable SDLOasisAddress *)searchAddress { - [store sdl_setObject:searchAddress forName:SDLRPCParameterNameSearchAddress]; + [self.store sdl_setObject:searchAddress forName:SDLRPCParameterNameSearchAddress]; } - (nullable SDLOasisAddress *)searchAddress { - return [store sdl_objectForName:SDLRPCParameterNameSearchAddress ofClass:SDLOasisAddress.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSearchAddress ofClass:SDLOasisAddress.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLLogFileModuleMap.m b/SmartDeviceLink/SDLLogFileModuleMap.m index 9af182d88..11e7466e7 100644 --- a/SmartDeviceLink/SDLLogFileModuleMap.m +++ b/SmartDeviceLink/SDLLogFileModuleMap.m @@ -28,11 +28,12 @@ @implementation SDLLogFileModuleMap [self sdl_screenManagerTextAndGraphicModule], [self sdl_screenManagerSoftButtonModule], [self sdl_screenManagerMenuModule], - [self sdl_screenManagerChoiceSetModule]]]; + [self sdl_screenManagerChoiceSetModule], + [self sdl_utilitiesModule]]]; } + (SDLLogFileModule *)sdl_transportModule { - return [SDLLogFileModule moduleWithName:@"Transport" files:[NSSet setWithArray:@[@"SDLIAPSession", @"SDLIAPTransport", @"SDLSecondaryTransportManager", @"SDLSecondaryTransportPrimaryProtocolHandler", @"SDLStreamDelegate", @"SDLTCPTransport"]]]; + return [SDLLogFileModule moduleWithName:@"Transport" files:[NSSet setWithArray:@[@"SDLIAPSession", @"SDLIAPTransport", @"SDLIAPDataSession", @"SDLIAPControlSession", @"SDLSecondaryTransportManager", @"SDLSecondaryTransportPrimaryProtocolHandler", @"SDLStreamDelegate", @"SDLTCPTransport"]]]; } + (SDLLogFileModule *)sdl_proxyModule { @@ -87,7 +88,7 @@ + (SDLLogFileModule *)sdl_screenManagerTextAndGraphicModule { } + (SDLLogFileModule *)sdl_screenManagerSoftButtonModule { - return [SDLLogFileModule moduleWithName:@"Screen/SoftButton" files:[NSSet setWithArray:@[@"SDLSoftButtonManager", @"SDLSoftButtonObject", @"SDLSoftButtonState"]]]; + return [SDLLogFileModule moduleWithName:@"Screen/SoftButton" files:[NSSet setWithArray:@[@"SDLSoftButtonManager", @"SDLSoftButtonObject", @"SDLSoftButtonState", @"SDLSoftButtonTransitionOperation", @"SDLSoftButtonReplaceOperation"]]]; } + (SDLLogFileModule *)sdl_screenManagerMenuModule { diff --git a/SmartDeviceLink/SDLManager.h b/SmartDeviceLink/SDLManager.h index 91aece5e5..9764f3f3a 100644 --- a/SmartDeviceLink/SDLManager.h +++ b/SmartDeviceLink/SDLManager.h @@ -178,6 +178,44 @@ typedef void (^SDLManagerReadyBlock)(BOOL success, NSError *_Nullable error); */ - (void)sendSequentialRequests:(NSArray *)requests progressHandler:(nullable SDLMultipleSequentialRequestProgressHandler)progressHandler completionHandler:(nullable SDLMultipleRequestCompletionHandler)completionHandler NS_SWIFT_NAME(sendSequential(requests:progressHandler:completionHandler:)); + +#pragma mark - RPC Subscriptions + +typedef void (^SDLRPCUpdatedBlock) (__kindof SDLRPCMessage *message); + +/** + * Subscribe to callbacks about a particular RPC request, notification, or response with a block callback. + * + * @param rpcName The name of the RPC request, response, or notification to subscribe to. + * @param block The block that will be called every time an RPC of the name and type specified is received. + * @return An object that can be passed to `unsubscribeFromRPC:ofType:withObserver:` to unsubscribe the block. + */ +- (id)subscribeToRPC:(SDLNotificationName)rpcName withBlock:(SDLRPCUpdatedBlock)block NS_SWIFT_NAME(subscribe(to:block:)); + +/** + * Subscribe to callbacks about a particular RPC request, notification, or response with a selector callback. + * + * The selector supports the following parameters: + * + * 1. Zero parameters e.g. `- (void)registerAppInterfaceResponse` + * 2. One parameter e.g. `- (void)registerAppInterfaceResponse:(NSNotification *)notification;` + * + * Note that using this method to get a response instead of the `sendRequest:withResponseHandler:` method of getting a response, you will not be notifed of any `SDLGenericResponse` errors where the head unit doesn't understand the request. + * + * @param rpcName The name of the RPC request, response, or notification to subscribe to. + * @param observer The object that will have its selector called every time an RPC of the name and type specified is received. + * @param selector The selector on `observer` that will be called every time an RPC of the name and type specified is received. + */ +- (void)subscribeToRPC:(SDLNotificationName)rpcName withObserver:(id)observer selector:(SEL)selector NS_SWIFT_NAME(subscribe(to:observer:selector:)); + +/** + * Unsubscribe to callbacks about a particular RPC request, notification, or response. + * + * @param rpcName The name of the RPC request, response, or notification to unsubscribe from. + * @param observer The object representing a block callback or selector callback to be unsubscribed + */ +- (void)unsubscribeFromRPC:(SDLNotificationName)rpcName withObserver:(id)observer NS_SWIFT_NAME(unsubscribe(from:observer:)); + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLManager.m b/SmartDeviceLink/SDLManager.m index 0cf027401..b198f7e52 100644 --- a/SmartDeviceLink/SDLManager.m +++ b/SmartDeviceLink/SDLManager.m @@ -17,6 +17,9 @@ #import "SDLManagerDelegate.h" #import "SDLNotificationDispatcher.h" #import "SDLResponseDispatcher.h" +#import "SDLRPCRequestNotification.h" +#import "SDLRPCResponseNotification.h" +#import "SDLRPCNotificationNotification.h" #import "SDLSoftButtonManager.h" #import "SDLStateMachine.h" #import "SDLTextAndGraphicManager.h" @@ -143,6 +146,24 @@ - (void)sendSequentialRequests:(NSArray *)requests progressHand [self.lifecycleManager sendSequentialRequests:requests progressHandler:progressHandler completionHandler:completionHandler]; } + +#pragma mark - RPC Subscriptions + +- (id)subscribeToRPC:(SDLNotificationName)rpcName withBlock:(SDLRPCUpdatedBlock)block { + return [[NSNotificationCenter defaultCenter] addObserverForName:rpcName object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { + SDLRPCMessage *message = note.userInfo[SDLNotificationUserInfoObject]; + block(message); + }]; +} + +- (void)subscribeToRPC:(SDLNotificationName)rpcName withObserver:(id)observer selector:(SEL)selector { + [[NSNotificationCenter defaultCenter] addObserver:observer selector:selector name:rpcName object:nil]; +} + +- (void)unsubscribeFromRPC:(SDLNotificationName)rpcName withObserver:(id)observer { + [[NSNotificationCenter defaultCenter] removeObserver:observer name:rpcName object:nil]; +} + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLMassageCushionFirmness.m b/SmartDeviceLink/SDLMassageCushionFirmness.m index fe3bc6335..96dacd0fc 100644 --- a/SmartDeviceLink/SDLMassageCushionFirmness.m +++ b/SmartDeviceLink/SDLMassageCushionFirmness.m @@ -22,21 +22,21 @@ - (instancetype)initWithMassageCushion:(SDLMassageCushion)cushion firmness:(UInt } - (void)setCushion:(SDLMassageCushion)cushion { - [store sdl_setObject:cushion forName:SDLRPCParameterNameCushion]; + [self.store sdl_setObject:cushion forName:SDLRPCParameterNameCushion]; } - (SDLMassageCushion)cushion { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameCushion error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameCushion error:&error]; } - (void)setFirmness:(NSNumber *)firmness { - [store sdl_setObject:firmness forName:SDLRPCParameterNameFirmness]; + [self.store sdl_setObject:firmness forName:SDLRPCParameterNameFirmness]; } - (NSNumber *)firmness { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameFirmness ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameFirmness ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLMassageModeData.m b/SmartDeviceLink/SDLMassageModeData.m index 35fa3a8b3..fbcd4dde7 100644 --- a/SmartDeviceLink/SDLMassageModeData.m +++ b/SmartDeviceLink/SDLMassageModeData.m @@ -22,21 +22,21 @@ - (instancetype)initWithMassageMode:(SDLMassageMode)massageMode massageZone:(SDL } - (void)setMassageMode:(SDLMassageMode)massageMode { - [store sdl_setObject:massageMode forName:SDLRPCParameterNameMassageMode]; + [self.store sdl_setObject:massageMode forName:SDLRPCParameterNameMassageMode]; } - (SDLMassageMode)massageMode { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameMassageMode error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameMassageMode error:&error]; } - (void)setMassageZone:(SDLMassageZone)massageZone { - [store sdl_setObject:massageZone forName:SDLRPCParameterNameMassageZone]; + [self.store sdl_setObject:massageZone forName:SDLRPCParameterNameMassageZone]; } - (SDLMassageZone)massageZone { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameMassageZone error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameMassageZone error:&error]; } @end diff --git a/SmartDeviceLink/SDLMediaServiceData.m b/SmartDeviceLink/SDLMediaServiceData.m index 4abb6c5d2..a605e9bf6 100644 --- a/SmartDeviceLink/SDLMediaServiceData.m +++ b/SmartDeviceLink/SDLMediaServiceData.m @@ -38,99 +38,99 @@ - (instancetype)initWithMediaType:(nullable SDLMediaType)mediaType mediaTitle:(n } - (void)setMediaType:(nullable SDLMediaType)mediaType { - [store sdl_setObject:mediaType forName:SDLRPCParameterNameMediaType]; + [self.store sdl_setObject:mediaType forName:SDLRPCParameterNameMediaType]; } - (nullable SDLMediaType)mediaType { - return [store sdl_enumForName:SDLRPCParameterNameMediaType error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameMediaType error:nil]; } - (void)setMediaTitle:(nullable NSString *)mediaTitle { - [store sdl_setObject:mediaTitle forName:SDLRPCParameterNameMediaTitle]; + [self.store sdl_setObject:mediaTitle forName:SDLRPCParameterNameMediaTitle]; } - (nullable NSString *)mediaTitle { - return [store sdl_objectForName:SDLRPCParameterNameMediaTitle ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMediaTitle ofClass:NSString.class error:nil]; } - (void)setMediaArtist:(nullable NSString *)mediaArtist { - [store sdl_setObject:mediaArtist forName:SDLRPCParameterNameMediaArtist]; + [self.store sdl_setObject:mediaArtist forName:SDLRPCParameterNameMediaArtist]; } - (nullable NSString *)mediaArtist { - return [store sdl_objectForName:SDLRPCParameterNameMediaArtist ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMediaArtist ofClass:NSString.class error:nil]; } - (void)setMediaAlbum:(nullable NSString *)mediaAlbum { - [store sdl_setObject:mediaAlbum forName:SDLRPCParameterNameMediaAlbum]; + [self.store sdl_setObject:mediaAlbum forName:SDLRPCParameterNameMediaAlbum]; } - (nullable NSString *)mediaAlbum { - return [store sdl_objectForName:SDLRPCParameterNameMediaAlbum ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMediaAlbum ofClass:NSString.class error:nil]; } - (void)setPlaylistName:(nullable NSString *)playlistName { - [store sdl_setObject:playlistName forName:SDLRPCParameterNamePlaylistName]; + [self.store sdl_setObject:playlistName forName:SDLRPCParameterNamePlaylistName]; } - (nullable NSString *)playlistName { - return [store sdl_objectForName:SDLRPCParameterNamePlaylistName ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePlaylistName ofClass:NSString.class error:nil]; } - (void)setIsExplicit:(nullable NSNumber *)isExplicit { - [store sdl_setObject:isExplicit forName:SDLRPCParameterNameIsExplicit]; + [self.store sdl_setObject:isExplicit forName:SDLRPCParameterNameIsExplicit]; } - (nullable NSNumber *)isExplicit { - return [store sdl_objectForName:SDLRPCParameterNameIsExplicit ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameIsExplicit ofClass:NSNumber.class error:nil]; } - (void)setTrackPlaybackProgress:(nullable NSNumber *)trackPlaybackProgress { - [store sdl_setObject:trackPlaybackProgress forName:SDLRPCParameterNameTrackPlaybackProgress]; + [self.store sdl_setObject:trackPlaybackProgress forName:SDLRPCParameterNameTrackPlaybackProgress]; } - (nullable NSNumber *)trackPlaybackProgress { - return [store sdl_objectForName:SDLRPCParameterNameTrackPlaybackProgress ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTrackPlaybackProgress ofClass:NSNumber.class error:nil]; } - (void)setTrackPlaybackDuration:(nullable NSNumber *)trackPlaybackDuration { - [store sdl_setObject:trackPlaybackDuration forName:SDLRPCParameterNameTrackPlaybackDuration]; + [self.store sdl_setObject:trackPlaybackDuration forName:SDLRPCParameterNameTrackPlaybackDuration]; } - (nullable NSNumber *)trackPlaybackDuration { - return [store sdl_objectForName:SDLRPCParameterNameTrackPlaybackDuration ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTrackPlaybackDuration ofClass:NSNumber.class error:nil]; } - (void)setQueuePlaybackProgress:(nullable NSNumber *)queuePlaybackProgress { - [store sdl_setObject:queuePlaybackProgress forName:SDLRPCParameterNameQueuePlaybackProgress]; + [self.store sdl_setObject:queuePlaybackProgress forName:SDLRPCParameterNameQueuePlaybackProgress]; } - (nullable NSNumber *)queuePlaybackProgress { - return [store sdl_objectForName:SDLRPCParameterNameQueuePlaybackProgress ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameQueuePlaybackProgress ofClass:NSNumber.class error:nil]; } - (void)setQueuePlaybackDuration:(nullable NSNumber *)queuePlaybackDuration { - [store sdl_setObject:queuePlaybackDuration forName:SDLRPCParameterNameQueuePlaybackDuration]; + [self.store sdl_setObject:queuePlaybackDuration forName:SDLRPCParameterNameQueuePlaybackDuration]; } - (nullable NSNumber *)queuePlaybackDuration { - return [store sdl_objectForName:SDLRPCParameterNameQueuePlaybackDuration ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameQueuePlaybackDuration ofClass:NSNumber.class error:nil]; } - (void)setQueueCurrentTrackNumber:(nullable NSNumber *)queueCurrentTrackNumber { - [store sdl_setObject:queueCurrentTrackNumber forName:SDLRPCParameterNameQueueCurrentTrackNumber]; + [self.store sdl_setObject:queueCurrentTrackNumber forName:SDLRPCParameterNameQueueCurrentTrackNumber]; } - (nullable NSNumber *)queueCurrentTrackNumber { - return [store sdl_objectForName:SDLRPCParameterNameQueueCurrentTrackNumber ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameQueueCurrentTrackNumber ofClass:NSNumber.class error:nil]; } - (void)setQueueTotalTrackCount:(nullable NSNumber *)queueTotalTrackCount { - [store sdl_setObject:queueTotalTrackCount forName:SDLRPCParameterNameQueueTotalTrackCount]; + [self.store sdl_setObject:queueTotalTrackCount forName:SDLRPCParameterNameQueueTotalTrackCount]; } - (nullable NSNumber *)queueTotalTrackCount { - return [store sdl_objectForName:SDLRPCParameterNameQueueTotalTrackCount ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameQueueTotalTrackCount ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLMenuCell.m b/SmartDeviceLink/SDLMenuCell.m index cc7bfd53c..81ba056bf 100644 --- a/SmartDeviceLink/SDLMenuCell.m +++ b/SmartDeviceLink/SDLMenuCell.m @@ -58,6 +58,33 @@ - (NSString *)description { return [NSString stringWithFormat:@"SDLMenuCell: %u-\"%@\", artworkName: %@, voice commands: %lu, isSubcell: %@, hasSubcells: %@", (unsigned int)_cellId, _title, _icon.name, (unsigned long)_voiceCommands.count, (_parentCellId != UINT32_MAX ? @"YES" : @"NO"), (_subCells.count > 0 ? @"YES" : @"NO")]; } +#pragma mark - Object Equality + +NSUInteger const NSUIntBitCell = (CHAR_BIT * sizeof(NSUInteger)); +NSUInteger NSUIntRotateCell(NSUInteger val, NSUInteger howMuch) { + return ((((NSUInteger)val) << howMuch) | (((NSUInteger)val) >> (NSUIntBitCell - howMuch))); +} + +- (NSUInteger)hash { + return NSUIntRotateCell(self.title.hash, NSUIntBitCell / 2) + ^ NSUIntRotateCell(self.icon.name.hash, NSUIntBitCell / 3) + ^ NSUIntRotateCell(self.voiceCommands.hash, NSUIntBitCell / 4) + ^ NSUIntRotateCell(self.subCells.count !=0, NSUIntBitCell / 5 ); +} + +- (BOOL)isEqual:(id)object { + if (self == object) { return YES; } + if (![object isMemberOfClass:[self class]]) { return NO; } + + return [self isEqualToChoice:(SDLMenuCell *)object]; +} + +- (BOOL)isEqualToChoice:(SDLMenuCell *)choice { + if (choice == nil) { return NO; } + + return (self.hash == choice.hash); +} + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLMenuManager.h b/SmartDeviceLink/SDLMenuManager.h index cd3ead610..f559b6fb8 100644 --- a/SmartDeviceLink/SDLMenuManager.h +++ b/SmartDeviceLink/SDLMenuManager.h @@ -7,6 +7,7 @@ // #import +#import "SDLMenuManagerConstants.h" @class SDLFileManager; @class SDLMenuCell; @@ -34,6 +35,7 @@ typedef void(^SDLMenuUpdateCompletionHandler)(NSError *__nullable error); @property (copy, nonatomic) NSArray *menuCells; +@property (assign, nonatomic) SDLDynamicMenuUpdatesMode dynamicMenuUpdatesMode; @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLMenuManager.m b/SmartDeviceLink/SDLMenuManager.m index 14bdcccc6..734e1fc00 100644 --- a/SmartDeviceLink/SDLMenuManager.m +++ b/SmartDeviceLink/SDLMenuManager.m @@ -22,15 +22,17 @@ #import "SDLLogMacros.h" #import "SDLMenuCell.h" #import "SDLMenuParams.h" +#import "SDLDynamicMenuUpdateRunScore.h" +#import "SDLDynamicMenuUpdateAlgorithm.h" #import "SDLOnCommand.h" #import "SDLOnHMIStatus.h" #import "SDLRegisterAppInterfaceResponse.h" #import "SDLRPCNotificationNotification.h" #import "SDLRPCResponseNotification.h" #import "SDLSetDisplayLayoutResponse.h" +#import "SDLScreenManager.h" #import "SDLVoiceCommand.h" - NS_ASSUME_NONNULL_BEGIN @interface SDLMenuCell() @@ -71,6 +73,7 @@ - (instancetype)init { _lastMenuId = MenuCellIdMin; _menuCells = @[]; _oldMenuCells = @[]; + _dynamicMenuUpdatesMode = SDLDynamicMenuUpdatesModeOnWithCompatibility; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_registerResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_displayLayoutResponse:) name:SDLDidReceiveSetDisplayLayoutResponse object:nil]; @@ -139,14 +142,149 @@ - (void)setMenuCells:(NSArray *)menuCells { return; } - // Set the ids - self.lastMenuId = MenuCellIdMin; - [self sdl_updateIdsOnMenuCells:menuCells parentId:ParentIdNotFound]; - _oldMenuCells = _menuCells; _menuCells = menuCells; + if ([self sdl_isDynamicMenuUpdateActive:self.dynamicMenuUpdatesMode]) { + [self sdl_startDynamicMenuUpdate]; + } else { + [self sdl_startNonDynamicMenuUpdate]; + } +} + +#pragma mark - Build Deletes, Keeps, Adds + +- (void)sdl_startSubMenuUpdatesWithOldKeptCells:(NSArray *)oldKeptCells newKeptCells:(NSArray *)newKeptCells atIndex:(NSUInteger)startIndex { + if (oldKeptCells.count == 0 || startIndex >= oldKeptCells.count) { + self.inProgressUpdate = nil; + return; + } + + if (oldKeptCells[startIndex].subCells.count > 0) { + SDLDynamicMenuUpdateRunScore *tempScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldKeptCells[startIndex].subCells updatedMenuCells:newKeptCells[startIndex].subCells]; + NSArray *deleteMenuStatus = tempScore.oldStatus; + NSArray *addMenuStatus = tempScore.updatedStatus; + + NSArray *cellsToDelete = [self sdl_filterDeleteMenuItemsWithOldMenuItems:oldKeptCells[startIndex].subCells basedOnStatusList:deleteMenuStatus]; + NSArray *cellsToAdd = [self sdl_filterAddMenuItemsWithNewMenuItems:newKeptCells[startIndex].subCells basedOnStatusList:addMenuStatus]; + + NSArray *oldKeeps = [self sdl_filterKeepMenuItemsWithOldMenuItems:oldKeptCells[startIndex].subCells basedOnStatusList:deleteMenuStatus]; + NSArray *newKeeps = [self sdl_filterKeepMenuItemsWithNewMenuItems:newKeptCells[startIndex].subCells basedOnStatusList:addMenuStatus]; + + [self sdl_updateIdsOnMenuCells:cellsToAdd parentId:newKeptCells[startIndex].cellId]; + [self transferCellIDFromOldCells:oldKeeps toKeptCells:newKeeps]; + + __weak typeof(self) weakself = self; + [self sdl_sendDeleteCurrentMenu:cellsToDelete withCompletionHandler:^(NSError * _Nullable error) { + [weakself sdl_sendUpdatedMenu:cellsToAdd usingMenu:weakself.menuCells[startIndex].subCells withCompletionHandler:^(NSError * _Nullable error) { + // After the first set of submenu cells were added and deleted we must find the next set of subcells untll we loop through all the elemetns + [weakself sdl_startSubMenuUpdatesWithOldKeptCells:oldKeptCells newKeptCells:newKeptCells atIndex:(startIndex + 1)]; + }]; + }]; + } else { + // After the first set of submenu cells were added and deleted we must find the next set of subcells untll we loop through all the elemetns + [self sdl_startSubMenuUpdatesWithOldKeptCells:oldKeptCells newKeptCells:newKeptCells atIndex:(startIndex + 1)]; + } +} + +- (NSArray *)sdl_filterDeleteMenuItemsWithOldMenuItems:(NSArray *)oldMenuCells basedOnStatusList:(NSArray *)oldStatusList { + NSMutableArray *deleteCells = [[NSMutableArray alloc] init]; + // The index of the status should corrleate 1-1 with the number of items in the menu + // [2,0,2,0] => [A,B,C,D] = [B,D] + for (NSUInteger index = 0; index < oldStatusList.count; index++) { + if (oldStatusList[index].integerValue == MenuCellStateDelete) { + [deleteCells addObject:oldMenuCells[index]]; + } + } + return [deleteCells copy]; +} + +- (NSArray *)sdl_filterAddMenuItemsWithNewMenuItems:(NSArray *)newMenuCells basedOnStatusList:(NSArray *)newStatusList { + NSMutableArray *addCells = [[NSMutableArray alloc] init]; + // The index of the status should corrleate 1-1 with the number of items in the menu + // [2,1,2,1] => [A,B,C,D] = [B,D] + for (NSUInteger index = 0; index < newStatusList.count; index++) { + if (newStatusList[index].integerValue == MenuCellStateAdd) { + [addCells addObject:newMenuCells[index]]; + } + } + return [addCells copy]; +} + +- (NSArray *)sdl_filterKeepMenuItemsWithOldMenuItems:(NSArray *)oldMenuCells basedOnStatusList:(NSArray *)keepStatusList { + NSMutableArray *keepMenuCells = [[NSMutableArray alloc] init]; + + for (NSUInteger index = 0; index < keepStatusList.count; index++) { + if (keepStatusList[index].integerValue == MenuCellStateKeep) { + [keepMenuCells addObject:oldMenuCells[index]]; + } + } + return [keepMenuCells copy]; +} + +- (NSArray *)sdl_filterKeepMenuItemsWithNewMenuItems:(NSArray *)newMenuCells basedOnStatusList:(NSArray *)keepStatusList { + NSMutableArray *keepMenuCells = [[NSMutableArray alloc] init]; + for (NSUInteger index = 0; index < keepStatusList.count; index++) { + if (keepStatusList[index].integerValue == MenuCellStateKeep) { + [keepMenuCells addObject:newMenuCells[index]]; + } + } + return [keepMenuCells copy]; +} + +- (void)transferCellIDFromOldCells:(NSArray *)oldCells toKeptCells:(NSArray *)newCells { + if (oldCells.count == 0) { return; } + for (NSUInteger i = 0; i < newCells.count; i++) { + newCells[i].cellId = oldCells[i].cellId; + } +} + +#pragma mark - Updating System + +- (void)sdl_startDynamicMenuUpdate { + SDLDynamicMenuUpdateRunScore *runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:self.oldMenuCells updatedMenuCells:self.menuCells]; + + NSArray *deleteMenuStatus = runScore.oldStatus; + NSArray *addMenuStatus = runScore.updatedStatus; + + NSArray *cellsToDelete = [self sdl_filterDeleteMenuItemsWithOldMenuItems:self.oldMenuCells basedOnStatusList:deleteMenuStatus]; + NSArray *cellsToAdd = [self sdl_filterAddMenuItemsWithNewMenuItems:self.menuCells basedOnStatusList:addMenuStatus]; + // These arrays should ONLY contain KEEPS. These will be used for SubMenu compares + NSArray *oldKeeps = [self sdl_filterKeepMenuItemsWithOldMenuItems:self.oldMenuCells basedOnStatusList:deleteMenuStatus]; + NSArray *newKeeps = [self sdl_filterKeepMenuItemsWithNewMenuItems:self.menuCells basedOnStatusList:addMenuStatus]; + + // Cells that will be added need new ids + [self sdl_updateIdsOnMenuCells:cellsToAdd parentId:ParentIdNotFound]; + + // Since we are creating a new Menu but keeping old cells we must firt transfer the old cellIDs to the new menus kept cells. + [self transferCellIDFromOldCells:oldKeeps toKeptCells:newKeeps]; + // Upload the artworks + NSArray *artworksToBeUploaded = [self sdl_findAllArtworksToBeUploadedFromCells:cellsToAdd]; + if (artworksToBeUploaded.count > 0) { + [self.fileManager uploadArtworks:artworksToBeUploaded completionHandler:^(NSArray * _Nonnull artworkNames, NSError * _Nullable error) { + if (error != nil) { + SDLLogE(@"Error uploading menu artworks: %@", error); + } + SDLLogD(@"Menu artworks uploaded"); + // Update cells with artworks once they're uploaded + __weak typeof(self) weakself = self; + [self sdl_updateMenuWithCellsToDelete:cellsToDelete cellsToAdd:cellsToAdd completionHandler:^(NSError * _Nullable error) { + [weakself sdl_startSubMenuUpdatesWithOldKeptCells:oldKeeps newKeptCells:newKeeps atIndex:0]; + }]; + }]; + } else { + // Cells have no artwork to load + __weak typeof(self) weakself = self; + [self sdl_updateMenuWithCellsToDelete:cellsToDelete cellsToAdd:cellsToAdd completionHandler:^(NSError * _Nullable error) { + [weakself sdl_startSubMenuUpdatesWithOldKeptCells:oldKeeps newKeptCells:newKeeps atIndex:0]; + }]; + } +} + +- (void)sdl_startNonDynamicMenuUpdate { + [self sdl_updateIdsOnMenuCells:self.menuCells parentId:ParentIdNotFound]; + NSArray *artworksToBeUploaded = [self sdl_findAllArtworksToBeUploadedFromCells:self.menuCells]; if (artworksToBeUploaded.count > 0) { [self.fileManager uploadArtworks:artworksToBeUploaded completionHandler:^(NSArray * _Nonnull artworkNames, NSError * _Nullable error) { @@ -155,16 +293,15 @@ - (void)setMenuCells:(NSArray *)menuCells { } SDLLogD(@"Menu artworks uploaded"); - [self sdl_updateWithCompletionHandler:nil]; + [self sdl_updateMenuWithCellsToDelete:self.oldMenuCells cellsToAdd:self.menuCells completionHandler:nil]; }]; + } else { + // Cells have no artwork to load + [self sdl_updateMenuWithCellsToDelete:self.oldMenuCells cellsToAdd:self.menuCells completionHandler:nil]; } - - [self sdl_updateWithCompletionHandler:nil]; } -#pragma mark - Updating System - -- (void)sdl_updateWithCompletionHandler:(nullable SDLMenuUpdateCompletionHandler)completionHandler { +- (void)sdl_updateMenuWithCellsToDelete:(NSArray *)deleteCells cellsToAdd:(NSArray *)addCells completionHandler:(nullable SDLMenuUpdateCompletionHandler)completionHandler { if (self.currentHMILevel == nil || [self.currentHMILevel isEqualToEnum:SDLHMILevelNone] || [self.currentSystemContext isEqualToEnum:SDLSystemContextMenu]) { @@ -178,10 +315,9 @@ - (void)sdl_updateWithCompletionHandler:(nullable SDLMenuUpdateCompletionHandler self.hasQueuedUpdate = YES; return; } - __weak typeof(self) weakself = self; - [self sdl_sendDeleteCurrentMenu:^(NSError * _Nullable error) { - [weakself sdl_sendCurrentMenu:^(NSError * _Nullable error) { + [self sdl_sendDeleteCurrentMenu:deleteCells withCompletionHandler:^(NSError * _Nullable error) { + [weakself sdl_sendUpdatedMenu:addCells usingMenu:weakself.menuCells withCompletionHandler:^(NSError * _Nullable error) { weakself.inProgressUpdate = nil; if (completionHandler != nil) { @@ -189,7 +325,7 @@ - (void)sdl_updateWithCompletionHandler:(nullable SDLMenuUpdateCompletionHandler } if (weakself.hasQueuedUpdate) { - [weakself sdl_updateWithCompletionHandler:nil]; + [weakself sdl_updateMenuWithCellsToDelete:deleteCells cellsToAdd:addCells completionHandler:nil]; weakself.hasQueuedUpdate = NO; } }]; @@ -198,14 +334,13 @@ - (void)sdl_updateWithCompletionHandler:(nullable SDLMenuUpdateCompletionHandler #pragma mark Delete Old Menu Items -- (void)sdl_sendDeleteCurrentMenu:(SDLMenuUpdateCompletionHandler)completionHandler { - if (self.oldMenuCells.count == 0) { +- (void)sdl_sendDeleteCurrentMenu:(nullable NSArray *)deleteMenuCells withCompletionHandler:(SDLMenuUpdateCompletionHandler)completionHandler { + if (deleteMenuCells.count == 0) { completionHandler(nil); return; } - NSArray *deleteMenuCommands = [self sdl_deleteCommandsForCells:self.oldMenuCells]; - self.oldMenuCells = @[]; + NSArray *deleteMenuCommands = [self sdl_deleteCommandsForCells:deleteMenuCells]; [self.connectionManager sendRequests:deleteMenuCommands progressHandler:nil completionHandler:^(BOOL success) { if (!success) { SDLLogW(@"Unable to delete all old menu commands"); @@ -219,24 +354,31 @@ - (void)sdl_sendDeleteCurrentMenu:(SDLMenuUpdateCompletionHandler)completionHand #pragma mark Send New Menu Items -- (void)sdl_sendCurrentMenu:(SDLMenuUpdateCompletionHandler)completionHandler { - if (self.menuCells.count == 0) { - SDLLogD(@"No main menu to send"); - completionHandler(nil); +/** + Creates add commands + @param updatedMenu The cells you will be adding + @param menu The list of all cells. This may be different then self.menuCells since this function is called on subcell cells as well. When comparing 2 sub menu cells this function will be passed the list of all subcells on that cell. + @param completionHandler handler + */ +- (void)sdl_sendUpdatedMenu:(NSArray *)updatedMenu usingMenu:(NSArray *)menu withCompletionHandler:(SDLMenuUpdateCompletionHandler)completionHandler { + if (self.menuCells.count == 0 || updatedMenu.count == 0) { + SDLLogD(@"There are no cells to update."); + completionHandler(nil); return; } NSArray *mainMenuCommands = nil; NSArray *subMenuCommands = nil; + if ([self sdl_findAllArtworksToBeUploadedFromCells:self.menuCells].count > 0 || ![self.displayCapabilities hasImageFieldOfName:SDLImageFieldNameCommandIcon]) { // Send artwork-less menu - mainMenuCommands = [self sdl_mainMenuCommandsForCells:self.menuCells withArtwork:NO]; - subMenuCommands = [self sdl_subMenuCommandsForCells:self.menuCells withArtwork:NO]; + mainMenuCommands = [self sdl_mainMenuCommandsForCells:updatedMenu withArtwork:NO usingIndexesFrom:menu]; + subMenuCommands = [self sdl_subMenuCommandsForCells:updatedMenu withArtwork:NO]; } else { // Send full artwork menu - mainMenuCommands = [self sdl_mainMenuCommandsForCells:self.menuCells withArtwork:YES]; - subMenuCommands = [self sdl_subMenuCommandsForCells:self.menuCells withArtwork:YES]; + mainMenuCommands = [self sdl_mainMenuCommandsForCells:updatedMenu withArtwork:YES usingIndexesFrom:menu]; + subMenuCommands = [self sdl_subMenuCommandsForCells:updatedMenu withArtwork:YES]; } self.inProgressUpdate = [mainMenuCommands arrayByAddingObjectsFromArray:subMenuCommands]; @@ -253,8 +395,7 @@ - (void)sdl_sendCurrentMenu:(SDLMenuUpdateCompletionHandler)completionHandler { completionHandler([NSError sdl_menuManager_failedToUpdateWithDictionary:errors]); return; } - - weakSelf.oldMenuCells = weakSelf.menuCells; + [weakSelf.connectionManager sendRequests:subMenuCommands progressHandler:^(__kindof SDLRPCRequest * _Nonnull request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error, float percentComplete) { if (error != nil) { errors[request] = error; @@ -274,6 +415,21 @@ - (void)sdl_sendCurrentMenu:(SDLMenuUpdateCompletionHandler)completionHandler { #pragma mark - Helpers +- (BOOL)sdl_isDynamicMenuUpdateActive:(SDLDynamicMenuUpdatesMode)dynamicMenuUpdatesMode { + switch (dynamicMenuUpdatesMode) { + case SDLDynamicMenuUpdatesModeForceOn: + return YES; + case SDLDynamicMenuUpdatesModeForceOff: + return NO; + case SDLDynamicMenuUpdatesModeOnWithCompatibility: +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + return ![self.displayCapabilities.displayType isEqualToEnum:SDLDisplayTypeGen38Inch]; +#pragma clang diagnostic pop + + } +} + #pragma mark Artworks - (NSArray *)sdl_findAllArtworksToBeUploadedFromCells:(NSArray *)cells { @@ -329,16 +485,29 @@ - (void)sdl_updateIdsOnMenuCells:(NSArray *)menuCells parentId:(U } #pragma mark Commands / SubMenu RPCs - -- (NSArray *)sdl_mainMenuCommandsForCells:(NSArray *)cells withArtwork:(BOOL)shouldHaveArtwork { +/** + This method will receive the cells to be added and the updated menu array. It will then build an array of add commands using the correct index to position the new items in the correct location. + + @param cells that will be added to the menu, this array must contain only cells that are not already in the menu. + @param shouldHaveArtwork artwork bool + @param menu the new menu array, this array should contain all the values the develeoper has set to be included in the new menu. This is used for placing the newly added cells in the correct locaiton. + e.g. If the new menu array is [A, B, C, D] but only [C, D] are new we need to pass [A, B , C , D] so C and D can be added to index 2 and 3 respectively. + @return list of SDLRPCRequest addCommands + */ +- (NSArray *)sdl_mainMenuCommandsForCells:(NSArray *)cells withArtwork:(BOOL)shouldHaveArtwork usingIndexesFrom:(NSArray *)menu { NSMutableArray *mutableCommands = [NSMutableArray array]; - [cells enumerateObjectsUsingBlock:^(SDLMenuCell * _Nonnull cell, NSUInteger index, BOOL * _Nonnull stop) { - if (cell.subCells.count > 0) { - [mutableCommands addObject:[self sdl_subMenuCommandForMenuCell:cell withArtwork:shouldHaveArtwork position:(UInt16)index]]; - } else { - [mutableCommands addObject:[self sdl_commandForMenuCell:cell withArtwork:shouldHaveArtwork position:(UInt16)index]]; + + for (NSUInteger menuInteger = 0; menuInteger < menu.count; menuInteger++) { + for (NSUInteger updateCellsIndex = 0; updateCellsIndex < cells.count; updateCellsIndex++) { + if ([menu[menuInteger] isEqual:cells[updateCellsIndex]]) { + if (cells[updateCellsIndex].subCells.count > 0) { + [mutableCommands addObject:[self sdl_subMenuCommandForMenuCell:cells[updateCellsIndex] withArtwork:shouldHaveArtwork position:(UInt16)menuInteger]]; + } else { + [mutableCommands addObject:[self sdl_commandForMenuCell:cells[updateCellsIndex] withArtwork:shouldHaveArtwork position:(UInt16)menuInteger]]; + } + } } - }]; + } return [mutableCommands copy]; } @@ -356,14 +525,15 @@ - (void)sdl_updateIdsOnMenuCells:(NSArray *)menuCells parentId:(U - (NSArray *)sdl_allCommandsForCells:(NSArray *)cells withArtwork:(BOOL)shouldHaveArtwork { NSMutableArray *mutableCommands = [NSMutableArray array]; - [cells enumerateObjectsUsingBlock:^(SDLMenuCell * _Nonnull cell, NSUInteger index, BOOL * _Nonnull stop) { - if (cell.subCells.count > 0) { - [mutableCommands addObject:[self sdl_subMenuCommandForMenuCell:cell withArtwork:shouldHaveArtwork position:(UInt16)index]]; - [mutableCommands addObjectsFromArray:[self sdl_allCommandsForCells:cell.subCells withArtwork:shouldHaveArtwork]]; + + for (NSUInteger cellIndex = 0; cellIndex < cells.count; cellIndex++) { + if (cells[cellIndex].subCells.count > 0) { + [mutableCommands addObject:[self sdl_subMenuCommandForMenuCell:cells[cellIndex] withArtwork:shouldHaveArtwork position:(UInt16)cellIndex]]; + [mutableCommands addObjectsFromArray:[self sdl_allCommandsForCells:cells[cellIndex].subCells withArtwork:shouldHaveArtwork]]; } else { - [mutableCommands addObject:[self sdl_commandForMenuCell:cell withArtwork:shouldHaveArtwork position:(UInt16)index]]; + [mutableCommands addObject:[self sdl_commandForMenuCell:cells[cellIndex] withArtwork:shouldHaveArtwork position:(UInt16)cellIndex]]; } - }]; + } return [mutableCommands copy]; } diff --git a/SmartDeviceLink/SDLMenuManagerConstants.h b/SmartDeviceLink/SDLMenuManagerConstants.h new file mode 100644 index 000000000..8ff19ea82 --- /dev/null +++ b/SmartDeviceLink/SDLMenuManagerConstants.h @@ -0,0 +1,28 @@ +// +// SDLMenuManagerConstants.h +// SmartDeviceLink +// +// Created by Justin Gluck on 5/30/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +/** + Dynamic Menu Manager Mode + + - SDLDynamicMenuUpdatesModeForceOn: Forces on compatibility mode. This will force the menu manager to delete and re-add each menu item for every menu update. This mode is generally not advised due to performance issues. + - SDLDynamicMenuUpdatesModeForceOn: This mode forces the menu manager to always dynamically update menu items for each menu update. This will provide the best performance but may cause ordering issues on some SYNC Gen 3 head units. + - SDLDynamicMenuUpdatesModeForceOff: This mode checks whether the phone is connected to a SYNC Gen 3 head unit, which has known menu ordering issues. If it is, it will always delete and re-add every menu item, if not, it will dynamically update the menus. + */ +typedef NS_ENUM(NSUInteger, SDLDynamicMenuUpdatesMode) { + SDLDynamicMenuUpdatesModeForceOn = 0, + SDLDynamicMenuUpdatesModeForceOff, + SDLDynamicMenuUpdatesModeOnWithCompatibility +}; + +typedef NS_ENUM(NSUInteger, MenuCellState) { + MenuCellStateDelete = 0, + MenuCellStateAdd, + MenuCellStateKeep +}; diff --git a/SmartDeviceLink/SDLMenuParams.m b/SmartDeviceLink/SDLMenuParams.m index 89242ffdb..0fcfbd60e 100644 --- a/SmartDeviceLink/SDLMenuParams.m +++ b/SmartDeviceLink/SDLMenuParams.m @@ -35,27 +35,27 @@ - (instancetype)initWithMenuName:(NSString *)menuName { } - (void)setParentID:(nullable NSNumber *)parentID { - [store sdl_setObject:parentID forName:SDLRPCParameterNameParentId]; + [self.store sdl_setObject:parentID forName:SDLRPCParameterNameParentId]; } - (nullable NSNumber *)parentID { - return [store sdl_objectForName:SDLRPCParameterNameParentId ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameParentId ofClass:NSNumber.class error:nil]; } - (void)setPosition:(nullable NSNumber *)position { - [store sdl_setObject:position forName:SDLRPCParameterNamePosition]; + [self.store sdl_setObject:position forName:SDLRPCParameterNamePosition]; } - (nullable NSNumber *)position { - return [store sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:nil]; } - (void)setMenuName:(NSString *)menuName { - [store sdl_setObject:menuName forName:SDLRPCParameterNameMenuName]; + [self.store sdl_setObject:menuName forName:SDLRPCParameterNameMenuName]; } - (NSString *)menuName { - return [store sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMenuName ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLMetadataTags.m b/SmartDeviceLink/SDLMetadataTags.m index 0b5850d07..d61d7237a 100644 --- a/SmartDeviceLink/SDLMetadataTags.m +++ b/SmartDeviceLink/SDLMetadataTags.m @@ -42,35 +42,35 @@ - (instancetype)initWithTextFieldTypes:(nullable NSArray *)main } - (void)setMainField1:(nullable NSArray *)mainField1 { - [store sdl_setObject:mainField1 forName:SDLRPCParameterNameMainField1]; + [self.store sdl_setObject:mainField1 forName:SDLRPCParameterNameMainField1]; } - (nullable NSArray *)mainField1 { - return [store sdl_enumsForName:SDLRPCParameterNameMainField1 error:nil]; + return [self.store sdl_enumsForName:SDLRPCParameterNameMainField1 error:nil]; } - (void)setMainField2:(nullable NSArray *)mainField2 { - [store sdl_setObject:mainField2 forName:SDLRPCParameterNameMainField2]; + [self.store sdl_setObject:mainField2 forName:SDLRPCParameterNameMainField2]; } - (nullable NSArray *)mainField2 { - return [store sdl_enumsForName:SDLRPCParameterNameMainField2 error:nil]; + return [self.store sdl_enumsForName:SDLRPCParameterNameMainField2 error:nil]; } - (void)setMainField3:(nullable NSArray *)mainField3 { - [store sdl_setObject:mainField3 forName:SDLRPCParameterNameMainField3]; + [self.store sdl_setObject:mainField3 forName:SDLRPCParameterNameMainField3]; } - (nullable NSArray *)mainField3 { - return [store sdl_enumsForName:SDLRPCParameterNameMainField3 error:nil]; + return [self.store sdl_enumsForName:SDLRPCParameterNameMainField3 error:nil]; } - (void)setMainField4:(nullable NSArray *)mainField4 { - [store sdl_setObject:mainField4 forName:SDLRPCParameterNameMainField4]; + [self.store sdl_setObject:mainField4 forName:SDLRPCParameterNameMainField4]; } - (nullable NSArray *)mainField4 { - return [store sdl_enumsForName:SDLRPCParameterNameMainField4 error:nil]; + return [self.store sdl_enumsForName:SDLRPCParameterNameMainField4 error:nil]; } @end diff --git a/SmartDeviceLink/SDLModuleData.m b/SmartDeviceLink/SDLModuleData.m index 64d2a5bf0..09ae37864 100644 --- a/SmartDeviceLink/SDLModuleData.m +++ b/SmartDeviceLink/SDLModuleData.m @@ -89,60 +89,60 @@ - (instancetype)initWithSeatControlData:(SDLSeatControlData *)seatControlData { } - (void)setModuleType:(SDLModuleType)moduleType { - [store sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType]; + [self.store sdl_setObject:moduleType forName:SDLRPCParameterNameModuleType]; } - (SDLModuleType)moduleType { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameModuleType error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameModuleType error:&error]; } - (void)setRadioControlData:(nullable SDLRadioControlData *)radioControlData { - [store sdl_setObject:radioControlData forName:SDLRPCParameterNameRadioControlData]; + [self.store sdl_setObject:radioControlData forName:SDLRPCParameterNameRadioControlData]; } - (nullable SDLRadioControlData *)radioControlData { - return [store sdl_objectForName:SDLRPCParameterNameRadioControlData ofClass:SDLRadioControlData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRadioControlData ofClass:SDLRadioControlData.class error:nil]; } - (void)setClimateControlData:(nullable SDLClimateControlData *)climateControlData { - [store sdl_setObject:climateControlData forName:SDLRPCParameterNameClimateControlData]; + [self.store sdl_setObject:climateControlData forName:SDLRPCParameterNameClimateControlData]; } - (nullable SDLClimateControlData *)climateControlData { - return [store sdl_objectForName:SDLRPCParameterNameClimateControlData ofClass:SDLClimateControlData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameClimateControlData ofClass:SDLClimateControlData.class error:nil]; } - (void)setSeatControlData:(nullable SDLSeatControlData *)seatControlData { - [store sdl_setObject:seatControlData forName:SDLRPCParameterNameSeatControlData]; + [self.store sdl_setObject:seatControlData forName:SDLRPCParameterNameSeatControlData]; } - (nullable SDLSeatControlData *)seatControlData { - return [store sdl_objectForName:SDLRPCParameterNameSeatControlData ofClass:SDLSeatControlData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSeatControlData ofClass:SDLSeatControlData.class error:nil]; } - (void)setAudioControlData:(nullable SDLAudioControlData *)audioControlData { - [store sdl_setObject:audioControlData forName:SDLRPCParameterNameAudioControlData]; + [self.store sdl_setObject:audioControlData forName:SDLRPCParameterNameAudioControlData]; } - (nullable SDLAudioControlData *)audioControlData { - return [store sdl_objectForName:SDLRPCParameterNameAudioControlData ofClass:SDLAudioControlData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAudioControlData ofClass:SDLAudioControlData.class error:nil]; } - (void)setLightControlData:(nullable SDLLightControlData *)lightControlData { - [store sdl_setObject:lightControlData forName:SDLRPCParameterNameLightControlData]; + [self.store sdl_setObject:lightControlData forName:SDLRPCParameterNameLightControlData]; } - (nullable SDLLightControlData *)lightControlData { - return [store sdl_objectForName:SDLRPCParameterNameLightControlData ofClass:SDLLightControlData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameLightControlData ofClass:SDLLightControlData.class error:nil]; } - (void)setHmiSettingsControlData:(nullable SDLHMISettingsControlData *)hmiSettingsControlData { - [store sdl_setObject:hmiSettingsControlData forName:SDLRPCParameterNameHmiSettingsControlData]; + [self.store sdl_setObject:hmiSettingsControlData forName:SDLRPCParameterNameHmiSettingsControlData]; } - (nullable SDLHMISettingsControlData *)hmiSettingsControlData { - return [store sdl_objectForName:SDLRPCParameterNameHmiSettingsControlData ofClass:SDLHMISettingsControlData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHmiSettingsControlData ofClass:SDLHMISettingsControlData.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLMyKey.m b/SmartDeviceLink/SDLMyKey.m index 0d79bc07a..6ed384039 100644 --- a/SmartDeviceLink/SDLMyKey.m +++ b/SmartDeviceLink/SDLMyKey.m @@ -12,12 +12,12 @@ @implementation SDLMyKey - (void)setE911Override:(SDLVehicleDataStatus)e911Override { - [store sdl_setObject:e911Override forName:SDLRPCParameterNameE911Override]; + [self.store sdl_setObject:e911Override forName:SDLRPCParameterNameE911Override]; } - (SDLVehicleDataStatus)e911Override { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameE911Override error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameE911Override error:&error]; } @end diff --git a/SmartDeviceLink/SDLNavigationCapability.m b/SmartDeviceLink/SDLNavigationCapability.m index 60c2034d4..7f536bc5a 100644 --- a/SmartDeviceLink/SDLNavigationCapability.m +++ b/SmartDeviceLink/SDLNavigationCapability.m @@ -28,19 +28,19 @@ - (instancetype)initWithSendLocation:(BOOL)sendLocationEnabled waypoints:(BOOL)w } - (void)setSendLocationEnabled:(nullable NSNumber *)sendLocationEnabled { - [store sdl_setObject:sendLocationEnabled forName:SDLRPCParameterNameSendLocationEnabled]; + [self.store sdl_setObject:sendLocationEnabled forName:SDLRPCParameterNameSendLocationEnabled]; } - (nullable NSNumber *)sendLocationEnabled { - return [store sdl_objectForName:SDLRPCParameterNameSendLocationEnabled ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSendLocationEnabled ofClass:NSNumber.class error:nil]; } - (void)setGetWayPointsEnabled:(nullable NSNumber *)getWayPointsEnabled { - [store sdl_setObject:getWayPointsEnabled forName:SDLRPCParameterNameGetWayPointsEnabled]; + [self.store sdl_setObject:getWayPointsEnabled forName:SDLRPCParameterNameGetWayPointsEnabled]; } - (nullable NSNumber *)getWayPointsEnabled { - return [store sdl_objectForName:SDLRPCParameterNameGetWayPointsEnabled ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameGetWayPointsEnabled ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLNavigationInstruction.m b/SmartDeviceLink/SDLNavigationInstruction.m index 701ed2453..d6e8e66d0 100644 --- a/SmartDeviceLink/SDLNavigationInstruction.m +++ b/SmartDeviceLink/SDLNavigationInstruction.m @@ -48,67 +48,67 @@ - (instancetype)initWithLocationDetails:(SDLLocationDetails *)locationDetails ac } - (void)setLocationDetails:(SDLLocationDetails *)locationDetails { - [store sdl_setObject:locationDetails forName:SDLRPCParameterNameLocationDetails]; + [self.store sdl_setObject:locationDetails forName:SDLRPCParameterNameLocationDetails]; } - (SDLLocationDetails *)locationDetails { - return [store sdl_objectForName:SDLRPCParameterNameLocationDetails ofClass:SDLLocationDetails.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameLocationDetails ofClass:SDLLocationDetails.class error:nil]; } - (void)setAction:(SDLNavigationAction)action { - [store sdl_setObject:action forName:SDLRPCParameterNameAction]; + [self.store sdl_setObject:action forName:SDLRPCParameterNameAction]; } - (SDLNavigationAction)action { - return [store sdl_enumForName:SDLRPCParameterNameAction error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameAction error:nil]; } - (void)setEta:(nullable SDLDateTime *)eta { - [store sdl_setObject:eta forName:SDLRPCParameterNameETA]; + [self.store sdl_setObject:eta forName:SDLRPCParameterNameETA]; } - (nullable SDLDateTime *)eta { - return [store sdl_objectForName:SDLRPCParameterNameETA ofClass:SDLDateTime.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameETA ofClass:SDLDateTime.class error:nil]; } - (void)setBearing:(nullable NSNumber *)bearing { - [store sdl_setObject:bearing forName:SDLRPCParameterNameBearing]; + [self.store sdl_setObject:bearing forName:SDLRPCParameterNameBearing]; } - (nullable NSNumber *)bearing { - return [store sdl_objectForName:SDLRPCParameterNameBearing ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameBearing ofClass:NSNumber.class error:nil]; } - (void)setJunctionType:(nullable SDLNavigationJunction)junctionType { - [store sdl_setObject:junctionType forName:SDLRPCParameterNameJunctionType]; + [self.store sdl_setObject:junctionType forName:SDLRPCParameterNameJunctionType]; } - (nullable SDLNavigationJunction)junctionType { - return [store sdl_enumForName:SDLRPCParameterNameJunctionType error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameJunctionType error:nil]; } - (void)setDrivingSide:(nullable SDLDirection)drivingSide { - [store sdl_setObject:drivingSide forName:SDLRPCParameterNameDrivingSide]; + [self.store sdl_setObject:drivingSide forName:SDLRPCParameterNameDrivingSide]; } - (nullable SDLDirection)drivingSide { - return [store sdl_enumForName:SDLRPCParameterNameDrivingSide error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameDrivingSide error:nil]; } - (void)setDetails:(nullable NSString *)details { - [store sdl_setObject:details forName:SDLRPCParameterNameDetails]; + [self.store sdl_setObject:details forName:SDLRPCParameterNameDetails]; } - (nullable NSString *)details { - return [store sdl_objectForName:SDLRPCParameterNameDetails ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDetails ofClass:NSString.class error:nil]; } - (void)setImage:(nullable SDLImage *)image { - [store sdl_setObject:image forName:SDLRPCParameterNameImage]; + [self.store sdl_setObject:image forName:SDLRPCParameterNameImage]; } - (nullable SDLImage *)image { - return [store sdl_objectForName:SDLRPCParameterNameImage ofClass:SDLImage.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameImage ofClass:SDLImage.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLNavigationServiceData.m b/SmartDeviceLink/SDLNavigationServiceData.m index e1ef35a9a..6143c47ee 100644 --- a/SmartDeviceLink/SDLNavigationServiceData.m +++ b/SmartDeviceLink/SDLNavigationServiceData.m @@ -48,75 +48,75 @@ - (instancetype)initWithTimestamp:(SDLDateTime *)timestamp origin:(nullable SDLL } - (void)setTimestamp:(SDLDateTime *)timestamp { - [store sdl_setObject:timestamp forName:SDLRPCParameterNameTimeStamp]; + [self.store sdl_setObject:timestamp forName:SDLRPCParameterNameTimeStamp]; } - (SDLDateTime *)timestamp { - return [store sdl_objectForName:SDLRPCParameterNameTimeStamp ofClass:SDLDateTime.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTimeStamp ofClass:SDLDateTime.class error:nil]; } - (void)setOrigin:(nullable SDLLocationDetails *)origin { - [store sdl_setObject:origin forName:SDLRPCParameterNameOrigin]; + [self.store sdl_setObject:origin forName:SDLRPCParameterNameOrigin]; } - (nullable SDLLocationDetails *)origin { - return [store sdl_objectForName:SDLRPCParameterNameOrigin ofClass:SDLLocationDetails.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameOrigin ofClass:SDLLocationDetails.class error:nil]; } - (void)setDestination:(nullable SDLLocationDetails *)destination { - [store sdl_setObject:destination forName:SDLRPCParameterNameDestination]; + [self.store sdl_setObject:destination forName:SDLRPCParameterNameDestination]; } - (nullable SDLLocationDetails *)destination { - return [store sdl_objectForName:SDLRPCParameterNameDestination ofClass:SDLLocationDetails.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDestination ofClass:SDLLocationDetails.class error:nil]; } - (void)setDestinationETA:(nullable SDLDateTime *)destinationETA { - [store sdl_setObject:destinationETA forName:SDLRPCParameterNameDestinationETA]; + [self.store sdl_setObject:destinationETA forName:SDLRPCParameterNameDestinationETA]; } - (nullable SDLDateTime *)destinationETA { - return [store sdl_objectForName:SDLRPCParameterNameDestinationETA ofClass:SDLDateTime.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDestinationETA ofClass:SDLDateTime.class error:nil]; } - (void)setInstructions:(nullable NSArray *)instructions { - [store sdl_setObject:instructions forName:SDLRPCParameterNameInstructions]; + [self.store sdl_setObject:instructions forName:SDLRPCParameterNameInstructions]; } - (nullable NSArray *)instructions { - return [store sdl_objectsForName:SDLRPCParameterNameInstructions ofClass:SDLNavigationInstruction.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameInstructions ofClass:SDLNavigationInstruction.class error:nil]; } - (void)setNextInstructionETA:(nullable SDLDateTime *)nextInstructionETA { - [store sdl_setObject:nextInstructionETA forName:SDLRPCParameterNameNextInstructionETA]; + [self.store sdl_setObject:nextInstructionETA forName:SDLRPCParameterNameNextInstructionETA]; } - (nullable SDLDateTime *)nextInstructionETA { - return [store sdl_objectForName:SDLRPCParameterNameNextInstructionETA ofClass:SDLDateTime.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNextInstructionETA ofClass:SDLDateTime.class error:nil]; } - (void)setNextInstructionDistance:(nullable NSNumber *)nextInstructionDistance { - [store sdl_setObject:nextInstructionDistance forName:SDLRPCParameterNameNextInstructionDistance]; + [self.store sdl_setObject:nextInstructionDistance forName:SDLRPCParameterNameNextInstructionDistance]; } - (nullable NSNumber *)nextInstructionDistance { - return [store sdl_objectForName:SDLRPCParameterNameNextInstructionDistance ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNextInstructionDistance ofClass:NSNumber.class error:nil]; } - (void)setNextInstructionDistanceScale:(nullable NSNumber *)nextInstructionDistanceScale { - [store sdl_setObject:nextInstructionDistanceScale forName:SDLRPCParameterNameNextInstructionDistanceScale]; + [self.store sdl_setObject:nextInstructionDistanceScale forName:SDLRPCParameterNameNextInstructionDistanceScale]; } - (nullable NSNumber *)nextInstructionDistanceScale { - return [store sdl_objectForName:SDLRPCParameterNameNextInstructionDistanceScale ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNextInstructionDistanceScale ofClass:NSNumber.class error:nil]; } - (void)setPrompt:(nullable NSString *)prompt { - [store sdl_setObject:prompt forName:SDLRPCParameterNamePrompt]; + [self.store sdl_setObject:prompt forName:SDLRPCParameterNamePrompt]; } - (nullable NSString *)prompt { - return [store sdl_objectForName:SDLRPCParameterNamePrompt ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePrompt ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLNavigationServiceManifest.m b/SmartDeviceLink/SDLNavigationServiceManifest.m index 4211227f0..576946722 100644 --- a/SmartDeviceLink/SDLNavigationServiceManifest.m +++ b/SmartDeviceLink/SDLNavigationServiceManifest.m @@ -27,11 +27,11 @@ - (instancetype)initWithAcceptsWayPoints:(BOOL)acceptsWayPoints { } - (void)setAcceptsWayPoints:(nullable NSNumber *)acceptsWayPoints { - [store sdl_setObject:acceptsWayPoints forName:SDLRPCParameterNameAcceptsWayPoints]; + [self.store sdl_setObject:acceptsWayPoints forName:SDLRPCParameterNameAcceptsWayPoints]; } - (nullable NSNumber *)acceptsWayPoints { - return [store sdl_objectForName:SDLRPCParameterNameAcceptsWayPoints ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAcceptsWayPoints ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLOasisAddress.m b/SmartDeviceLink/SDLOasisAddress.m index 634695db9..798804bd6 100644 --- a/SmartDeviceLink/SDLOasisAddress.m +++ b/SmartDeviceLink/SDLOasisAddress.m @@ -34,75 +34,75 @@ - (instancetype)initWithSubThoroughfare:(nullable NSString *)subThoroughfare tho } - (void)setCountryName:(nullable NSString *)countryName { - [store sdl_setObject:countryName forName:SDLRPCParameterNameCountryName]; + [self.store sdl_setObject:countryName forName:SDLRPCParameterNameCountryName]; } - (nullable NSString *)countryName { - return [store sdl_objectForName:SDLRPCParameterNameCountryName ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCountryName ofClass:NSString.class error:nil]; } - (void)setCountryCode:(nullable NSString *)countryCode { - [store sdl_setObject:countryCode forName:SDLRPCParameterNameCountryCode]; + [self.store sdl_setObject:countryCode forName:SDLRPCParameterNameCountryCode]; } - (nullable NSString *)countryCode { - return [store sdl_objectForName:SDLRPCParameterNameCountryCode ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCountryCode ofClass:NSString.class error:nil]; } - (void)setPostalCode:(nullable NSString *)postalCode { - [store sdl_setObject:postalCode forName:SDLRPCParameterNamePostalCode]; + [self.store sdl_setObject:postalCode forName:SDLRPCParameterNamePostalCode]; } - (nullable NSString *)postalCode { - return [store sdl_objectForName:SDLRPCParameterNamePostalCode ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePostalCode ofClass:NSString.class error:nil]; } - (void)setAdministrativeArea:(nullable NSString *)administrativeArea { - [store sdl_setObject:administrativeArea forName:SDLRPCParameterNameAdministrativeArea]; + [self.store sdl_setObject:administrativeArea forName:SDLRPCParameterNameAdministrativeArea]; } - (nullable NSString *)administrativeArea { - return [store sdl_objectForName:SDLRPCParameterNameAdministrativeArea ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAdministrativeArea ofClass:NSString.class error:nil]; } - (void)setSubAdministrativeArea:(nullable NSString *)subAdministrativeArea { - [store sdl_setObject:subAdministrativeArea forName:SDLRPCParameterNameSubAdministrativeArea]; + [self.store sdl_setObject:subAdministrativeArea forName:SDLRPCParameterNameSubAdministrativeArea]; } - (nullable NSString *)subAdministrativeArea { - return [store sdl_objectForName:SDLRPCParameterNameSubAdministrativeArea ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSubAdministrativeArea ofClass:NSString.class error:nil]; } - (void)setLocality:(nullable NSString *)locality { - [store sdl_setObject:locality forName:SDLRPCParameterNameLocality]; + [self.store sdl_setObject:locality forName:SDLRPCParameterNameLocality]; } - (nullable NSString *)locality { - return [store sdl_objectForName:SDLRPCParameterNameLocality ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameLocality ofClass:NSString.class error:nil]; } - (void)setSubLocality:(nullable NSString *)subLocality { - [store sdl_setObject:subLocality forName:SDLRPCParameterNameSubLocality]; + [self.store sdl_setObject:subLocality forName:SDLRPCParameterNameSubLocality]; } - (nullable NSString *)subLocality { - return [store sdl_objectForName:SDLRPCParameterNameSubLocality ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSubLocality ofClass:NSString.class error:nil]; } - (void)setThoroughfare:(nullable NSString *)thoroughfare { - [store sdl_setObject:thoroughfare forName:SDLRPCParameterNameThoroughfare]; + [self.store sdl_setObject:thoroughfare forName:SDLRPCParameterNameThoroughfare]; } - (nullable NSString *)thoroughfare { - return [store sdl_objectForName:SDLRPCParameterNameThoroughfare ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameThoroughfare ofClass:NSString.class error:nil]; } - (void)setSubThoroughfare:(nullable NSString *)subThoroughfare { - [store sdl_setObject:subThoroughfare forName:SDLRPCParameterNameSubThoroughfare]; + [self.store sdl_setObject:subThoroughfare forName:SDLRPCParameterNameSubThoroughfare]; } - (nullable NSString *)subThoroughfare { - return [store sdl_objectForName:SDLRPCParameterNameSubThoroughfare ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSubThoroughfare ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLOnAppInterfaceUnregistered.m b/SmartDeviceLink/SDLOnAppInterfaceUnregistered.m index 39cd7acb1..c99ab7571 100644 --- a/SmartDeviceLink/SDLOnAppInterfaceUnregistered.m +++ b/SmartDeviceLink/SDLOnAppInterfaceUnregistered.m @@ -11,19 +11,22 @@ @implementation SDLOnAppInterfaceUnregistered +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnAppInterfaceUnregistered]) { } return self; } +#pragma clang diagnostic pop - (void)setReason:(SDLAppInterfaceUnregisteredReason)reason { - [parameters sdl_setObject:reason forName:SDLRPCParameterNameReason]; + [self.parameters sdl_setObject:reason forName:SDLRPCParameterNameReason]; } - (SDLAppInterfaceUnregisteredReason)reason { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameReason error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameReason error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnAppServiceData.m b/SmartDeviceLink/SDLOnAppServiceData.m index c532ff4ea..792721bb2 100644 --- a/SmartDeviceLink/SDLOnAppServiceData.m +++ b/SmartDeviceLink/SDLOnAppServiceData.m @@ -17,11 +17,14 @@ @implementation SDLOnAppServiceData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnAppServiceData]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithServiceData:(SDLAppServiceData *)serviceData { self = [self init]; @@ -35,12 +38,12 @@ - (instancetype)initWithServiceData:(SDLAppServiceData *)serviceData { } - (void)setServiceData:(SDLAppServiceData *)serviceData { - [parameters sdl_setObject:serviceData forName:SDLRPCParameterNameServiceData]; + [self.parameters sdl_setObject:serviceData forName:SDLRPCParameterNameServiceData]; } - (SDLAppServiceData *)serviceData { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameServiceData ofClass:SDLAppServiceData.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameServiceData ofClass:SDLAppServiceData.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnAudioPassThru.m b/SmartDeviceLink/SDLOnAudioPassThru.m index 3775b5040..c404fbaa8 100644 --- a/SmartDeviceLink/SDLOnAudioPassThru.m +++ b/SmartDeviceLink/SDLOnAudioPassThru.m @@ -12,11 +12,14 @@ @implementation SDLOnAudioPassThru +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnAudioPassThru]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLOnButtonEvent.m b/SmartDeviceLink/SDLOnButtonEvent.m index 61a033e8a..3e9c57cd6 100644 --- a/SmartDeviceLink/SDLOnButtonEvent.m +++ b/SmartDeviceLink/SDLOnButtonEvent.m @@ -11,36 +11,39 @@ @implementation SDLOnButtonEvent +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnButtonEvent]) { } return self; } +#pragma clang diagnostic pop - (void)setButtonName:(SDLButtonName)buttonName { - [parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; + [self.parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; } - (SDLButtonName)buttonName { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; } - (void)setButtonEventMode:(SDLButtonEventMode)buttonEventMode { - [parameters sdl_setObject:buttonEventMode forName:SDLRPCParameterNameButtonEventMode]; + [self.parameters sdl_setObject:buttonEventMode forName:SDLRPCParameterNameButtonEventMode]; } - (SDLButtonEventMode)buttonEventMode { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameButtonEventMode error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonEventMode error:&error]; } - (void)setCustomButtonID:(nullable NSNumber *)customButtonID { - [parameters sdl_setObject:customButtonID forName:SDLRPCParameterNameCustomButtonId]; + [self.parameters sdl_setObject:customButtonID forName:SDLRPCParameterNameCustomButtonId]; } - (nullable NSNumber *)customButtonID { - return [parameters sdl_objectForName:SDLRPCParameterNameCustomButtonId ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCustomButtonId ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLOnButtonPress.m b/SmartDeviceLink/SDLOnButtonPress.m index 90dc42e4b..2acced3d0 100644 --- a/SmartDeviceLink/SDLOnButtonPress.m +++ b/SmartDeviceLink/SDLOnButtonPress.m @@ -11,36 +11,39 @@ @implementation SDLOnButtonPress +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnButtonPress]) { } return self; } +#pragma clang diagnostic pop - (void)setButtonName:(SDLButtonName)buttonName { - [parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; + [self.parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; } - (SDLButtonName)buttonName { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; } - (void)setButtonPressMode:(SDLButtonPressMode)buttonPressMode { - [parameters sdl_setObject:buttonPressMode forName:SDLRPCParameterNameButtonPressMode]; + [self.parameters sdl_setObject:buttonPressMode forName:SDLRPCParameterNameButtonPressMode]; } - (SDLButtonPressMode)buttonPressMode { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameButtonPressMode error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonPressMode error:&error]; } - (void)setCustomButtonID:(nullable NSNumber *)customButtonID { - [parameters sdl_setObject:customButtonID forName:SDLRPCParameterNameCustomButtonId]; + [self.parameters sdl_setObject:customButtonID forName:SDLRPCParameterNameCustomButtonId]; } - (nullable NSNumber *)customButtonID { - return [parameters sdl_objectForName:SDLRPCParameterNameCustomButtonId ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCustomButtonId ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLOnCommand.m b/SmartDeviceLink/SDLOnCommand.m index b6048249e..40a975057 100644 --- a/SmartDeviceLink/SDLOnCommand.m +++ b/SmartDeviceLink/SDLOnCommand.m @@ -11,28 +11,31 @@ @implementation SDLOnCommand +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnCommand]) { } return self; } +#pragma clang diagnostic pop - (void)setCmdID:(NSNumber *)cmdID { - [parameters sdl_setObject:cmdID forName:SDLRPCParameterNameCommandId]; + [self.parameters sdl_setObject:cmdID forName:SDLRPCParameterNameCommandId]; } - (NSNumber *)cmdID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameCommandId ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCommandId ofClass:NSNumber.class error:&error]; } - (void)setTriggerSource:(SDLTriggerSource)triggerSource { - [parameters sdl_setObject:triggerSource forName:SDLRPCParameterNameTriggerSource]; + [self.parameters sdl_setObject:triggerSource forName:SDLRPCParameterNameTriggerSource]; } - (SDLTriggerSource)triggerSource { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameTriggerSource error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameTriggerSource error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnDriverDistraction.m b/SmartDeviceLink/SDLOnDriverDistraction.m index 147964af8..e65ef63d5 100644 --- a/SmartDeviceLink/SDLOnDriverDistraction.m +++ b/SmartDeviceLink/SDLOnDriverDistraction.m @@ -12,19 +12,22 @@ @implementation SDLOnDriverDistraction +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnDriverDistraction]) { } return self; } +#pragma clang diagnostic pop - (void)setState:(SDLDriverDistractionState)state { - [parameters sdl_setObject:state forName:SDLRPCParameterNameState]; + [self.parameters sdl_setObject:state forName:SDLRPCParameterNameState]; } - (SDLDriverDistractionState)state { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameState error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameState error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnEncodedSyncPData.m b/SmartDeviceLink/SDLOnEncodedSyncPData.m index 873411c80..b1526794e 100644 --- a/SmartDeviceLink/SDLOnEncodedSyncPData.m +++ b/SmartDeviceLink/SDLOnEncodedSyncPData.m @@ -11,35 +11,38 @@ @implementation SDLOnEncodedSyncPData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnEncodedSyncPData]) { } return self; } +#pragma clang diagnostic pop - (void)setData:(NSArray *)data { - [parameters sdl_setObject:data forName:SDLRPCParameterNameData]; + [self.parameters sdl_setObject:data forName:SDLRPCParameterNameData]; } - (NSArray *)data { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameData ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameData ofClass:NSString.class error:&error]; } - (void)setURL:(nullable NSString *)URL { - [parameters sdl_setObject:URL forName:SDLRPCParameterNameURLUppercase]; + [self.parameters sdl_setObject:URL forName:SDLRPCParameterNameURLUppercase]; } - (nullable NSString *)URL { - return [parameters sdl_objectForName:SDLRPCParameterNameURLUppercase ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameURLUppercase ofClass:NSString.class error:nil]; } - (void)setTimeout:(nullable NSNumber *)Timeout { - [parameters sdl_setObject:Timeout forName:SDLRPCParameterNameTimeoutCapitalized]; + [self.parameters sdl_setObject:Timeout forName:SDLRPCParameterNameTimeoutCapitalized]; } - (nullable NSNumber *)Timeout { - return [parameters sdl_objectForName:SDLRPCParameterNameTimeoutCapitalized ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeoutCapitalized ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLOnHMIStatus.m b/SmartDeviceLink/SDLOnHMIStatus.m index 8ab94e60f..aa6b93e66 100644 --- a/SmartDeviceLink/SDLOnHMIStatus.m +++ b/SmartDeviceLink/SDLOnHMIStatus.m @@ -14,45 +14,48 @@ @implementation SDLOnHMIStatus +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnHMIStatus]) { } return self; } +#pragma clang diagnostic pop - (void)setHmiLevel:(SDLHMILevel)hmiLevel { - [parameters sdl_setObject:hmiLevel forName:SDLRPCParameterNameHMILevel]; + [self.parameters sdl_setObject:hmiLevel forName:SDLRPCParameterNameHMILevel]; } - (SDLHMILevel)hmiLevel { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameHMILevel error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameHMILevel error:&error]; } - (void)setAudioStreamingState:(SDLAudioStreamingState)audioStreamingState { - [parameters sdl_setObject:audioStreamingState forName:SDLRPCParameterNameAudioStreamingState]; + [self.parameters sdl_setObject:audioStreamingState forName:SDLRPCParameterNameAudioStreamingState]; } - (SDLAudioStreamingState)audioStreamingState { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameAudioStreamingState error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameAudioStreamingState error:&error]; } - (void)setVideoStreamingState:(nullable SDLVideoStreamingState)videoStreamingState { - [parameters sdl_setObject:videoStreamingState forName:SDLRPCParameterNameVideoStreamingState]; + [self.parameters sdl_setObject:videoStreamingState forName:SDLRPCParameterNameVideoStreamingState]; } - (nullable SDLVideoStreamingState)videoStreamingState { - return [parameters sdl_enumForName:SDLRPCParameterNameVideoStreamingState error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameVideoStreamingState error:nil]; } - (void)setSystemContext:(SDLSystemContext)systemContext { - [parameters sdl_setObject:systemContext forName:SDLRPCParameterNameSystemContext]; + [self.parameters sdl_setObject:systemContext forName:SDLRPCParameterNameSystemContext]; } - (SDLSystemContext)systemContext { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameSystemContext error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameSystemContext error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnHashChange.m b/SmartDeviceLink/SDLOnHashChange.m index 7f0f6e9b4..f7114a411 100644 --- a/SmartDeviceLink/SDLOnHashChange.m +++ b/SmartDeviceLink/SDLOnHashChange.m @@ -12,19 +12,22 @@ @implementation SDLOnHashChange +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnHashChange]) { } return self; } +#pragma clang diagnostic pop - (void)setHashID:(NSString *)hashID { - [parameters sdl_setObject:hashID forName:SDLRPCParameterNameHashId]; + [self.parameters sdl_setObject:hashID forName:SDLRPCParameterNameHashId]; } - (NSString *)hashID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameHashId ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHashId ofClass:NSString.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnInteriorVehicleData.m b/SmartDeviceLink/SDLOnInteriorVehicleData.m index f052ceaae..58eff5575 100644 --- a/SmartDeviceLink/SDLOnInteriorVehicleData.m +++ b/SmartDeviceLink/SDLOnInteriorVehicleData.m @@ -12,19 +12,22 @@ @implementation SDLOnInteriorVehicleData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnInteriorVehicleData]) { } return self; } +#pragma clang diagnostic pop - (void)setModuleData:(SDLModuleData *)moduleData { - [parameters sdl_setObject:moduleData forName:SDLRPCParameterNameModuleData]; + [self.parameters sdl_setObject:moduleData forName:SDLRPCParameterNameModuleData]; } - (SDLModuleData *)moduleData { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameModuleData ofClass:SDLModuleData.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameModuleData ofClass:SDLModuleData.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnKeyboardInput.m b/SmartDeviceLink/SDLOnKeyboardInput.m index 6f781c377..57850321a 100644 --- a/SmartDeviceLink/SDLOnKeyboardInput.m +++ b/SmartDeviceLink/SDLOnKeyboardInput.m @@ -11,27 +11,30 @@ @implementation SDLOnKeyboardInput +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnKeyboardInput]) { } return self; } +#pragma clang diagnostic pop - (void)setEvent:(SDLKeyboardEvent)event { - [parameters sdl_setObject:event forName:SDLRPCParameterNameEvent]; + [self.parameters sdl_setObject:event forName:SDLRPCParameterNameEvent]; } - (SDLKeyboardEvent)event { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameEvent error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameEvent error:&error]; } - (void)setData:(nullable NSString *)data { - [parameters sdl_setObject:data forName:SDLRPCParameterNameData]; + [self.parameters sdl_setObject:data forName:SDLRPCParameterNameData]; } - (nullable NSString *)data { - return [parameters sdl_objectForName:SDLRPCParameterNameData ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameData ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLOnLanguageChange.m b/SmartDeviceLink/SDLOnLanguageChange.m index 922b86eec..cee3f7965 100644 --- a/SmartDeviceLink/SDLOnLanguageChange.m +++ b/SmartDeviceLink/SDLOnLanguageChange.m @@ -12,28 +12,31 @@ @implementation SDLOnLanguageChange +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnLanguageChange]) { } return self; } +#pragma clang diagnostic pop - (void)setLanguage:(SDLLanguage)language { - [parameters sdl_setObject:language forName:SDLRPCParameterNameLanguage]; + [self.parameters sdl_setObject:language forName:SDLRPCParameterNameLanguage]; } - (SDLLanguage)language { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameLanguage error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameLanguage error:&error]; } - (void)setHmiDisplayLanguage:(SDLLanguage)hmiDisplayLanguage { - [parameters sdl_setObject:hmiDisplayLanguage forName:SDLRPCParameterNameHMIDisplayLanguage]; + [self.parameters sdl_setObject:hmiDisplayLanguage forName:SDLRPCParameterNameHMIDisplayLanguage]; } - (SDLLanguage)hmiDisplayLanguage { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguage error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguage error:&error]; } diff --git a/SmartDeviceLink/SDLOnLockScreenStatus.m b/SmartDeviceLink/SDLOnLockScreenStatus.m index 7c24099e4..563b593bb 100644 --- a/SmartDeviceLink/SDLOnLockScreenStatus.m +++ b/SmartDeviceLink/SDLOnLockScreenStatus.m @@ -15,46 +15,49 @@ @implementation SDLOnLockScreenStatus +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnLockScreenStatus]) { } return self; } +#pragma clang diagnostic pop - (void)setLockScreenStatus:(SDLLockScreenStatus)lockScreenStatus { - [parameters sdl_setObject:lockScreenStatus forName:SDLRPCParameterNameOnLockScreenStatus]; + [self.parameters sdl_setObject:lockScreenStatus forName:SDLRPCParameterNameOnLockScreenStatus]; } - (SDLLockScreenStatus)lockScreenStatus { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameOnLockScreenStatus error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameOnLockScreenStatus error:&error]; } - (void)setHmiLevel:(SDLHMILevel)hmiLevel { - [parameters sdl_setObject:hmiLevel forName:SDLRPCParameterNameHMILevel]; + [self.parameters sdl_setObject:hmiLevel forName:SDLRPCParameterNameHMILevel]; } - (SDLHMILevel)hmiLevel { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameHMILevel error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameHMILevel error:&error]; } - (void)setUserSelected:(NSNumber *)userSelected { - [parameters sdl_setObject:userSelected forName:SDLRPCParameterNameUserSelected]; + [self.parameters sdl_setObject:userSelected forName:SDLRPCParameterNameUserSelected]; } - (NSNumber *)userSelected { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameUserSelected ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameUserSelected ofClass:NSNumber.class error:&error]; } - (void)setDriverDistractionStatus:(NSNumber *)driverDistractionStatus { - [parameters sdl_setObject:driverDistractionStatus forName:SDLRPCParameterNameDriverDistractionStatus]; + [self.parameters sdl_setObject:driverDistractionStatus forName:SDLRPCParameterNameDriverDistractionStatus]; } - (NSNumber *)driverDistractionStatus { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameDriverDistractionStatus ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverDistractionStatus ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnPermissionsChange.m b/SmartDeviceLink/SDLOnPermissionsChange.m index f517a197d..11250c209 100644 --- a/SmartDeviceLink/SDLOnPermissionsChange.m +++ b/SmartDeviceLink/SDLOnPermissionsChange.m @@ -12,19 +12,22 @@ @implementation SDLOnPermissionsChange +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnPermissionsChange]) { } return self; } +#pragma clang diagnostic pop - (void)setPermissionItem:(NSArray *)permissionItem { - [parameters sdl_setObject:permissionItem forName:SDLRPCParameterNamePermissionItem]; + [self.parameters sdl_setObject:permissionItem forName:SDLRPCParameterNamePermissionItem]; } - (NSArray *)permissionItem { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNamePermissionItem ofClass:SDLPermissionItem.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNamePermissionItem ofClass:SDLPermissionItem.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnRCStatus.m b/SmartDeviceLink/SDLOnRCStatus.m index 551131661..aa1295f3f 100644 --- a/SmartDeviceLink/SDLOnRCStatus.m +++ b/SmartDeviceLink/SDLOnRCStatus.m @@ -12,37 +12,40 @@ @implementation SDLOnRCStatus +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnRCStatus]) { } return self; } +#pragma clang diagnostic pop - (nullable NSNumber *)allowed { - return [parameters sdl_objectForName:SDLRPCParameterNameAllowed ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAllowed ofClass:NSNumber.class error:nil]; } - (void)setAllowed:(nullable NSNumber *)allowed { - [parameters sdl_setObject:allowed forName:SDLRPCParameterNameAllowed]; + [self.parameters sdl_setObject:allowed forName:SDLRPCParameterNameAllowed]; } - (void)setAllocatedModules:(NSArray *)allocatedModules { - [parameters sdl_setObject:allocatedModules forName:SDLRPCParameterNameAllocatedModules]; + [self.parameters sdl_setObject:allocatedModules forName:SDLRPCParameterNameAllocatedModules]; } - (NSArray *)allocatedModules { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameAllocatedModules ofClass:SDLModuleData.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameAllocatedModules ofClass:SDLModuleData.class error:&error]; } - (void)setFreeModules:(NSArray *)freeModules { - [parameters sdl_setObject:freeModules forName:SDLRPCParameterNameFreeModules]; + [self.parameters sdl_setObject:freeModules forName:SDLRPCParameterNameFreeModules]; } - (NSArray *)freeModules { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameFreeModules ofClass:SDLModuleData.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameFreeModules ofClass:SDLModuleData.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnSyncPData.m b/SmartDeviceLink/SDLOnSyncPData.m index d470b80c2..89541683f 100644 --- a/SmartDeviceLink/SDLOnSyncPData.m +++ b/SmartDeviceLink/SDLOnSyncPData.m @@ -13,26 +13,29 @@ @implementation SDLOnSyncPData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnSyncPData]) { } return self; } +#pragma clang diagnostic pop - (void)setURL:(nullable NSString *)URL { - [parameters sdl_setObject:URL forName:SDLRPCParameterNameURLUppercase]; + [self.parameters sdl_setObject:URL forName:SDLRPCParameterNameURLUppercase]; } - (nullable NSString *)URL { - return [parameters sdl_objectForName:SDLRPCParameterNameURLUppercase ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameURLUppercase ofClass:NSString.class error:nil]; } - (void)setTimeout:(nullable NSNumber *)Timeout { - [parameters sdl_setObject:Timeout forName:SDLRPCParameterNameTimeoutCapitalized]; + [self.parameters sdl_setObject:Timeout forName:SDLRPCParameterNameTimeoutCapitalized]; } - (nullable NSNumber *)Timeout { - return [parameters sdl_objectForName:SDLRPCParameterNameTimeoutCapitalized ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeoutCapitalized ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLOnSystemCapabilityUpdated.m b/SmartDeviceLink/SDLOnSystemCapabilityUpdated.m index f9809e12d..4c3de1e3a 100644 --- a/SmartDeviceLink/SDLOnSystemCapabilityUpdated.m +++ b/SmartDeviceLink/SDLOnSystemCapabilityUpdated.m @@ -17,11 +17,14 @@ @implementation SDLOnSystemCapabilityUpdated +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnSystemCapabilityUpdated]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithSystemCapability:(SDLSystemCapability *)systemCapability { self = [self init]; @@ -35,12 +38,12 @@ - (instancetype)initWithSystemCapability:(SDLSystemCapability *)systemCapability } - (void)setSystemCapability:(SDLSystemCapability *)systemCapability { - [parameters sdl_setObject:systemCapability forName:SDLRPCParameterNameSystemCapability]; + [self.parameters sdl_setObject:systemCapability forName:SDLRPCParameterNameSystemCapability]; } - (SDLSystemCapability *)systemCapability { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameSystemCapability ofClass:SDLSystemCapability.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSystemCapability ofClass:SDLSystemCapability.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnSystemRequest.m b/SmartDeviceLink/SDLOnSystemRequest.m index 211d68528..174726c0d 100644 --- a/SmartDeviceLink/SDLOnSystemRequest.m +++ b/SmartDeviceLink/SDLOnSystemRequest.m @@ -11,67 +11,70 @@ @implementation SDLOnSystemRequest +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnSystemRequest]) { } return self; } +#pragma clang diagnostic pop - (void)setRequestType:(SDLRequestType)requestType { - [parameters sdl_setObject:requestType forName:SDLRPCParameterNameRequestType]; + [self.parameters sdl_setObject:requestType forName:SDLRPCParameterNameRequestType]; } - (SDLRequestType)requestType { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameRequestType error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameRequestType error:&error]; } - (void)setRequestSubType:(nullable NSString *)requestSubType { - [parameters sdl_setObject:requestSubType forName:SDLRPCParameterNameRequestSubType]; + [self.parameters sdl_setObject:requestSubType forName:SDLRPCParameterNameRequestSubType]; } - (nullable NSString *)requestSubType { - return [parameters sdl_objectForName:SDLRPCParameterNameRequestSubType ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRequestSubType ofClass:NSString.class error:nil]; } - (void)setUrl:(nullable NSString *)url { - [parameters sdl_setObject:url forName:SDLRPCParameterNameURL]; + [self.parameters sdl_setObject:url forName:SDLRPCParameterNameURL]; } - (nullable NSString *)url { - return [parameters sdl_objectForName:SDLRPCParameterNameURL ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameURL ofClass:NSString.class error:nil]; } - (void)setTimeout:(nullable NSNumber *)timeout { - [parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout]; + [self.parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout]; } - (nullable NSNumber *)timeout { - return [parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil]; } - (void)setFileType:(nullable SDLFileType)fileType { - [parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType]; + [self.parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType]; } - (nullable SDLFileType)fileType { - return [parameters sdl_enumForName:SDLRPCParameterNameFileType error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameFileType error:nil]; } - (void)setOffset:(nullable NSNumber *)offset { - [parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset]; + [self.parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset]; } - (nullable NSNumber *)offset { - return [parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil]; } - (void)setLength:(nullable NSNumber *)length { - [parameters sdl_setObject:length forName:SDLRPCParameterNameLength]; + [self.parameters sdl_setObject:length forName:SDLRPCParameterNameLength]; } - (nullable NSNumber *)length { - return [parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLOnTBTClientState.m b/SmartDeviceLink/SDLOnTBTClientState.m index de8017174..4a6695e06 100644 --- a/SmartDeviceLink/SDLOnTBTClientState.m +++ b/SmartDeviceLink/SDLOnTBTClientState.m @@ -11,19 +11,22 @@ @implementation SDLOnTBTClientState +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnTBTClientState]) { } return self; } +#pragma clang diagnostic pop - (void)setState:(SDLTBTState)state { - [parameters sdl_setObject:state forName:SDLRPCParameterNameState]; + [self.parameters sdl_setObject:state forName:SDLRPCParameterNameState]; } - (SDLTBTState)state { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameState error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameState error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnTouchEvent.m b/SmartDeviceLink/SDLOnTouchEvent.m index 0d8eea442..1995f7d86 100644 --- a/SmartDeviceLink/SDLOnTouchEvent.m +++ b/SmartDeviceLink/SDLOnTouchEvent.m @@ -12,28 +12,31 @@ @implementation SDLOnTouchEvent +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnTouchEvent]) { } return self; } +#pragma clang diagnostic pop - (void)setType:(SDLTouchType)type { - [parameters sdl_setObject:type forName:SDLRPCParameterNameType]; + [self.parameters sdl_setObject:type forName:SDLRPCParameterNameType]; } - (SDLTouchType)type { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameType error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameType error:&error]; } - (void)setEvent:(NSArray *)event { - [parameters sdl_setObject:event forName:SDLRPCParameterNameEvent]; + [self.parameters sdl_setObject:event forName:SDLRPCParameterNameEvent]; } - (NSArray *)event { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameEvent ofClass:SDLTouchEvent.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameEvent ofClass:SDLTouchEvent.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLOnVehicleData.m b/SmartDeviceLink/SDLOnVehicleData.m index 3e07fe7e9..6dc6b0aa5 100644 --- a/SmartDeviceLink/SDLOnVehicleData.m +++ b/SmartDeviceLink/SDLOnVehicleData.m @@ -23,250 +23,253 @@ @implementation SDLOnVehicleData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnVehicleData]) { } return self; } +#pragma clang diagnostic pop - (void)setGps:(nullable SDLGPSData *)gps { - [parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; + [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; } - (nullable SDLGPSData *)gps { - return [parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLGPSData.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLGPSData.class error:nil]; } - (void)setSpeed:(nullable NSNumber *)speed { - [parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; + [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; } - (nullable NSNumber *)speed { - return [parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; } - (void)setRpm:(nullable NSNumber *)rpm { - [parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; + [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; } - (nullable NSNumber *)rpm { - return [parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel:(nullable NSNumber *)fuelLevel { - [parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; + [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; } - (nullable NSNumber *)fuelLevel { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel_State:(nullable SDLComponentVolumeStatus)fuelLevel_State { - [parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; + [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; } - (nullable SDLComponentVolumeStatus)fuelLevel_State { - return [parameters sdl_enumForName:SDLRPCParameterNameFuelLevelState error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameFuelLevelState error:nil]; } - (void)setFuelRange:(nullable NSArray *)fuelRange { - [parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; + [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; } - (nullable NSArray *)fuelRange { - return [parameters sdl_objectsForName:SDLRPCParameterNameFuelRange ofClass:SDLFuelRange.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameFuelRange ofClass:SDLFuelRange.class error:nil]; } - (void)setInstantFuelConsumption:(nullable NSNumber *)instantFuelConsumption { - [parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; + [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; } - (nullable NSNumber *)instantFuelConsumption { - return [parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; } - (void)setExternalTemperature:(nullable NSNumber *)externalTemperature { - [parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; + [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; } - (nullable NSNumber *)externalTemperature { - return [parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; } - (void)setVin:(nullable NSString *)vin { - [parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN]; + [self.parameters sdl_setObject:vin forName:SDLRPCParameterNameVIN]; } - (nullable NSString *)vin { - return [parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameVIN ofClass:NSString.class error:nil]; } - (void)setPrndl:(nullable SDLPRNDL)prndl { - [parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; + [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; } - (nullable SDLPRNDL)prndl { - return [parameters sdl_enumForName:SDLRPCParameterNamePRNDL error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNamePRNDL error:nil]; } - (void)setTirePressure:(nullable SDLTireStatus *)tirePressure { - [parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; + [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; } - (nullable SDLTireStatus *)tirePressure { - return [parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLTireStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLTireStatus.class error:nil]; } - (void)setOdometer:(nullable NSNumber *)odometer { - [parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; + [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; } - (nullable NSNumber *)odometer { - return [parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; } - (void)setBeltStatus:(nullable SDLBeltStatus *)beltStatus { - [parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; + [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; } - (nullable SDLBeltStatus *)beltStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLBeltStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLBeltStatus.class error:nil]; } - (void)setBodyInformation:(nullable SDLBodyInformation *)bodyInformation { - [parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; + [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; } - (nullable SDLBodyInformation *)bodyInformation { - return [parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLBodyInformation.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLBodyInformation.class error:nil]; } - (void)setDeviceStatus:(nullable SDLDeviceStatus *)deviceStatus { - [parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; + [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; } - (nullable SDLDeviceStatus *)deviceStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLDeviceStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLDeviceStatus.class error:nil]; } - (void)setDriverBraking:(nullable SDLVehicleDataEventStatus)driverBraking { - [parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; + [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; } - (nullable SDLVehicleDataEventStatus)driverBraking { - return [parameters sdl_enumForName:SDLRPCParameterNameDriverBraking error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameDriverBraking error:nil]; } - (void)setWiperStatus:(nullable SDLWiperStatus)wiperStatus { - [parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; + [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; } - (nullable SDLWiperStatus)wiperStatus { - return [parameters sdl_enumForName:SDLRPCParameterNameWiperStatus error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameWiperStatus error:nil]; } - (void)setHeadLampStatus:(nullable SDLHeadLampStatus *)headLampStatus { - [parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; + [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; } - (nullable SDLHeadLampStatus *)headLampStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLHeadLampStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLHeadLampStatus.class error:nil]; } - (void)setEngineOilLife:(nullable NSNumber *)engineOilLife { - [parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; + [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; } - (nullable NSNumber *)engineOilLife { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; } - (void)setEngineTorque:(nullable NSNumber *)engineTorque { - [parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; + [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; } - (nullable NSNumber *)engineTorque { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; } - (void)setAccPedalPosition:(nullable NSNumber *)accPedalPosition { - [parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; + [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; } - (nullable NSNumber *)accPedalPosition { - return [parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; } - (void)setSteeringWheelAngle:(nullable NSNumber *)steeringWheelAngle { - [parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; + [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; } - (nullable NSNumber *)steeringWheelAngle { - return [parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; } - (void)setECallInfo:(nullable SDLECallInfo *)eCallInfo { - [parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; + [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; } - (nullable SDLECallInfo *)eCallInfo { - return [parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLECallInfo.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLECallInfo.class error:nil]; } - (void)setAirbagStatus:(nullable SDLAirbagStatus *)airbagStatus { - [parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; + [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; } - (nullable SDLAirbagStatus *)airbagStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLAirbagStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLAirbagStatus.class error:nil]; } - (void)setEmergencyEvent:(nullable SDLEmergencyEvent *)emergencyEvent { - [parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; + [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; } - (nullable SDLEmergencyEvent *)emergencyEvent { - return [parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLEmergencyEvent.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLEmergencyEvent.class error:nil]; } - (void)setClusterModeStatus:(nullable SDLClusterModeStatus *)clusterModeStatus { - [parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; + [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; } - (nullable SDLClusterModeStatus *)clusterModeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:SDLClusterModeStatus.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:SDLClusterModeStatus.class error:nil]; } - (void)setMyKey:(nullable SDLMyKey *)myKey { - [parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; + [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; } - (nullable SDLMyKey *)myKey { - return [parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLMyKey.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLMyKey.class error:nil]; } - (void)setElectronicParkBrakeStatus:(nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus { - [parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; + [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; } - (nullable SDLElectronicParkBrakeStatus)electronicParkBrakeStatus { - return [parameters sdl_enumForName:SDLRPCParameterNameElectronicParkBrakeStatus error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameElectronicParkBrakeStatus error:nil]; } - (void)setTurnSignal:(nullable SDLTurnSignal)turnSignal { - [parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; + [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; } - (nullable SDLTurnSignal)turnSignal { - return [parameters sdl_enumForName:SDLRPCParameterNameTurnSignal error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameTurnSignal error:nil]; } - (void)setCloudAppVehicleID:(nullable NSString *)cloudAppVehicleID { - [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; + [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; } - (nullable NSString *)cloudAppVehicleID { - return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLOnWayPointChange.m b/SmartDeviceLink/SDLOnWayPointChange.m index bc7b5a492..b90033dcf 100644 --- a/SmartDeviceLink/SDLOnWayPointChange.m +++ b/SmartDeviceLink/SDLOnWayPointChange.m @@ -12,19 +12,22 @@ @implementation SDLOnWayPointChange +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameOnWayPointChange]) { } return self; } +#pragma clang diagnostic pop - (void)setWaypoints:(NSArray *)waypoints { - [parameters sdl_setObject:waypoints forName:SDLRPCParameterNameWayPoints]; + [self.parameters sdl_setObject:waypoints forName:SDLRPCParameterNameWayPoints]; } - (NSArray *)waypoints { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameWayPoints ofClass:SDLLocationDetails.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameWayPoints ofClass:SDLLocationDetails.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLParameterPermissions.m b/SmartDeviceLink/SDLParameterPermissions.m index 005955a50..5b83f66bf 100644 --- a/SmartDeviceLink/SDLParameterPermissions.m +++ b/SmartDeviceLink/SDLParameterPermissions.m @@ -12,21 +12,21 @@ @implementation SDLParameterPermissions - (void)setAllowed:(NSArray *)allowed { - [store sdl_setObject:allowed forName:SDLRPCParameterNameAllowed]; + [self.store sdl_setObject:allowed forName:SDLRPCParameterNameAllowed]; } - (NSArray *)allowed { NSError *error = nil; - return [store sdl_objectsForName:SDLRPCParameterNameAllowed ofClass:NSString.class error:&error]; + return [self.store sdl_objectsForName:SDLRPCParameterNameAllowed ofClass:NSString.class error:&error]; } - (void)setUserDisallowed:(NSArray *)userDisallowed { - [store sdl_setObject:userDisallowed forName:SDLRPCParameterNameUserDisallowed]; + [self.store sdl_setObject:userDisallowed forName:SDLRPCParameterNameUserDisallowed]; } - (NSArray *)userDisallowed { NSError *error = nil; - return [store sdl_objectsForName:SDLRPCParameterNameUserDisallowed ofClass:NSString.class error:&error]; + return [self.store sdl_objectsForName:SDLRPCParameterNameUserDisallowed ofClass:NSString.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLPerformAppServiceInteraction.m b/SmartDeviceLink/SDLPerformAppServiceInteraction.m index 292ae39b4..f401f7f28 100644 --- a/SmartDeviceLink/SDLPerformAppServiceInteraction.m +++ b/SmartDeviceLink/SDLPerformAppServiceInteraction.m @@ -17,11 +17,14 @@ @implementation SDLPerformAppServiceInteraction +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePerformAppServiceInteraction]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithServiceUri:(NSString *)serviceUri serviceID:(NSString *)serviceID originApp:(NSString *)originApp { self = [self init]; @@ -48,38 +51,38 @@ - (instancetype)initWithServiceUri:(NSString *)serviceUri serviceID:(NSString *) } - (void)setServiceUri:(NSString *)serviceUri { - [parameters sdl_setObject:serviceUri forName:SDLRPCParameterNameServiceUri]; + [self.parameters sdl_setObject:serviceUri forName:SDLRPCParameterNameServiceUri]; } - (NSString *)serviceUri { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameServiceUri ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameServiceUri ofClass:NSString.class error:&error]; } - (void)setServiceID:(NSString *)serviceID { - [parameters sdl_setObject:serviceID forName:SDLRPCParameterNameServiceID]; + [self.parameters sdl_setObject:serviceID forName:SDLRPCParameterNameServiceID]; } - (NSString *)serviceID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameServiceID ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameServiceID ofClass:NSString.class error:&error]; } - (void)setOriginApp:(NSString *)originApp { - [parameters sdl_setObject:originApp forName:SDLRPCParameterNameOriginApp]; + [self.parameters sdl_setObject:originApp forName:SDLRPCParameterNameOriginApp]; } - (NSString *)originApp { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameOriginApp ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOriginApp ofClass:NSString.class error:&error]; } - (void)setRequestServiceActive:(nullable NSNumber *)requestServiceActive { - [parameters sdl_setObject:requestServiceActive forName:SDLRPCParameterNameRequestServiceActive]; + [self.parameters sdl_setObject:requestServiceActive forName:SDLRPCParameterNameRequestServiceActive]; } - (nullable NSNumber *)requestServiceActive { - return [parameters sdl_objectForName:SDLRPCParameterNameRequestServiceActive ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRequestServiceActive ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLPerformAppServiceInteractionResponse.m b/SmartDeviceLink/SDLPerformAppServiceInteractionResponse.m index 112d7c209..35bd58bf7 100644 --- a/SmartDeviceLink/SDLPerformAppServiceInteractionResponse.m +++ b/SmartDeviceLink/SDLPerformAppServiceInteractionResponse.m @@ -16,11 +16,14 @@ @implementation SDLPerformAppServiceInteractionResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePerformAppServiceInteraction]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithServiceSpecificResult:(NSString *)serviceSpecificResult { self = [self init]; @@ -34,11 +37,11 @@ - (instancetype)initWithServiceSpecificResult:(NSString *)serviceSpecificResult } - (void)setServiceSpecificResult:(nullable NSString *)serviceSpecificResult { - [parameters sdl_setObject:serviceSpecificResult forName:SDLRPCParameterNameServiceSpecificResult]; + [self.parameters sdl_setObject:serviceSpecificResult forName:SDLRPCParameterNameServiceSpecificResult]; } - (nullable NSString *)serviceSpecificResult { - return [parameters sdl_objectForName:SDLRPCParameterNameServiceSpecificResult ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameServiceSpecificResult ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLPerformAudioPassThru.m b/SmartDeviceLink/SDLPerformAudioPassThru.m index 85917babe..6bcea8fc7 100644 --- a/SmartDeviceLink/SDLPerformAudioPassThru.m +++ b/SmartDeviceLink/SDLPerformAudioPassThru.m @@ -13,11 +13,14 @@ @implementation SDLPerformAudioPassThru +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePerformAudioPassThru]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithInitialPrompt:(nullable NSString *)initialPrompt audioPassThruDisplayText1:(nullable NSString *)audioPassThruDisplayText1 audioPassThruDisplayText2:(nullable NSString *)audioPassThruDisplayText2 samplingRate:(SDLSamplingRate)samplingRate bitsPerSample:(SDLBitsPerSample)bitsPerSample audioType:(SDLAudioType)audioType maxDuration:(UInt32)maxDuration muteAudio:(BOOL)muteAudio { return [self initWithInitialPrompt:initialPrompt audioPassThruDisplayText1:audioPassThruDisplayText1 audioPassThruDisplayText2:audioPassThruDisplayText2 samplingRate:samplingRate bitsPerSample:bitsPerSample audioType:audioType maxDuration:maxDuration muteAudio:muteAudio audioDataHandler:nil]; @@ -58,71 +61,71 @@ - (instancetype)initWithSamplingRate:(SDLSamplingRate)samplingRate bitsPerSample - (void)setInitialPrompt:(nullable NSArray *)initialPrompt { - [parameters sdl_setObject:initialPrompt forName:SDLRPCParameterNameInitialPrompt]; + [self.parameters sdl_setObject:initialPrompt forName:SDLRPCParameterNameInitialPrompt]; } - (nullable NSArray *)initialPrompt { - return [parameters sdl_objectsForName:SDLRPCParameterNameInitialPrompt ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameInitialPrompt ofClass:SDLTTSChunk.class error:nil]; } - (void)setAudioPassThruDisplayText1:(nullable NSString *)audioPassThruDisplayText1 { - [parameters sdl_setObject:audioPassThruDisplayText1 forName:SDLRPCParameterNameAudioPassThruDisplayText1]; + [self.parameters sdl_setObject:audioPassThruDisplayText1 forName:SDLRPCParameterNameAudioPassThruDisplayText1]; } - (nullable NSString *)audioPassThruDisplayText1 { - return [parameters sdl_objectForName:SDLRPCParameterNameAudioPassThruDisplayText1 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAudioPassThruDisplayText1 ofClass:NSString.class error:nil]; } - (void)setAudioPassThruDisplayText2:(nullable NSString *)audioPassThruDisplayText2 { - [parameters sdl_setObject:audioPassThruDisplayText2 forName:SDLRPCParameterNameAudioPassThruDisplayText2]; + [self.parameters sdl_setObject:audioPassThruDisplayText2 forName:SDLRPCParameterNameAudioPassThruDisplayText2]; } - (nullable NSString *)audioPassThruDisplayText2 { - return [parameters sdl_objectForName:SDLRPCParameterNameAudioPassThruDisplayText2 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAudioPassThruDisplayText2 ofClass:NSString.class error:nil]; } - (void)setSamplingRate:(SDLSamplingRate)samplingRate { - [parameters sdl_setObject:samplingRate forName:SDLRPCParameterNameSamplingRate]; + [self.parameters sdl_setObject:samplingRate forName:SDLRPCParameterNameSamplingRate]; } - (SDLSamplingRate)samplingRate { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameSamplingRate error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameSamplingRate error:&error]; } - (void)setMaxDuration:(NSNumber *)maxDuration { - [parameters sdl_setObject:maxDuration forName:SDLRPCParameterNameMaxDuration]; + [self.parameters sdl_setObject:maxDuration forName:SDLRPCParameterNameMaxDuration]; } - (NSNumber *)maxDuration { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameMaxDuration ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMaxDuration ofClass:NSNumber.class error:&error]; } - (void)setBitsPerSample:(SDLBitsPerSample)bitsPerSample { - [parameters sdl_setObject:bitsPerSample forName:SDLRPCParameterNameBitsPerSample]; + [self.parameters sdl_setObject:bitsPerSample forName:SDLRPCParameterNameBitsPerSample]; } - (SDLBitsPerSample)bitsPerSample { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameBitsPerSample error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameBitsPerSample error:&error]; } - (void)setAudioType:(SDLAudioType)audioType { - [parameters sdl_setObject:audioType forName:SDLRPCParameterNameAudioType]; + [self.parameters sdl_setObject:audioType forName:SDLRPCParameterNameAudioType]; } - (SDLAudioType)audioType { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameAudioType error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameAudioType error:&error]; } - (void)setMuteAudio:(nullable NSNumber *)muteAudio { - [parameters sdl_setObject:muteAudio forName:SDLRPCParameterNameMuteAudio]; + [self.parameters sdl_setObject:muteAudio forName:SDLRPCParameterNameMuteAudio]; } - (nullable NSNumber *)muteAudio { - return [parameters sdl_objectForName:SDLRPCParameterNameMuteAudio ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMuteAudio ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLPerformAudioPassThruResponse.m b/SmartDeviceLink/SDLPerformAudioPassThruResponse.m index 66d2f72e1..a33310be7 100644 --- a/SmartDeviceLink/SDLPerformAudioPassThruResponse.m +++ b/SmartDeviceLink/SDLPerformAudioPassThruResponse.m @@ -12,11 +12,14 @@ @implementation SDLPerformAudioPassThruResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePerformAudioPassThru]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLPerformInteraction.m b/SmartDeviceLink/SDLPerformInteraction.m index b80e1bed6..d44ac3e16 100644 --- a/SmartDeviceLink/SDLPerformInteraction.m +++ b/SmartDeviceLink/SDLPerformInteraction.m @@ -14,11 +14,14 @@ @implementation SDLPerformInteraction +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePerformInteraction]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithInteractionChoiceSetId:(UInt16)interactionChoiceSetId { return [self initWithInteractionChoiceSetIdList:@[@(interactionChoiceSetId)]]; @@ -92,78 +95,78 @@ - (instancetype)initWithInteractionChoiceSetIdList:(NSArray *> } - (void)setInitialText:(NSString *)initialText { - [parameters sdl_setObject:initialText forName:SDLRPCParameterNameInitialText]; + [self.parameters sdl_setObject:initialText forName:SDLRPCParameterNameInitialText]; } - (NSString *)initialText { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameInitialText ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInitialText ofClass:NSString.class error:&error]; } - (void)setInitialPrompt:(nullable NSArray *)initialPrompt { - [parameters sdl_setObject:initialPrompt forName:SDLRPCParameterNameInitialPrompt]; + [self.parameters sdl_setObject:initialPrompt forName:SDLRPCParameterNameInitialPrompt]; } - (nullable NSArray *)initialPrompt { - return [parameters sdl_objectsForName:SDLRPCParameterNameInitialPrompt ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameInitialPrompt ofClass:SDLTTSChunk.class error:nil]; } - (void)setInteractionMode:(SDLInteractionMode)interactionMode { - [parameters sdl_setObject:interactionMode forName:SDLRPCParameterNameInteractionMode]; + [self.parameters sdl_setObject:interactionMode forName:SDLRPCParameterNameInteractionMode]; } - (SDLInteractionMode)interactionMode { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameInteractionMode error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameInteractionMode error:&error]; } - (void)setInteractionChoiceSetIDList:(NSArray *> *)interactionChoiceSetIDList { - [parameters sdl_setObject:interactionChoiceSetIDList forName:SDLRPCParameterNameInteractionChoiceSetIdList]; + [self.parameters sdl_setObject:interactionChoiceSetIDList forName:SDLRPCParameterNameInteractionChoiceSetIdList]; } - (NSArray *> *)interactionChoiceSetIDList { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameInteractionChoiceSetIdList ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameInteractionChoiceSetIdList ofClass:NSNumber.class error:&error]; } - (void)setHelpPrompt:(nullable NSArray *)helpPrompt { - [parameters sdl_setObject:helpPrompt forName:SDLRPCParameterNameHelpPrompt]; + [self.parameters sdl_setObject:helpPrompt forName:SDLRPCParameterNameHelpPrompt]; } - (nullable NSArray *)helpPrompt { - return [parameters sdl_objectsForName:SDLRPCParameterNameHelpPrompt ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameHelpPrompt ofClass:SDLTTSChunk.class error:nil]; } - (void)setTimeoutPrompt:(nullable NSArray *)timeoutPrompt { - [parameters sdl_setObject:timeoutPrompt forName:SDLRPCParameterNameTimeoutPrompt]; + [self.parameters sdl_setObject:timeoutPrompt forName:SDLRPCParameterNameTimeoutPrompt]; } - (nullable NSArray *)timeoutPrompt { - return [parameters sdl_objectsForName:SDLRPCParameterNameTimeoutPrompt ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameTimeoutPrompt ofClass:SDLTTSChunk.class error:nil]; } - (void)setTimeout:(nullable NSNumber *)timeout { - [parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout]; + [self.parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout]; } - (nullable NSNumber *)timeout { - return [parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil]; } - (void)setVrHelp:(nullable NSArray *)vrHelp { - [parameters sdl_setObject:vrHelp forName:SDLRPCParameterNameVRHelp]; + [self.parameters sdl_setObject:vrHelp forName:SDLRPCParameterNameVRHelp]; } - (nullable NSArray *)vrHelp { - return [parameters sdl_objectsForName:SDLRPCParameterNameVRHelp ofClass:SDLVRHelpItem.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRHelp ofClass:SDLVRHelpItem.class error:nil]; } - (void)setInteractionLayout:(nullable SDLLayoutMode)interactionLayout { - [parameters sdl_setObject:interactionLayout forName:SDLRPCParameterNameInteractionLayout]; + [self.parameters sdl_setObject:interactionLayout forName:SDLRPCParameterNameInteractionLayout]; } - (nullable SDLLayoutMode)interactionLayout { - return [parameters sdl_enumForName:SDLRPCParameterNameInteractionLayout error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameInteractionLayout error:nil]; } @end diff --git a/SmartDeviceLink/SDLPerformInteractionResponse.m b/SmartDeviceLink/SDLPerformInteractionResponse.m index 8da3c6bfe..fc9723073 100644 --- a/SmartDeviceLink/SDLPerformInteractionResponse.m +++ b/SmartDeviceLink/SDLPerformInteractionResponse.m @@ -12,34 +12,37 @@ @implementation SDLPerformInteractionResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePerformInteraction]) { } return self; } +#pragma clang diagnostic pop - (void)setChoiceID:(nullable NSNumber *)choiceID { - [parameters sdl_setObject:choiceID forName:SDLRPCParameterNameChoiceId]; + [self.parameters sdl_setObject:choiceID forName:SDLRPCParameterNameChoiceId]; } - (nullable NSNumber *)choiceID { - return [parameters sdl_objectForName:SDLRPCParameterNameChoiceId ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameChoiceId ofClass:NSNumber.class error:nil]; } - (void)setManualTextEntry:(nullable NSString *)manualTextEntry { - [parameters sdl_setObject:manualTextEntry forName:SDLRPCParameterNameManualTextEntry]; + [self.parameters sdl_setObject:manualTextEntry forName:SDLRPCParameterNameManualTextEntry]; } - (nullable NSString *)manualTextEntry { - return [parameters sdl_objectForName:SDLRPCParameterNameManualTextEntry ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameManualTextEntry ofClass:NSString.class error:nil]; } - (void)setTriggerSource:(nullable SDLTriggerSource)triggerSource { - [parameters sdl_setObject:triggerSource forName:SDLRPCParameterNameTriggerSource]; + [self.parameters sdl_setObject:triggerSource forName:SDLRPCParameterNameTriggerSource]; } - (nullable SDLTriggerSource)triggerSource { - return [parameters sdl_enumForName:SDLRPCParameterNameTriggerSource error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameTriggerSource error:nil]; } @end diff --git a/SmartDeviceLink/SDLPermissionItem.m b/SmartDeviceLink/SDLPermissionItem.m index 462f7aaf3..501ad20f5 100644 --- a/SmartDeviceLink/SDLPermissionItem.m +++ b/SmartDeviceLink/SDLPermissionItem.m @@ -13,30 +13,30 @@ @implementation SDLPermissionItem - (void)setRpcName:(NSString *)rpcName { - [store sdl_setObject:rpcName forName:SDLRPCParameterNameRPCName]; + [self.store sdl_setObject:rpcName forName:SDLRPCParameterNameRPCName]; } - (NSString *)rpcName { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameRPCName ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameRPCName ofClass:NSString.class error:&error]; } - (void)setHmiPermissions:(SDLHMIPermissions *)hmiPermissions { - [store sdl_setObject:hmiPermissions forName:SDLRPCParameterNameHMIPermissions]; + [self.store sdl_setObject:hmiPermissions forName:SDLRPCParameterNameHMIPermissions]; } - (SDLHMIPermissions *)hmiPermissions { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameHMIPermissions ofClass:SDLHMIPermissions.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameHMIPermissions ofClass:SDLHMIPermissions.class error:&error]; } - (void)setParameterPermissions:(SDLParameterPermissions *)parameterPermissions { - [store sdl_setObject:parameterPermissions forName:SDLRPCParameterNameParameterPermissions]; + [self.store sdl_setObject:parameterPermissions forName:SDLRPCParameterNameParameterPermissions]; } - (SDLParameterPermissions *)parameterPermissions { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameParameterPermissions ofClass:SDLParameterPermissions.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameParameterPermissions ofClass:SDLParameterPermissions.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLPhoneCapability.m b/SmartDeviceLink/SDLPhoneCapability.m index 0d19a7957..514b8e216 100644 --- a/SmartDeviceLink/SDLPhoneCapability.m +++ b/SmartDeviceLink/SDLPhoneCapability.m @@ -27,11 +27,11 @@ - (instancetype)initWithDialNumber:(BOOL)dialNumberEnabled { } - (void)setDialNumberEnabled:(nullable NSNumber *)dialNumberEnabled { - [store sdl_setObject:dialNumberEnabled forName:SDLRPCParameterNameDialNumberEnabled]; + [self.store sdl_setObject:dialNumberEnabled forName:SDLRPCParameterNameDialNumberEnabled]; } - (nullable NSNumber *)dialNumberEnabled { - return [store sdl_objectForName:SDLRPCParameterNameDialNumberEnabled ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameDialNumberEnabled ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLPreloadChoicesOperation.m b/SmartDeviceLink/SDLPreloadChoicesOperation.m index 8fe9718cb..caedc168b 100644 --- a/SmartDeviceLink/SDLPreloadChoicesOperation.m +++ b/SmartDeviceLink/SDLPreloadChoicesOperation.m @@ -157,8 +157,15 @@ - (nullable SDLCreateInteractionChoiceSet *)sdl_choiceFromCell:(SDLChoiceCell *) } else { vrCommands = cell.voiceCommands; } - - NSString *menuName = [self.displayCapabilities hasTextFieldOfName:SDLTextFieldNameMenuName] ? cell.text : nil; + + NSString *menuName = nil; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + if ([self.displayCapabilities.displayType isEqualToEnum:SDLDisplayTypeGen38Inch] || [self.displayCapabilities hasTextFieldOfName:SDLTextFieldNameMenuName]) { + menuName = cell.text; + } +#pragma clang diagnostic pop + if(!menuName) { SDLLogE(@"Could not convert SDLChoiceCell to SDLCreateInteractionChoiceSet. It will not be shown. Cell: %@", cell); return nil; diff --git a/SmartDeviceLink/SDLPresetBankCapabilities.m b/SmartDeviceLink/SDLPresetBankCapabilities.m index ac11666ed..218a46285 100644 --- a/SmartDeviceLink/SDLPresetBankCapabilities.m +++ b/SmartDeviceLink/SDLPresetBankCapabilities.m @@ -12,12 +12,12 @@ @implementation SDLPresetBankCapabilities - (void)setOnScreenPresetsAvailable:(NSNumber *)onScreenPresetsAvailable { - [store sdl_setObject:onScreenPresetsAvailable forName:SDLRPCParameterNameOnScreenPresetsAvailable]; + [self.store sdl_setObject:onScreenPresetsAvailable forName:SDLRPCParameterNameOnScreenPresetsAvailable]; } - (NSNumber *)onScreenPresetsAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameOnScreenPresetsAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameOnScreenPresetsAvailable ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLProtocol.m b/SmartDeviceLink/SDLProtocol.m index 2e95ccf3c..3f1996e92 100644 --- a/SmartDeviceLink/SDLProtocol.m +++ b/SmartDeviceLink/SDLProtocol.m @@ -266,8 +266,12 @@ - (void)sendRPC:(SDLRPCMessage *)message { - (BOOL)sendRPC:(SDLRPCMessage *)message encrypted:(BOOL)encryption error:(NSError *__autoreleasing *)error { NSParameterAssert(message != nil); - NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[message serializeAsDictionary:(Byte)[SDLGlobals sharedGlobals].protocolVersion.major] options:kNilOptions error:error]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[message serializeAsDictionary:(Byte)[SDLGlobals sharedGlobals].protocolVersion.major] options:kNilOptions error:error]; +#pragma clang diagnostic pop + if (error != nil) { SDLLogW(@"Error encoding JSON data: %@", *error); } @@ -289,7 +293,7 @@ - (BOOL)sendRPC:(SDLRPCMessage *)message encrypted:(BOOL)encryption error:(NSErr // Build a binary header // Serialize the RPC data into an NSData SDLRPCPayload *rpcPayload = [[SDLRPCPayload alloc] init]; - rpcPayload.functionID = [[[SDLFunctionID sharedInstance] functionIdForName:[message getFunctionName]] unsignedIntValue]; + rpcPayload.functionID = [[[SDLFunctionID sharedInstance] functionIdForName:message.name] unsignedIntValue]; rpcPayload.jsonData = jsonData; rpcPayload.binaryData = message.bulkData; diff --git a/SmartDeviceLink/SDLProxy.m b/SmartDeviceLink/SDLProxy.m index 8a1e6b344..6ab2006c8 100644 --- a/SmartDeviceLink/SDLProxy.m +++ b/SmartDeviceLink/SDLProxy.m @@ -2,7 +2,6 @@ #import "SDLProxy.h" -#import #import #import @@ -51,7 +50,7 @@ typedef void (^URLSessionTaskCompletionHandler)(NSData *data, NSURLResponse *response, NSError *error); typedef void (^URLSessionDownloadTaskCompletionHandler)(NSURL *location, NSURLResponse *response, NSError *error); -NSString *const SDLProxyVersion = @"6.2.3"; +NSString *const SDLProxyVersion = @"6.3.0"; const float StartSessionTime = 10.0; const float NotifyProxyClosedDelay = (float)0.1; const int PoliciesCorrelationId = 65535; @@ -97,7 +96,6 @@ - (instancetype)initWithTransport:(id)transport delegate:(id *)dict { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage *message = [[SDLRPCMessage alloc] initWithDictionary:[dict mutableCopy]]; - NSString *functionName = [message getFunctionName]; - NSString *messageType = [message messageType]; +#pragma clang diagnostic pop + NSString *functionName = message.name; + NSString *messageType = message.messageType; // If it's a response, append response if ([messageType isEqualToString:SDLRPCParameterNameResponse]) { - BOOL notGenericResponseMessage = ![functionName isEqualToString:@"GenericResponse"]; + BOOL notGenericResponseMessage = ![functionName isEqualToString:SDLRPCFunctionNameGenericResponse]; if (notGenericResponseMessage) { functionName = [NSString stringWithFormat:@"%@Response", functionName]; } @@ -496,9 +496,9 @@ - (void)handleSyncPData:(SDLRPCMessage *)message { // If URL != nil, perform HTTP Post and don't pass the notification to proxy listeners SDLLogV(@"OnEncodedSyncPData: %@", message); - NSString *urlString = (NSString *)[message getParameters:@"URL"]; - NSDictionary *encodedSyncPData = (NSDictionary *)[message getParameters:@"data"]; - NSNumber *encodedSyncPTimeout = (NSNumber *)[message getParameters:@"Timeout"]; + NSString *urlString = (NSString *)message.parameters[SDLRPCParameterNameURLUppercase]; + NSDictionary *encodedSyncPData = (NSDictionary *)message.parameters[SDLRPCParameterNameData]; + NSNumber *encodedSyncPTimeout = (NSNumber *)message.parameters[SDLRPCParameterNameTimeoutCapitalized]; if (urlString && encodedSyncPData && encodedSyncPTimeout) { [self sendEncodedSyncPData:encodedSyncPData toURL:urlString withTimeout:encodedSyncPTimeout]; @@ -508,8 +508,11 @@ - (void)handleSyncPData:(SDLRPCMessage *)message { - (void)handleSystemRequest:(NSDictionary *)dict { SDLLogV(@"OnSystemRequest"); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnSystemRequest *systemRequest = [[SDLOnSystemRequest alloc] initWithDictionary:[dict mutableCopy]]; SDLRequestType requestType = systemRequest.requestType; +#pragma clang diagnostic pop // Handle the various OnSystemRequest types if ([requestType isEqualToEnum:SDLRequestTypeProprietary]) { @@ -615,7 +618,7 @@ - (BOOL)sdl_handleOnButtonEventPostV5:(SDLOnButtonEvent *)message { #pragma mark Handle Post-Invoke of Delegate Methods - (void)handleAfterHMIStatus:(SDLRPCMessage *)message { - SDLHMILevel hmiLevel = (SDLHMILevel)[message getParameters:SDLRPCParameterNameHMILevel]; + SDLHMILevel hmiLevel = (SDLHMILevel)message.parameters[SDLRPCParameterNameHMILevel]; _lsm.hmiLevel = hmiLevel; SEL callbackSelector = NSSelectorFromString(@"onOnLockScreenNotification:"); @@ -623,7 +626,7 @@ - (void)handleAfterHMIStatus:(SDLRPCMessage *)message { } - (void)handleAfterDriverDistraction:(SDLRPCMessage *)message { - NSString *stateString = (NSString *)[message getParameters:SDLRPCParameterNameState]; + NSString *stateString = (NSString *)message.parameters[SDLRPCParameterNameState]; BOOL state = [stateString isEqualToString:@"DD_ON"] ? YES : NO; _lsm.driverDistracted = state; diff --git a/SmartDeviceLink/SDLPublishAppService.m b/SmartDeviceLink/SDLPublishAppService.m index de365af41..dad78f11d 100644 --- a/SmartDeviceLink/SDLPublishAppService.m +++ b/SmartDeviceLink/SDLPublishAppService.m @@ -18,11 +18,14 @@ @implementation SDLPublishAppService +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePublishAppService]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithAppServiceManifest:(SDLAppServiceManifest *)appServiceManifest { self = [self init]; @@ -36,12 +39,12 @@ - (instancetype)initWithAppServiceManifest:(SDLAppServiceManifest *)appServiceMa } - (void)setAppServiceManifest:(SDLAppServiceManifest *)appServiceManifest { - [parameters sdl_setObject:appServiceManifest forName:SDLRPCParameterNameAppServiceManifest]; + [self.parameters sdl_setObject:appServiceManifest forName:SDLRPCParameterNameAppServiceManifest]; } - (SDLAppServiceManifest *)appServiceManifest { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameAppServiceManifest ofClass:SDLAppServiceManifest.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAppServiceManifest ofClass:SDLAppServiceManifest.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLPublishAppServiceResponse.m b/SmartDeviceLink/SDLPublishAppServiceResponse.m index 094a044ef..fb7449949 100644 --- a/SmartDeviceLink/SDLPublishAppServiceResponse.m +++ b/SmartDeviceLink/SDLPublishAppServiceResponse.m @@ -17,11 +17,14 @@ @implementation SDLPublishAppServiceResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePublishAppService]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithAppServiceRecord:(SDLAppServiceRecord *)appServiceRecord { self = [self init]; @@ -35,11 +38,11 @@ - (instancetype)initWithAppServiceRecord:(SDLAppServiceRecord *)appServiceRecord } - (void)setAppServiceRecord:(nullable SDLAppServiceRecord *)appServiceRecord { - [parameters sdl_setObject:appServiceRecord forName:SDLRPCParameterNameAppServiceRecord]; + [self.parameters sdl_setObject:appServiceRecord forName:SDLRPCParameterNameAppServiceRecord]; } - (nullable SDLAppServiceRecord *)appServiceRecord { - return [parameters sdl_objectForName:SDLRPCParameterNameAppServiceRecord ofClass:SDLAppServiceRecord.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAppServiceRecord ofClass:SDLAppServiceRecord.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLPutFile.m b/SmartDeviceLink/SDLPutFile.m index 5c54a712f..162ca5b6d 100644 --- a/SmartDeviceLink/SDLPutFile.m +++ b/SmartDeviceLink/SDLPutFile.m @@ -13,11 +13,14 @@ @implementation SDLPutFile +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePutFile]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)fileType { self = [self init]; @@ -84,61 +87,61 @@ - (instancetype)initWithFileName:(NSString *)fileName fileType:(SDLFileType)file #pragma mark - Getters and Setters - (void)setSyncFileName:(NSString *)syncFileName { - [parameters sdl_setObject:syncFileName forName:SDLRPCParameterNameSyncFileName]; + [self.parameters sdl_setObject:syncFileName forName:SDLRPCParameterNameSyncFileName]; } - (NSString *)syncFileName { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameSyncFileName ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncFileName ofClass:NSString.class error:&error]; } - (void)setFileType:(SDLFileType)fileType { - [parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType]; + [self.parameters sdl_setObject:fileType forName:SDLRPCParameterNameFileType]; } - (SDLFileType)fileType { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameFileType error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameFileType error:&error]; } - (void)setPersistentFile:(nullable NSNumber *)persistentFile { - [parameters sdl_setObject:persistentFile forName:SDLRPCParameterNamePersistentFile]; + [self.parameters sdl_setObject:persistentFile forName:SDLRPCParameterNamePersistentFile]; } - (nullable NSNumber *)persistentFile { - return [parameters sdl_objectForName:SDLRPCParameterNamePersistentFile ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePersistentFile ofClass:NSNumber.class error:nil]; } - (void)setSystemFile:(nullable NSNumber *)systemFile { - [parameters sdl_setObject:systemFile forName:SDLRPCParameterNameSystemFile]; + [self.parameters sdl_setObject:systemFile forName:SDLRPCParameterNameSystemFile]; } - (nullable NSNumber *)systemFile { - return [parameters sdl_objectForName:SDLRPCParameterNameSystemFile ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSystemFile ofClass:NSNumber.class error:nil]; } - (void)setOffset:(nullable NSNumber *)offset { - [parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset]; + [self.parameters sdl_setObject:offset forName:SDLRPCParameterNameOffset]; } - (nullable NSNumber *)offset { - return [parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOffset ofClass:NSNumber.class error:nil]; } - (void)setLength:(nullable NSNumber *)length { - [parameters sdl_setObject:length forName:SDLRPCParameterNameLength]; + [self.parameters sdl_setObject:length forName:SDLRPCParameterNameLength]; } - (nullable NSNumber *)length { - return [parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameLength ofClass:NSNumber.class error:nil]; } - (void)setCrc:(nullable NSNumber *)crc { - [parameters sdl_setObject:crc forName:SDLRPCParameterNameCRC]; + [self.parameters sdl_setObject:crc forName:SDLRPCParameterNameCRC]; } - (nullable NSNumber *)crc { - return [parameters sdl_objectForName:SDLRPCParameterNameCRC ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCRC ofClass:NSNumber.class error:nil]; } #pragma mark - Helpers diff --git a/SmartDeviceLink/SDLPutFileResponse.m b/SmartDeviceLink/SDLPutFileResponse.m index 906f9a5bb..aecbf9bb1 100644 --- a/SmartDeviceLink/SDLPutFileResponse.m +++ b/SmartDeviceLink/SDLPutFileResponse.m @@ -12,18 +12,21 @@ @implementation SDLPutFileResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNamePutFile]) { } return self; } +#pragma clang diagnostic pop - (void)setSpaceAvailable:(nullable NSNumber *)spaceAvailable { - [parameters sdl_setObject:spaceAvailable forName:SDLRPCParameterNameSpaceAvailable]; + [self.parameters sdl_setObject:spaceAvailable forName:SDLRPCParameterNameSpaceAvailable]; } - (nullable NSNumber *)spaceAvailable { - return [parameters sdl_objectForName:SDLRPCParameterNameSpaceAvailable ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpaceAvailable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLRDSData.m b/SmartDeviceLink/SDLRDSData.m index 14219ba34..2d177e6aa 100755 --- a/SmartDeviceLink/SDLRDSData.m +++ b/SmartDeviceLink/SDLRDSData.m @@ -27,67 +27,67 @@ - (instancetype)initWithProgramService:(nullable NSString *)programService radio } - (void)setProgramService:(nullable NSString *)programService { - [store sdl_setObject:programService forName:SDLRPCParameterNameProgramService]; + [self.store sdl_setObject:programService forName:SDLRPCParameterNameProgramService]; } - (nullable NSString *)programService { - return [store sdl_objectForName:SDLRPCParameterNameProgramService ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameProgramService ofClass:NSString.class error:nil]; } - (void)setRadioText:(nullable NSString *)radioText { - [store sdl_setObject:radioText forName:SDLRPCParameterNameRadioText]; + [self.store sdl_setObject:radioText forName:SDLRPCParameterNameRadioText]; } - (nullable NSString *)radioText { - return [store sdl_objectForName:SDLRPCParameterNameRadioText ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRadioText ofClass:NSString.class error:nil]; } - (void)setClockText:(nullable NSString *)clockText { - [store sdl_setObject:clockText forName:SDLRPCParameterNameClockText]; + [self.store sdl_setObject:clockText forName:SDLRPCParameterNameClockText]; } - (nullable NSString *)clockText { - return [store sdl_objectForName:SDLRPCParameterNameClockText ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameClockText ofClass:NSString.class error:nil]; } - (void)setProgramIdentification:(nullable NSString *)programIdentification { - [store sdl_setObject:programIdentification forName:SDLRPCParameterNameProgramIdentification]; + [self.store sdl_setObject:programIdentification forName:SDLRPCParameterNameProgramIdentification]; } - (nullable NSString *)programIdentification { - return [store sdl_objectForName:SDLRPCParameterNameProgramIdentification ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameProgramIdentification ofClass:NSString.class error:nil]; } - (void)setProgramType:(nullable NSNumber *)programType { - [store sdl_setObject:programType forName:SDLRPCParameterNameProgramType]; + [self.store sdl_setObject:programType forName:SDLRPCParameterNameProgramType]; } - (nullable NSNumber *)programType { - return [store sdl_objectForName:SDLRPCParameterNameProgramType ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameProgramType ofClass:NSNumber.class error:nil]; } - (void)setTrafficProgramIdentification:(nullable NSNumber *)trafficProgramIdentification { - [store sdl_setObject:trafficProgramIdentification forName:SDLRPCParameterNameTrafficProgramIdentification]; + [self.store sdl_setObject:trafficProgramIdentification forName:SDLRPCParameterNameTrafficProgramIdentification]; } - (nullable NSNumber *)trafficProgramIdentification { - return [store sdl_objectForName:SDLRPCParameterNameTrafficProgramIdentification ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTrafficProgramIdentification ofClass:NSNumber.class error:nil]; } - (void)setTrafficAnnouncementIdentification:(nullable NSNumber *)trafficAnnouncementIdentification { - [store sdl_setObject:trafficAnnouncementIdentification forName:SDLRPCParameterNameTrafficAnnouncementIdentification]; + [self.store sdl_setObject:trafficAnnouncementIdentification forName:SDLRPCParameterNameTrafficAnnouncementIdentification]; } - (nullable NSNumber *)trafficAnnouncementIdentification { - return [store sdl_objectForName:SDLRPCParameterNameTrafficAnnouncementIdentification ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTrafficAnnouncementIdentification ofClass:NSNumber.class error:nil]; } - (void)setRegion:(nullable NSString *)region { - [store sdl_setObject:region forName:SDLRPCParameterNameRegion]; + [self.store sdl_setObject:region forName:SDLRPCParameterNameRegion]; } - (nullable NSString *)region { - return [store sdl_objectForName:SDLRPCParameterNameRegion ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRegion ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLRGBColor.m b/SmartDeviceLink/SDLRGBColor.m index ff2d4296e..1c611e076 100644 --- a/SmartDeviceLink/SDLRGBColor.m +++ b/SmartDeviceLink/SDLRGBColor.m @@ -41,30 +41,30 @@ - (instancetype)initWithColor:(UIColor *)color { #pragma mark - Setters - (void)setRed:(NSNumber *)red { - [store sdl_setObject:red forName:SDLRPCParameterNameRed]; + [self.store sdl_setObject:red forName:SDLRPCParameterNameRed]; } - (NSNumber *)red { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameRed ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameRed ofClass:NSNumber.class error:&error]; } - (void)setGreen:(NSNumber *)green { - [store sdl_setObject:green forName:SDLRPCParameterNameGreen]; + [self.store sdl_setObject:green forName:SDLRPCParameterNameGreen]; } - (NSNumber *)green { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameGreen ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameGreen ofClass:NSNumber.class error:&error]; } - (void)setBlue:(NSNumber *)blue { - [store sdl_setObject:blue forName:SDLRPCParameterNameBlue]; + [self.store sdl_setObject:blue forName:SDLRPCParameterNameBlue]; } - (NSNumber *)blue { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameBlue ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameBlue ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLRPCMessage.h b/SmartDeviceLink/SDLRPCMessage.h index dcc545715..436ebcdfa 100644 --- a/SmartDeviceLink/SDLRPCMessage.h +++ b/SmartDeviceLink/SDLRPCMessage.h @@ -7,11 +7,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface SDLRPCMessage : SDLRPCStruct { - NSMutableDictionary *function; - NSMutableDictionary *parameters; - NSString *messageType; -} +@interface SDLRPCMessage : SDLRPCStruct /** * Convenience init @@ -19,29 +15,21 @@ NS_ASSUME_NONNULL_BEGIN * @param name The name of the message * @return A SDLRPCMessage object */ -- (instancetype)initWithName:(NSString *)name; - -/** - * Convenience init - * - * @param dict A dictionary with the format @{messageType: @{parameters}} - * @return A SDLRPCMessage object - */ -- (instancetype)initWithDictionary:(NSDictionary *)dict; +- (instancetype)initWithName:(NSString *)name __deprecated_msg("This is not intended to be a public facing API"); /** * Returns the function name. * * @return The function name */ -- (nullable NSString *)getFunctionName; +- (nullable NSString *)getFunctionName __deprecated_msg("Call the .name property instead"); /** * Sets the function name. * * @param functionName The function name */ -- (void)setFunctionName:(nullable NSString *)functionName; +- (void)setFunctionName:(nullable NSString *)functionName __deprecated_msg("This is not intended to be a public facing API"); /** * Returns the value associated with the provided key. If the key does not exist, null is returned. @@ -49,7 +37,7 @@ NS_ASSUME_NONNULL_BEGIN * @param functionName The key name * @return The value associated with the function name */ -- (nullable NSObject *)getParameters:(NSString *)functionName; +- (nullable NSObject *)getParameters:(NSString *)functionName __deprecated_msg("Call the .parameters property instead"); /** * Sets a key-value pair using the function name as the key. @@ -57,7 +45,7 @@ NS_ASSUME_NONNULL_BEGIN * @param functionName The name for the key * @param value The value associated with the function name */ -- (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value; +- (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value __deprecated_msg("This is not intended to be a public facing API"); /** * The data in the message @@ -69,6 +57,11 @@ NS_ASSUME_NONNULL_BEGIN */ @property (strong, nonatomic, readonly) NSString *name; +/** + The JSON-RPC parameters + */ +@property (strong, nonatomic, readonly) NSMutableDictionary *parameters; + /** * The type of data in the message */ diff --git a/SmartDeviceLink/SDLRPCMessage.m b/SmartDeviceLink/SDLRPCMessage.m index 1d55d5f61..15a6dd49a 100644 --- a/SmartDeviceLink/SDLRPCMessage.m +++ b/SmartDeviceLink/SDLRPCMessage.m @@ -9,71 +9,90 @@ NS_ASSUME_NONNULL_BEGIN -@implementation SDLRPCMessage +@interface SDLRPCMessage () + +@property (strong, nonatomic, readwrite) NSString *messageType; +@property (strong, nonatomic) NSMutableDictionary *function; + +@end -@synthesize messageType; + +@implementation SDLRPCMessage - (instancetype)initWithName:(NSString *)name { - if (self = [super init]) { - function = [[NSMutableDictionary alloc] initWithCapacity:3]; - parameters = [[NSMutableDictionary alloc] init]; - messageType = SDLRPCParameterNameRequest; - [store setObject:function forKey:messageType]; - [function setObject:parameters forKey:SDLRPCParameterNameParameters]; - [function setObject:name forKey:SDLRPCParameterNameOperationName]; + self = [super init]; + if (!self) { + return nil; } + + _function = [NSMutableDictionary dictionaryWithCapacity:3]; + _parameters = [NSMutableDictionary dictionary]; + _messageType = SDLRPCParameterNameRequest; + self.store[_messageType] = _function; + + _function[SDLRPCParameterNameParameters] = _parameters; + _function[SDLRPCParameterNameOperationName] = name; + return self; } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" - (instancetype)initWithDictionary:(NSDictionary *)dict { - if (self = [super initWithDictionary:dict]) { - NSEnumerator *enumerator = [store keyEnumerator]; - while (messageType = [enumerator nextObject]) { - if (![messageType isEqualToString:SDLRPCParameterNameBulkData]) { - break; - } - } - if (messageType != nil) { - store[messageType] = [store[messageType] mutableCopy]; - function = store[messageType]; + self = [super initWithDictionary:dict]; + if (!self) { + return nil; + } - function[SDLRPCParameterNameParameters] = [function[SDLRPCParameterNameParameters] mutableCopy]; - parameters = function[SDLRPCParameterNameParameters]; + NSEnumerator *enumerator = [self.store keyEnumerator]; + while (_messageType = [enumerator nextObject]) { + if (![_messageType isEqualToString:SDLRPCParameterNameBulkData]) { + break; } - self.bulkData = dict[SDLRPCParameterNameBulkData]; } + + if (_messageType != nil) { + self.store[_messageType] = [self.store[_messageType] mutableCopy]; + _function = self.store[_messageType]; + + _function[SDLRPCParameterNameParameters] = [_function[SDLRPCParameterNameParameters] mutableCopy]; + _parameters = _function[SDLRPCParameterNameParameters]; + } + + _bulkData = dict[SDLRPCParameterNameBulkData]; return self; } +#pragma clang diagnostic pop - (nullable NSString *)getFunctionName { - return [function sdl_objectForName:SDLRPCParameterNameOperationName ofClass:NSString.class error:nil]; + return self.name; } - (void)setFunctionName:(nullable NSString *)functionName { - [function sdl_setObject:functionName forName:SDLRPCParameterNameOperationName]; + [_function sdl_setObject:functionName forName:SDLRPCParameterNameOperationName]; } - (nullable NSObject *)getParameters:(NSString *)functionName { - return [parameters sdl_objectForName:functionName ofClass:NSObject.class error:nil]; + return [_parameters sdl_objectForName:functionName ofClass:NSObject.class error:nil]; } - (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value { - [parameters sdl_setObject:value forName:functionName]; + [_parameters sdl_setObject:value forName:functionName]; } - (NSString *)name { - return [self getFunctionName]; + return [_function sdl_objectForName:SDLRPCParameterNameOperationName ofClass:NSString.class error:nil]; } - (NSString *)description { - NSMutableString *description = [NSMutableString stringWithFormat:@"%@ (%@)\n%@", self.name, self.messageType, self->parameters]; + NSMutableString *description = [NSMutableString stringWithFormat:@"%@ (%@)\n%@", self.name, self.messageType, self.parameters]; return description; } - (id)copyWithZone:(nullable NSZone *)zone { - SDLRPCMessage *newMessage = [[self.class allocWithZone:zone] initWithDictionary:self->store]; + SDLRPCMessage *newMessage = [[self.class allocWithZone:zone] initWithDictionary:self.store]; return newMessage; } diff --git a/SmartDeviceLink/SDLRPCNotification.m b/SmartDeviceLink/SDLRPCNotification.m index 6bec6fd29..fa6ca7eec 100644 --- a/SmartDeviceLink/SDLRPCNotification.m +++ b/SmartDeviceLink/SDLRPCNotification.m @@ -9,16 +9,25 @@ NS_ASSUME_NONNULL_BEGIN +@interface SDLRPCMessage () + +@property (strong, nonatomic, readwrite) NSString *messageType; +@property (strong, nonatomic) NSMutableDictionary *function; + +@end + @implementation SDLRPCNotification +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" - (instancetype)initWithName:(NSString *)name { self = [super initWithName:name]; if (!self) { return nil; } - messageType = SDLRPCParameterNameNotification; - [store setObject:function forKey:messageType]; + self.messageType = SDLRPCParameterNameNotification; + [self.store setObject:self.function forKey:self.messageType]; return self; } @@ -29,11 +38,12 @@ - (instancetype)initWithDictionary:(NSDictionary *)dict { return nil; } - messageType = SDLRPCParameterNameNotification; - [store setObject:function forKey:messageType]; + self.messageType = SDLRPCParameterNameNotification; + [self.store setObject:self.function forKey:self.messageType]; return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLRPCRequest.m b/SmartDeviceLink/SDLRPCRequest.m index 7c3a7c618..1ce2186c1 100644 --- a/SmartDeviceLink/SDLRPCRequest.m +++ b/SmartDeviceLink/SDLRPCRequest.m @@ -9,15 +9,21 @@ NS_ASSUME_NONNULL_BEGIN +@interface SDLRPCMessage () + +@property (strong, nonatomic) NSMutableDictionary *function; + +@end + @implementation SDLRPCRequest - (NSNumber *)correlationID { NSError *error = nil; - return [function sdl_objectForName:SDLRPCParameterNameCorrelationId ofClass:NSNumber.class error:&error]; + return [self.function sdl_objectForName:SDLRPCParameterNameCorrelationId ofClass:NSNumber.class error:&error]; } - (void)setCorrelationID:(NSNumber *)corrID { - [function sdl_setObject:corrID forName:SDLRPCParameterNameCorrelationId]; + [self.function sdl_setObject:corrID forName:SDLRPCParameterNameCorrelationId]; } @end diff --git a/SmartDeviceLink/SDLRPCResponse.m b/SmartDeviceLink/SDLRPCResponse.m index d288da5c7..c996473e9 100644 --- a/SmartDeviceLink/SDLRPCResponse.m +++ b/SmartDeviceLink/SDLRPCResponse.m @@ -10,16 +10,25 @@ NS_ASSUME_NONNULL_BEGIN +@interface SDLRPCMessage () + +@property (strong, nonatomic, readwrite) NSString *messageType; +@property (strong, nonatomic) NSMutableDictionary *function; + +@end + @implementation SDLRPCResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-implementations" - (instancetype)initWithName:(NSString *)name { self = [super initWithName:name]; if (!self) { return nil; } - messageType = SDLRPCParameterNameResponse; - [store sdl_setObject:function forName:messageType]; + self.messageType = SDLRPCParameterNameResponse; + [self.store sdl_setObject:self.function forName:self.messageType]; return self; } @@ -30,45 +39,46 @@ - (instancetype)initWithDictionary:(NSMutableDictionary *)dict { return nil; } - messageType = SDLRPCParameterNameResponse; - [store sdl_setObject:function forName:messageType]; + self.messageType = SDLRPCParameterNameResponse; + [self.store sdl_setObject:self.function forName:self.messageType]; return self; } +#pragma clang diagnostic pop - (NSNumber *)correlationID { NSError *error = nil; - return [function sdl_objectForName:SDLRPCParameterNameCorrelationId ofClass:NSNumber.class error:&error]; + return [self.function sdl_objectForName:SDLRPCParameterNameCorrelationId ofClass:NSNumber.class error:&error]; } - (void)setCorrelationID:(NSNumber *)corrID { - [function sdl_setObject:corrID forName:SDLRPCParameterNameCorrelationId]; + [self.function sdl_setObject:corrID forName:SDLRPCParameterNameCorrelationId]; } - (void)setSuccess:(NSNumber *)success { - [parameters sdl_setObject:success forName:SDLRPCParameterNameSuccess]; + [self.parameters sdl_setObject:success forName:SDLRPCParameterNameSuccess]; } - (NSNumber *)success { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameSuccess ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSuccess ofClass:NSNumber.class error:&error]; } - (void)setResultCode:(SDLResult)resultCode { - [parameters sdl_setObject:resultCode forName:SDLRPCParameterNameResultCode]; + [self.parameters sdl_setObject:resultCode forName:SDLRPCParameterNameResultCode]; } - (SDLResult)resultCode { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameResultCode error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameResultCode error:&error]; } - (void)setInfo:(nullable NSString *)info { - [parameters sdl_setObject:info forName:SDLRPCParameterNameInfo]; + [self.parameters sdl_setObject:info forName:SDLRPCParameterNameInfo]; } - (nullable NSString *)info { - return [parameters sdl_objectForName:SDLRPCParameterNameInfo ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInfo ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLRPCStruct.h b/SmartDeviceLink/SDLRPCStruct.h index 2b05e745c..7813c960b 100644 --- a/SmartDeviceLink/SDLRPCStruct.h +++ b/SmartDeviceLink/SDLRPCStruct.h @@ -8,9 +8,9 @@ NS_ASSUME_NONNULL_BEGIN -@interface SDLRPCStruct : NSObject { - NSMutableDictionary *store; -} +@interface SDLRPCStruct : NSObject + +@property (strong, nonatomic, readonly) NSMutableDictionary *store; /** * Convenience init @@ -18,14 +18,7 @@ NS_ASSUME_NONNULL_BEGIN * @param dict A dictionary * @return A SDLRPCStruct object */ -- (instancetype)initWithDictionary:(NSDictionary *)dict; - -/** - * Init - * - * @return A SDLRPCStruct object - */ -- (instancetype)init; +- (instancetype)initWithDictionary:(NSDictionary *)dict __deprecated_msg("This is not intended for public use"); /** * Converts struct to JSON formatted data @@ -33,7 +26,7 @@ NS_ASSUME_NONNULL_BEGIN * @param version The protocol version * @return JSON formatted data */ -- (NSDictionary *)serializeAsDictionary:(Byte)version; +- (NSDictionary *)serializeAsDictionary:(Byte)version __deprecated_msg("This is not intended for public use"); @end diff --git a/SmartDeviceLink/SDLRPCStruct.m b/SmartDeviceLink/SDLRPCStruct.m index 9fd177e1d..4a634959a 100644 --- a/SmartDeviceLink/SDLRPCStruct.m +++ b/SmartDeviceLink/SDLRPCStruct.m @@ -11,43 +11,49 @@ @implementation SDLRPCStruct -- (id)initWithDictionary:(NSDictionary *)dict { - if (self = [super init]) { - if (dict != nil) { - store = [dict mutableCopy]; - } else { - store = [NSMutableDictionary dictionary]; - } +- (instancetype)initWithDictionary:(NSDictionary *)dict { + self = [super init]; + if (!self) { + return nil; } + + _store = [dict mutableCopy]; + return self; } -- (id)init { - if (self = [super init]) { - store = [NSMutableDictionary dictionary]; +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; } + + _store = [NSMutableDictionary dictionary]; + return self; } - (NSDictionary *)serializeAsDictionary:(Byte)version { if (version >= 2) { - NSString *messageType = store.keyEnumerator.nextObject; - NSMutableDictionary *function = store[messageType]; + NSString *messageType = self.store.keyEnumerator.nextObject; + NSMutableDictionary *function = _store[messageType]; if ([function isKindOfClass:NSMutableDictionary.class]) { NSMutableDictionary *parameters = function[SDLRPCParameterNameParameters]; return [self.class sdl_serializeDictionary:parameters version:version]; } else { - return [self.class sdl_serializeDictionary:store version:version]; + return [self.class sdl_serializeDictionary:self.store version:version]; } } else { - return [self.class sdl_serializeDictionary:store version:version]; + return [self.class sdl_serializeDictionary:self.store version:version]; } } - (NSString *)description { - return [store description]; + return [self.store description]; } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + (NSDictionary *)sdl_serializeDictionary:(NSDictionary *)dict version:(Byte)version { NSMutableDictionary *ret = [NSMutableDictionary dictionaryWithCapacity:dict.count]; for (NSString *key in dict.keyEnumerator) { @@ -74,16 +80,16 @@ - (NSString *)description { } return ret; } +#pragma clang diagnostic pop - (id)copyWithZone:(nullable NSZone *)zone { - SDLRPCStruct *newStruct = [[[self class] allocWithZone:zone] init]; - newStruct->store = [self->store mutableCopy]; + SDLRPCStruct *newStruct = [[[self class] allocWithZone:zone] initWithDictionary:_store]; return newStruct; } - (BOOL)isEqualToRPC:(SDLRPCStruct *)rpc { - return [rpc->store isEqualToDictionary:self->store]; + return [rpc.store isEqualToDictionary:_store]; } - (BOOL)isEqual:(id)object { diff --git a/SmartDeviceLink/SDLRadioControlCapabilities.m b/SmartDeviceLink/SDLRadioControlCapabilities.m index 58b9b7e79..993592296 100644 --- a/SmartDeviceLink/SDLRadioControlCapabilities.m +++ b/SmartDeviceLink/SDLRadioControlCapabilities.m @@ -38,108 +38,108 @@ - (instancetype)initWithModuleName:(NSString *)moduleName radioEnableAvailable:( } - (void)setModuleName:(NSString *)moduleName { - [store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; + [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; } - (NSString *)moduleName { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; } - (void)setRadioEnableAvailable:(nullable NSNumber *)radioEnableAvailable { - [store sdl_setObject:radioEnableAvailable forName:SDLRPCParameterNameRadioEnableAvailable]; + [self.store sdl_setObject:radioEnableAvailable forName:SDLRPCParameterNameRadioEnableAvailable]; } - (nullable NSNumber *)radioEnableAvailable { - return [store sdl_objectForName:SDLRPCParameterNameRadioEnableAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRadioEnableAvailable ofClass:NSNumber.class error:nil]; } - (void)setRadioBandAvailable:(nullable NSNumber *)radioBandAvailable { - [store sdl_setObject:radioBandAvailable forName:SDLRPCParameterNameRadioBandAvailable]; + [self.store sdl_setObject:radioBandAvailable forName:SDLRPCParameterNameRadioBandAvailable]; } - (nullable NSNumber *)radioBandAvailable { - return [store sdl_objectForName:SDLRPCParameterNameRadioBandAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRadioBandAvailable ofClass:NSNumber.class error:nil]; } - (void)setRadioFrequencyAvailable:(nullable NSNumber *)radioFrequencyAvailable { - [store sdl_setObject:radioFrequencyAvailable forName:SDLRPCParameterNameRadioFrequencyAvailable]; + [self.store sdl_setObject:radioFrequencyAvailable forName:SDLRPCParameterNameRadioFrequencyAvailable]; } - (nullable NSNumber *)radioFrequencyAvailable { - return [store sdl_objectForName:SDLRPCParameterNameRadioFrequencyAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRadioFrequencyAvailable ofClass:NSNumber.class error:nil]; } - (void)setHdChannelAvailable:(nullable NSNumber *)hdChannelAvailable { - [store sdl_setObject:hdChannelAvailable forName:SDLRPCParameterNameHDChannelAvailable]; + [self.store sdl_setObject:hdChannelAvailable forName:SDLRPCParameterNameHDChannelAvailable]; } - (nullable NSNumber *)hdChannelAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHDChannelAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHDChannelAvailable ofClass:NSNumber.class error:nil]; } - (void)setRdsDataAvailable:(nullable NSNumber *)rdsDataAvailable { - [store sdl_setObject:rdsDataAvailable forName:SDLRPCParameterNameRDSDataAvailable]; + [self.store sdl_setObject:rdsDataAvailable forName:SDLRPCParameterNameRDSDataAvailable]; } - (nullable NSNumber *)rdsDataAvailable { - return [store sdl_objectForName:SDLRPCParameterNameRDSDataAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRDSDataAvailable ofClass:NSNumber.class error:nil]; } - (void)setAvailableHDsAvailable:(nullable NSNumber *)availableHDsAvailable { - [store sdl_setObject:availableHDsAvailable forName:SDLRPCParameterNameAvailableHDsAvailable]; + [self.store sdl_setObject:availableHDsAvailable forName:SDLRPCParameterNameAvailableHDsAvailable]; } - (nullable NSNumber *)availableHDsAvailable { - return [store sdl_objectForName:SDLRPCParameterNameAvailableHDsAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDsAvailable ofClass:NSNumber.class error:nil]; } - (void)setStateAvailable:(nullable NSNumber *)stateAvailable { - [store sdl_setObject:stateAvailable forName:SDLRPCParameterNameStateAvailable]; + [self.store sdl_setObject:stateAvailable forName:SDLRPCParameterNameStateAvailable]; } - (nullable NSNumber *)stateAvailable { - return [store sdl_objectForName:SDLRPCParameterNameStateAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameStateAvailable ofClass:NSNumber.class error:nil]; } - (void)setSignalStrengthAvailable:(nullable NSNumber *)signalStrengthAvailable { - [store sdl_setObject:signalStrengthAvailable forName:SDLRPCParameterNameSignalStrengthAvailable]; + [self.store sdl_setObject:signalStrengthAvailable forName:SDLRPCParameterNameSignalStrengthAvailable]; } - (nullable NSNumber *)signalStrengthAvailable { - return [store sdl_objectForName:SDLRPCParameterNameSignalStrengthAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSignalStrengthAvailable ofClass:NSNumber.class error:nil]; } - (void)setSignalChangeThresholdAvailable:(nullable NSNumber *)signalChangeThresholdAvailable { - [store sdl_setObject:signalChangeThresholdAvailable forName:SDLRPCParameterNameSignalChangeThresholdAvailable]; + [self.store sdl_setObject:signalChangeThresholdAvailable forName:SDLRPCParameterNameSignalChangeThresholdAvailable]; } - (nullable NSNumber *)signalChangeThresholdAvailable { - return [store sdl_objectForName:SDLRPCParameterNameSignalChangeThresholdAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSignalChangeThresholdAvailable ofClass:NSNumber.class error:nil]; } - (void)setHdRadioEnableAvailable:(nullable NSNumber *)hdRadioEnableAvailable { - [store sdl_setObject:hdRadioEnableAvailable forName:SDLRPCParameterNameHDRadioEnableAvailable]; + [self.store sdl_setObject:hdRadioEnableAvailable forName:SDLRPCParameterNameHDRadioEnableAvailable]; } - (nullable NSNumber *)hdRadioEnableAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHDRadioEnableAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHDRadioEnableAvailable ofClass:NSNumber.class error:nil]; } - (void)setSiriusXMRadioAvailable:(nullable NSNumber *)siriusXMRadioAvailable { - [store sdl_setObject:siriusXMRadioAvailable forName:SDLRPCParameterNameSiriusXMRadioAvailable]; + [self.store sdl_setObject:siriusXMRadioAvailable forName:SDLRPCParameterNameSiriusXMRadioAvailable]; } - (nullable NSNumber *)siriusXMRadioAvailable { - return [store sdl_objectForName:SDLRPCParameterNameSiriusXMRadioAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSiriusXMRadioAvailable ofClass:NSNumber.class error:nil]; } - (void)setSisDataAvailable:(nullable NSNumber *)sisDataAvailable { - [store sdl_setObject:sisDataAvailable forName:SDLRPCParameterNameSISDataAvailable]; + [self.store sdl_setObject:sisDataAvailable forName:SDLRPCParameterNameSISDataAvailable]; } - (nullable NSNumber *)sisDataAvailable { - return [store sdl_objectForName:SDLRPCParameterNameSISDataAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSISDataAvailable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLRadioControlData.m b/SmartDeviceLink/SDLRadioControlData.m index a87bd3367..5ae7deb12 100644 --- a/SmartDeviceLink/SDLRadioControlData.m +++ b/SmartDeviceLink/SDLRadioControlData.m @@ -44,99 +44,99 @@ - (instancetype)initWithFrequencyInteger:(nullable NSNumber *)frequencyI } - (void)setFrequencyInteger:(nullable NSNumber *)frequencyInteger { - [store sdl_setObject:frequencyInteger forName:SDLRPCParameterNameFrequencyInteger]; + [self.store sdl_setObject:frequencyInteger forName:SDLRPCParameterNameFrequencyInteger]; } - (nullable NSNumber *)frequencyInteger { - return [store sdl_objectForName:SDLRPCParameterNameFrequencyInteger ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameFrequencyInteger ofClass:NSNumber.class error:nil]; } - (void)setFrequencyFraction:(nullable NSNumber *)frequencyFraction { - [store sdl_setObject:frequencyFraction forName:SDLRPCParameterNameFrequencyFraction]; + [self.store sdl_setObject:frequencyFraction forName:SDLRPCParameterNameFrequencyFraction]; } - (nullable NSNumber *)frequencyFraction { - return [store sdl_objectForName:SDLRPCParameterNameFrequencyFraction ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameFrequencyFraction ofClass:NSNumber.class error:nil]; } - (void)setBand:(nullable SDLRadioBand)band { - [store sdl_setObject:band forName:SDLRPCParameterNameBand]; + [self.store sdl_setObject:band forName:SDLRPCParameterNameBand]; } - (nullable SDLRadioBand)band{ - return [store sdl_enumForName:SDLRPCParameterNameBand error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameBand error:nil]; } - (void)setRdsData:(nullable SDLRDSData *)rdsData { - [store sdl_setObject:rdsData forName:SDLRPCParameterNameRDSData]; + [self.store sdl_setObject:rdsData forName:SDLRPCParameterNameRDSData]; } - (nullable SDLRDSData *)rdsData { - return [store sdl_objectForName:SDLRPCParameterNameRDSData ofClass:SDLRDSData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRDSData ofClass:SDLRDSData.class error:nil]; } - (void)setAvailableHDs:(nullable NSNumber *)availableHDs { - [store sdl_setObject:availableHDs forName:SDLRPCParameterNameAvailableHDs]; + [self.store sdl_setObject:availableHDs forName:SDLRPCParameterNameAvailableHDs]; } - (nullable NSNumber *)availableHDs { - return [store sdl_objectForName:SDLRPCParameterNameAvailableHDs ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAvailableHDs ofClass:NSNumber.class error:nil]; } - (void)setHdChannel:(nullable NSNumber *)hdChannel { - [store sdl_setObject:hdChannel forName:SDLRPCParameterNameHDChannel]; + [self.store sdl_setObject:hdChannel forName:SDLRPCParameterNameHDChannel]; } - (nullable NSNumber *)hdChannel { - return [store sdl_objectForName:SDLRPCParameterNameHDChannel ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHDChannel ofClass:NSNumber.class error:nil]; } - (void)setSignalStrength:(nullable NSNumber *)signalStrength { - [store sdl_setObject:signalStrength forName:SDLRPCParameterNameSignalStrength]; + [self.store sdl_setObject:signalStrength forName:SDLRPCParameterNameSignalStrength]; } - (nullable NSNumber *)signalStrength { - return [store sdl_objectForName:SDLRPCParameterNameSignalStrength ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSignalStrength ofClass:NSNumber.class error:nil]; } - (void)setSignalChangeThreshold:(nullable NSNumber *)signalChangeThreshold { - [store sdl_setObject:signalChangeThreshold forName:SDLRPCParameterNameSignalChangeThreshold]; + [self.store sdl_setObject:signalChangeThreshold forName:SDLRPCParameterNameSignalChangeThreshold]; } - (nullable NSNumber *)signalChangeThreshold { - return [store sdl_objectForName:SDLRPCParameterNameSignalChangeThreshold ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSignalChangeThreshold ofClass:NSNumber.class error:nil]; } - (void)setRadioEnable:(nullable NSNumber *)radioEnable { - [store sdl_setObject:radioEnable forName:SDLRPCParameterNameRadioEnable]; + [self.store sdl_setObject:radioEnable forName:SDLRPCParameterNameRadioEnable]; } - (nullable NSNumber *)radioEnable { - return [store sdl_objectForName:SDLRPCParameterNameRadioEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRadioEnable ofClass:NSNumber.class error:nil]; } - (void)setState:(nullable SDLRadioState)state { - [store sdl_setObject:state forName:SDLRPCParameterNameState]; + [self.store sdl_setObject:state forName:SDLRPCParameterNameState]; } - (nullable SDLRadioState)state { - return [store sdl_enumForName:SDLRPCParameterNameState error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameState error:nil]; } - (void)setHdRadioEnable:(nullable NSNumber *)hdRadioEnable { - [store sdl_setObject:hdRadioEnable forName:SDLRPCParameterNameHDRadioEnable]; + [self.store sdl_setObject:hdRadioEnable forName:SDLRPCParameterNameHDRadioEnable]; } - (nullable NSNumber *)hdRadioEnable { - return [store sdl_objectForName:SDLRPCParameterNameHDRadioEnable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHDRadioEnable ofClass:NSNumber.class error:nil]; } - (void)setSisData:(nullable SDLSISData *)sisData { - [store sdl_setObject:sisData forName:SDLRPCParameterNameSISData]; + [self.store sdl_setObject:sisData forName:SDLRPCParameterNameSISData]; } - (nullable SDLSISData *)sisData { - return [store sdl_objectForName:SDLRPCParameterNameSISData ofClass:SDLSISData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSISData ofClass:SDLSISData.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLReadDID.m b/SmartDeviceLink/SDLReadDID.m index 01996893a..cf2d276ff 100644 --- a/SmartDeviceLink/SDLReadDID.m +++ b/SmartDeviceLink/SDLReadDID.m @@ -12,11 +12,14 @@ @implementation SDLReadDID +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameReadDID]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithECUName:(UInt16)ecuName didLocation:(NSArray *> *)didLocation { self = [self init]; @@ -31,21 +34,21 @@ - (instancetype)initWithECUName:(UInt16)ecuName didLocation:(NSArray *)ecuName { - [parameters sdl_setObject:ecuName forName:SDLRPCParameterNameECUName]; + [self.parameters sdl_setObject:ecuName forName:SDLRPCParameterNameECUName]; } - (NSNumber *)ecuName { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameECUName ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECUName ofClass:NSNumber.class error:&error]; } - (void)setDidLocation:(NSArray *> *)didLocation { - [parameters sdl_setObject:didLocation forName:SDLRPCParameterNameDIDLocation]; + [self.parameters sdl_setObject:didLocation forName:SDLRPCParameterNameDIDLocation]; } - (NSArray *> *)didLocation { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameDIDLocation ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameDIDLocation ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLReadDIDResponse.m b/SmartDeviceLink/SDLReadDIDResponse.m index 8bf510370..7bad1e43e 100644 --- a/SmartDeviceLink/SDLReadDIDResponse.m +++ b/SmartDeviceLink/SDLReadDIDResponse.m @@ -13,18 +13,21 @@ @implementation SDLReadDIDResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameReadDID]) { } return self; } +#pragma clang diagnostic pop - (void)setDidResult:(nullable NSArray *)didResult { - [parameters sdl_setObject:didResult forName:SDLRPCParameterNameDIDResult]; + [self.parameters sdl_setObject:didResult forName:SDLRPCParameterNameDIDResult]; } - (nullable NSArray *)didResult { - return [parameters sdl_objectsForName:SDLRPCParameterNameDIDResult ofClass:SDLDIDResult.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameDIDResult ofClass:SDLDIDResult.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLRectangle.m b/SmartDeviceLink/SDLRectangle.m index 64a368e13..7e6a8a3c3 100644 --- a/SmartDeviceLink/SDLRectangle.m +++ b/SmartDeviceLink/SDLRectangle.m @@ -29,39 +29,39 @@ - (instancetype)initWithCGRect:(CGRect)rect { } - (void)setX:(NSNumber *)x { - [store sdl_setObject:x forName:SDLRPCParameterNameX]; + [self.store sdl_setObject:x forName:SDLRPCParameterNameX]; } - (NSNumber *)x { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameX ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameX ofClass:NSNumber.class error:&error]; } - (void)setY:(NSNumber *)y { - [store sdl_setObject:y forName:SDLRPCParameterNameY]; + [self.store sdl_setObject:y forName:SDLRPCParameterNameY]; } - (NSNumber *)y { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameY ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameY ofClass:NSNumber.class error:&error]; } - (void)setWidth:(NSNumber *)width { - [store sdl_setObject:width forName:SDLRPCParameterNameWidth]; + [self.store sdl_setObject:width forName:SDLRPCParameterNameWidth]; } - (NSNumber *)width { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameWidth ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameWidth ofClass:NSNumber.class error:&error]; } - (void)setHeight:(NSNumber *)height { - [store sdl_setObject:height forName:SDLRPCParameterNameHeight]; + [self.store sdl_setObject:height forName:SDLRPCParameterNameHeight]; } - (NSNumber *)height { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameHeight ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeight ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLRegisterAppInterface.m b/SmartDeviceLink/SDLRegisterAppInterface.m index 963522619..6a752b641 100644 --- a/SmartDeviceLink/SDLRegisterAppInterface.m +++ b/SmartDeviceLink/SDLRegisterAppInterface.m @@ -23,11 +23,14 @@ @implementation SDLRegisterAppInterface #pragma mark - Lifecycle +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameRegisterAppInterface]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithLifecycleConfiguration:(SDLLifecycleConfiguration *)lifecycleConfiguration { NSArray *allHMITypes = lifecycleConfiguration.additionalAppTypes ? [lifecycleConfiguration.additionalAppTypes arrayByAddingObject:lifecycleConfiguration.appType] : @[lifecycleConfiguration.appType]; @@ -117,136 +120,136 @@ - (instancetype)initWithAppName:(NSString *)appName appId:(NSString *)appId full #pragma mark - Getters and Setters - (void)setSyncMsgVersion:(SDLSyncMsgVersion *)syncMsgVersion { - [parameters sdl_setObject:syncMsgVersion forName:SDLRPCParameterNameSyncMessageVersion]; + [self.parameters sdl_setObject:syncMsgVersion forName:SDLRPCParameterNameSyncMessageVersion]; } - (SDLSyncMsgVersion *)syncMsgVersion { - return [parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLSyncMsgVersion.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLSyncMsgVersion.class error:nil]; } - (void)setAppName:(NSString *)appName { - [parameters sdl_setObject:appName forName:SDLRPCParameterNameAppName]; + [self.parameters sdl_setObject:appName forName:SDLRPCParameterNameAppName]; } - (NSString *)appName { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameAppName ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAppName ofClass:NSString.class error:&error]; } - (void)setTtsName:(nullable NSArray *)ttsName { - [parameters sdl_setObject:ttsName forName:SDLRPCParameterNameTTSName]; + [self.parameters sdl_setObject:ttsName forName:SDLRPCParameterNameTTSName]; } - (nullable NSArray *)ttsName { - return [parameters sdl_objectsForName:SDLRPCParameterNameTTSName ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSName ofClass:SDLTTSChunk.class error:nil]; } - (void)setNgnMediaScreenAppName:(nullable NSString *)ngnMediaScreenAppName { - [parameters sdl_setObject:ngnMediaScreenAppName forName:SDLRPCParameterNameNGNMediaScreenAppName]; + [self.parameters sdl_setObject:ngnMediaScreenAppName forName:SDLRPCParameterNameNGNMediaScreenAppName]; } - (nullable NSString *)ngnMediaScreenAppName { - return [parameters sdl_objectForName:SDLRPCParameterNameNGNMediaScreenAppName ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameNGNMediaScreenAppName ofClass:NSString.class error:nil]; } - (void)setVrSynonyms:(nullable NSArray *)vrSynonyms { - [parameters sdl_setObject:vrSynonyms forName:SDLRPCParameterNameVRSynonyms]; + [self.parameters sdl_setObject:vrSynonyms forName:SDLRPCParameterNameVRSynonyms]; } - (nullable NSArray *)vrSynonyms { - return [parameters sdl_objectsForName:SDLRPCParameterNameVRSynonyms ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRSynonyms ofClass:NSString.class error:nil]; } - (void)setIsMediaApplication:(NSNumber *)isMediaApplication { - [parameters sdl_setObject:isMediaApplication forName:SDLRPCParameterNameIsMediaApplication]; + [self.parameters sdl_setObject:isMediaApplication forName:SDLRPCParameterNameIsMediaApplication]; } - (NSNumber *)isMediaApplication { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameIsMediaApplication ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameIsMediaApplication ofClass:NSNumber.class error:&error]; } - (void)setLanguageDesired:(SDLLanguage)languageDesired { - [parameters sdl_setObject:languageDesired forName:SDLRPCParameterNameLanguageDesired]; + [self.parameters sdl_setObject:languageDesired forName:SDLRPCParameterNameLanguageDesired]; } - (SDLLanguage)languageDesired { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameLanguageDesired error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameLanguageDesired error:&error]; } - (void)setHmiDisplayLanguageDesired:(SDLLanguage)hmiDisplayLanguageDesired { - [parameters sdl_setObject:hmiDisplayLanguageDesired forName:SDLRPCParameterNameHMIDisplayLanguageDesired]; + [self.parameters sdl_setObject:hmiDisplayLanguageDesired forName:SDLRPCParameterNameHMIDisplayLanguageDesired]; } - (SDLLanguage)hmiDisplayLanguageDesired { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguageDesired error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguageDesired error:&error]; } - (void)setAppHMIType:(nullable NSArray *)appHMIType { - [parameters sdl_setObject:appHMIType forName:SDLRPCParameterNameAppHMIType]; + [self.parameters sdl_setObject:appHMIType forName:SDLRPCParameterNameAppHMIType]; } - (nullable NSArray *)appHMIType { - return [parameters sdl_enumsForName:SDLRPCParameterNameAppHMIType error:nil]; + return [self.parameters sdl_enumsForName:SDLRPCParameterNameAppHMIType error:nil]; } - (void)setHashID:(nullable NSString *)hashID { - [parameters sdl_setObject:hashID forName:SDLRPCParameterNameHashId]; + [self.parameters sdl_setObject:hashID forName:SDLRPCParameterNameHashId]; } - (nullable NSString *)hashID { - return [parameters sdl_objectForName:SDLRPCParameterNameHashId ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHashId ofClass:NSString.class error:nil]; } - (void)setDeviceInfo:(nullable SDLDeviceInfo *)deviceInfo { - [parameters sdl_setObject:deviceInfo forName:SDLRPCParameterNameDeviceInfo]; + [self.parameters sdl_setObject:deviceInfo forName:SDLRPCParameterNameDeviceInfo]; } - (nullable SDLDeviceInfo *)deviceInfo { - return [parameters sdl_objectForName:SDLRPCParameterNameDeviceInfo ofClass:SDLDeviceInfo.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceInfo ofClass:SDLDeviceInfo.class error:nil]; } - (void)setAppID:(NSString *)appID { - [parameters sdl_setObject:appID forName:SDLRPCParameterNameAppId]; + [self.parameters sdl_setObject:appID forName:SDLRPCParameterNameAppId]; } - (NSString *)appID { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameAppId ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAppId ofClass:NSString.class error:&error]; } - (void)setFullAppID:(nullable NSString *)fullAppID { - [parameters sdl_setObject:fullAppID forName:SDLRPCParameterNameFullAppID]; + [self.parameters sdl_setObject:fullAppID forName:SDLRPCParameterNameFullAppID]; } - (nullable NSString *)fullAppID { - return [parameters sdl_objectForName:SDLRPCParameterNameFullAppID ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFullAppID ofClass:NSString.class error:nil]; } - (void)setAppInfo:(nullable SDLAppInfo *)appInfo { - [parameters sdl_setObject:appInfo forName:SDLRPCParameterNameAppInfo]; + [self.parameters sdl_setObject:appInfo forName:SDLRPCParameterNameAppInfo]; } - (nullable SDLAppInfo *)appInfo { - return [parameters sdl_objectForName:SDLRPCParameterNameAppInfo ofClass:SDLAppInfo.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAppInfo ofClass:SDLAppInfo.class error:nil]; } - (void)setDayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme { - [parameters sdl_setObject:dayColorScheme forName:SDLRPCParameterNameDayColorScheme]; + [self.parameters sdl_setObject:dayColorScheme forName:SDLRPCParameterNameDayColorScheme]; } - (nullable SDLTemplateColorScheme *)dayColorScheme { - return [parameters sdl_objectForName:SDLRPCParameterNameDayColorScheme ofClass:SDLTemplateColorScheme.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDayColorScheme ofClass:SDLTemplateColorScheme.class error:nil]; } - (void)setNightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme { - [parameters sdl_setObject:nightColorScheme forName:SDLRPCParameterNameNightColorScheme]; + [self.parameters sdl_setObject:nightColorScheme forName:SDLRPCParameterNameNightColorScheme]; } - (nullable SDLTemplateColorScheme *)nightColorScheme { - return [parameters sdl_objectForName:SDLRPCParameterNameNightColorScheme ofClass:SDLTemplateColorScheme.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameNightColorScheme ofClass:SDLTemplateColorScheme.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m index d91d0dfb0..146491185 100644 --- a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m +++ b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m @@ -21,162 +21,165 @@ @implementation SDLRegisterAppInterfaceResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameRegisterAppInterface]) { } return self; } +#pragma clang diagnostic pop - (void)setSyncMsgVersion:(nullable SDLSyncMsgVersion *)syncMsgVersion { - [parameters sdl_setObject:syncMsgVersion forName:SDLRPCParameterNameSyncMessageVersion]; + [self.parameters sdl_setObject:syncMsgVersion forName:SDLRPCParameterNameSyncMessageVersion]; } - (nullable SDLSyncMsgVersion *)syncMsgVersion { - return [parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLSyncMsgVersion.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncMessageVersion ofClass:SDLSyncMsgVersion.class error:nil]; } - (void)setLanguage:(nullable SDLLanguage)language { - [parameters sdl_setObject:language forName:SDLRPCParameterNameLanguage]; + [self.parameters sdl_setObject:language forName:SDLRPCParameterNameLanguage]; } - (nullable SDLLanguage)language { - return [parameters sdl_enumForName:SDLRPCParameterNameLanguage error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameLanguage error:nil]; } - (void)setHmiDisplayLanguage:(nullable SDLLanguage)hmiDisplayLanguage { - [parameters sdl_setObject:hmiDisplayLanguage forName:SDLRPCParameterNameHMIDisplayLanguage]; + [self.parameters sdl_setObject:hmiDisplayLanguage forName:SDLRPCParameterNameHMIDisplayLanguage]; } - (nullable SDLLanguage)hmiDisplayLanguage { - return [parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguage error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameHMIDisplayLanguage error:nil]; } - (void)setDisplayCapabilities:(nullable SDLDisplayCapabilities *)displayCapabilities { - [parameters sdl_setObject:displayCapabilities forName:SDLRPCParameterNameDisplayCapabilities]; + [self.parameters sdl_setObject:displayCapabilities forName:SDLRPCParameterNameDisplayCapabilities]; } - (nullable SDLDisplayCapabilities *)displayCapabilities { - return [parameters sdl_objectForName:SDLRPCParameterNameDisplayCapabilities ofClass:SDLDisplayCapabilities.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDisplayCapabilities ofClass:SDLDisplayCapabilities.class error:nil]; } - (void)setButtonCapabilities:(nullable NSArray *)buttonCapabilities { - [parameters sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities]; + [self.parameters sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities]; } - (nullable NSArray *)buttonCapabilities { - return [parameters sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil]; } - (void)setSoftButtonCapabilities:(nullable NSArray *)softButtonCapabilities { - [parameters sdl_setObject:softButtonCapabilities forName:SDLRPCParameterNameSoftButtonCapabilities]; + [self.parameters sdl_setObject:softButtonCapabilities forName:SDLRPCParameterNameSoftButtonCapabilities]; } - (nullable NSArray *)softButtonCapabilities { - return [parameters sdl_objectsForName:SDLRPCParameterNameSoftButtonCapabilities ofClass:SDLSoftButtonCapabilities.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtonCapabilities ofClass:SDLSoftButtonCapabilities.class error:nil]; } - (void)setPresetBankCapabilities:(nullable SDLPresetBankCapabilities *)presetBankCapabilities { - [parameters sdl_setObject:presetBankCapabilities forName:SDLRPCParameterNamePresetBankCapabilities]; + [self.parameters sdl_setObject:presetBankCapabilities forName:SDLRPCParameterNamePresetBankCapabilities]; } - (nullable SDLPresetBankCapabilities *)presetBankCapabilities { - return [parameters sdl_objectForName:SDLRPCParameterNamePresetBankCapabilities ofClass:SDLPresetBankCapabilities.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePresetBankCapabilities ofClass:SDLPresetBankCapabilities.class error:nil]; } - (void)setHmiZoneCapabilities:(nullable NSArray *)hmiZoneCapabilities { - [parameters sdl_setObject:hmiZoneCapabilities forName:SDLRPCParameterNameHMIZoneCapabilities]; + [self.parameters sdl_setObject:hmiZoneCapabilities forName:SDLRPCParameterNameHMIZoneCapabilities]; } - (nullable NSArray *)hmiZoneCapabilities { - return [parameters sdl_enumsForName:SDLRPCParameterNameHMIZoneCapabilities error:nil]; + return [self.parameters sdl_enumsForName:SDLRPCParameterNameHMIZoneCapabilities error:nil]; } - (void)setSpeechCapabilities:(nullable NSArray *)speechCapabilities { - [parameters sdl_setObject:speechCapabilities forName:SDLRPCParameterNameSpeechCapabilities]; + [self.parameters sdl_setObject:speechCapabilities forName:SDLRPCParameterNameSpeechCapabilities]; } - (nullable NSArray *)speechCapabilities { - return [parameters sdl_enumsForName:SDLRPCParameterNameSpeechCapabilities error:nil]; + return [self.parameters sdl_enumsForName:SDLRPCParameterNameSpeechCapabilities error:nil]; } - (void)setPrerecordedSpeech:(nullable NSArray *)prerecordedSpeech { - [parameters sdl_setObject:prerecordedSpeech forName:SDLRPCParameterNamePrerecordedSpeech]; + [self.parameters sdl_setObject:prerecordedSpeech forName:SDLRPCParameterNamePrerecordedSpeech]; } - (nullable NSArray *)prerecordedSpeech { - return [parameters sdl_enumsForName:SDLRPCParameterNamePrerecordedSpeech error:nil]; + return [self.parameters sdl_enumsForName:SDLRPCParameterNamePrerecordedSpeech error:nil]; } - (void)setVrCapabilities:(nullable NSArray *)vrCapabilities { - [parameters sdl_setObject:vrCapabilities forName:SDLRPCParameterNameVRCapabilities]; + [self.parameters sdl_setObject:vrCapabilities forName:SDLRPCParameterNameVRCapabilities]; } - (nullable NSArray *)vrCapabilities { - return [parameters sdl_enumsForName:SDLRPCParameterNameVRCapabilities error:nil]; + return [self.parameters sdl_enumsForName:SDLRPCParameterNameVRCapabilities error:nil]; } - (void)setAudioPassThruCapabilities:(nullable NSArray *)audioPassThruCapabilities { - [parameters sdl_setObject:audioPassThruCapabilities forName:SDLRPCParameterNameAudioPassThruCapabilities]; + [self.parameters sdl_setObject:audioPassThruCapabilities forName:SDLRPCParameterNameAudioPassThruCapabilities]; } - (nullable NSArray *)audioPassThruCapabilities { - return [parameters sdl_objectsForName:SDLRPCParameterNameAudioPassThruCapabilities ofClass:SDLAudioPassThruCapabilities.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameAudioPassThruCapabilities ofClass:SDLAudioPassThruCapabilities.class error:nil]; } - (void)setPcmStreamCapabilities:(nullable SDLAudioPassThruCapabilities *)pcmStreamCapabilities { - [parameters sdl_setObject:pcmStreamCapabilities forName:SDLRPCParameterNamePCMStreamCapabilities]; + [self.parameters sdl_setObject:pcmStreamCapabilities forName:SDLRPCParameterNamePCMStreamCapabilities]; } - (nullable SDLAudioPassThruCapabilities *)pcmStreamCapabilities { - return [parameters sdl_objectForName:SDLRPCParameterNamePCMStreamCapabilities ofClass:SDLAudioPassThruCapabilities.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePCMStreamCapabilities ofClass:SDLAudioPassThruCapabilities.class error:nil]; } - (void)setVehicleType:(nullable SDLVehicleType *)vehicleType { - [parameters sdl_setObject:vehicleType forName:SDLRPCParameterNameVehicleType]; + [self.parameters sdl_setObject:vehicleType forName:SDLRPCParameterNameVehicleType]; } - (nullable SDLVehicleType *)vehicleType { - return [parameters sdl_objectForName:SDLRPCParameterNameVehicleType ofClass:SDLVehicleType.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameVehicleType ofClass:SDLVehicleType.class error:nil]; } - (void)setSupportedDiagModes:(nullable NSArray *> *)supportedDiagModes { - [parameters sdl_setObject:supportedDiagModes forName:SDLRPCParameterNameSupportedDiagnosticModes]; + [self.parameters sdl_setObject:supportedDiagModes forName:SDLRPCParameterNameSupportedDiagnosticModes]; } - (nullable NSArray *> *)supportedDiagModes { - return [parameters sdl_objectsForName:SDLRPCParameterNameSupportedDiagnosticModes ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSupportedDiagnosticModes ofClass:NSNumber.class error:nil]; } - (void)setHmiCapabilities:(nullable SDLHMICapabilities *)hmiCapabilities { - [parameters sdl_setObject:hmiCapabilities forName:SDLRPCParameterNameHMICapabilities]; + [self.parameters sdl_setObject:hmiCapabilities forName:SDLRPCParameterNameHMICapabilities]; } - (nullable SDLHMICapabilities *)hmiCapabilities { - return [parameters sdl_objectForName:SDLRPCParameterNameHMICapabilities ofClass:SDLHMICapabilities.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHMICapabilities ofClass:SDLHMICapabilities.class error:nil]; } - (void)setSdlVersion:(nullable NSString *)sdlVersion { - [parameters sdl_setObject:sdlVersion forName:SDLRPCParameterNameSDLVersion]; + [self.parameters sdl_setObject:sdlVersion forName:SDLRPCParameterNameSDLVersion]; } - (nullable NSString *)sdlVersion { - return [parameters sdl_objectForName:SDLRPCParameterNameSDLVersion ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSDLVersion ofClass:NSString.class error:nil]; } - (void)setSystemSoftwareVersion:(nullable NSString *)systemSoftwareVersion { - [parameters sdl_setObject:systemSoftwareVersion forName:SDLRPCParameterNameSystemSoftwareVersion]; + [self.parameters sdl_setObject:systemSoftwareVersion forName:SDLRPCParameterNameSystemSoftwareVersion]; } - (nullable NSString *)systemSoftwareVersion { - return [parameters sdl_objectForName:SDLRPCParameterNameSystemSoftwareVersion ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSystemSoftwareVersion ofClass:NSString.class error:nil]; } - (void)setIconResumed:(nullable NSNumber *)iconResumed { - [parameters sdl_setObject:iconResumed forName:SDLRPCParameterNameIconResumed]; + [self.parameters sdl_setObject:iconResumed forName:SDLRPCParameterNameIconResumed]; } - (nullable NSNumber *)iconResumed { - return [parameters sdl_objectForName:SDLRPCParameterNameIconResumed ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameIconResumed ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLRemoteControlCapabilities.m b/SmartDeviceLink/SDLRemoteControlCapabilities.m index f1620af10..80a1b3f4e 100644 --- a/SmartDeviceLink/SDLRemoteControlCapabilities.m +++ b/SmartDeviceLink/SDLRemoteControlCapabilities.m @@ -40,59 +40,59 @@ - (instancetype)initWithClimateControlCapabilities:(nullable NSArray *)climateControlCapabilities { - [store sdl_setObject:climateControlCapabilities forName:SDLRPCParameterNameClimateControlCapabilities]; + [self.store sdl_setObject:climateControlCapabilities forName:SDLRPCParameterNameClimateControlCapabilities]; } - (nullable NSArray *)climateControlCapabilities { - return [store sdl_objectsForName:SDLRPCParameterNameClimateControlCapabilities ofClass:SDLClimateControlCapabilities.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameClimateControlCapabilities ofClass:SDLClimateControlCapabilities.class error:nil]; } -(void)setRadioControlCapabilities:(nullable NSArray *)radioControlCapabilities { - [store sdl_setObject:radioControlCapabilities forName:SDLRPCParameterNameRadioControlCapabilities ]; + [self.store sdl_setObject:radioControlCapabilities forName:SDLRPCParameterNameRadioControlCapabilities ]; } - (nullable NSArray *)radioControlCapabilities { - return [store sdl_objectsForName:SDLRPCParameterNameRadioControlCapabilities ofClass:SDLRadioControlCapabilities.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameRadioControlCapabilities ofClass:SDLRadioControlCapabilities.class error:nil]; } - (void)setButtonCapabilities:(nullable NSArray *)buttonCapabilities { - [store sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities];} + [self.store sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities];} - (nullable NSArray *)buttonCapabilities { - return [store sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil]; } - (void)setSeatControlCapabilities:(nullable NSArray *)seatControlCapabilities { - [store sdl_setObject:seatControlCapabilities forName:SDLRPCParameterNameSeatControlCapabilities]; + [self.store sdl_setObject:seatControlCapabilities forName:SDLRPCParameterNameSeatControlCapabilities]; } - (nullable NSArray *)seatControlCapabilities { - return [store sdl_objectsForName:SDLRPCParameterNameSeatControlCapabilities ofClass:SDLSeatControlCapabilities.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameSeatControlCapabilities ofClass:SDLSeatControlCapabilities.class error:nil]; } - (void)setAudioControlCapabilities:(nullable NSArray *)audioControlCapabilities { - [store sdl_setObject:audioControlCapabilities forName:SDLRPCParameterNameAudioControlCapabilities]; + [self.store sdl_setObject:audioControlCapabilities forName:SDLRPCParameterNameAudioControlCapabilities]; } - (nullable NSArray *)audioControlCapabilities { - return [store sdl_objectsForName:SDLRPCParameterNameAudioControlCapabilities ofClass:SDLAudioControlCapabilities.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameAudioControlCapabilities ofClass:SDLAudioControlCapabilities.class error:nil]; } - (void)setHmiSettingsControlCapabilities:(nullable NSArray *)hmiSettingsControlCapabilities { - [store sdl_setObject:hmiSettingsControlCapabilities forName:SDLRPCParameterNameHmiSettingsControlCapabilities]; + [self.store sdl_setObject:hmiSettingsControlCapabilities forName:SDLRPCParameterNameHmiSettingsControlCapabilities]; } - (nullable NSArray *)hmiSettingsControlCapabilities { - return [store sdl_objectsForName:SDLRPCParameterNameHmiSettingsControlCapabilities ofClass:SDLHMISettingsControlCapabilities.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameHmiSettingsControlCapabilities ofClass:SDLHMISettingsControlCapabilities.class error:nil]; } - (void)setLightControlCapabilities:(nullable NSArray *)lightControlCapabilities { - [store sdl_setObject:lightControlCapabilities forName:SDLRPCParameterNameLightControlCapabilities]; + [self.store sdl_setObject:lightControlCapabilities forName:SDLRPCParameterNameLightControlCapabilities]; } - (nullable NSArray *)lightControlCapabilities { - return [store sdl_objectsForName:SDLRPCParameterNameLightControlCapabilities ofClass:SDLLightControlCapabilities.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameLightControlCapabilities ofClass:SDLLightControlCapabilities.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLResetGlobalProperties.m b/SmartDeviceLink/SDLResetGlobalProperties.m index 331f560bd..8b60852f9 100644 --- a/SmartDeviceLink/SDLResetGlobalProperties.m +++ b/SmartDeviceLink/SDLResetGlobalProperties.m @@ -13,11 +13,14 @@ @implementation SDLResetGlobalProperties +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameResetGlobalProperties]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithProperties:(NSArray *)properties { self = [self init]; @@ -31,12 +34,12 @@ - (instancetype)initWithProperties:(NSArray *)properties { } - (void)setProperties:(NSArray *)properties { - [parameters sdl_setObject:properties forName:SDLRPCParameterNameProperties]; + [self.parameters sdl_setObject:properties forName:SDLRPCParameterNameProperties]; } - (NSArray *)properties { NSError *error = nil; - return [parameters sdl_enumsForName:SDLRPCParameterNameProperties error:&error]; + return [self.parameters sdl_enumsForName:SDLRPCParameterNameProperties error:&error]; } @end diff --git a/SmartDeviceLink/SDLResetGlobalPropertiesResponse.m b/SmartDeviceLink/SDLResetGlobalPropertiesResponse.m index 65bde4093..974b5efa9 100644 --- a/SmartDeviceLink/SDLResetGlobalPropertiesResponse.m +++ b/SmartDeviceLink/SDLResetGlobalPropertiesResponse.m @@ -12,11 +12,14 @@ @implementation SDLResetGlobalPropertiesResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameResetGlobalProperties]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSISData.m b/SmartDeviceLink/SDLSISData.m index f7589afd9..c0ff47cbf 100644 --- a/SmartDeviceLink/SDLSISData.m +++ b/SmartDeviceLink/SDLSISData.m @@ -28,43 +28,43 @@ - (instancetype)initWithStationShortName:(nullable NSString *)stationShortName s } - (void)setStationShortName:(nullable NSString *)stationShortName { - [store sdl_setObject:stationShortName forName:SDLRPCParameterNameStationShortName]; + [self.store sdl_setObject:stationShortName forName:SDLRPCParameterNameStationShortName]; } - (nullable NSString *)stationShortName { - return [store sdl_objectForName:SDLRPCParameterNameStationShortName ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameStationShortName ofClass:NSString.class error:nil]; } - (void)setStationIDNumber:(nullable SDLStationIDNumber *)stationIDNumber { - [store sdl_setObject:stationIDNumber forName:SDLRPCParameterNameStationIDNumber]; + [self.store sdl_setObject:stationIDNumber forName:SDLRPCParameterNameStationIDNumber]; } - (nullable SDLStationIDNumber *)stationIDNumber { - return [store sdl_objectForName:SDLRPCParameterNameStationIDNumber ofClass:SDLStationIDNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameStationIDNumber ofClass:SDLStationIDNumber.class error:nil]; } - (void)setStationLongName:(nullable NSString *)stationLongName { - [store sdl_setObject:stationLongName forName:SDLRPCParameterNameStationLongName]; + [self.store sdl_setObject:stationLongName forName:SDLRPCParameterNameStationLongName]; } - (nullable NSString *)stationLongName { - return [store sdl_objectForName:SDLRPCParameterNameStationLongName ofClass:NSString.class error:nil];; + return [self.store sdl_objectForName:SDLRPCParameterNameStationLongName ofClass:NSString.class error:nil];; } - (void)setStationLocation:(nullable SDLGPSData *)stationLocation { - [store sdl_setObject:stationLocation forName:SDLRPCParameterNameStationLocation]; + [self.store sdl_setObject:stationLocation forName:SDLRPCParameterNameStationLocation]; } - (nullable SDLGPSData *)stationLocation { - return [store sdl_objectForName:SDLRPCParameterNameStationLocation ofClass:SDLGPSData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameStationLocation ofClass:SDLGPSData.class error:nil]; } - (void)setStationMessage:(nullable NSString *)stationMessage { - [store sdl_setObject:stationMessage forName:SDLRPCParameterNameStationMessage]; + [self.store sdl_setObject:stationMessage forName:SDLRPCParameterNameStationMessage]; } - (nullable NSString *)stationMessage { - return [store sdl_objectForName:SDLRPCParameterNameStationMessage ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameStationMessage ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLScreenManager.h b/SmartDeviceLink/SDLScreenManager.h index 34764b05d..1bdb67db4 100644 --- a/SmartDeviceLink/SDLScreenManager.h +++ b/SmartDeviceLink/SDLScreenManager.h @@ -11,6 +11,7 @@ #import "SDLInteractionMode.h" #import "SDLMetadataType.h" #import "SDLTextAlignment.h" +#import "SDLMenuManagerConstants.h" @class SDLArtwork; @class SDLChoiceCell; @@ -119,6 +120,17 @@ typedef void(^SDLPreloadChoiceCompletionHandler)(NSError *__nullable error); */ @property (copy, nonatomic) NSArray *menu; +/** +Change the mode of the dynamic menu updater to be enabled, disabled, or enabled on known compatible head units. + +The current status for dynamic menu updates. A dynamic menu update allows for smarter building of menu changes. If this status is set to `SDLDynamicMenuUpdatesModeForceOn`, menu updates will only create add commands for new items and delete commands for items no longer appearing in the menu. This helps reduce possible RPCs failures as there will be significantly less commands sent to the HMI. + +If set to `SDLDynamicMenuUpdatesModeForceOff`, menu updates will work the legacy way. This means when a new menu is set the entire old menu is deleted and add commands are created for every item regarldess if the item appears in both the old and new menu. This method is RPCs heavy and may cause some failures when creating and updating large menus. + + We recommend using either `SDLDynamicMenuUpdatesModeOnWithCompatibility` or `SDLDynamicMenuUpdatesModeForceOn`. `SDLDynamicMenuUpdatesModeOnWithCompatibility` turns dynamic updates off for head units that we know have poor compatibility with dynamic updates (e.g. they have bugs that cause menu items to not be placed correctly). + */ +@property (assign, nonatomic) SDLDynamicMenuUpdatesMode dynamicMenuUpdatesMode; + /** The current list of voice commands available for the user to speak and be recognized by the IVI's voice recognition engine. */ diff --git a/SmartDeviceLink/SDLScreenManager.m b/SmartDeviceLink/SDLScreenManager.m index bfd8c9b71..f93ac21a1 100644 --- a/SmartDeviceLink/SDLScreenManager.m +++ b/SmartDeviceLink/SDLScreenManager.m @@ -7,7 +7,6 @@ // #import "SDLScreenManager.h" - #import "SDLArtwork.h" #import "SDLChoiceSetManager.h" #import "SDLMenuManager.h" @@ -143,6 +142,10 @@ - (void)setKeyboardConfiguration:(nullable SDLKeyboardProperties *)keyboardConfi self.choiceSetManager.keyboardConfiguration = keyboardConfiguration; } +- (void)setDynamicMenuUpdatesMode:(SDLDynamicMenuUpdatesMode)dynamicMenuUpdatesMode { + self.menuManager.dynamicMenuUpdatesMode = dynamicMenuUpdatesMode; +} + #pragma mark - Getters - (nullable NSString *)textField1 { @@ -237,7 +240,6 @@ - (void)endUpdatesWithCompletionHandler:(nullable SDLScreenManagerUpdateCompleti self.textAndGraphicManager.batchUpdates = NO; [self.textAndGraphicManager updateWithCompletionHandler:handler]; - [self.softButtonManager updateWithCompletionHandler:handler]; } #pragma mark - Choice Sets diff --git a/SmartDeviceLink/SDLScreenParams.m b/SmartDeviceLink/SDLScreenParams.m index 039f054e8..5a99d0aea 100644 --- a/SmartDeviceLink/SDLScreenParams.m +++ b/SmartDeviceLink/SDLScreenParams.m @@ -13,20 +13,20 @@ @implementation SDLScreenParams - (void)setResolution:(SDLImageResolution *)resolution { - [store sdl_setObject:resolution forName:SDLRPCParameterNameResolution]; + [self.store sdl_setObject:resolution forName:SDLRPCParameterNameResolution]; } - (SDLImageResolution *)resolution { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameResolution ofClass:SDLImageResolution.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameResolution ofClass:SDLImageResolution.class error:&error]; } - (void)setTouchEventAvailable:(nullable SDLTouchEventCapabilities *)touchEventAvailable { - [store sdl_setObject:touchEventAvailable forName:SDLRPCParameterNameTouchEventAvailable]; + [self.store sdl_setObject:touchEventAvailable forName:SDLRPCParameterNameTouchEventAvailable]; } - (nullable SDLTouchEventCapabilities *)touchEventAvailable { - return [store sdl_objectForName:SDLRPCParameterNameTouchEventAvailable ofClass:SDLTouchEventCapabilities.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTouchEventAvailable ofClass:SDLTouchEventCapabilities.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLScrollableMessage.m b/SmartDeviceLink/SDLScrollableMessage.m index 034190e34..774ccb996 100644 --- a/SmartDeviceLink/SDLScrollableMessage.m +++ b/SmartDeviceLink/SDLScrollableMessage.m @@ -13,11 +13,14 @@ @implementation SDLScrollableMessage +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameScrollableMessage]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithMessage:(NSString *)message timeout:(UInt16)timeout softButtons:(nullable NSArray *)softButtons { self = [self initWithMessage:message]; @@ -43,28 +46,28 @@ - (instancetype)initWithMessage:(NSString *)message { } - (void)setScrollableMessageBody:(NSString *)scrollableMessageBody { - [parameters sdl_setObject:scrollableMessageBody forName:SDLRPCParameterNameScrollableMessageBody]; + [self.parameters sdl_setObject:scrollableMessageBody forName:SDLRPCParameterNameScrollableMessageBody]; } - (NSString *)scrollableMessageBody { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameScrollableMessageBody ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameScrollableMessageBody ofClass:NSString.class error:&error]; } - (void)setTimeout:(nullable NSNumber *)timeout { - [parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout]; + [self.parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout]; } - (nullable NSNumber *)timeout { - return [parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil]; } - (void)setSoftButtons:(nullable NSArray *)softButtons { - [parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; + [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; } - (nullable NSArray *)softButtons { - return [parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLScrollableMessageResponse.m b/SmartDeviceLink/SDLScrollableMessageResponse.m index 4065ca985..df9112711 100644 --- a/SmartDeviceLink/SDLScrollableMessageResponse.m +++ b/SmartDeviceLink/SDLScrollableMessageResponse.m @@ -10,10 +10,13 @@ @implementation SDLScrollableMessageResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameScrollableMessage]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSeatControlCapabilities.m b/SmartDeviceLink/SDLSeatControlCapabilities.m index 0c5a95c58..7aa4c2b5d 100644 --- a/SmartDeviceLink/SDLSeatControlCapabilities.m +++ b/SmartDeviceLink/SDLSeatControlCapabilities.m @@ -44,159 +44,159 @@ - (instancetype)initWithName:(NSString *)moduleName heatingEnabledAvailable:(BOO } - (void)setModuleName:(NSString *)moduleName { - [store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; + [self.store sdl_setObject:moduleName forName:SDLRPCParameterNameModuleName]; } - (NSString *)moduleName { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameModuleName ofClass:NSString.class error:&error]; } - (void)setHeatingEnabledAvailable:(nullable NSNumber *)heatingEnabledAvailable { - [store sdl_setObject:heatingEnabledAvailable forName:SDLRPCParameterNameHeatingEnabledAvailable]; + [self.store sdl_setObject:heatingEnabledAvailable forName:SDLRPCParameterNameHeatingEnabledAvailable]; } - (nullable NSNumber *)heatingEnabledAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHeatingEnabledAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatingEnabledAvailable ofClass:NSNumber.class error:nil]; } - (void)setCoolingEnabledAvailable:(nullable NSNumber *)coolingEnabledAvailable { - [store sdl_setObject:coolingEnabledAvailable forName:SDLRPCParameterNameCoolingEnabledAvailable]; + [self.store sdl_setObject:coolingEnabledAvailable forName:SDLRPCParameterNameCoolingEnabledAvailable]; } - (nullable NSNumber *)coolingEnabledAvailable { - return [store sdl_objectForName:SDLRPCParameterNameCoolingEnabledAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCoolingEnabledAvailable ofClass:NSNumber.class error:nil]; } - (void)setHeatingLevelAvailable:(nullable NSNumber *)heatingLevelAvailable { - [store sdl_setObject:heatingLevelAvailable forName:SDLRPCParameterNameHeatingLevelAvailable]; + [self.store sdl_setObject:heatingLevelAvailable forName:SDLRPCParameterNameHeatingLevelAvailable]; } - (nullable NSNumber *)heatingLevelAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHeatingLevelAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatingLevelAvailable ofClass:NSNumber.class error:nil]; } - (void)setCoolingLevelAvailable:(nullable NSNumber *)coolingLevelAvailable { - [store sdl_setObject:coolingLevelAvailable forName:SDLRPCParameterNameCoolingLevelAvailable]; + [self.store sdl_setObject:coolingLevelAvailable forName:SDLRPCParameterNameCoolingLevelAvailable]; } - (nullable NSNumber *)coolingLevelAvailable { - return [store sdl_objectForName:SDLRPCParameterNameCoolingLevelAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCoolingLevelAvailable ofClass:NSNumber.class error:nil]; } - (void)setHorizontalPositionAvailable:(nullable NSNumber *)horizontalPositionAvailable { - [store sdl_setObject:horizontalPositionAvailable forName:SDLRPCParameterNameHorizontalPositionAvailable]; + [self.store sdl_setObject:horizontalPositionAvailable forName:SDLRPCParameterNameHorizontalPositionAvailable]; } - (nullable NSNumber *)horizontalPositionAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHorizontalPositionAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHorizontalPositionAvailable ofClass:NSNumber.class error:nil]; } - (void)setVerticalPositionAvailable:(nullable NSNumber *)verticalPositionAvailable { - [store sdl_setObject:verticalPositionAvailable forName:SDLRPCParameterNameVerticalPositionAvailable]; + [self.store sdl_setObject:verticalPositionAvailable forName:SDLRPCParameterNameVerticalPositionAvailable]; } - (nullable NSNumber *)verticalPositionAvailable { - return [store sdl_objectForName:SDLRPCParameterNameVerticalPositionAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameVerticalPositionAvailable ofClass:NSNumber.class error:nil]; } - (void)setFrontVerticalPositionAvailable:(nullable NSNumber *)frontVerticalPositionAvailable { - [store sdl_setObject:frontVerticalPositionAvailable forName:SDLRPCParameterNameFrontVerticalPositionAvailable]; + [self.store sdl_setObject:frontVerticalPositionAvailable forName:SDLRPCParameterNameFrontVerticalPositionAvailable]; } - (nullable NSNumber *)frontVerticalPositionAvailable { - return [store sdl_objectForName:SDLRPCParameterNameFrontVerticalPositionAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameFrontVerticalPositionAvailable ofClass:NSNumber.class error:nil]; } - (void)setBackVerticalPositionAvailable:(nullable NSNumber *)backVerticalPositionAvailable { - [store sdl_setObject:backVerticalPositionAvailable forName:SDLRPCParameterNameBackVerticalPositionAvailable]; + [self.store sdl_setObject:backVerticalPositionAvailable forName:SDLRPCParameterNameBackVerticalPositionAvailable]; } - (nullable NSNumber *)backVerticalPositionAvailable { - return [store sdl_objectForName:SDLRPCParameterNameBackVerticalPositionAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameBackVerticalPositionAvailable ofClass:NSNumber.class error:nil]; } - (void)setBackTiltAngleAvailable:(nullable NSNumber *)backTiltAngleAvailable { - [store sdl_setObject:backTiltAngleAvailable forName:SDLRPCParameterNameBackTiltAngleAvailable]; + [self.store sdl_setObject:backTiltAngleAvailable forName:SDLRPCParameterNameBackTiltAngleAvailable]; } - (nullable NSNumber *)backTiltAngleAvailable { - return [store sdl_objectForName:SDLRPCParameterNameBackTiltAngleAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameBackTiltAngleAvailable ofClass:NSNumber.class error:nil]; } - (void)setHeadSupportHorizontalPositionAvailable:(nullable NSNumber *)headSupportHorizontalPositionAvailable { - [store sdl_setObject:headSupportHorizontalPositionAvailable forName:SDLRPCParameterNameHeadSupportHorizontalPositionAvailable]; + [self.store sdl_setObject:headSupportHorizontalPositionAvailable forName:SDLRPCParameterNameHeadSupportHorizontalPositionAvailable]; } - (nullable NSNumber *)headSupportHorizontalPositionAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHeadSupportHorizontalPositionAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportHorizontalPositionAvailable ofClass:NSNumber.class error:nil]; } - (void)setHeadSupportVerticalPositionAvailable:(nullable NSNumber *)headSupportVerticalPositionAvailable { - [store sdl_setObject:headSupportVerticalPositionAvailable forName:SDLRPCParameterNameHeadSupportVerticalPositionAvailable]; + [self.store sdl_setObject:headSupportVerticalPositionAvailable forName:SDLRPCParameterNameHeadSupportVerticalPositionAvailable]; } - (nullable NSNumber *)headSupportVerticalPositionAvailable { - return [store sdl_objectForName:SDLRPCParameterNameHeadSupportVerticalPositionAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportVerticalPositionAvailable ofClass:NSNumber.class error:nil]; } - (void)setMassageEnabledAvailable:(nullable NSNumber *)massageEnabledAvailable { - [store sdl_setObject:massageEnabledAvailable forName:SDLRPCParameterNameMassageEnabledAvailable]; + [self.store sdl_setObject:massageEnabledAvailable forName:SDLRPCParameterNameMassageEnabledAvailable]; } - (nullable NSNumber *)massageEnabledAvailable { - return [store sdl_objectForName:SDLRPCParameterNameMassageEnabledAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMassageEnabledAvailable ofClass:NSNumber.class error:nil]; } - (void)setMassageModeAvailable:(nullable NSNumber *)massageModeAvailable { - [store sdl_setObject:massageModeAvailable forName:SDLRPCParameterNameMassageModeAvailable]; + [self.store sdl_setObject:massageModeAvailable forName:SDLRPCParameterNameMassageModeAvailable]; } - (nullable NSNumber *)massageModeAvailable { - return [store sdl_objectForName:SDLRPCParameterNameMassageModeAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMassageModeAvailable ofClass:NSNumber.class error:nil]; } - (void)setMassageCushionFirmnessAvailable:(nullable NSNumber *)massageCushionFirmnessAvailable { - [store sdl_setObject:massageCushionFirmnessAvailable forName:SDLRPCParameterNameMassageCushionFirmnessAvailable]; + [self.store sdl_setObject:massageCushionFirmnessAvailable forName:SDLRPCParameterNameMassageCushionFirmnessAvailable]; } - (nullable NSNumber *)massageCushionFirmnessAvailable { - return [store sdl_objectForName:SDLRPCParameterNameMassageCushionFirmnessAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMassageCushionFirmnessAvailable ofClass:NSNumber.class error:nil]; } - (void)setMemoryAvailable:(nullable NSNumber *)memoryAvailable { - [store sdl_setObject:memoryAvailable forName:SDLRPCParameterNameMemoryAvailable]; + [self.store sdl_setObject:memoryAvailable forName:SDLRPCParameterNameMemoryAvailable]; } - (nullable NSNumber *)memoryAvailable { - return [store sdl_objectForName:SDLRPCParameterNameMemoryAvailable ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMemoryAvailable ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSeatControlData.m b/SmartDeviceLink/SDLSeatControlData.m index 734c412a7..7fbebb67b 100644 --- a/SmartDeviceLink/SDLSeatControlData.m +++ b/SmartDeviceLink/SDLSeatControlData.m @@ -54,133 +54,133 @@ - (instancetype)initWithId:(SDLSupportedSeat)supportedSeat heatingEnabled:(BOOL) } - (void)setId:(SDLSupportedSeat)id { - [store sdl_setObject:id forName:SDLRPCParameterNameId]; + [self.store sdl_setObject:id forName:SDLRPCParameterNameId]; } - (SDLSupportedSeat)id { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameId error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameId error:&error]; } - (void)setHeatingEnabled:(nullable NSNumber *)heatingEnabled { - [store sdl_setObject:heatingEnabled forName:SDLRPCParameterNameHeatingEnabled]; + [self.store sdl_setObject:heatingEnabled forName:SDLRPCParameterNameHeatingEnabled]; } - (nullable NSNumber *)heatingEnabled { - return [store sdl_objectForName:SDLRPCParameterNameHeatingEnabled ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatingEnabled ofClass:NSNumber.class error:nil]; } - (void)setCoolingEnabled:(nullable NSNumber *)coolingEnabled { - [store sdl_setObject:coolingEnabled forName:SDLRPCParameterNameCoolingEnabled]; + [self.store sdl_setObject:coolingEnabled forName:SDLRPCParameterNameCoolingEnabled]; } - (nullable NSNumber *)coolingEnabled { - return [store sdl_objectForName:SDLRPCParameterNameCoolingEnabled ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCoolingEnabled ofClass:NSNumber.class error:nil]; } - (void)setHeatingLevel:(nullable NSNumber *)heatingLevel { - [store sdl_setObject:heatingLevel forName:SDLRPCParameterNameHeatingLevel]; + [self.store sdl_setObject:heatingLevel forName:SDLRPCParameterNameHeatingLevel]; } - (nullable NSNumber *)heatingLevel { - return [store sdl_objectForName:SDLRPCParameterNameHeatingLevel ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeatingLevel ofClass:NSNumber.class error:nil]; } - (void)setCoolingLevel:(nullable NSNumber *)coolingLevel { - [store sdl_setObject:coolingLevel forName:SDLRPCParameterNameCoolingLevel]; + [self.store sdl_setObject:coolingLevel forName:SDLRPCParameterNameCoolingLevel]; } - (nullable NSNumber *)coolingLevel { - return [store sdl_objectForName:SDLRPCParameterNameCoolingLevel ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCoolingLevel ofClass:NSNumber.class error:nil]; } - (void)setHorizontalPosition:(nullable NSNumber *)horizontalPosition { - [store sdl_setObject:horizontalPosition forName:SDLRPCParameterNameHorizontalPosition]; + [self.store sdl_setObject:horizontalPosition forName:SDLRPCParameterNameHorizontalPosition]; } - (nullable NSNumber *)horizontalPosition { - return [store sdl_objectForName:SDLRPCParameterNameHorizontalPosition ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHorizontalPosition ofClass:NSNumber.class error:nil]; } - (void)setVerticalPosition:(nullable NSNumber *)verticalPosition { - [store sdl_setObject:verticalPosition forName:SDLRPCParameterNameVerticalPosition]; + [self.store sdl_setObject:verticalPosition forName:SDLRPCParameterNameVerticalPosition]; } - (nullable NSNumber *)verticalPosition { - return [store sdl_objectForName:SDLRPCParameterNameVerticalPosition ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameVerticalPosition ofClass:NSNumber.class error:nil]; } - (void)setFrontVerticalPosition:(nullable NSNumber *)frontVerticalPosition { - [store sdl_setObject:frontVerticalPosition forName:SDLRPCParameterNameFrontVerticalPosition]; + [self.store sdl_setObject:frontVerticalPosition forName:SDLRPCParameterNameFrontVerticalPosition]; } - (nullable NSNumber *)frontVerticalPosition { - return [store sdl_objectForName:SDLRPCParameterNameFrontVerticalPosition ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameFrontVerticalPosition ofClass:NSNumber.class error:nil]; } - (void)setBackVerticalPosition:(nullable NSNumber *)backVerticalPosition { - [store sdl_setObject:backVerticalPosition forName:SDLRPCParameterNameBackVerticalPosition]; + [self.store sdl_setObject:backVerticalPosition forName:SDLRPCParameterNameBackVerticalPosition]; } - (nullable NSNumber *)backVerticalPosition { - return [store sdl_objectForName:SDLRPCParameterNameBackVerticalPosition ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameBackVerticalPosition ofClass:NSNumber.class error:nil]; } - (void)setBackTiltAngle:(nullable NSNumber *)backTiltAngle { - [store sdl_setObject:backTiltAngle forName:SDLRPCParameterNameBackTiltAngle]; + [self.store sdl_setObject:backTiltAngle forName:SDLRPCParameterNameBackTiltAngle]; } - (nullable NSNumber *)backTiltAngle { - return [store sdl_objectForName:SDLRPCParameterNameBackTiltAngle ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameBackTiltAngle ofClass:NSNumber.class error:nil]; } - (void)setHeadSupportHorizontalPosition:(nullable NSNumber *)headSupportHorizontalPosition { - [store sdl_setObject:headSupportHorizontalPosition forName:SDLRPCParameterNameHeadSupportHorizontalPosition]; + [self.store sdl_setObject:headSupportHorizontalPosition forName:SDLRPCParameterNameHeadSupportHorizontalPosition]; } - (nullable NSNumber *)headSupportHorizontalPosition { - return [store sdl_objectForName:SDLRPCParameterNameHeadSupportHorizontalPosition ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportHorizontalPosition ofClass:NSNumber.class error:nil]; } -(void)setHeadSupportVerticalPosition:(nullable NSNumber *)headSupportVerticalPosition { - [store sdl_setObject:headSupportVerticalPosition forName:SDLRPCParameterNameHeadSupportVerticalPosition]; + [self.store sdl_setObject:headSupportVerticalPosition forName:SDLRPCParameterNameHeadSupportVerticalPosition]; } - (nullable NSNumber *)headSupportVerticalPosition { - return [store sdl_objectForName:SDLRPCParameterNameHeadSupportVerticalPosition ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHeadSupportVerticalPosition ofClass:NSNumber.class error:nil]; } - (void)setMassageEnabled:(nullable NSNumber *)massageEnabled { - [store sdl_setObject:massageEnabled forName:SDLRPCParameterNameMassageEnabled]; + [self.store sdl_setObject:massageEnabled forName:SDLRPCParameterNameMassageEnabled]; } - (nullable NSNumber *)massageEnabled { - return [store sdl_objectForName:SDLRPCParameterNameMassageEnabled ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMassageEnabled ofClass:NSNumber.class error:nil]; } - (void)setMassageMode:(nullable NSArray *)massageMode { - [store sdl_setObject:massageMode forName:SDLRPCParameterNameMassageMode]; + [self.store sdl_setObject:massageMode forName:SDLRPCParameterNameMassageMode]; } - (nullable NSArray *)massageMode { - return [store sdl_objectsForName:SDLRPCParameterNameMassageMode ofClass:SDLMassageModeData.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameMassageMode ofClass:SDLMassageModeData.class error:nil]; } - (void)setMassageCushionFirmness:(nullable NSArray *)massageCushionFirmness { - [store sdl_setObject:massageCushionFirmness forName:SDLRPCParameterNameMassageCushionFirmness]; + [self.store sdl_setObject:massageCushionFirmness forName:SDLRPCParameterNameMassageCushionFirmness]; } - (nullable NSArray *)massageCushionFirmness { - return [store sdl_objectsForName:SDLRPCParameterNameMassageCushionFirmness ofClass:SDLMassageCushionFirmness.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameMassageCushionFirmness ofClass:SDLMassageCushionFirmness.class error:nil]; } - (void)setMemory:(nullable SDLSeatMemoryAction *)memory { - [store sdl_setObject:memory forName:SDLRPCParameterNameMemory]; + [self.store sdl_setObject:memory forName:SDLRPCParameterNameMemory]; } - (nullable SDLSeatMemoryAction *)memory { - return [store sdl_objectForName:SDLRPCParameterNameMemory ofClass:SDLSeatMemoryAction.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMemory ofClass:SDLSeatMemoryAction.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSeatMemoryAction.m b/SmartDeviceLink/SDLSeatMemoryAction.m index a4144901a..3c2bde049 100644 --- a/SmartDeviceLink/SDLSeatMemoryAction.m +++ b/SmartDeviceLink/SDLSeatMemoryAction.m @@ -32,29 +32,29 @@ - (instancetype)initWithId:(UInt8)id label:(nullable NSString*)label action:(SDL } - (void)setId:(NSNumber *)id { - [store sdl_setObject:id forName:SDLRPCParameterNameId]; + [self.store sdl_setObject:id forName:SDLRPCParameterNameId]; } - (NSNumber *)id { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameId ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameId ofClass:NSNumber.class error:&error]; } - (void)setLabel:(nullable NSString *)label { - [store sdl_setObject:label forName:SDLRPCParameterNameLabel]; + [self.store sdl_setObject:label forName:SDLRPCParameterNameLabel]; } - (nullable NSString *)label { - return [store sdl_objectForName:SDLRPCParameterNameLabel ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameLabel ofClass:NSString.class error:nil]; } - (void)setAction:(SDLSeatMemoryActionType)action { - [store sdl_setObject:action forName:SDLRPCParameterNameAction]; + [self.store sdl_setObject:action forName:SDLRPCParameterNameAction]; } - (SDLSeatMemoryActionType)action { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameAction error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameAction error:&error]; } @end diff --git a/SmartDeviceLink/SDLSecondaryTransportManager.m b/SmartDeviceLink/SDLSecondaryTransportManager.m index 6f3b95273..a8c6d6a11 100644 --- a/SmartDeviceLink/SDLSecondaryTransportManager.m +++ b/SmartDeviceLink/SDLSecondaryTransportManager.m @@ -67,7 +67,7 @@ @interface SDLSecondaryTransportManager () @property (copy, nonatomic) dispatch_queue_t stateMachineQueue; // Instance of the protocol that runs on primary transport. -@property (weak, nonatomic) SDLProtocol *primaryProtocol; +@property (strong, nonatomic) SDLProtocol *primaryProtocol; // A class to catch Start Service ACK and Transport Config Update frames. @property (strong, nonatomic) SDLSecondaryTransportPrimaryProtocolHandler *primaryProtocolHandler; diff --git a/SmartDeviceLink/SDLSendHapticData.m b/SmartDeviceLink/SDLSendHapticData.m index 3302fbe49..f684b4114 100644 --- a/SmartDeviceLink/SDLSendHapticData.m +++ b/SmartDeviceLink/SDLSendHapticData.m @@ -16,11 +16,14 @@ @implementation SDLSendHapticData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSendHapticData]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithHapticRectData:(NSArray *)hapticRectData { self = [self init]; @@ -34,11 +37,11 @@ - (instancetype)initWithHapticRectData:(NSArray *)hapticRectDat } - (void)setHapticRectData:(nullable NSArray *)hapticRectData { - [parameters sdl_setObject:hapticRectData forName:SDLRPCParameterNameHapticRectData]; + [self.parameters sdl_setObject:hapticRectData forName:SDLRPCParameterNameHapticRectData]; } - (nullable NSArray *)hapticRectData { - return [parameters sdl_objectsForName:SDLRPCParameterNameHapticRectData ofClass:SDLHapticRect.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameHapticRectData ofClass:SDLHapticRect.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSendHapticDataResponse.m b/SmartDeviceLink/SDLSendHapticDataResponse.m index 4c14b47d7..dd7231c07 100644 --- a/SmartDeviceLink/SDLSendHapticDataResponse.m +++ b/SmartDeviceLink/SDLSendHapticDataResponse.m @@ -15,11 +15,14 @@ @implementation SDLSendHapticDataResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSendHapticData]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSendLocation.m b/SmartDeviceLink/SDLSendLocation.m index 5874a86f3..a63db0cae 100644 --- a/SmartDeviceLink/SDLSendLocation.m +++ b/SmartDeviceLink/SDLSendLocation.m @@ -12,6 +12,8 @@ @implementation SDLSendLocation +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { self = [super initWithName:SDLRPCFunctionNameSendLocation]; if (!self) { @@ -20,6 +22,7 @@ - (instancetype)init { return self; } +#pragma clang diagnostic pop - (instancetype)initWithAddress:(SDLOasisAddress *)address addressLines:(nullable NSArray *)addressLines locationName:(nullable NSString *)locationName locationDescription:(nullable NSString *)locationDescription phoneNumber:(nullable NSString *)phoneNumber image:(nullable SDLImage *)image deliveryMode:(nullable SDLDeliveryMode)deliveryMode timeStamp:(nullable SDLDateTime *)timeStamp { self = [self init]; @@ -62,83 +65,83 @@ - (instancetype)initWithLongitude:(double)longitude latitude:(double)latitude lo } - (void)setLongitudeDegrees:(nullable NSNumber *)longitudeDegrees { - [parameters sdl_setObject:longitudeDegrees forName:SDLRPCParameterNameLongitudeDegrees]; + [self.parameters sdl_setObject:longitudeDegrees forName:SDLRPCParameterNameLongitudeDegrees]; } - (nullable NSNumber *)longitudeDegrees { - return [parameters sdl_objectForName:SDLRPCParameterNameLongitudeDegrees ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameLongitudeDegrees ofClass:NSNumber.class error:nil]; } - (void)setLatitudeDegrees:(nullable NSNumber *)latitudeDegrees { - [parameters sdl_setObject:latitudeDegrees forName:SDLRPCParameterNameLatitudeDegrees]; + [self.parameters sdl_setObject:latitudeDegrees forName:SDLRPCParameterNameLatitudeDegrees]; } - (nullable NSNumber *)latitudeDegrees { - return [parameters sdl_objectForName:SDLRPCParameterNameLatitudeDegrees ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameLatitudeDegrees ofClass:NSNumber.class error:nil]; } - (void)setLocationName:(nullable NSString *)locationName { - [parameters sdl_setObject:locationName forName:SDLRPCParameterNameLocationName]; + [self.parameters sdl_setObject:locationName forName:SDLRPCParameterNameLocationName]; } - (nullable NSString *)locationName { - return [parameters sdl_objectForName:SDLRPCParameterNameLocationName ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameLocationName ofClass:NSString.class error:nil]; } - (void)setAddressLines:(nullable NSArray *)addressLines { - [parameters sdl_setObject:addressLines forName:SDLRPCParameterNameAddressLines]; + [self.parameters sdl_setObject:addressLines forName:SDLRPCParameterNameAddressLines]; } - (nullable NSString *)locationDescription { - return [parameters sdl_objectForName:SDLRPCParameterNameLocationDescription ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameLocationDescription ofClass:NSString.class error:nil]; } - (void)setLocationDescription:(nullable NSString *)locationDescription { - [parameters sdl_setObject:locationDescription forName:SDLRPCParameterNameLocationDescription]; + [self.parameters sdl_setObject:locationDescription forName:SDLRPCParameterNameLocationDescription]; } - (nullable NSArray *)addressLines { - return [parameters sdl_objectsForName:SDLRPCParameterNameAddressLines ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameAddressLines ofClass:NSString.class error:nil]; } - (void)setPhoneNumber:(nullable NSString *)phoneNumber { - [parameters sdl_setObject:phoneNumber forName:SDLRPCParameterNamePhoneNumber]; + [self.parameters sdl_setObject:phoneNumber forName:SDLRPCParameterNamePhoneNumber]; } - (nullable NSString *)phoneNumber { - return [parameters sdl_objectForName:SDLRPCParameterNamePhoneNumber ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePhoneNumber ofClass:NSString.class error:nil]; } - (void)setLocationImage:(nullable SDLImage *)locationImage { - [parameters sdl_setObject:locationImage forName:SDLRPCParameterNameLocationImage]; + [self.parameters sdl_setObject:locationImage forName:SDLRPCParameterNameLocationImage]; } - (nullable SDLImage *)locationImage { - return [parameters sdl_objectForName:SDLRPCParameterNameLocationImage ofClass:SDLImage.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameLocationImage ofClass:SDLImage.class error:nil]; } - (void)setDeliveryMode:(nullable SDLDeliveryMode)deliveryMode { - [parameters sdl_setObject:deliveryMode forName:SDLRPCParameterNameDeliveryMode]; + [self.parameters sdl_setObject:deliveryMode forName:SDLRPCParameterNameDeliveryMode]; } - (nullable SDLDeliveryMode)deliveryMode { - return [parameters sdl_enumForName:SDLRPCParameterNameDeliveryMode error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameDeliveryMode error:nil]; } - (void)setTimeStamp:(nullable SDLDateTime *)timeStamp { - [parameters sdl_setObject:timeStamp forName:SDLRPCParameterNameTimeStamp]; + [self.parameters sdl_setObject:timeStamp forName:SDLRPCParameterNameTimeStamp]; } - (nullable SDLDateTime *)timeStamp { - return [parameters sdl_objectForName:SDLRPCParameterNameTimeStamp ofClass:SDLDateTime.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeStamp ofClass:SDLDateTime.class error:nil]; } - (void)setAddress:(nullable SDLOasisAddress *)address { - [parameters sdl_setObject:address forName:SDLRPCParameterNameAddress]; + [self.parameters sdl_setObject:address forName:SDLRPCParameterNameAddress]; } - (nullable SDLOasisAddress *)address { - return [parameters sdl_objectForName:SDLRPCParameterNameAddress ofClass:SDLOasisAddress.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAddress ofClass:SDLOasisAddress.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSendLocationResponse.m b/SmartDeviceLink/SDLSendLocationResponse.m index c458097f1..a9404897d 100644 --- a/SmartDeviceLink/SDLSendLocationResponse.m +++ b/SmartDeviceLink/SDLSendLocationResponse.m @@ -12,6 +12,8 @@ @implementation SDLSendLocationResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { self = [super initWithName:SDLRPCFunctionNameSendLocation]; if (!self) { @@ -20,6 +22,7 @@ - (instancetype)init { return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSetAppIcon.m b/SmartDeviceLink/SDLSetAppIcon.m index a76abaa58..6d7de66f8 100644 --- a/SmartDeviceLink/SDLSetAppIcon.m +++ b/SmartDeviceLink/SDLSetAppIcon.m @@ -10,11 +10,14 @@ @implementation SDLSetAppIcon +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetAppIcon]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithFileName:(NSString *)fileName { self = [self init]; @@ -28,12 +31,12 @@ - (instancetype)initWithFileName:(NSString *)fileName { } - (void)setSyncFileName:(NSString *)syncFileName { - [parameters sdl_setObject:syncFileName forName:SDLRPCParameterNameSyncFileName]; + [self.parameters sdl_setObject:syncFileName forName:SDLRPCParameterNameSyncFileName]; } - (NSString *)syncFileName { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameSyncFileName ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSyncFileName ofClass:NSString.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLSetAppIconResponse.m b/SmartDeviceLink/SDLSetAppIconResponse.m index 2540415fd..38151c6cc 100644 --- a/SmartDeviceLink/SDLSetAppIconResponse.m +++ b/SmartDeviceLink/SDLSetAppIconResponse.m @@ -12,11 +12,14 @@ @implementation SDLSetAppIconResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetAppIcon]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSetCloudAppProperties.m b/SmartDeviceLink/SDLSetCloudAppProperties.m index bab40d749..ca2f657e9 100644 --- a/SmartDeviceLink/SDLSetCloudAppProperties.m +++ b/SmartDeviceLink/SDLSetCloudAppProperties.m @@ -18,11 +18,14 @@ @implementation SDLSetCloudAppProperties +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetCloudAppProperties]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithProperties:(SDLCloudAppProperties *)properties { self = [self init]; @@ -36,12 +39,12 @@ - (instancetype)initWithProperties:(SDLCloudAppProperties *)properties { } - (void)setProperties:(SDLCloudAppProperties *)properties { - [parameters sdl_setObject:properties forName:SDLRPCParameterNameProperties]; + [self.parameters sdl_setObject:properties forName:SDLRPCParameterNameProperties]; } - (SDLCloudAppProperties *)properties { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameProperties ofClass:SDLCloudAppProperties.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameProperties ofClass:SDLCloudAppProperties.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m b/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m index 94476a335..4064b19a7 100644 --- a/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m +++ b/SmartDeviceLink/SDLSetCloudAppPropertiesResponse.m @@ -14,11 +14,14 @@ @implementation SDLSetCloudAppPropertiesResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetCloudAppProperties]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSetDisplayLayout.m b/SmartDeviceLink/SDLSetDisplayLayout.m index 90c253717..b26c7a97c 100644 --- a/SmartDeviceLink/SDLSetDisplayLayout.m +++ b/SmartDeviceLink/SDLSetDisplayLayout.m @@ -13,11 +13,14 @@ @implementation SDLSetDisplayLayout +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetDisplayLayout]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout { return [self initWithLayout:predefinedLayout]; @@ -45,28 +48,28 @@ - (instancetype)initWithPredefinedLayout:(SDLPredefinedLayout)predefinedLayout d } - (void)setDisplayLayout:(NSString *)displayLayout { - [parameters sdl_setObject:displayLayout forName:SDLRPCParameterNameDisplayLayout]; + [self.parameters sdl_setObject:displayLayout forName:SDLRPCParameterNameDisplayLayout]; } - (NSString *)displayLayout { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameDisplayLayout ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDisplayLayout ofClass:NSString.class error:&error]; } - (void)setDayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme { - [parameters sdl_setObject:dayColorScheme forName:SDLRPCParameterNameDayColorScheme]; + [self.parameters sdl_setObject:dayColorScheme forName:SDLRPCParameterNameDayColorScheme]; } - (nullable SDLTemplateColorScheme *)dayColorScheme { - return [parameters sdl_objectForName:SDLRPCParameterNameDayColorScheme ofClass:SDLTemplateColorScheme.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDayColorScheme ofClass:SDLTemplateColorScheme.class error:nil]; } - (void)setNightColorScheme:(nullable SDLTemplateColorScheme *)nightColorScheme { - [parameters sdl_setObject:nightColorScheme forName:SDLRPCParameterNameNightColorScheme]; + [self.parameters sdl_setObject:nightColorScheme forName:SDLRPCParameterNameNightColorScheme]; } - (nullable SDLTemplateColorScheme *)nightColorScheme { - return [parameters sdl_objectForName:SDLRPCParameterNameNightColorScheme ofClass:SDLTemplateColorScheme.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameNightColorScheme ofClass:SDLTemplateColorScheme.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSetDisplayLayoutResponse.m b/SmartDeviceLink/SDLSetDisplayLayoutResponse.m index 21d25661e..552a95079 100644 --- a/SmartDeviceLink/SDLSetDisplayLayoutResponse.m +++ b/SmartDeviceLink/SDLSetDisplayLayoutResponse.m @@ -16,42 +16,45 @@ @implementation SDLSetDisplayLayoutResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetDisplayLayout]) { } return self; } +#pragma clang diagnostic pop - (void)setDisplayCapabilities:(nullable SDLDisplayCapabilities *)displayCapabilities { - [parameters sdl_setObject:displayCapabilities forName:SDLRPCParameterNameDisplayCapabilities]; + [self.parameters sdl_setObject:displayCapabilities forName:SDLRPCParameterNameDisplayCapabilities]; } - (nullable SDLDisplayCapabilities *)displayCapabilities { - return [parameters sdl_objectForName:SDLRPCParameterNameDisplayCapabilities ofClass:SDLDisplayCapabilities.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDisplayCapabilities ofClass:SDLDisplayCapabilities.class error:nil]; } - (void)setButtonCapabilities:(nullable NSArray *)buttonCapabilities { - [parameters sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities]; + [self.parameters sdl_setObject:buttonCapabilities forName:SDLRPCParameterNameButtonCapabilities]; } - (nullable NSArray *)buttonCapabilities { - return [parameters sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameButtonCapabilities ofClass:SDLButtonCapabilities.class error:nil]; } - (void)setSoftButtonCapabilities:(nullable NSArray *)softButtonCapabilities { - [parameters sdl_setObject:softButtonCapabilities forName:SDLRPCParameterNameSoftButtonCapabilities]; + [self.parameters sdl_setObject:softButtonCapabilities forName:SDLRPCParameterNameSoftButtonCapabilities]; } - (nullable NSArray *)softButtonCapabilities { - return [parameters sdl_objectsForName:SDLRPCParameterNameSoftButtonCapabilities ofClass:SDLSoftButtonCapabilities.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtonCapabilities ofClass:SDLSoftButtonCapabilities.class error:nil]; } - (void)setPresetBankCapabilities:(nullable SDLPresetBankCapabilities *)presetBankCapabilities { - [parameters sdl_setObject:presetBankCapabilities forName:SDLRPCParameterNamePresetBankCapabilities]; + [self.parameters sdl_setObject:presetBankCapabilities forName:SDLRPCParameterNamePresetBankCapabilities]; } - (nullable SDLPresetBankCapabilities *)presetBankCapabilities { - return [parameters sdl_objectForName:SDLRPCParameterNamePresetBankCapabilities ofClass:SDLPresetBankCapabilities.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePresetBankCapabilities ofClass:SDLPresetBankCapabilities.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSetGlobalProperties.m b/SmartDeviceLink/SDLSetGlobalProperties.m index 970c21e5a..69f06d5d5 100644 --- a/SmartDeviceLink/SDLSetGlobalProperties.m +++ b/SmartDeviceLink/SDLSetGlobalProperties.m @@ -16,11 +16,14 @@ @implementation SDLSetGlobalProperties +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetGlobalProperties]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(nullable NSString *)timeoutText { return [self initWithHelpText:helpText timeoutText:timeoutText vrHelpTitle:nil vrHelp:nil]; @@ -48,59 +51,59 @@ - (instancetype)initWithHelpText:(nullable NSString *)helpText timeoutText:(null } - (void)setHelpPrompt:(nullable NSArray *)helpPrompt { - [parameters sdl_setObject:helpPrompt forName:SDLRPCParameterNameHelpPrompt]; + [self.parameters sdl_setObject:helpPrompt forName:SDLRPCParameterNameHelpPrompt]; } - (nullable NSArray *)helpPrompt { - return [parameters sdl_objectsForName:SDLRPCParameterNameHelpPrompt ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameHelpPrompt ofClass:SDLTTSChunk.class error:nil]; } - (void)setTimeoutPrompt:(nullable NSArray *)timeoutPrompt { - [parameters sdl_setObject:timeoutPrompt forName:SDLRPCParameterNameTimeoutPrompt]; + [self.parameters sdl_setObject:timeoutPrompt forName:SDLRPCParameterNameTimeoutPrompt]; } - (nullable NSArray *)timeoutPrompt { - return [parameters sdl_objectsForName:SDLRPCParameterNameTimeoutPrompt ofClass:SDLTTSChunk.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameTimeoutPrompt ofClass:SDLTTSChunk.class error:nil]; } - (void)setVrHelpTitle:(nullable NSString *)vrHelpTitle { - [parameters sdl_setObject:vrHelpTitle forName:SDLRPCParameterNameVRHelpTitle]; + [self.parameters sdl_setObject:vrHelpTitle forName:SDLRPCParameterNameVRHelpTitle]; } - (nullable NSString *)vrHelpTitle { - return [parameters sdl_objectForName:SDLRPCParameterNameVRHelpTitle ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameVRHelpTitle ofClass:NSString.class error:nil]; } - (void)setVrHelp:(nullable NSArray *)vrHelp { - [parameters sdl_setObject:vrHelp forName:SDLRPCParameterNameVRHelp]; + [self.parameters sdl_setObject:vrHelp forName:SDLRPCParameterNameVRHelp]; } - (nullable NSArray *)vrHelp { - return [parameters sdl_objectsForName:SDLRPCParameterNameVRHelp ofClass:SDLVRHelpItem.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameVRHelp ofClass:SDLVRHelpItem.class error:nil]; } - (void)setMenuTitle:(nullable NSString *)menuTitle { - [parameters sdl_setObject:menuTitle forName:SDLRPCParameterNameMenuTitle]; + [self.parameters sdl_setObject:menuTitle forName:SDLRPCParameterNameMenuTitle]; } - (nullable NSString *)menuTitle { - return [parameters sdl_objectForName:SDLRPCParameterNameMenuTitle ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuTitle ofClass:NSString.class error:nil]; } - (void)setMenuIcon:(nullable SDLImage *)menuIcon { - [parameters sdl_setObject:menuIcon forName:SDLRPCParameterNameMenuIcon]; + [self.parameters sdl_setObject:menuIcon forName:SDLRPCParameterNameMenuIcon]; } - (nullable SDLImage *)menuIcon { - return [parameters sdl_objectForName:SDLRPCParameterNameMenuIcon ofClass:SDLImage.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMenuIcon ofClass:SDLImage.class error:nil]; } - (void)setKeyboardProperties:(nullable SDLKeyboardProperties *)keyboardProperties { - [parameters sdl_setObject:keyboardProperties forName:SDLRPCParameterNameKeyboardProperties]; + [self.parameters sdl_setObject:keyboardProperties forName:SDLRPCParameterNameKeyboardProperties]; } - (nullable SDLKeyboardProperties *)keyboardProperties { - return [parameters sdl_objectForName:SDLRPCParameterNameKeyboardProperties ofClass:SDLKeyboardProperties.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameKeyboardProperties ofClass:SDLKeyboardProperties.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSetGlobalPropertiesResponse.m b/SmartDeviceLink/SDLSetGlobalPropertiesResponse.m index 208c336f1..f093f4399 100644 --- a/SmartDeviceLink/SDLSetGlobalPropertiesResponse.m +++ b/SmartDeviceLink/SDLSetGlobalPropertiesResponse.m @@ -12,11 +12,14 @@ @implementation SDLSetGlobalPropertiesResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetGlobalProperties]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSetInteriorVehicleData.m b/SmartDeviceLink/SDLSetInteriorVehicleData.m index f49091768..96d2ac782 100644 --- a/SmartDeviceLink/SDLSetInteriorVehicleData.m +++ b/SmartDeviceLink/SDLSetInteriorVehicleData.m @@ -12,11 +12,14 @@ @implementation SDLSetInteriorVehicleData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetInteriorVehicleData]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithModuleData:(SDLModuleData *)moduleData { self = [self init]; @@ -30,12 +33,12 @@ - (instancetype)initWithModuleData:(SDLModuleData *)moduleData { } - (void)setModuleData:(SDLModuleData *)moduleData { - [parameters sdl_setObject:moduleData forName:SDLRPCParameterNameModuleData]; + [self.parameters sdl_setObject:moduleData forName:SDLRPCParameterNameModuleData]; } - (SDLModuleData *)moduleData { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameModuleData ofClass:SDLModuleData.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameModuleData ofClass:SDLModuleData.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m b/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m index 93a628366..12a00779b 100644 --- a/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m +++ b/SmartDeviceLink/SDLSetInteriorVehicleDataResponse.m @@ -12,19 +12,22 @@ @implementation SDLSetInteriorVehicleDataResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetInteriorVehicleData]) { } return self; } +#pragma clang diagnostic pop - (void)setModuleData:(SDLModuleData *)moduleData { - [parameters sdl_setObject:moduleData forName:SDLRPCParameterNameModuleData]; + [self.parameters sdl_setObject:moduleData forName:SDLRPCParameterNameModuleData]; } - (SDLModuleData *)moduleData { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameModuleData ofClass:SDLModuleData.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameModuleData ofClass:SDLModuleData.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLSetMediaClockTimer.m b/SmartDeviceLink/SDLSetMediaClockTimer.m index 5b1dbfaed..ce536ce8f 100644 --- a/SmartDeviceLink/SDLSetMediaClockTimer.m +++ b/SmartDeviceLink/SDLSetMediaClockTimer.m @@ -13,11 +13,14 @@ @implementation SDLSetMediaClockTimer +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetMediaClockTimer]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode startTime:(nullable SDLStartTime *)startTime endTime:(nullable SDLStartTime *)endTime playPauseIndicator:(nullable SDLAudioStreamingIndicator)playPauseIndicator { self = [self init]; @@ -110,36 +113,36 @@ - (instancetype)initWithUpdateMode:(SDLUpdateMode)updateMode { } - (void)setStartTime:(nullable SDLStartTime *)startTime { - [parameters sdl_setObject:startTime forName:SDLRPCParameterNameStartTime]; + [self.parameters sdl_setObject:startTime forName:SDLRPCParameterNameStartTime]; } - (nullable SDLStartTime *)startTime { - return [parameters sdl_objectForName:SDLRPCParameterNameStartTime ofClass:SDLStartTime.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameStartTime ofClass:SDLStartTime.class error:nil]; } - (void)setEndTime:(nullable SDLStartTime *)endTime { - [parameters sdl_setObject:endTime forName:SDLRPCParameterNameEndTime]; + [self.parameters sdl_setObject:endTime forName:SDLRPCParameterNameEndTime]; } - (nullable SDLStartTime *)endTime { - return [parameters sdl_objectForName:SDLRPCParameterNameEndTime ofClass:SDLStartTime.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEndTime ofClass:SDLStartTime.class error:nil]; } - (void)setUpdateMode:(SDLUpdateMode)updateMode { - [parameters sdl_setObject:updateMode forName:SDLRPCParameterNameUpdateMode]; + [self.parameters sdl_setObject:updateMode forName:SDLRPCParameterNameUpdateMode]; } - (SDLUpdateMode)updateMode { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameUpdateMode error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameUpdateMode error:&error]; } - (void)setAudioStreamingIndicator:(nullable SDLAudioStreamingIndicator)audioStreamingIndicator { - [parameters sdl_setObject:audioStreamingIndicator forName:SDLRPCParameterNameAudioStreamingIndicator]; + [self.parameters sdl_setObject:audioStreamingIndicator forName:SDLRPCParameterNameAudioStreamingIndicator]; } - (nullable SDLAudioStreamingIndicator)audioStreamingIndicator { - return [parameters sdl_enumForName:SDLRPCParameterNameAudioStreamingIndicator error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameAudioStreamingIndicator error:nil]; } @end diff --git a/SmartDeviceLink/SDLSetMediaClockTimerResponse.m b/SmartDeviceLink/SDLSetMediaClockTimerResponse.m index 856a1a49d..bcb1d12c8 100644 --- a/SmartDeviceLink/SDLSetMediaClockTimerResponse.m +++ b/SmartDeviceLink/SDLSetMediaClockTimerResponse.m @@ -12,11 +12,14 @@ @implementation SDLSetMediaClockTimerResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSetMediaClockTimer]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLShow.m b/SmartDeviceLink/SDLShow.m index b4e0b0abd..cb67f1b69 100644 --- a/SmartDeviceLink/SDLShow.m +++ b/SmartDeviceLink/SDLShow.m @@ -16,11 +16,14 @@ @implementation SDLShow +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameShow]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(nullable NSString *)mainField2 alignment:(nullable SDLTextAlignment)alignment { return [self initWithMainField1:mainField1 mainField2:mainField2 mainField3:nil mainField4:nil alignment:alignment]; @@ -98,107 +101,107 @@ - (instancetype)initWithMainField1:(nullable NSString *)mainField1 mainField2:(n } - (void)setMainField1:(nullable NSString *)mainField1 { - [parameters sdl_setObject:mainField1 forName:SDLRPCParameterNameMainField1]; + [self.parameters sdl_setObject:mainField1 forName:SDLRPCParameterNameMainField1]; } - (nullable NSString *)mainField1 { - return [parameters sdl_objectForName:SDLRPCParameterNameMainField1 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMainField1 ofClass:NSString.class error:nil]; } - (void)setMainField2:(nullable NSString *)mainField2 { - [parameters sdl_setObject:mainField2 forName:SDLRPCParameterNameMainField2]; + [self.parameters sdl_setObject:mainField2 forName:SDLRPCParameterNameMainField2]; } - (nullable NSString *)mainField2 { - return [parameters sdl_objectForName:SDLRPCParameterNameMainField2 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMainField2 ofClass:NSString.class error:nil]; } - (void)setMainField3:(nullable NSString *)mainField3 { - [parameters sdl_setObject:mainField3 forName:SDLRPCParameterNameMainField3]; + [self.parameters sdl_setObject:mainField3 forName:SDLRPCParameterNameMainField3]; } - (nullable NSString *)mainField3 { - return [parameters sdl_objectForName:SDLRPCParameterNameMainField3 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMainField3 ofClass:NSString.class error:nil]; } - (void)setMainField4:(nullable NSString *)mainField4 { - [parameters sdl_setObject:mainField4 forName:SDLRPCParameterNameMainField4]; + [self.parameters sdl_setObject:mainField4 forName:SDLRPCParameterNameMainField4]; } - (nullable NSString *)mainField4 { - return [parameters sdl_objectForName:SDLRPCParameterNameMainField4 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMainField4 ofClass:NSString.class error:nil]; } - (void)setAlignment:(nullable SDLTextAlignment)alignment { - [parameters sdl_setObject:alignment forName:SDLRPCParameterNameAlignment]; + [self.parameters sdl_setObject:alignment forName:SDLRPCParameterNameAlignment]; } - (nullable SDLTextAlignment)alignment { - return [parameters sdl_enumForName:SDLRPCParameterNameAlignment error:nil]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameAlignment error:nil]; } - (void)setStatusBar:(nullable NSString *)statusBar { - [parameters sdl_setObject:statusBar forName:SDLRPCParameterNameStatusBar]; + [self.parameters sdl_setObject:statusBar forName:SDLRPCParameterNameStatusBar]; } - (nullable NSString *)statusBar { - return [parameters sdl_objectForName:SDLRPCParameterNameStatusBar ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameStatusBar ofClass:NSString.class error:nil]; } - (void)setMediaClock:(nullable NSString *)mediaClock { - [parameters sdl_setObject:mediaClock forName:SDLRPCParameterNameMediaClock]; + [self.parameters sdl_setObject:mediaClock forName:SDLRPCParameterNameMediaClock]; } - (nullable NSString *)mediaClock { - return [parameters sdl_objectForName:SDLRPCParameterNameMediaClock ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMediaClock ofClass:NSString.class error:nil]; } - (void)setMediaTrack:(nullable NSString *)mediaTrack { - [parameters sdl_setObject:mediaTrack forName:SDLRPCParameterNameMediaTrack]; + [self.parameters sdl_setObject:mediaTrack forName:SDLRPCParameterNameMediaTrack]; } - (nullable NSString *)mediaTrack { - return [parameters sdl_objectForName:SDLRPCParameterNameMediaTrack ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMediaTrack ofClass:NSString.class error:nil]; } - (void)setGraphic:(nullable SDLImage *)graphic { - [parameters sdl_setObject:graphic forName:SDLRPCParameterNameGraphic]; + [self.parameters sdl_setObject:graphic forName:SDLRPCParameterNameGraphic]; } - (nullable SDLImage *)graphic { - return [parameters sdl_objectForName:SDLRPCParameterNameGraphic ofClass:SDLImage.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameGraphic ofClass:SDLImage.class error:nil]; } - (void)setSecondaryGraphic:(nullable SDLImage *)secondaryGraphic { - [parameters sdl_setObject:secondaryGraphic forName:SDLRPCParameterNameSecondaryGraphic]; + [self.parameters sdl_setObject:secondaryGraphic forName:SDLRPCParameterNameSecondaryGraphic]; } - (nullable SDLImage *)secondaryGraphic { - return [parameters sdl_objectForName:SDLRPCParameterNameSecondaryGraphic ofClass:SDLImage.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSecondaryGraphic ofClass:SDLImage.class error:nil]; } - (void)setSoftButtons:(nullable NSArray *)softButtons { - [parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; + [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; } - (nullable NSArray *)softButtons { - return [parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; } - (void)setCustomPresets:(nullable NSArray *)customPresets { - [parameters sdl_setObject:customPresets forName:SDLRPCParameterNameCustomPresets]; + [self.parameters sdl_setObject:customPresets forName:SDLRPCParameterNameCustomPresets]; } - (nullable NSArray *)customPresets { - return [parameters sdl_objectsForName:SDLRPCParameterNameCustomPresets ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameCustomPresets ofClass:NSString.class error:nil]; } - (void)setMetadataTags:(nullable SDLMetadataTags *)metadataTags { - [parameters sdl_setObject:metadataTags forName:SDLRPCParameterNameMetadataTags]; + [self.parameters sdl_setObject:metadataTags forName:SDLRPCParameterNameMetadataTags]; } - (nullable SDLMetadataTags *)metadataTags { - return [parameters sdl_objectForName:SDLRPCParameterNameMetadataTags ofClass:SDLMetadataTags.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMetadataTags ofClass:SDLMetadataTags.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLShowConstantTBT.m b/SmartDeviceLink/SDLShowConstantTBT.m index d1068d963..70c2c09a1 100644 --- a/SmartDeviceLink/SDLShowConstantTBT.m +++ b/SmartDeviceLink/SDLShowConstantTBT.m @@ -14,11 +14,14 @@ @implementation SDLShowConstantTBT +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameShowConstantTBT]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithNavigationText1:(nullable NSString *)navigationText1 navigationText2:(nullable NSString *)navigationText2 eta:(nullable NSString *)eta timeToDestination:(nullable NSString *)timeToDestination totalDistance:(nullable NSString *)totalDistance turnIcon:(nullable SDLImage *)turnIcon nextTurnIcon:(nullable SDLImage *)nextTurnIcon distanceToManeuver:(double)distanceToManeuver distanceToManeuverScale:(double)distanceToManeuverScale maneuverComplete:(BOOL)maneuverComplete softButtons:(nullable NSArray *)softButtons { self = [self init]; @@ -42,91 +45,91 @@ - (instancetype)initWithNavigationText1:(nullable NSString *)navigationText1 nav } - (void)setNavigationText1:(nullable NSString *)navigationText1 { - [parameters sdl_setObject:navigationText1 forName:SDLRPCParameterNameNavigationText1]; + [self.parameters sdl_setObject:navigationText1 forName:SDLRPCParameterNameNavigationText1]; } - (nullable NSString *)navigationText1 { - return [parameters sdl_objectForName:SDLRPCParameterNameNavigationText1 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameNavigationText1 ofClass:NSString.class error:nil]; } - (void)setNavigationText2:(nullable NSString *)navigationText2 { - [parameters sdl_setObject:navigationText2 forName:SDLRPCParameterNameNavigationText2]; + [self.parameters sdl_setObject:navigationText2 forName:SDLRPCParameterNameNavigationText2]; } - (nullable NSString *)navigationText2 { - return [parameters sdl_objectForName:SDLRPCParameterNameNavigationText2 ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameNavigationText2 ofClass:NSString.class error:nil]; } - (void)setEta:(nullable NSString *)eta { - [parameters sdl_setObject:eta forName:SDLRPCParameterNameETA]; + [self.parameters sdl_setObject:eta forName:SDLRPCParameterNameETA]; } - (nullable NSString *)eta { - return [parameters sdl_objectForName:SDLRPCParameterNameETA ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameETA ofClass:NSString.class error:nil]; } - (void)setTimeToDestination:(nullable NSString *)timeToDestination { - [parameters sdl_setObject:timeToDestination forName:SDLRPCParameterNameTimeToDestination]; + [self.parameters sdl_setObject:timeToDestination forName:SDLRPCParameterNameTimeToDestination]; } - (nullable NSString *)timeToDestination { - return [parameters sdl_objectForName:SDLRPCParameterNameTimeToDestination ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeToDestination ofClass:NSString.class error:nil]; } - (void)setTotalDistance:(nullable NSString *)totalDistance { - [parameters sdl_setObject:totalDistance forName:SDLRPCParameterNameTotalDistance]; + [self.parameters sdl_setObject:totalDistance forName:SDLRPCParameterNameTotalDistance]; } - (nullable NSString *)totalDistance { - return [parameters sdl_objectForName:SDLRPCParameterNameTotalDistance ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTotalDistance ofClass:NSString.class error:nil]; } - (void)setTurnIcon:(nullable SDLImage *)turnIcon { - [parameters sdl_setObject:turnIcon forName:SDLRPCParameterNameTurnIcon]; + [self.parameters sdl_setObject:turnIcon forName:SDLRPCParameterNameTurnIcon]; } - (nullable SDLImage *)turnIcon { - return [parameters sdl_objectForName:SDLRPCParameterNameTurnIcon ofClass:SDLImage.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnIcon ofClass:SDLImage.class error:nil]; } - (void)setNextTurnIcon:(nullable SDLImage *)nextTurnIcon { - [parameters sdl_setObject:nextTurnIcon forName:SDLRPCParameterNameNextTurnIcon]; + [self.parameters sdl_setObject:nextTurnIcon forName:SDLRPCParameterNameNextTurnIcon]; } - (nullable SDLImage *)nextTurnIcon { - return [parameters sdl_objectForName:SDLRPCParameterNameNextTurnIcon ofClass:SDLImage.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameNextTurnIcon ofClass:SDLImage.class error:nil]; } - (void)setDistanceToManeuver:(nullable NSNumber *)distanceToManeuver { - [parameters sdl_setObject:distanceToManeuver forName:SDLRPCParameterNameDistanceToManeuver]; + [self.parameters sdl_setObject:distanceToManeuver forName:SDLRPCParameterNameDistanceToManeuver]; } - (nullable NSNumber *)distanceToManeuver { - return [parameters sdl_objectForName:SDLRPCParameterNameDistanceToManeuver ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDistanceToManeuver ofClass:NSNumber.class error:nil]; } - (void)setDistanceToManeuverScale:(nullable NSNumber *)distanceToManeuverScale { - [parameters sdl_setObject:distanceToManeuverScale forName:SDLRPCParameterNameDistanceToManeuverScale]; + [self.parameters sdl_setObject:distanceToManeuverScale forName:SDLRPCParameterNameDistanceToManeuverScale]; } - (nullable NSNumber *)distanceToManeuverScale { - return [parameters sdl_objectForName:SDLRPCParameterNameDistanceToManeuverScale ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDistanceToManeuverScale ofClass:NSNumber.class error:nil]; } - (void)setManeuverComplete:(nullable NSNumber *)maneuverComplete { - [parameters sdl_setObject:maneuverComplete forName:SDLRPCParameterNameManeuverComplete]; + [self.parameters sdl_setObject:maneuverComplete forName:SDLRPCParameterNameManeuverComplete]; } - (nullable NSNumber *)maneuverComplete { - return [parameters sdl_objectForName:SDLRPCParameterNameManeuverComplete ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameManeuverComplete ofClass:NSNumber.class error:nil]; } - (void)setSoftButtons:(nullable NSArray *)softButtons { - [parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; + [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; } - (nullable NSArray *)softButtons { - return [parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLShowConstantTBTResponse.m b/SmartDeviceLink/SDLShowConstantTBTResponse.m index be8bc9363..911e5080f 100644 --- a/SmartDeviceLink/SDLShowConstantTBTResponse.m +++ b/SmartDeviceLink/SDLShowConstantTBTResponse.m @@ -12,11 +12,14 @@ @implementation SDLShowConstantTBTResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameShowConstantTBT]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLShowResponse.m b/SmartDeviceLink/SDLShowResponse.m index 3f8882729..c8b501129 100644 --- a/SmartDeviceLink/SDLShowResponse.m +++ b/SmartDeviceLink/SDLShowResponse.m @@ -12,11 +12,14 @@ @implementation SDLShowResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameShow]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSingleTireStatus.m b/SmartDeviceLink/SDLSingleTireStatus.m index 283e32f51..e756e8f69 100644 --- a/SmartDeviceLink/SDLSingleTireStatus.m +++ b/SmartDeviceLink/SDLSingleTireStatus.m @@ -12,28 +12,28 @@ @implementation SDLSingleTireStatus - (void)setStatus:(SDLComponentVolumeStatus)status { - [store sdl_setObject:status forName:SDLRPCParameterNameStatus]; + [self.store sdl_setObject:status forName:SDLRPCParameterNameStatus]; } - (SDLComponentVolumeStatus)status { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameStatus error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameStatus error:&error]; } - (void)setMonitoringSystemStatus:(nullable SDLTPMS)monitoringSystemStatus { - [store sdl_setObject:monitoringSystemStatus forName:SDLRPCParameterNameTPMS]; + [self.store sdl_setObject:monitoringSystemStatus forName:SDLRPCParameterNameTPMS]; } - (nullable SDLTPMS)monitoringSystemStatus { - return [store sdl_enumForName:SDLRPCParameterNameTPMS error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameTPMS error:nil]; } - (void)setPressure:(nullable NSNumber *)pressure { - [store sdl_setObject:pressure forName:SDLRPCParameterNamePressure]; + [self.store sdl_setObject:pressure forName:SDLRPCParameterNamePressure]; } - (nullable NSNumber *)pressure { - return [store sdl_objectForName:SDLRPCParameterNamePressure ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePressure ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSlider.m b/SmartDeviceLink/SDLSlider.m index 25f83ce89..f0072c171 100644 --- a/SmartDeviceLink/SDLSlider.m +++ b/SmartDeviceLink/SDLSlider.m @@ -12,11 +12,14 @@ @implementation SDLSlider +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSlider]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithNumTicks:(UInt8)numTicks position:(UInt8)position sliderHeader:(NSString *)sliderHeader sliderFooter:(nullable NSString *)sliderFooter timeout:(UInt16)timeout { NSArray *footer = nil; @@ -53,46 +56,46 @@ - (instancetype)initWithNumTicks:(UInt8)numTicks position:(UInt8)position { } - (void)setNumTicks:(NSNumber *)numTicks { - [parameters sdl_setObject:numTicks forName:SDLRPCParameterNameNumberTicks]; + [self.parameters sdl_setObject:numTicks forName:SDLRPCParameterNameNumberTicks]; } - (NSNumber *)numTicks { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameNumberTicks ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameNumberTicks ofClass:NSNumber.class error:&error]; } - (void)setPosition:(NSNumber *)position { - [parameters sdl_setObject:position forName:SDLRPCParameterNamePosition]; + [self.parameters sdl_setObject:position forName:SDLRPCParameterNamePosition]; } - (NSNumber *)position { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:&error]; } - (void)setSliderHeader:(NSString *)sliderHeader { - [parameters sdl_setObject:sliderHeader forName:SDLRPCParameterNameSliderHeader]; + [self.parameters sdl_setObject:sliderHeader forName:SDLRPCParameterNameSliderHeader]; } - (NSString *)sliderHeader { NSError *error = nil; - return [parameters sdl_objectForName:SDLRPCParameterNameSliderHeader ofClass:NSString.class error:&error]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSliderHeader ofClass:NSString.class error:&error]; } - (void)setSliderFooter:(nullable NSArray *)sliderFooter { - [parameters sdl_setObject:sliderFooter forName:SDLRPCParameterNameSliderFooter]; + [self.parameters sdl_setObject:sliderFooter forName:SDLRPCParameterNameSliderFooter]; } - (nullable NSArray *)sliderFooter { - return [parameters sdl_objectsForName:SDLRPCParameterNameSliderFooter ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSliderFooter ofClass:NSString.class error:nil]; } - (void)setTimeout:(nullable NSNumber *)timeout { - [parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout]; + [self.parameters sdl_setObject:timeout forName:SDLRPCParameterNameTimeout]; } - (nullable NSNumber *)timeout { - return [parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTimeout ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSliderResponse.m b/SmartDeviceLink/SDLSliderResponse.m index fc8e1cbb6..6d9985111 100644 --- a/SmartDeviceLink/SDLSliderResponse.m +++ b/SmartDeviceLink/SDLSliderResponse.m @@ -12,18 +12,21 @@ @implementation SDLSliderResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSlider]) { } return self; } +#pragma clang diagnostic pop - (void)setSliderPosition:(nullable NSNumber *)sliderPosition { - [parameters sdl_setObject:sliderPosition forName:SDLRPCParameterNameSliderPosition]; + [self.parameters sdl_setObject:sliderPosition forName:SDLRPCParameterNameSliderPosition]; } - (nullable NSNumber *)sliderPosition { - return [parameters sdl_objectForName:SDLRPCParameterNameSliderPosition ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSliderPosition ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSoftButton.m b/SmartDeviceLink/SDLSoftButton.m index a2b526c23..6d1082c48 100644 --- a/SmartDeviceLink/SDLSoftButton.m +++ b/SmartDeviceLink/SDLSoftButton.m @@ -40,53 +40,53 @@ - (instancetype)initWithType:(SDLSoftButtonType)type text:(nullable NSString *)t } - (void)setType:(SDLSoftButtonType)type { - [store sdl_setObject:type forName:SDLRPCParameterNameType]; + [self.store sdl_setObject:type forName:SDLRPCParameterNameType]; } - (SDLSoftButtonType)type { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameType error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameType error:&error]; } - (void)setText:(nullable NSString *)text { - [store sdl_setObject:text forName:SDLRPCParameterNameText]; + [self.store sdl_setObject:text forName:SDLRPCParameterNameText]; } - (nullable NSString *)text { - return [store sdl_objectForName:SDLRPCParameterNameText ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameText ofClass:NSString.class error:nil]; } - (void)setImage:(nullable SDLImage *)image { - [store sdl_setObject:image forName:SDLRPCParameterNameImage]; + [self.store sdl_setObject:image forName:SDLRPCParameterNameImage]; } - (nullable SDLImage *)image { - return [store sdl_objectForName:SDLRPCParameterNameImage ofClass:SDLImage.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameImage ofClass:SDLImage.class error:nil]; } - (void)setIsHighlighted:(nullable NSNumber *)isHighlighted { - [store sdl_setObject:isHighlighted forName:SDLRPCParameterNameIsHighlighted]; + [self.store sdl_setObject:isHighlighted forName:SDLRPCParameterNameIsHighlighted]; } - (nullable NSNumber *)isHighlighted { - return [store sdl_objectForName:SDLRPCParameterNameIsHighlighted ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameIsHighlighted ofClass:NSNumber.class error:nil]; } - (void)setSoftButtonID:(NSNumber *)softButtonID { - [store sdl_setObject:softButtonID forName:SDLRPCParameterNameSoftButtonId]; + [self.store sdl_setObject:softButtonID forName:SDLRPCParameterNameSoftButtonId]; } - (NSNumber *)softButtonID { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameSoftButtonId ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameSoftButtonId ofClass:NSNumber.class error:&error]; } - (void)setSystemAction:(nullable SDLSystemAction)systemAction { - [store sdl_setObject:systemAction forName:SDLRPCParameterNameSystemAction]; + [self.store sdl_setObject:systemAction forName:SDLRPCParameterNameSystemAction]; } - (nullable SDLSystemAction)systemAction { - return [store sdl_enumForName:SDLRPCParameterNameSystemAction error:nil]; + return [self.store sdl_enumForName:SDLRPCParameterNameSystemAction error:nil]; } -(id)copyWithZone:(nullable NSZone *)zone { diff --git a/SmartDeviceLink/SDLSoftButtonCapabilities.m b/SmartDeviceLink/SDLSoftButtonCapabilities.m index d85c9bd69..cb9c903d3 100644 --- a/SmartDeviceLink/SDLSoftButtonCapabilities.m +++ b/SmartDeviceLink/SDLSoftButtonCapabilities.m @@ -12,39 +12,39 @@ @implementation SDLSoftButtonCapabilities - (void)setShortPressAvailable:(NSNumber *)shortPressAvailable { - [store sdl_setObject:shortPressAvailable forName:SDLRPCParameterNameShortPressAvailable]; + [self.store sdl_setObject:shortPressAvailable forName:SDLRPCParameterNameShortPressAvailable]; } - (NSNumber *)shortPressAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameShortPressAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameShortPressAvailable ofClass:NSNumber.class error:&error]; } - (void)setLongPressAvailable:(NSNumber *)longPressAvailable { - [store sdl_setObject:longPressAvailable forName:SDLRPCParameterNameLongPressAvailable]; + [self.store sdl_setObject:longPressAvailable forName:SDLRPCParameterNameLongPressAvailable]; } - (NSNumber *)longPressAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLongPressAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLongPressAvailable ofClass:NSNumber.class error:&error]; } - (void)setUpDownAvailable:(NSNumber *)upDownAvailable { - [store sdl_setObject:upDownAvailable forName:SDLRPCParameterNameUpDownAvailable]; + [self.store sdl_setObject:upDownAvailable forName:SDLRPCParameterNameUpDownAvailable]; } - (NSNumber *)upDownAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameUpDownAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameUpDownAvailable ofClass:NSNumber.class error:&error]; } - (void)setImageSupported:(NSNumber *)imageSupported { - [store sdl_setObject:imageSupported forName:SDLRPCParameterNameImageSupported]; + [self.store sdl_setObject:imageSupported forName:SDLRPCParameterNameImageSupported]; } - (NSNumber *)imageSupported { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameImageSupported ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameImageSupported ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLSoftButtonManager.h b/SmartDeviceLink/SDLSoftButtonManager.h index b163fe599..dfd3d7104 100644 --- a/SmartDeviceLink/SDLSoftButtonManager.h +++ b/SmartDeviceLink/SDLSoftButtonManager.h @@ -35,6 +35,9 @@ typedef void(^SDLSoftButtonUpdateCompletionHandler)(NSError *__nullable error); */ @property (copy, nonatomic) NSArray *softButtonObjects; +/** + All transitions made in-between beginUpdates and this method will occur as one RPC update. + */ @property (assign, nonatomic, getter=isBatchingUpdates) BOOL batchUpdates; - (instancetype)init NS_UNAVAILABLE; @@ -53,13 +56,6 @@ typedef void(^SDLSoftButtonUpdateCompletionHandler)(NSError *__nullable error); */ - (void)stop; -/** - Cause all transitions in between `beginUpdates` and this method call to occur in one RPC update. - - @param handler The handler called once the update is completed. - */ -- (void)updateWithCompletionHandler:(nullable SDLSoftButtonUpdateCompletionHandler)handler; - /** Returns a soft button object associated with the manager that is named the specified name or nil if nothing corresponds. diff --git a/SmartDeviceLink/SDLSoftButtonManager.m b/SmartDeviceLink/SDLSoftButtonManager.m index 3f19ff1e1..56deb83b0 100644 --- a/SmartDeviceLink/SDLSoftButtonManager.m +++ b/SmartDeviceLink/SDLSoftButtonManager.m @@ -22,7 +22,9 @@ #import "SDLSoftButton.h" #import "SDLSoftButtonCapabilities.h" #import "SDLSoftButtonObject.h" +#import "SDLSoftButtonReplaceOperation.h" #import "SDLSoftButtonState.h" +#import "SDLSoftButtonTransitionOperation.h" NS_ASSUME_NONNULL_BEGIN @@ -35,23 +37,16 @@ @interface SDLSoftButtonObject() @interface SDLSoftButtonManager() -@property (strong, nonatomic) NSArray *currentSoftButtons; - @property (weak, nonatomic) id connectionManager; @property (weak, nonatomic) SDLFileManager *fileManager; -@property (strong, nonatomic, nullable) SDLShow *inProgressUpdate; -@property (copy, nonatomic, nullable) SDLSoftButtonUpdateCompletionHandler inProgressHandler; - -@property (assign, nonatomic) BOOL hasQueuedUpdate; -@property (copy, nonatomic, nullable) SDLSoftButtonUpdateCompletionHandler queuedUpdateHandler; +@property (strong, nonatomic) NSOperationQueue *transactionQueue; @property (copy, nonatomic, nullable) SDLHMILevel currentLevel; @property (strong, nonatomic, nullable) SDLDisplayCapabilities *displayCapabilities; @property (strong, nonatomic, nullable) SDLSoftButtonCapabilities *softButtonCapabilities; -@property (assign, nonatomic) BOOL waitingOnHMILevelUpdateToUpdate; -@property (assign, nonatomic) BOOL isDirty; +@property (strong, nonatomic) NSMutableArray *batchQueue; @end @@ -66,8 +61,8 @@ - (instancetype)initWithConnectionManager:(id)connecti _softButtonObjects = @[]; _currentLevel = nil; - _waitingOnHMILevelUpdateToUpdate = NO; - _isDirty = NO; + _transactionQueue = [self sdl_newTransactionQueue]; + _batchQueue = [NSMutableArray array]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_registerResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_displayLayoutResponse:) name:SDLDidReceiveSetDisplayLayoutResponse object:nil]; @@ -79,35 +74,31 @@ - (instancetype)initWithConnectionManager:(id)connecti - (void)stop { _softButtonObjects = @[]; _currentMainField1 = nil; - - _inProgressUpdate = nil; - _inProgressHandler = nil; - _hasQueuedUpdate = NO; - _queuedUpdateHandler = nil; _currentLevel = nil; _displayCapabilities = nil; _softButtonCapabilities = nil; - _waitingOnHMILevelUpdateToUpdate = NO; - _isDirty = NO; + + [_transactionQueue cancelAllOperations]; + self.transactionQueue = [self sdl_newTransactionQueue]; +} + +- (NSOperationQueue *)sdl_newTransactionQueue { + NSOperationQueue *queue = [[NSOperationQueue alloc] init]; + queue.name = @"SDLSoftButtonManager Transaction Queue"; + queue.maxConcurrentOperationCount = 1; + queue.qualityOfService = NSQualityOfServiceUserInitiated; + queue.suspended = YES; + + return queue; } + +#pragma mark - Sending Soft Buttons + - (void)setSoftButtonObjects:(NSArray *)softButtonObjects { // Only update if something changed. This prevents, for example, an empty array being reset if (_softButtonObjects == softButtonObjects) { return; - } else { - self.isDirty = YES; - } - - self.inProgressUpdate = nil; - if (self.inProgressHandler != nil) { - self.inProgressHandler([NSError sdl_softButtonManager_pendingUpdateSuperseded]); - self.inProgressHandler = nil; - } - self.hasQueuedUpdate = NO; - if (self.queuedUpdateHandler != nil) { - self.queuedUpdateHandler([NSError sdl_softButtonManager_pendingUpdateSuperseded]); - self.queuedUpdateHandler = nil; } // Set the soft button ids. Check to make sure no two soft buttons have the same name, there aren't many soft buttons, so n^2 isn't going to be bad @@ -129,231 +120,72 @@ - (void)setSoftButtonObjects:(NSArray *)softButtonObjects _softButtonObjects = softButtonObjects; - [self updateWithCompletionHandler:nil]; -} - -- (nullable SDLSoftButtonObject *)softButtonObjectNamed:(NSString *)name { - for (SDLSoftButtonObject *object in self.softButtonObjects) { - if ([object.name isEqualToString:name]) { - return object; - } - } - - return nil; -} - -- (void)sdl_transitionSoftButton:(SDLSoftButtonObject *)softButton { - self.isDirty = YES; - [self updateWithCompletionHandler:nil]; -} - -- (void)updateWithCompletionHandler:(nullable SDLSoftButtonUpdateCompletionHandler)handler { - // Don't send if we're batching - if (self.isBatchingUpdates || !self.isDirty) { return; } + SDLSoftButtonReplaceOperation *op = [[SDLSoftButtonReplaceOperation alloc] initWithConnectionManager:self.connectionManager fileManager:self.fileManager capabilities:self.softButtonCapabilities softButtonObjects:_softButtonObjects mainField1:self.currentMainField1]; - // Don't send if we're in HMI NONE - if (self.currentLevel == nil || [self.currentLevel isEqualToString:SDLHMILevelNone]) { - self.waitingOnHMILevelUpdateToUpdate = YES; - return; + if (self.isBatchingUpdates) { + [self.batchQueue removeAllObjects]; + [self.batchQueue addObject:op]; } else { - self.waitingOnHMILevelUpdateToUpdate = NO; + [self.transactionQueue cancelAllOperations]; + [self.transactionQueue addOperation:op]; } - - [self sdl_updateWithCompletionHandler:handler]; } -- (void)sdl_updateWithCompletionHandler:(nullable SDLSoftButtonUpdateCompletionHandler)handler { - SDLLogD(@"Updating soft buttons"); - self.isDirty = NO; - - if (self.inProgressUpdate != nil) { - SDLLogV(@"In progress update exists, queueing update"); - // If we already have a pending update, we're going to tell the old handler that it was superseded by a new update and then return - if (self.queuedUpdateHandler != nil) { - SDLLogV(@"Queued update already exists, superseding previous queued update"); - self.queuedUpdateHandler([NSError sdl_softButtonManager_pendingUpdateSuperseded]); - self.queuedUpdateHandler = nil; - } +- (void)sdl_transitionSoftButton:(SDLSoftButtonObject *)softButton { + SDLSoftButtonTransitionOperation *op = [[SDLSoftButtonTransitionOperation alloc] initWithConnectionManager:self.connectionManager capabilities:self.softButtonCapabilities softButtons:self.softButtonObjects mainField1:self.currentMainField1]; - if (handler != nil) { - self.queuedUpdateHandler = handler; - } else { - self.hasQueuedUpdate = YES; + if (self.isBatchingUpdates) { + for (SDLAsynchronousOperation *sbOperation in self.batchQueue) { + if ([sbOperation isMemberOfClass:[SDLSoftButtonTransitionOperation class]]) { + [self.batchQueue removeObject:sbOperation]; + } } - return; - } - - self.inProgressHandler = [handler copy]; - self.inProgressUpdate = [[SDLShow alloc] init]; - self.inProgressUpdate.mainField1 = self.currentMainField1 ?: @""; - - if ([self sdl_supportsSoftButtonImages]) { - [self sdl_uploadInitialStateImages]; - [self sdl_uploadOtherStateImages]; - } - - if (self.softButtonObjects == nil) { - SDLLogV(@"Soft button objects are nil, sending an empty array"); - self.inProgressUpdate.softButtons = @[]; - } else if (([self sdl_currentStateHasImages] && ![self sdl_allCurrentStateImagesAreUploaded]) - || ![self sdl_supportsSoftButtonImages]) { - // The images don't yet exist on the head unit, or we cannot use images, send a text update, if possible. Otherwise, don't send anything yet. - NSArray *textOnlyButtons = [self sdl_textButtonsForCurrentState]; - if (textOnlyButtons != nil) { - SDLLogV(@"Soft button images unavailable, sending text buttons"); - self.inProgressUpdate.softButtons = textOnlyButtons; - } else { - SDLLogV(@"Soft button images unavailable, text buttons unavailable"); - self.inProgressUpdate = nil; - return; - } + [self.batchQueue addObject:op]; } else { - SDLLogV(@"Sending soft buttons with images"); - self.inProgressUpdate.softButtons = [self sdl_softButtonsForCurrentState]; + [self.transactionQueue addOperation:op]; } - - __weak typeof(self) weakSelf = self; - [self.connectionManager sendConnectionRequest:self.inProgressUpdate withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) { - __strong typeof(weakSelf) strongSelf = weakSelf; - - SDLLogD(@"Soft button update completed"); - - strongSelf.inProgressUpdate = nil; - if (strongSelf.inProgressHandler != nil) { - strongSelf.inProgressHandler(error); - strongSelf.inProgressHandler = nil; - } - - if (strongSelf.hasQueuedUpdate) { - SDLLogV(@"Queued update exists, sending another update"); - [strongSelf updateWithCompletionHandler:[strongSelf.queuedUpdateHandler copy]]; - strongSelf.queuedUpdateHandler = nil; - strongSelf.hasQueuedUpdate = NO; - } - }]; -} - -#pragma mark - Images - -- (BOOL)sdl_currentStateHasImages { - for (SDLSoftButtonObject *object in self.softButtonObjects) { - if (object.currentState.artwork != nil) { - return YES; - } - } - - return NO; } -- (BOOL)sdl_allCurrentStateImagesAreUploaded { - for (SDLSoftButtonObject *button in self.softButtonObjects) { - SDLArtwork *artwork = button.currentState.artwork; - if (artwork != nil && ![self.fileManager hasUploadedFile:artwork] && !artwork.isStaticIcon) { - return NO; - } - } - return YES; -} +#pragma mark - Getting Soft Buttons -- (BOOL)sdl_supportsSoftButtonImages { - BOOL supportsGraphics = self.displayCapabilities ? self.displayCapabilities.graphicSupported.boolValue : YES; - BOOL supportsSoftButtonImages = self.softButtonCapabilities ? self.softButtonCapabilities.imageSupported.boolValue : NO; - - return (supportsGraphics && supportsSoftButtonImages); -} - -- (void)sdl_uploadInitialStateImages { - NSMutableArray *initialStatesToBeUploaded = [NSMutableArray array]; - // Upload all soft button images, the initial state images first, then the other states. We need to send updates when the initial state is ready. +- (nullable SDLSoftButtonObject *)softButtonObjectNamed:(NSString *)name { for (SDLSoftButtonObject *object in self.softButtonObjects) { - if ([self sdl_artworkNeedsUpload:object.currentState.artwork]) { - [initialStatesToBeUploaded addObject:object.currentState.artwork]; + if ([object.name isEqualToString:name]) { + return object; } } - // Upload initial images, then other state images - if (initialStatesToBeUploaded.count > 0) { - SDLLogD(@"Uploading soft button initial artworks"); - [self.fileManager uploadArtworks:[initialStatesToBeUploaded copy] completionHandler:^(NSArray * _Nonnull artworkNames, NSError * _Nullable error) { - if (error != nil) { - SDLLogE(@"Error uploading soft button artworks: %@", error); - } - - SDLLogD(@"Soft button initial artworks uploaded"); - [self sdl_updateWithCompletionHandler:nil]; - }]; - } + return nil; } -- (void)sdl_uploadOtherStateImages { - NSMutableArray *otherStatesToBeUploaded = [NSMutableArray array]; - // Upload all soft button images, the initial state images first, then the other states. We need to send updates when the initial state is ready. - for (SDLSoftButtonObject *object in self.softButtonObjects) { - for (SDLSoftButtonState *state in object.states) { - if ([state.name isEqualToString:object.currentState.name]) { continue; } - if ([self sdl_artworkNeedsUpload:state.artwork]) { - [otherStatesToBeUploaded addObject:state.artwork]; - } - } - } - if (otherStatesToBeUploaded.count > 0) { - SDLLogD(@"Uploading soft button other state artworks"); - [self.fileManager uploadArtworks:[otherStatesToBeUploaded copy] completionHandler:^(NSArray * _Nonnull artworkNames, NSError * _Nullable error) { - if (error != nil) { - SDLLogE(@"Error uploading soft button artworks: %@", error); - } +#pragma mark - Getters / Setters - SDLLogD(@"Soft button other state artworks uploaded"); - // In case our soft button states have changed in the meantime - [self sdl_updateWithCompletionHandler:nil]; - }]; - } -} +- (void)setBatchUpdates:(BOOL)batchUpdates { + _batchUpdates = batchUpdates; -- (BOOL)sdl_artworkNeedsUpload:(SDLArtwork *)artwork { - return (artwork != nil && ![self.fileManager hasUploadedFile:artwork] && !artwork.isStaticIcon); + if (!_batchUpdates) { + [self.transactionQueue addOperations:[self.batchQueue copy] waitUntilFinished:NO]; + [self.batchQueue removeAllObjects]; + } } -#pragma mark - Creating Soft Buttons - -/** - Returns text soft buttons representing the initial states of the button objects, or nil if _any_ of the buttons' current states are image only buttons. +- (void)setCurrentMainField1:(nullable NSString *)currentMainField1 { + _currentMainField1 = currentMainField1; - @return The text soft buttons - */ -- (nullable NSArray *)sdl_textButtonsForCurrentState { - NSMutableArray *textButtons = [NSMutableArray arrayWithCapacity:self.softButtonObjects.count]; - for (SDLSoftButtonObject *buttonObject in self.softButtonObjects) { - SDLSoftButton *button = buttonObject.currentStateSoftButton; - if (button.text == nil) { - return nil; + for (NSUInteger i = 0; i < self.transactionQueue.operations.count; i++) { + if ([self.transactionQueue.operations[i] isMemberOfClass:[SDLSoftButtonReplaceOperation class]]) { + SDLSoftButtonReplaceOperation *op = self.transactionQueue.operations[i]; + op.mainField1 = currentMainField1; + } else if ([self.transactionQueue.operations[i] isMemberOfClass:[SDLSoftButtonTransitionOperation class]]) { + SDLSoftButtonTransitionOperation *op = self.transactionQueue.operations[i]; + op.mainField1 = currentMainField1; } - - button.image = nil; - button.type = SDLSoftButtonTypeText; - [textButtons addObject:button]; - } - - return [textButtons copy]; -} - -- (NSArray *)sdl_softButtonsForCurrentState { - NSMutableArray *softButtons = [NSMutableArray arrayWithCapacity:self.softButtonObjects.count]; - for (SDLSoftButtonObject *button in self.softButtonObjects) { - [softButtons addObject:button.currentStateSoftButton]; } - - return [softButtons copy]; } -#pragma mark - Getters - -- (BOOL)hasQueuedUpdate { - return (_queuedUpdateHandler != nil ?: _hasQueuedUpdate); -} #pragma mark - RPC Responses @@ -382,9 +214,10 @@ - (void)sdl_displayLayoutResponse:(SDLRPCResponseNotification *)notification { self.softButtonCapabilities = response.softButtonCapabilities ? response.softButtonCapabilities.firstObject : nil; self.displayCapabilities = response.displayCapabilities; - // Auto-send an updated Show + // Auto-send an updated Show to account for changes to the capabilities if (self.softButtonObjects.count > 0) { - [self updateWithCompletionHandler:nil]; + SDLSoftButtonReplaceOperation *op = [[SDLSoftButtonReplaceOperation alloc] initWithConnectionManager:self.connectionManager fileManager:self.fileManager capabilities:self.softButtonCapabilities softButtonObjects:self.softButtonObjects mainField1:self.currentMainField1]; + [self.transactionQueue addOperation:op]; } } @@ -392,12 +225,15 @@ - (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification SDLOnHMIStatus *hmiStatus = (SDLOnHMIStatus *)notification.notification; SDLHMILevel oldHMILevel = self.currentLevel; - self.currentLevel = hmiStatus.hmiLevel; - - // Auto-send an updated show if we were in NONE and now we are not - if ([oldHMILevel isEqualToString:SDLHMILevelNone] && ![self.currentLevel isEqualToString:SDLHMILevelNone] && self.waitingOnHMILevelUpdateToUpdate) { - [self updateWithCompletionHandler:nil]; + if (![oldHMILevel isEqualToEnum:hmiStatus.hmiLevel]) { + if ([hmiStatus.hmiLevel isEqualToEnum:SDLHMILevelNone]) { + self.transactionQueue.suspended = YES; + } else { + self.transactionQueue.suspended = NO; + } } + + self.currentLevel = hmiStatus.hmiLevel; } @end diff --git a/SmartDeviceLink/SDLSoftButtonReplaceOperation.h b/SmartDeviceLink/SDLSoftButtonReplaceOperation.h new file mode 100644 index 000000000..9adb5afb4 --- /dev/null +++ b/SmartDeviceLink/SDLSoftButtonReplaceOperation.h @@ -0,0 +1,45 @@ +// +// SDLSoftButtonReplaceOperation.h +// SmartDeviceLink +// +// Created by Joel Fischer on 4/25/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +#import "SDLAsynchronousOperation.h" + +@class SDLSoftButtonCapabilities; +@class SDLFileManager; +@class SDLSoftButtonObject; + +@protocol SDLConnectionManagerType; + +NS_ASSUME_NONNULL_BEGIN + +/** + This class is an operation that takes a set of soft buttons and replaces the old set of soft buttons with the new set based on the capabilities available on the system. This operation will handle sending placeholder soft buttons with only text (if possible), uploading the initial state images, sending the initial state soft buttons with those images, and then uploading the other state images. + */ +@interface SDLSoftButtonReplaceOperation : SDLAsynchronousOperation + +/** + The primary text field on the system template. This is necessary to HAX a workaround for Sync 3. + */ +@property (strong, nonatomic) NSString *mainField1; + +/** + Initialize the replace operation + + @param connectionManager The manager that will send the resultant RPCs + @param fileManager The file manager that will handle uploading any images + @param capabilities The capabilites of the soft buttons on the current template + @param softButtonObjects The soft buttons that should be sent + @param mainField1 The primary text field of the system template + @return The operation + */ +- (instancetype)initWithConnectionManager:(id)connectionManager fileManager:(SDLFileManager *)fileManager capabilities:(SDLSoftButtonCapabilities *)capabilities softButtonObjects:(NSArray *)softButtonObjects mainField1:(NSString *)mainField1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSoftButtonReplaceOperation.m b/SmartDeviceLink/SDLSoftButtonReplaceOperation.m new file mode 100644 index 000000000..c967e10a9 --- /dev/null +++ b/SmartDeviceLink/SDLSoftButtonReplaceOperation.m @@ -0,0 +1,300 @@ +// +// SDLSoftButtonReplaceOperation.m +// SmartDeviceLink +// +// Created by Joel Fischer on 4/25/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "SDLSoftButtonReplaceOperation.h" + +#import "SDLArtwork.h" +#import "SDLConnectionManagerType.h" +#import "SDLDisplayCapabilities+ShowManagerExtensions.h" +#import "SDLFileManager.h" +#import "SDLLogMacros.h" +#import "SDLShow.h" +#import "SDLSoftButton.h" +#import "SDLSoftButtonCapabilities.h" +#import "SDLSoftButtonObject.h" +#import "SDLSoftButtonState.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLSoftButtonReplaceOperation () + +@property (strong, nonatomic) SDLSoftButtonCapabilities *softButtonCapabilities; +@property (strong, nonatomic) NSArray *softButtonObjects; + +@property (weak, nonatomic) id connectionManager; +@property (weak, nonatomic) SDLFileManager *fileManager; +@property (copy, nonatomic, nullable) NSError *internalError; + +@end + +@implementation SDLSoftButtonReplaceOperation + +- (instancetype)initWithConnectionManager:(id)connectionManager fileManager:(SDLFileManager *)fileManager capabilities:(SDLSoftButtonCapabilities *)capabilities softButtonObjects:(NSArray *)softButtonObjects mainField1:(NSString *)mainField1 { + self = [super init]; + if (!self) { return nil; } + + _connectionManager = connectionManager; + _fileManager = fileManager; + _softButtonCapabilities = capabilities; + _softButtonObjects = softButtonObjects; + _mainField1 = mainField1; + + return self; +} + +- (void)start { + [super start]; + + // Check the state of our images + if (![self sdl_supportsSoftButtonImages]) { + // We don't support images at all + SDLLogW(@"Soft button images are not supported. Attempting to send text-only soft buttons. If any button does not contain text, no buttons will be sent."); + + // Send text buttons if all the soft buttons have text + __weak typeof(self) weakself = self; + [self sdl_sendCurrentStateTextOnlySoftButtonsWithCompletionHandler:^(BOOL success) { + if (!success) { + SDLLogE(@"Head unit does not support images and some of the soft buttons do not have text, so none of the buttons will be sent."); + [weakself finishOperation]; + } + }]; + } else if ([self sdl_currentStateHasImages] && ![self sdl_allCurrentStateImagesAreUploaded]) { + // If there are images that aren't uploaded + // Send text buttons if all the soft buttons have text + [self sdl_sendCurrentStateTextOnlySoftButtonsWithCompletionHandler:^(BOOL success) {}]; + + // Upload initial images + __weak typeof(self) weakself = self; + [self sdl_uploadInitialStateImagesWithCompletionHandler:^{ + // Send initial soft buttons w/ images + [weakself sdl_sendCurrentStateSoftButtonsWithCompletionHandler:^{ + // Upload other images + [weakself sdl_uploadOtherStateImagesWithCompletionHandler:^{ + __strong typeof(weakself) strongself = weakself; + SDLLogV(@"Finished sending other images for soft buttons"); + [strongself finishOperation]; + }]; + }]; + }]; + } else { + // All the images are already uploaded. Send initial soft buttons w/ images. + __weak typeof(self) weakself = self; + [self sdl_sendCurrentStateSoftButtonsWithCompletionHandler:^{ + __strong typeof(weakself) strongself = weakself; + SDLLogV(@"Finished sending soft buttons with images"); + [strongself finishOperation]; + }]; + } +} + + +#pragma mark - Uploading Images + +- (void)sdl_uploadInitialStateImagesWithCompletionHandler:(void (^)(void))handler { + // Upload all soft button images, the initial state images first, then the other states. We need to send updates when the initial state is ready. + NSMutableArray *initialStatesToBeUploaded = [NSMutableArray array]; + for (SDLSoftButtonObject *object in self.softButtonObjects) { + if ([self sdl_artworkNeedsUpload:object.currentState.artwork]) { + [initialStatesToBeUploaded addObject:object.currentState.artwork]; + } + } + + if (initialStatesToBeUploaded.count == 0) { + SDLLogV(@"No initial state artworks to upload"); + handler(); + return; + } + + SDLLogD(@"Uploading soft button initial artworks"); + NSMutableArray *failedArtworkNames = [NSMutableArray array]; + __weak typeof(self) weakself = self; + [self.fileManager uploadArtworks:[initialStatesToBeUploaded copy] progressHandler:^BOOL(NSString * _Nonnull artworkName, float uploadPercentage, NSError * _Nullable error) { + SDLLogV(@"Uploaded initial state artwork: %@, error: %@, percent complete: %f.2%%", artworkName, error, uploadPercentage * 100); + if (error != nil) { + [failedArtworkNames addObject:artworkName]; + } + + if (weakself.isCancelled) { + [weakself finishOperation]; + return NO; + } + + return YES; + } completionHandler:^(NSArray * _Nonnull artworkNames, NSError * _Nullable error) { + if (error != nil) { + SDLLogE(@"Error uploading soft button artworks: %@", error); + } else { + SDLLogD(@"Soft button initial state artworks uploaded"); + } + + handler(); + }]; +} + +- (void)sdl_uploadOtherStateImagesWithCompletionHandler:(void (^)(void))handler { + NSMutableArray *otherStatesToBeUploaded = [NSMutableArray array]; + // Upload all soft button images, the initial state images first, then the other states. We need to send updates when the initial state is ready. + for (SDLSoftButtonObject *object in self.softButtonObjects) { + for (SDLSoftButtonState *state in object.states) { + if ([state.name isEqualToString:object.currentState.name]) { continue; } + if ([self sdl_artworkNeedsUpload:state.artwork]) { + [otherStatesToBeUploaded addObject:state.artwork]; + } + } + } + + if (otherStatesToBeUploaded.count == 0) { + SDLLogV(@"No other state artworks to upload"); + handler(); + return; + } + + SDLLogD(@"Uploading soft button other state artworks"); + NSMutableArray *failedArtworkNames = [NSMutableArray array]; + __weak typeof(self) weakself = self; + [self.fileManager uploadArtworks:[otherStatesToBeUploaded copy] progressHandler:^BOOL(NSString * _Nonnull artworkName, float uploadPercentage, NSError * _Nullable error) { + SDLLogV(@"Uploaded other state artwork: %@, error: %@, percent complete: %f.2%%", artworkName, error, uploadPercentage * 100); + if (error != nil) { + [failedArtworkNames addObject:artworkName]; + } + + if (weakself.isCancelled) { + [weakself finishOperation]; + return NO; + } + + return YES; + } completionHandler:^(NSArray * _Nonnull artworkNames, NSError * _Nullable error) { + if (error != nil) { + SDLLogE(@"Error uploading soft button artworks: %@", error); + } else { + SDLLogD(@"Soft button other state artworks uploaded"); + } + + handler(); + }]; +} + + +#pragma mark - Sending the Soft Buttons + +- (void)sdl_sendCurrentStateSoftButtonsWithCompletionHandler:(void (^)(void))handler { + if (self.isCancelled) { + [self finishOperation]; + } + + SDLLogV(@"Preparing to send full soft buttons"); + NSMutableArray *softButtons = [NSMutableArray arrayWithCapacity:self.softButtonObjects.count]; + for (SDLSoftButtonObject *buttonObject in self.softButtonObjects) { + [softButtons addObject:buttonObject.currentStateSoftButton]; + } + + SDLShow *show = [[SDLShow alloc] init]; + show.mainField1 = self.mainField1; + show.softButtons = [softButtons copy]; + + [self.connectionManager sendConnectionRequest:show withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) { + if (error != nil) { + SDLLogW(@"Failed to update soft buttons with text buttons: %@", error); + } + + SDLLogD(@"Finished sending text only soft buttons"); + handler(); + }]; +} + +/** + Returns text soft buttons representing the current states of the button objects, or returns if _any_ of the buttons' current states are image only buttons. +*/ +- (void)sdl_sendCurrentStateTextOnlySoftButtonsWithCompletionHandler:(void (^)(BOOL success))handler { + if (self.isCancelled) { + [self finishOperation]; + } + + SDLLogV(@"Preparing to send text-only soft buttons"); + NSMutableArray *textButtons = [NSMutableArray arrayWithCapacity:self.softButtonObjects.count]; + for (SDLSoftButtonObject *buttonObject in self.softButtonObjects) { + SDLSoftButton *button = buttonObject.currentStateSoftButton; + if (button.text == nil) { + SDLLogW(@"Attempted to create text buttons, but some buttons don't support text, so no text-only soft buttons will be sent"); + handler(NO); + return; + } + + button.image = nil; + button.type = SDLSoftButtonTypeText; + [textButtons addObject:button]; + } + + SDLShow *show = [[SDLShow alloc] init]; + show.mainField1 = self.mainField1; + show.softButtons = [textButtons copy]; + + [self.connectionManager sendConnectionRequest:show withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) { + if (error != nil) { + SDLLogW(@"Failed to update soft buttons with text buttons: %@", error); + } + + SDLLogD(@"Finished sending text only soft buttons"); + handler(YES); + }]; +} + +#pragma mark - Images + +- (BOOL)sdl_artworkNeedsUpload:(SDLArtwork *)artwork { + return (artwork != nil && ![self.fileManager hasUploadedFile:artwork] && !artwork.isStaticIcon); +} + +- (BOOL)sdl_currentStateHasImages { + for (SDLSoftButtonObject *object in self.softButtonObjects) { + if (object.currentState.artwork != nil) { + return YES; + } + } + + return NO; +} + +- (BOOL)sdl_allCurrentStateImagesAreUploaded { + for (SDLSoftButtonObject *button in self.softButtonObjects) { + SDLArtwork *artwork = button.currentState.artwork; + if ([self sdl_artworkNeedsUpload:artwork]) { + return NO; + } + } + + return YES; +} + +- (BOOL)sdl_supportsSoftButtonImages { + return self.softButtonCapabilities ? self.softButtonCapabilities.imageSupported.boolValue : NO; +} + +#pragma mark - Property Overrides + +- (void)finishOperation { + SDLLogV(@"Finishing soft button replace operation"); + [super finishOperation]; +} + +- (nullable NSString *)name { + return @"com.sdl.softbuttonmanager.replace"; +} + +- (NSOperationQueuePriority)queuePriority { + return NSOperationQueuePriorityNormal; +} + +- (nullable NSError *)error { + return self.internalError; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSoftButtonTransitionOperation.h b/SmartDeviceLink/SDLSoftButtonTransitionOperation.h new file mode 100644 index 000000000..2679c9895 --- /dev/null +++ b/SmartDeviceLink/SDLSoftButtonTransitionOperation.h @@ -0,0 +1,43 @@ +// +// SDLSoftButtonTransitionOperation.h +// SmartDeviceLink +// +// Created by Joel Fischer on 4/25/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +#import "SDLAsynchronousOperation.h" + +@class SDLSoftButtonCapabilities; +@class SDLSoftButtonObject; + +@protocol SDLConnectionManagerType; + +NS_ASSUME_NONNULL_BEGIN + +/** + This operation handles changing a set of soft button objects when some of those objects have changed state. + */ +@interface SDLSoftButtonTransitionOperation : SDLAsynchronousOperation + +/** + The primary text field on the system template. This is necessary to HAX a workaround for Sync 3. + */ +@property (strong, nonatomic) NSString *mainField1; + +/** + Initialize the transition operation + + @param connectionManager The manager that will send the resultant RPCs + @param capabilities The capabilites of the soft buttons on the current template + @param softButtons The soft buttons that should be sent + @param mainField1 The primary text field of the system template + @return The transition operation + */ +- (instancetype)initWithConnectionManager:(id)connectionManager capabilities:(SDLSoftButtonCapabilities *)capabilities softButtons:(NSArray *)softButtons mainField1:(NSString *)mainField1; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSoftButtonTransitionOperation.m b/SmartDeviceLink/SDLSoftButtonTransitionOperation.m new file mode 100644 index 000000000..862df6c5e --- /dev/null +++ b/SmartDeviceLink/SDLSoftButtonTransitionOperation.m @@ -0,0 +1,91 @@ +// +// SDLSoftButtonTransitionOperation.m +// SmartDeviceLink +// +// Created by Joel Fischer on 4/25/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "SDLSoftButtonTransitionOperation.h" + +#import "SDLConnectionManagerType.h" +#import "SDLFileManager.h" +#import "SDLLogMacros.h" +#import "SDLSoftButtonCapabilities.h" +#import "SDLShow.h" +#import "SDLSoftButton.h" +#import "SDLSoftButtonObject.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SDLSoftButtonTransitionOperation () + +@property (strong, nonatomic) SDLSoftButtonCapabilities *softButtonCapabilities; +@property (strong, nonatomic) NSArray *softButtons; + +@property (weak, nonatomic) id connectionManager; +@property (copy, nonatomic, nullable) NSError *internalError; + +@end + +@implementation SDLSoftButtonTransitionOperation + +- (instancetype)initWithConnectionManager:(id)connectionManager capabilities:(SDLSoftButtonCapabilities *)capabilities softButtons:(NSArray *)softButtons mainField1:(NSString *)mainField1 { + self = [super init]; + if (!self) { return nil; } + + _connectionManager = connectionManager; + _softButtonCapabilities = capabilities; + _softButtons = softButtons; + _mainField1 = mainField1; + + return self; +} + +- (void)start { + [super start]; + + [self sdl_sendNewSoftButtons]; +} + +- (void)sdl_sendNewSoftButtons { + SDLShow *newShow = [[SDLShow alloc] init]; + newShow.mainField1 = self.mainField1; + newShow.softButtons = [self sdl_currentStateSoftButtonsForObjects:self.softButtons]; + + [self.connectionManager sendConnectionRequest:newShow withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) { + if (error != nil) { + SDLLogW(@"Failed to transition soft button to new state. Error: %@, Response: %@", error, response); + self.internalError = error; + } + + [self finishOperation]; + }]; +} + +- (NSArray *)sdl_currentStateSoftButtonsForObjects:(NSArray *)objects { + NSMutableArray *softButtons = [NSMutableArray arrayWithCapacity:objects.count]; + for (SDLSoftButtonObject *button in objects) { + [softButtons addObject:button.currentStateSoftButton]; + } + + return [softButtons copy]; +} + +#pragma mark - Property Overrides + +- (nullable NSString *)name { + return @"com.sdl.softbuttonmanager.transition"; +} + +- (NSOperationQueuePriority)queuePriority { + return NSOperationQueuePriorityNormal; +} + +- (nullable NSError *)error { + return self.internalError; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSpeak.m b/SmartDeviceLink/SDLSpeak.m index a0ce720e6..4a8b18244 100644 --- a/SmartDeviceLink/SDLSpeak.m +++ b/SmartDeviceLink/SDLSpeak.m @@ -13,11 +13,14 @@ @implementation SDLSpeak +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSpeak]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithTTS:(NSString *)ttsText { NSArray *ttsChunks = [SDLTTSChunk textChunksFromString:ttsText]; @@ -36,12 +39,12 @@ - (instancetype)initWithTTSChunks:(NSArray *)ttsChunks { } - (void)setTtsChunks:(NSArray *)ttsChunks { - [parameters sdl_setObject:ttsChunks forName:SDLRPCParameterNameTTSChunks]; + [self.parameters sdl_setObject:ttsChunks forName:SDLRPCParameterNameTTSChunks]; } - (NSArray *)ttsChunks { NSError *error = nil; - return [parameters sdl_objectsForName:SDLRPCParameterNameTTSChunks ofClass:SDLTTSChunk.class error:&error]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameTTSChunks ofClass:SDLTTSChunk.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLSpeakResponse.m b/SmartDeviceLink/SDLSpeakResponse.m index 95b157682..e3cd91ae4 100644 --- a/SmartDeviceLink/SDLSpeakResponse.m +++ b/SmartDeviceLink/SDLSpeakResponse.m @@ -12,11 +12,14 @@ @implementation SDLSpeakResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSpeak]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLStartTime.m b/SmartDeviceLink/SDLStartTime.m index 5420246ae..4fa55b9df 100644 --- a/SmartDeviceLink/SDLStartTime.m +++ b/SmartDeviceLink/SDLStartTime.m @@ -38,30 +38,30 @@ - (instancetype)initWithHours:(UInt8)hours minutes:(UInt8)minutes seconds:(UInt8 } - (void)setHours:(NSNumber *)hours { - [store sdl_setObject:hours forName:SDLRPCParameterNameHours]; + [self.store sdl_setObject:hours forName:SDLRPCParameterNameHours]; } - (NSNumber *)hours { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameHours ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameHours ofClass:NSNumber.class error:&error]; } - (void)setMinutes:(NSNumber *)minutes { - [store sdl_setObject:minutes forName:SDLRPCParameterNameMinutes]; + [self.store sdl_setObject:minutes forName:SDLRPCParameterNameMinutes]; } - (NSNumber *)minutes { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMinutes ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMinutes ofClass:NSNumber.class error:&error]; } - (void)setSeconds:(NSNumber *)seconds { - [store sdl_setObject:seconds forName:SDLRPCParameterNameSeconds]; + [self.store sdl_setObject:seconds forName:SDLRPCParameterNameSeconds]; } - (NSNumber *)seconds { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameSeconds ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameSeconds ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLStationIDNumber.m b/SmartDeviceLink/SDLStationIDNumber.m index 623cb0b09..a88afe79a 100644 --- a/SmartDeviceLink/SDLStationIDNumber.m +++ b/SmartDeviceLink/SDLStationIDNumber.m @@ -22,20 +22,20 @@ - (instancetype)initWithCountryCode:(nullable NSNumber *)countryCode fcc } - (void)setCountryCode:(nullable NSNumber *)countryCode { - [store sdl_setObject:countryCode forName:SDLRPCParameterNameCountryCode]; + [self.store sdl_setObject:countryCode forName:SDLRPCParameterNameCountryCode]; } - (nullable NSNumber *)countryCode { - return [store sdl_objectForName:SDLRPCParameterNameCountryCode ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCountryCode ofClass:NSNumber.class error:nil]; } - (void)setFccFacilityId:(nullable NSNumber *)fccFacilityId { - [store sdl_setObject:fccFacilityId forName:SDLRPCParameterNameFCCFacilityId]; + [self.store sdl_setObject:fccFacilityId forName:SDLRPCParameterNameFCCFacilityId]; } - (nullable NSNumber *)fccFacilityId { - return [store sdl_objectForName:SDLRPCParameterNameFCCFacilityId ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameFCCFacilityId ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLStreamDelegate.h b/SmartDeviceLink/SDLStreamDelegate.h deleted file mode 100644 index f6b0115ad..000000000 --- a/SmartDeviceLink/SDLStreamDelegate.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// SDLStreamDelegate.h - -#import - -NS_ASSUME_NONNULL_BEGIN - -// Convenience typedefs -typedef void (^SDLStreamOpenHandler)(NSStream *stream); -typedef void (^SDLStreamHasBytesHandler)(NSInputStream *istream); -typedef void (^SDLStreamHasSpaceHandler)(NSOutputStream *ostream); -typedef void (^SDLStreamErrorHandler)(NSStream *stream); -typedef void (^SDLStreamEndHandler)(NSStream *stream); - - -@interface SDLStreamDelegate : NSObject - -@property (nullable, nonatomic, copy) SDLStreamOpenHandler streamOpenHandler; -@property (nullable, nonatomic, copy) SDLStreamHasBytesHandler streamHasBytesHandler; -@property (nullable, nonatomic, copy) SDLStreamHasSpaceHandler streamHasSpaceHandler; -@property (nullable, nonatomic, copy) SDLStreamErrorHandler streamErrorHandler; -@property (nullable, nonatomic, copy) SDLStreamEndHandler streamEndHandler; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLStreamDelegate.m b/SmartDeviceLink/SDLStreamDelegate.m deleted file mode 100644 index 11bba6e5e..000000000 --- a/SmartDeviceLink/SDLStreamDelegate.m +++ /dev/null @@ -1,96 +0,0 @@ -// -// SDLtreamDelegate.m -// - -#import "SDLStreamDelegate.h" -#import "SDLLogMacros.h" - -NS_ASSUME_NONNULL_BEGIN - -@interface SDLStreamDelegate () { - dispatch_queue_t _input_stream_queue; -} - -@end - - -@implementation SDLStreamDelegate - -- (instancetype)init { - self = [super init]; - if (self) { - _streamOpenHandler = defaultStreamOpenHandler; - _streamHasBytesHandler = defaultStreamHasBytesHandler; - _streamHasSpaceHandler = defaultStreamHasSpaceHandler; - _streamErrorHandler = defaultStreamErrorHandler; - _streamEndHandler = defaultStreamErrorHandler; - - _input_stream_queue = dispatch_queue_create("com.sdl.streamdelegate.input", DISPATCH_QUEUE_SERIAL); - } - return self; -} - -- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode { - switch (eventCode) { - case NSStreamEventOpenCompleted: { - if (_streamOpenHandler) { - self.streamOpenHandler(stream); - } - break; - } - case NSStreamEventHasBytesAvailable: { - if (_streamHasBytesHandler) { - dispatch_async(_input_stream_queue, ^{ - self.streamHasBytesHandler((NSInputStream *)stream); - }); - } - break; - } - case NSStreamEventHasSpaceAvailable: { - if (_streamHasSpaceHandler) { - self.streamHasSpaceHandler((NSOutputStream *)stream); - } - break; - } - case NSStreamEventErrorOccurred: { - if (_streamErrorHandler) { - self.streamErrorHandler(stream); - } - break; - } - case NSStreamEventEndEncountered: { - if (_streamEndHandler) { - self.streamEndHandler(stream); - } - break; - } - case NSStreamEventNone: - default: { - break; - } - } -} - -SDLStreamOpenHandler defaultStreamOpenHandler = ^(NSStream *stream) { - SDLLogV(@"Transport stream event open"); -}; - -SDLStreamHasBytesHandler defaultStreamHasBytesHandler = ^(NSInputStream *istream) { - SDLLogV(@"Transport stream event has bytes"); -}; - -SDLStreamHasSpaceHandler defaultStreamHasSpaceHandler = ^(NSOutputStream *ostream) { - SDLLogV(@"Transport stream event has space"); -}; - -SDLStreamErrorHandler defaultStreamErrorHandler = ^(NSStream *stream) { - SDLLogV(@"Transport stream event error"); -}; - -SDLStreamEndHandler defaultStreamEndHandler = ^(NSStream *stream) { - SDLLogV(@"Transport stream event end"); -}; - -@end - -NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLStreamingMediaManager.h b/SmartDeviceLink/SDLStreamingMediaManager.h index c306f8550..8e96e7ebb 100644 --- a/SmartDeviceLink/SDLStreamingMediaManager.h +++ b/SmartDeviceLink/SDLStreamingMediaManager.h @@ -170,7 +170,9 @@ NS_ASSUME_NONNULL_BEGIN - (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp; /** - * This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback + * This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback. + * + * NOTE: See the `.audioManager` (SDLAudioStreamManager) `pushWithData:` method for a more modern API. * * @param audioData The data in PCM audio format, to be played * diff --git a/SmartDeviceLink/SDLSubscribeButton.m b/SmartDeviceLink/SDLSubscribeButton.m index f3fc0a8ab..b8f25b5c8 100644 --- a/SmartDeviceLink/SDLSubscribeButton.m +++ b/SmartDeviceLink/SDLSubscribeButton.m @@ -12,11 +12,14 @@ @implementation SDLSubscribeButton +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSubscribeButton]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithHandler:(nullable SDLRPCButtonNotificationHandler)handler { self = [self init]; @@ -42,12 +45,12 @@ - (instancetype)initWithButtonName:(SDLButtonName)buttonName handler:(nullable S } - (void)setButtonName:(SDLButtonName)buttonName { - [parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; + [self.parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; } - (SDLButtonName)buttonName { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; } -(id)copyWithZone:(nullable NSZone *)zone { diff --git a/SmartDeviceLink/SDLSubscribeButtonResponse.m b/SmartDeviceLink/SDLSubscribeButtonResponse.m index f8d0a4310..b9e8db4b8 100644 --- a/SmartDeviceLink/SDLSubscribeButtonResponse.m +++ b/SmartDeviceLink/SDLSubscribeButtonResponse.m @@ -12,11 +12,14 @@ @implementation SDLSubscribeButtonResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSubscribeButton]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSubscribeVehicleData.m b/SmartDeviceLink/SDLSubscribeVehicleData.m index 8774f98f4..cf2b650ae 100644 --- a/SmartDeviceLink/SDLSubscribeVehicleData.m +++ b/SmartDeviceLink/SDLSubscribeVehicleData.m @@ -12,11 +12,14 @@ @implementation SDLSubscribeVehicleData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSubscribeVehicleData]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure wiperStatus:(BOOL)wiperStatus { return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:NO emergencyEvent:emergencyEvent engineOilLife:NO engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:NO gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:NO wiperStatus:wiperStatus]; @@ -66,235 +69,235 @@ - (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPositio } - (void)setGps:(nullable NSNumber *)gps { - [parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; + [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; } - (nullable NSNumber *)gps { - return [parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil]; } - (void)setSpeed:(nullable NSNumber *)speed { - [parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; + [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; } - (nullable NSNumber *)speed { - return [parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; } - (void)setRpm:(nullable NSNumber *)rpm { - [parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; + [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; } - (nullable NSNumber *)rpm { - return [parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel:(nullable NSNumber *)fuelLevel { - [parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; + [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; } - (nullable NSNumber *)fuelLevel { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel_State:(nullable NSNumber *)fuelLevel_State { - [parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; + [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; } - (nullable NSNumber *)fuelLevel_State { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil]; } - (void)setFuelRange:(nullable NSNumber *)fuelRange { - [parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; + [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; } - (nullable NSNumber *)fuelRange { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil]; } - (void)setInstantFuelConsumption:(nullable NSNumber *)instantFuelConsumption { - [parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; + [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; } - (nullable NSNumber *)instantFuelConsumption { - return [parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; } - (void)setExternalTemperature:(nullable NSNumber *)externalTemperature { - [parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; + [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; } - (nullable NSNumber *)externalTemperature { - return [parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; } - (void)setPrndl:(nullable NSNumber *)prndl { - [parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; + [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; } - (nullable NSNumber *)prndl { - return [parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil]; } - (void)setTirePressure:(nullable NSNumber *)tirePressure { - [parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; + [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; } - (nullable NSNumber *)tirePressure { - return [parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil]; } - (void)setOdometer:(nullable NSNumber *)odometer { - [parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; + [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; } - (nullable NSNumber *)odometer { - return [parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; } - (void)setBeltStatus:(nullable NSNumber *)beltStatus { - [parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; + [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; } - (nullable NSNumber *)beltStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil]; } - (void)setBodyInformation:(nullable NSNumber *)bodyInformation { - [parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; + [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; } - (nullable NSNumber *)bodyInformation { - return [parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil]; } - (void)setDeviceStatus:(nullable NSNumber *)deviceStatus { - [parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; + [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; } - (nullable NSNumber *)deviceStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil]; } - (void)setDriverBraking:(nullable NSNumber *)driverBraking { - [parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; + [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; } - (nullable NSNumber *)driverBraking { - return [parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil]; } - (void)setWiperStatus:(nullable NSNumber *)wiperStatus { - [parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; + [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; } - (nullable NSNumber *)wiperStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil]; } - (void)setHeadLampStatus:(nullable NSNumber *)headLampStatus { - [parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; + [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; } - (nullable NSNumber *)headLampStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil]; } - (void)setEngineOilLife:(nullable NSNumber *)engineOilLife { - [parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; + [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; } - (nullable NSNumber *)engineOilLife { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; } - (void)setEngineTorque:(nullable NSNumber *)engineTorque { - [parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; + [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; } - (nullable NSNumber *)engineTorque { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; } - (void)setAccPedalPosition:(nullable NSNumber *)accPedalPosition { - [parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; + [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; } - (nullable NSNumber *)accPedalPosition { - return [parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; } - (void)setSteeringWheelAngle:(nullable NSNumber *)steeringWheelAngle { - [parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; + [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; } - (nullable NSNumber *)steeringWheelAngle { - return [parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; } - (void)setECallInfo:(nullable NSNumber *)eCallInfo { - [parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; + [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; } - (nullable NSNumber *)eCallInfo { - return [parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil]; } - (void)setAirbagStatus:(nullable NSNumber *)airbagStatus { - [parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; + [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; } - (nullable NSNumber *)airbagStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil]; } - (void)setEmergencyEvent:(nullable NSNumber *)emergencyEvent { - [parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; + [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; } - (nullable NSNumber *)emergencyEvent { - return [parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil]; } - (void)setClusterModeStatus:(nullable NSNumber *)clusterModeStatus { - [parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; + [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; } - (nullable NSNumber *)clusterModeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil]; } - (void)setMyKey:(nullable NSNumber *)myKey { - [parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; + [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; } - (nullable NSNumber *)myKey { - return [parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil]; } - (void)setElectronicParkBrakeStatus:(nullable NSNumber *)electronicParkBrakeStatus { - [parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; + [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; } - (nullable NSNumber *)electronicParkBrakeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil]; } - (void)setTurnSignal:(nullable NSNumber *)turnSignal { - [parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; + [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; } - (nullable NSNumber *)turnSignal { - return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil]; } - (void)setCloudAppVehicleID:(nullable NSNumber *)cloudAppVehicleID { - [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; + [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; } - (nullable NSNumber *)cloudAppVehicleID { - return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m index f7b47b02a..648d5356e 100644 --- a/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m +++ b/SmartDeviceLink/SDLSubscribeVehicleDataResponse.m @@ -13,242 +13,245 @@ @implementation SDLSubscribeVehicleDataResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSubscribeVehicleData]) { } return self; } +#pragma clang diagnostic pop - (void)setGps:(nullable SDLVehicleDataResult *)gps { - [parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; + [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; } - (nullable SDLVehicleDataResult *)gps { - return [parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setSpeed:(nullable SDLVehicleDataResult *)speed { - [parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; + [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; } - (nullable SDLVehicleDataResult *)speed { - return [parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setRpm:(nullable SDLVehicleDataResult *)rpm { - [parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; + [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; } - (nullable SDLVehicleDataResult *)rpm { - return [parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setFuelLevel:(nullable SDLVehicleDataResult *)fuelLevel { - [parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; + [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; } - (nullable SDLVehicleDataResult *)fuelLevel { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setFuelLevel_State:(nullable SDLVehicleDataResult *)fuelLevel_State { - [parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; + [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; } - (nullable SDLVehicleDataResult *)fuelLevel_State { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setFuelRange:(nullable SDLVehicleDataResult *)fuelRange { - [parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; + [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; } - (nullable SDLVehicleDataResult *)fuelRange { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setInstantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption { - [parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; + [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; } - (nullable SDLVehicleDataResult *)instantFuelConsumption { - return [parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setExternalTemperature:(nullable SDLVehicleDataResult *)externalTemperature { - [parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; + [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; } - (nullable SDLVehicleDataResult *)externalTemperature { - return [parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setPrndl:(nullable SDLVehicleDataResult *)prndl { - [parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; + [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; } - (nullable SDLVehicleDataResult *)prndl { - return [parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setTirePressure:(nullable SDLVehicleDataResult *)tirePressure { - [parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; + [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; } - (nullable SDLVehicleDataResult *)tirePressure { - return [parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setOdometer:(nullable SDLVehicleDataResult *)odometer { - [parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; + [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; } - (nullable SDLVehicleDataResult *)odometer { - return [parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setBeltStatus:(nullable SDLVehicleDataResult *)beltStatus { - [parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; + [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; } - (nullable SDLVehicleDataResult *)beltStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setBodyInformation:(nullable SDLVehicleDataResult *)bodyInformation { - [parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; + [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; } - (nullable SDLVehicleDataResult *)bodyInformation { - return [parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setDeviceStatus:(nullable SDLVehicleDataResult *)deviceStatus { - [parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; + [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; } - (nullable SDLVehicleDataResult *)deviceStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setDriverBraking:(nullable SDLVehicleDataResult *)driverBraking { - [parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; + [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; } - (nullable SDLVehicleDataResult *)driverBraking { - return [parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setWiperStatus:(nullable SDLVehicleDataResult *)wiperStatus { - [parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; + [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; } - (nullable SDLVehicleDataResult *)wiperStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setHeadLampStatus:(nullable SDLVehicleDataResult *)headLampStatus { - [parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; + [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; } - (nullable SDLVehicleDataResult *)headLampStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setEngineOilLife:(nullable SDLVehicleDataResult *)engineOilLife { - [parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; + [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; } - (nullable SDLVehicleDataResult *)engineOilLife { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setEngineTorque:(nullable SDLVehicleDataResult *)engineTorque { - [parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; + [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; } - (nullable SDLVehicleDataResult *)engineTorque { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setAccPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition { - [parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; + [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; } - (nullable SDLVehicleDataResult *)accPedalPosition { - return [parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setSteeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle { - [parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; + [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; } - (nullable SDLVehicleDataResult *)steeringWheelAngle { - return [parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setECallInfo:(nullable SDLVehicleDataResult *)eCallInfo { - [parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; + [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; } - (nullable SDLVehicleDataResult *)eCallInfo { - return [parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setAirbagStatus:(nullable SDLVehicleDataResult *)airbagStatus { - [parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; + [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; } - (nullable SDLVehicleDataResult *)airbagStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setEmergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent { - [parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; + [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; } - (nullable SDLVehicleDataResult *)emergencyEvent { - return [parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setClusterModes:(nullable SDLVehicleDataResult *)clusterModes { - [parameters sdl_setObject:clusterModes forName:SDLRPCParameterNameClusterModes]; + [self.parameters sdl_setObject:clusterModes forName:SDLRPCParameterNameClusterModes]; } - (nullable SDLVehicleDataResult *)clusterModes { - return [parameters sdl_objectForName:SDLRPCParameterNameClusterModes ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModes ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setMyKey:(nullable SDLVehicleDataResult *)myKey { - [parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; + [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; } - (nullable SDLVehicleDataResult *)myKey { - return [parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setElectronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus { - [parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; + [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; } - (nullable SDLVehicleDataResult *)electronicParkBrakeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setTurnSignal:(nullable SDLVehicleDataResult *)turnSignal { - [parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; + [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; } - (nullable SDLVehicleDataResult *)turnSignal { - return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setCloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID { - [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; + [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; } - (nullable SDLVehicleDataResult *)cloudAppVehicleID { - return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSubscribeWayPoints.m b/SmartDeviceLink/SDLSubscribeWayPoints.m index 206af8d8c..cd2e481cf 100644 --- a/SmartDeviceLink/SDLSubscribeWayPoints.m +++ b/SmartDeviceLink/SDLSubscribeWayPoints.m @@ -11,11 +11,14 @@ @implementation SDLSubscribeWayPoints +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSubscribeWayPoints]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSubscribeWayPointsResponse.m b/SmartDeviceLink/SDLSubscribeWayPointsResponse.m index 7de1b3403..867fbc39e 100644 --- a/SmartDeviceLink/SDLSubscribeWayPointsResponse.m +++ b/SmartDeviceLink/SDLSubscribeWayPointsResponse.m @@ -12,11 +12,14 @@ @implementation SDLSubscribeWayPointsResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSubscribeWayPoints]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSyncMsgVersion.m b/SmartDeviceLink/SDLSyncMsgVersion.m index 82cfb6d4f..f7db832c2 100644 --- a/SmartDeviceLink/SDLSyncMsgVersion.m +++ b/SmartDeviceLink/SDLSyncMsgVersion.m @@ -25,29 +25,29 @@ - (instancetype)initWithMajorVersion:(UInt8)majorVersion minorVersion:(UInt8)min } - (void)setMajorVersion:(NSNumber *)majorVersion { - [store sdl_setObject:majorVersion forName:SDLRPCParameterNameMajorVersion]; + [self.store sdl_setObject:majorVersion forName:SDLRPCParameterNameMajorVersion]; } - (NSNumber *)majorVersion { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMajorVersion ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMajorVersion ofClass:NSNumber.class error:&error]; } - (void)setMinorVersion:(NSNumber *)minorVersion { - [store sdl_setObject:minorVersion forName:SDLRPCParameterNameMinorVersion]; + [self.store sdl_setObject:minorVersion forName:SDLRPCParameterNameMinorVersion]; } - (NSNumber *)minorVersion { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMinorVersion ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMinorVersion ofClass:NSNumber.class error:&error]; } - (void)setPatchVersion:(nullable NSNumber *)patchVersion { - [store sdl_setObject:patchVersion forName:SDLRPCParameterNamePatchVersion]; + [self.store sdl_setObject:patchVersion forName:SDLRPCParameterNamePatchVersion]; } - (nullable NSNumber *)patchVersion { - return [store sdl_objectForName:SDLRPCParameterNamePatchVersion ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePatchVersion ofClass:NSNumber.class error:nil]; } - (NSString *)description { diff --git a/SmartDeviceLink/SDLSyncPData.m b/SmartDeviceLink/SDLSyncPData.m index 1163bc126..bd3453b95 100644 --- a/SmartDeviceLink/SDLSyncPData.m +++ b/SmartDeviceLink/SDLSyncPData.m @@ -12,11 +12,14 @@ @implementation SDLSyncPData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSyncPData]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSyncPDataResponse.m b/SmartDeviceLink/SDLSyncPDataResponse.m index 082b1a1a4..64341aa58 100644 --- a/SmartDeviceLink/SDLSyncPDataResponse.m +++ b/SmartDeviceLink/SDLSyncPDataResponse.m @@ -12,11 +12,14 @@ @implementation SDLSyncPDataResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSyncPData]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLSystemCapability.m b/SmartDeviceLink/SDLSystemCapability.m index 23c826a34..c9273df2c 100755 --- a/SmartDeviceLink/SDLSystemCapability.m +++ b/SmartDeviceLink/SDLSystemCapability.m @@ -82,52 +82,52 @@ - (instancetype)initWithRemoteControlCapability:(SDLRemoteControlCapabilities *) } - (void)setSystemCapabilityType:(SDLSystemCapabilityType)type { - [store sdl_setObject:type forName:SDLRPCParameterNameSystemCapabilityType]; + [self.store sdl_setObject:type forName:SDLRPCParameterNameSystemCapabilityType]; } - (SDLSystemCapabilityType)systemCapabilityType { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameSystemCapabilityType error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameSystemCapabilityType error:&error]; } - (void)setAppServicesCapabilities:(nullable SDLAppServicesCapabilities *)appServicesCapabilities { - [store sdl_setObject:appServicesCapabilities forName:SDLRPCParameterNameAppServicesCapabilities]; + [self.store sdl_setObject:appServicesCapabilities forName:SDLRPCParameterNameAppServicesCapabilities]; } - (nullable SDLAppServicesCapabilities *)appServicesCapabilities { - return [store sdl_objectForName:SDLRPCParameterNameAppServicesCapabilities ofClass:SDLAppServicesCapabilities.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameAppServicesCapabilities ofClass:SDLAppServicesCapabilities.class error:nil]; } - (void)setNavigationCapability:(nullable SDLNavigationCapability *)navigationCapability { - [store sdl_setObject:navigationCapability forName:SDLRPCParameterNameNavigationCapability]; + [self.store sdl_setObject:navigationCapability forName:SDLRPCParameterNameNavigationCapability]; } - (nullable SDLNavigationCapability *)navigationCapability { - return [store sdl_objectForName:SDLRPCParameterNameNavigationCapability ofClass:SDLNavigationCapability.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNavigationCapability ofClass:SDLNavigationCapability.class error:nil]; } - (void)setPhoneCapability:(nullable SDLPhoneCapability *)phoneCapability { - [store sdl_setObject:phoneCapability forName:SDLRPCParameterNamePhoneCapability]; + [self.store sdl_setObject:phoneCapability forName:SDLRPCParameterNamePhoneCapability]; } - (nullable SDLPhoneCapability *)phoneCapability { - return [store sdl_objectForName:SDLRPCParameterNamePhoneCapability ofClass:SDLPhoneCapability.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePhoneCapability ofClass:SDLPhoneCapability.class error:nil]; } - (void)setVideoStreamingCapability:(nullable SDLVideoStreamingCapability *)videoStreamingCapability { - [store sdl_setObject:videoStreamingCapability forName:SDLRPCParameterNameVideoStreamingCapability]; + [self.store sdl_setObject:videoStreamingCapability forName:SDLRPCParameterNameVideoStreamingCapability]; } - (nullable SDLVideoStreamingCapability *)videoStreamingCapability { - return [store sdl_objectForName:SDLRPCParameterNameVideoStreamingCapability ofClass:SDLVideoStreamingCapability.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameVideoStreamingCapability ofClass:SDLVideoStreamingCapability.class error:nil]; } - (void)setRemoteControlCapability:(nullable SDLRemoteControlCapabilities *)remoteControlCapability { - [store sdl_setObject:remoteControlCapability forName:SDLRPCParameterNameRemoteControlCapability]; + [self.store sdl_setObject:remoteControlCapability forName:SDLRPCParameterNameRemoteControlCapability]; } - (nullable SDLRemoteControlCapabilities *)remoteControlCapability { - return [store sdl_objectForName:SDLRPCParameterNameRemoteControlCapability ofClass:SDLRemoteControlCapabilities.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameRemoteControlCapability ofClass:SDLRemoteControlCapabilities.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSystemCapabilityManager.h b/SmartDeviceLink/SDLSystemCapabilityManager.h index 11e31a1c2..2a86d77c8 100644 --- a/SmartDeviceLink/SDLSystemCapabilityManager.h +++ b/SmartDeviceLink/SDLSystemCapabilityManager.h @@ -24,6 +24,7 @@ @class SDLPresetBankCapabilities; @class SDLRemoteControlCapabilities; @class SDLSoftButtonCapabilities; +@class SDLSystemCapability; @class SDLSystemCapabilityManager; @class SDLVideoStreamingCapability; @@ -31,7 +32,6 @@ NS_ASSUME_NONNULL_BEGIN - /** * A completion handler called after a request for the capability type is returned from the remote system. * @@ -40,9 +40,23 @@ NS_ASSUME_NONNULL_BEGIN */ typedef void (^SDLUpdateCapabilityHandler)(NSError * _Nullable error, SDLSystemCapabilityManager *systemCapabilityManager); +/** + An observer block for whenever a subscription is called. + + @param capability The capability that was updated. + */ +typedef void (^SDLCapabilityUpdateHandler)(SDLSystemCapability *capability); +/** + A manager that handles updating and subscribing to SDL capabilities. + */ @interface SDLSystemCapabilityManager : NSObject +/** + YES if subscriptions are available on the connected head unit. If NO, calls to `subscribeToCapabilityType:withBlock` and `subscribeToCapabilityType:withObserver:selector` will fail. + */ +@property (assign, nonatomic, readonly) BOOL supportsSubscriptions; + /** * @see SDLDisplayCapabilities * @@ -134,59 +148,64 @@ typedef void (^SDLUpdateCapabilityHandler)(NSError * _Nullable error, SDLSystemC @property (nullable, strong, nonatomic, readonly) SDLAppServicesCapabilities *appServicesCapabilities; /** - * If returned, the platform supports navigation - * - * @see SDLNavigationCapability - * - * Optional + If returned, the platform supports navigation + + @see SDLNavigationCapability + + Optional */ @property (nullable, strong, nonatomic, readonly) SDLNavigationCapability *navigationCapability; /** - * If returned, the platform supports making phone calls - * - * @see SDLPhoneCapability - * - * Optional + If returned, the platform supports making phone calls + + @see SDLPhoneCapability + + Optional */ @property (nullable, strong, nonatomic, readonly) SDLPhoneCapability *phoneCapability; /** - * If returned, the platform supports video streaming - * - * @see SDLVideoStreamingCapability - * - * Optional + If returned, the platform supports video streaming + + @see SDLVideoStreamingCapability + + Optional */ @property (nullable, strong, nonatomic, readonly) SDLVideoStreamingCapability *videoStreamingCapability; /** - * If returned, the platform supports remote control capabilities - * - * @see SDLRemoteControlCapabilities - * - * Optional + If returned, the platform supports remote control capabilities + + @see SDLRemoteControlCapabilities + + Optional */ @property (nullable, strong, nonatomic, readonly) SDLRemoteControlCapabilities *remoteControlCapability; /** - * Init is unavailable. Dependencies must be injected using initWithConnectionManager: - * - * @return nil + Init is unavailable. Dependencies must be injected using initWithConnectionManager: + + @return nil */ - (instancetype)init NS_UNAVAILABLE; /** - * Creates a new system capability manager with a specified connection manager - * - * @param manager A connection manager to use to forward on RPCs - * - * @return An instance of SDLSystemCapabilityManager + Creates a new system capability manager with a specified connection manager + + @param manager A connection manager to use to forward on RPCs + + @return An instance of SDLSystemCapabilityManager */ - (instancetype)initWithConnectionManager:(id)manager NS_DESIGNATED_INITIALIZER; /** - * Stops the manager. This method is used internally. + Starts the manager. This method is used internally. + */ +- (void)start; + +/** + Stops the manager. This method is used internally. */ - (void)stop; @@ -198,6 +217,37 @@ typedef void (^SDLUpdateCapabilityHandler)(NSError * _Nullable error, SDLSystemC */ - (void)updateCapabilityType:(SDLSystemCapabilityType)type completionHandler:(SDLUpdateCapabilityHandler)handler; +/** + Subscribe to a particular capability type using a block callback + + @param type The type of capability to subscribe to + @param block The block to be called when the capability is updated + @return An object that can be used to unsubscribe the block using unsubscribeFromCapabilityType:withObserver: by passing it in the observer callback, or nil if subscriptions aren't available on this head unit + */ +- (nullable id)subscribeToCapabilityType:(SDLSystemCapabilityType)type withBlock:(SDLCapabilityUpdateHandler)block; + +/** + * Subscribe to a particular capability type with a selector callback. The selector supports the following parameters: + * + * 1. No parameters e.g. `- (void)phoneCapabilityUpdated;` + * 2. One `SDLSystemCapability *` parameter e.g. `- (void)phoneCapabilityUpdated:(SDLSystemCapability *)capability` + * + * This method will be called immediately with the current value and called every time the value is updated on RPC v5.1.0+ systems (`supportsSubscriptions == YES`). If this method is called on a sub-v5.1.0 system (`supportsSubscriptions == NO`), the method will return `NO` and the selector will never be called. + * + * @param type The type of the system capability to subscribe to + * @param observer The object that will have `selector` called whenever the capability is updated + * @param selector The selector on `observer` that will be called whenever the capability is updated + * @return Whether or not the subscription succeeded. `NO` if the connected system doesn't support capability subscriptions, or if the `selector` doesn't support the correct parameters (see above) + */ +- (BOOL)subscribeToCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer selector:(SEL)selector; + +/** + * Unsubscribe from a particular capability type. If it was subscribed with a block, the return value should be passed to the `observer` to unsubscribe the block. If it was subscribed with a selector, the `observer` object should be passed to unsubscribe the object selector. + * + * @param type The type of the system capability to unsubscribe from + * @param observer The object that will be unsubscribed. If a block was subscribed, the return value should be passed. If a selector was subscribed, the observer object should be passed. + */ +- (void)unsubscribeFromCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer; @end diff --git a/SmartDeviceLink/SDLSystemCapabilityManager.m b/SmartDeviceLink/SDLSystemCapabilityManager.m index 0a48ce71f..ceeea6c3c 100644 --- a/SmartDeviceLink/SDLSystemCapabilityManager.m +++ b/SmartDeviceLink/SDLSystemCapabilityManager.m @@ -12,19 +12,24 @@ #import "SDLAppServiceRecord.h" #import "SDLAppServicesCapabilities.h" #import "SDLConnectionManagerType.h" +#import "SDLError.h" #import "SDLGenericResponse.h" #import "SDLGetSystemCapability.h" #import "SDLGetSystemCapabilityResponse.h" #import "SDLGlobals.h" #import "SDLLogMacros.h" +#import "SDLNavigationCapability.h" #import "SDLNotificationConstants.h" #import "SDLOnHMIStatus.h" #import "SDLOnSystemCapabilityUpdated.h" +#import "SDLPhoneCapability.h" #import "SDLRegisterAppInterfaceResponse.h" +#import "SDLRemoteControlCapabilities.h" #import "SDLRPCNotificationNotification.h" #import "SDLRPCResponseNotification.h" #import "SDLSetDisplayLayoutResponse.h" #import "SDLSystemCapability.h" +#import "SDLSystemCapabilityObserver.h" #import "SDLVersion.h" #import "SDLVideoStreamingCapability.h" @@ -55,6 +60,11 @@ @interface SDLSystemCapabilityManager () @property (nullable, strong, nonatomic) NSMutableDictionary *appServicesCapabilitiesDictionary; +@property (assign, nonatomic, readwrite) BOOL supportsSubscriptions; +@property (strong, nonatomic) NSMutableDictionary *> *capabilityObservers; + +@property (nullable, strong, nonatomic) SDLSystemCapability *lastReceivedCapability; + @property (assign, nonatomic) BOOL isFirstHMILevelFull; @end @@ -73,11 +83,24 @@ - (instancetype)initWithConnectionManager:(id)manager _isFirstHMILevelFull = NO; _appServicesCapabilitiesDictionary = [NSMutableDictionary dictionary]; + _capabilityObservers = [NSMutableDictionary dictionary]; + for (SDLSystemCapabilityType capabilityType in [self.class sdl_systemCapabilityTypes]) { + _capabilityObservers[capabilityType] = [NSMutableArray array]; + } + [self sdl_registerForNotifications]; return self; } +- (void)start { + SDLVersion *onSystemCapabilityNotificationRPCVersion = [SDLVersion versionWithString:@"5.1.0"]; + SDLVersion *headUnitRPCVersion = SDLGlobals.sharedGlobals.rpcVersion; + if ([headUnitRPCVersion isGreaterThanOrEqualToVersion:onSystemCapabilityNotificationRPCVersion]) { + _supportsSubscriptions = YES; + } +} + /** * Resets the capabilities when a transport session is closed. */ @@ -100,6 +123,11 @@ - (void)stop { _remoteControlCapability = nil; _appServicesCapabilitiesDictionary = [NSMutableDictionary dictionary]; + _supportsSubscriptions = NO; + for (SDLSystemCapabilityType capabilityType in [self.class sdl_systemCapabilityTypes]) { + _capabilityObservers[capabilityType] = [NSMutableArray array]; + } + _isFirstHMILevelFull = NO; } @@ -120,6 +148,7 @@ -(void)sdl_registerForNotifications { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_registerResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_displayLayoutResponse:) name:SDLDidReceiveSetDisplayLayoutResponse object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_systemCapabilityUpdatedNotification:) name:SDLDidReceiveSystemCapabilityUpdatedNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_systemCapabilityResponseNotification:) name:SDLDidReceiveGetSystemCapabilitiesResponse object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_hmiStatusNotification:) name:SDLDidChangeHMIStatusNotification object:nil]; } @@ -170,6 +199,16 @@ - (void)sdl_systemCapabilityUpdatedNotification:(SDLRPCNotificationNotification [self sdl_saveSystemCapability:systemCapabilityUpdatedNotification.systemCapability completionHandler:nil]; } +/** + Called with a `GetSystemCapabilityResponse` notification is received from core. The updated system capability is saved. + + @param notification The `GetSystemCapabilityResponse` notification received from Core + */ +- (void)sdl_systemCapabilityResponseNotification:(SDLRPCResponseNotification *)notification { + SDLGetSystemCapabilityResponse *systemCapabilityResponse = (SDLGetSystemCapabilityResponse *)notification.response; + [self sdl_saveSystemCapability:systemCapabilityResponse.systemCapability completionHandler:nil]; +} + /** * Called when an `OnHMIStatus` notification is received from Core. The first time the `hmiLevel` is `FULL` attempt to subscribe to system capabilty updates. * @@ -188,9 +227,7 @@ - (void)sdl_hmiStatusNotification:(SDLRPCNotificationNotification *)notification #pragma mark - System Capabilities - (void)updateCapabilityType:(SDLSystemCapabilityType)type completionHandler:(SDLUpdateCapabilityHandler)handler { - SDLVersion *onSystemCapabilityNotificationRPCVersion = [SDLVersion versionWithString:@"5.1.0"]; - SDLVersion *headUnitRPCVersion = SDLGlobals.sharedGlobals.rpcVersion; - if ([headUnitRPCVersion isGreaterThanOrEqualToVersion:onSystemCapabilityNotificationRPCVersion]) { + if (self.supportsSubscriptions) { // Just return the cached data because we get `onSystemCapability` callbacks handler(nil, self); } else { @@ -215,9 +252,7 @@ - (void)updateCapabilityType:(SDLSystemCapabilityType)type completionHandler:(SD - (void)sdl_subscribeToSystemCapabilityUpdates { for (SDLSystemCapabilityType type in [self.class sdl_systemCapabilityTypes]) { SDLGetSystemCapability *getSystemCapability = [[SDLGetSystemCapability alloc] initWithType:type]; - SDLVersion *onSystemCapabilityNotificationRPCVersion = [SDLVersion versionWithString:@"5.1.0"]; - SDLVersion *headUnitRPCVersion = SDLGlobals.sharedGlobals.rpcVersion; - if ([headUnitRPCVersion isGreaterThanOrEqualToVersion:onSystemCapabilityNotificationRPCVersion]) { + if (self.supportsSubscriptions) { getSystemCapability.subscribe = @YES; } @@ -231,47 +266,87 @@ - (void)sdl_subscribeToSystemCapabilityUpdates { * @param getSystemCapability The `GetSystemCapability` request to send */ - (void)sdl_sendGetSystemCapability:(SDLGetSystemCapability *)getSystemCapability completionHandler:(nullable SDLUpdateCapabilityHandler)handler { + __weak typeof(self) weakSelf = self; [self.connectionManager sendConnectionRequest:getSystemCapability withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) { if (error != nil) { // An error is returned if the request was unsuccessful or if a Generic Response was returned if (handler == nil) { return; } - handler(error, self); + handler(error, weakSelf); return; } SDLGetSystemCapabilityResponse *getSystemCapabilityResponse = (SDLGetSystemCapabilityResponse *)response; - if (!getSystemCapabilityResponse.success.boolValue) { return; } - [self sdl_saveSystemCapability:getSystemCapabilityResponse.systemCapability completionHandler:handler]; + [weakSelf sdl_saveSystemCapability:getSystemCapabilityResponse.systemCapability completionHandler:handler]; }]; } /** - * Saves a system capability. All system capabilities will update with the full object except for app services. For app services only the updated app service capabilities will be included in the `SystemCapability` sent from Core. The cached `appServicesCapabilities` will be updated with the new `appService` data. - * - * @param systemCapability The system capability + Saves a system capability. All system capabilities will update with the full object except for app services. For app services only the updated app service capabilities will be included in the `SystemCapability` sent from Core. The cached `appServicesCapabilities` will be updated with the new `appService` data. + + @param systemCapability The system capability to be saved + @param handler The handler to be called when the save completes + @return Whether or not the save occurred. This can be `NO` if the new system capability is equivalent to the old capability. */ -- (void)sdl_saveSystemCapability:(SDLSystemCapability *)systemCapability completionHandler:(nullable SDLUpdateCapabilityHandler)handler { +- (BOOL)sdl_saveSystemCapability:(SDLSystemCapability *)systemCapability completionHandler:(nullable SDLUpdateCapabilityHandler)handler { + if ([self.lastReceivedCapability isEqual:systemCapability]) { + return [self sdl_callSaveHandlerForCapability:systemCapability andReturnWithValue:NO handler:handler]; + } + self.lastReceivedCapability = systemCapability; + SDLSystemCapabilityType systemCapabilityType = systemCapability.systemCapabilityType; if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypePhoneCall]) { + if ([self.phoneCapability isEqual:systemCapability.phoneCapability]) { return [self sdl_callSaveHandlerForCapability:systemCapability andReturnWithValue:NO handler:handler]; } self.phoneCapability = systemCapability.phoneCapability; } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeNavigation]) { + if ([self.navigationCapability isEqual:systemCapability.navigationCapability]) { return [self sdl_callSaveHandlerForCapability:systemCapability andReturnWithValue:NO handler:handler]; } self.navigationCapability = systemCapability.navigationCapability; } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeRemoteControl]) { + if ([self.remoteControlCapability isEqual:systemCapability.remoteControlCapability]) { return [self sdl_callSaveHandlerForCapability:systemCapability andReturnWithValue:NO handler:handler]; } self.remoteControlCapability = systemCapability.remoteControlCapability; } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeVideoStreaming]) { + if ([self.videoStreamingCapability isEqual:systemCapability.videoStreamingCapability]) { return [self sdl_callSaveHandlerForCapability:systemCapability andReturnWithValue:NO handler:handler]; } self.videoStreamingCapability = systemCapability.videoStreamingCapability; } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeAppServices]) { [self sdl_saveAppServicesCapabilitiesUpdate:systemCapability.appServicesCapabilities]; + systemCapability = [[SDLSystemCapability alloc] initWithAppServicesCapabilities:self.appServicesCapabilities]; } else { SDLLogW(@"Received response for unknown System Capability Type: %@", systemCapabilityType); - return; + return NO; } SDLLogD(@"Updated system capability manager with new data: %@", systemCapability); - if (handler == nil) { return; } + return [self sdl_callSaveHandlerForCapability:systemCapability andReturnWithValue:YES handler:handler]; +} + +- (BOOL)sdl_callSaveHandlerForCapability:(SDLSystemCapability *)capability andReturnWithValue:(BOOL)value handler:(nullable SDLUpdateCapabilityHandler)handler { + for (SDLSystemCapabilityObserver *observer in self.capabilityObservers[capability.systemCapabilityType]) { + if (observer.block != nil) { + observer.block(capability); + } else { + NSUInteger numberOfParametersInSelector = [NSStringFromSelector(observer.selector) componentsSeparatedByString:@":"].count - 1; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + if (numberOfParametersInSelector == 0) { + if ([observer.observer respondsToSelector:observer.selector]) { + [observer.observer performSelector:observer.selector]; + } + } else if (numberOfParametersInSelector == 1) { + if ([observer.observer respondsToSelector:observer.selector]) { + [observer.observer performSelector:observer.selector withObject:capability]; + } + } else { + @throw [NSException sdl_invalidSelectorExceptionWithSelector:observer.selector]; + } +#pragma clang diagnostic pop + } + } + + if (handler == nil) { return value; } handler(nil, self); + + return value; } - (void)sdl_saveAppServicesCapabilitiesUpdate:(SDLAppServicesCapabilities *)newCapabilities { @@ -288,6 +363,38 @@ - (void)sdl_saveAppServicesCapabilitiesUpdate:(SDLAppServicesCapabilities *)newC } } +#pragma mark - Subscriptions + +- (nullable id)subscribeToCapabilityType:(SDLSystemCapabilityType)type withBlock:(SDLCapabilityUpdateHandler)block { + if (!self.supportsSubscriptions) { return nil; } + + SDLSystemCapabilityObserver *observerObject = [[SDLSystemCapabilityObserver alloc] initWithObserver:[[NSObject alloc] init] block:block]; + [self.capabilityObservers[type] addObject:observerObject]; + + return observerObject.observer; +} + +- (BOOL)subscribeToCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer selector:(SEL)selector { + if (!self.supportsSubscriptions) { return NO; } + + NSUInteger numberOfParametersInSelector = [NSStringFromSelector(selector) componentsSeparatedByString:@":"].count - 1; + if (numberOfParametersInSelector > 1) { return NO; } + + SDLSystemCapabilityObserver *observerObject = [[SDLSystemCapabilityObserver alloc] initWithObserver:observer selector:selector]; + [self.capabilityObservers[type] addObject:observerObject]; + + return observerObject.observer; +} + +- (void)unsubscribeFromCapabilityType:(SDLSystemCapabilityType)type withObserver:(id)observer { + for (SDLSystemCapabilityObserver *capabilityObserver in self.capabilityObservers[type]) { + if ([observer isEqual:capabilityObserver.observer]) { + [self.capabilityObservers[type] removeObject:capabilityObserver]; + break; + } + } +} + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSystemCapabilityObserver.h b/SmartDeviceLink/SDLSystemCapabilityObserver.h new file mode 100644 index 000000000..f5450d60e --- /dev/null +++ b/SmartDeviceLink/SDLSystemCapabilityObserver.h @@ -0,0 +1,57 @@ +// +// SDLSystemCapabilityObserver.h +// SmartDeviceLink +// +// Created by Joel Fischer on 5/23/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +@class SDLSystemCapability; + +NS_ASSUME_NONNULL_BEGIN + +typedef void (^SDLCapabilityUpdateHandler)(SDLSystemCapability *capability); + +/** + An observer object for SDLSystemCapabilityManager + */ +@interface SDLSystemCapabilityObserver : NSObject + +/** + The object that will be used to call the selector if available, and to unsubscribe this observer + */ +@property (strong, nonatomic) id observer; + +/** + A selector called when the observer is triggered + */ +@property (assign, nonatomic) SEL selector; + +/** + A block called when the observer is triggered + */ +@property (copy, nonatomic) SDLCapabilityUpdateHandler block; + +/** + Create an observer using an object and a selector on that object + + @param observer The object to be called when the subscription triggers + @param selector The selector to be called when the subscription triggers + @return The observer + */ +- (instancetype)initWithObserver:(id)observer selector:(SEL)selector; + +/** + Create an observer using an object and a callback block + + @param observer The object that can be used to unsubscribe the block + @param block The block that will be called when the subscription triggers + @return The observer + */ +- (instancetype)initWithObserver:(id)observer block:(SDLCapabilityUpdateHandler)block; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSystemCapabilityObserver.m b/SmartDeviceLink/SDLSystemCapabilityObserver.m new file mode 100644 index 000000000..64832f1a7 --- /dev/null +++ b/SmartDeviceLink/SDLSystemCapabilityObserver.m @@ -0,0 +1,37 @@ +// +// SDLSystemCapabilityObserver.m +// SmartDeviceLink +// +// Created by Joel Fischer on 5/23/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "SDLSystemCapabilityObserver.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation SDLSystemCapabilityObserver + +- (instancetype)initWithObserver:(id)observer selector:(SEL)selector { + self = [super init]; + if (!self) { return nil; } + + _observer = observer; + _selector = selector; + + return self; +} + +- (instancetype)initWithObserver:(id)observer block:(SDLCapabilityUpdateHandler)block { + self = [super init]; + if (!self) { return nil; } + + _observer = observer; + _block = block; + + return self; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLSystemRequest.m b/SmartDeviceLink/SDLSystemRequest.m index db8eead44..6999a5bca 100644 --- a/SmartDeviceLink/SDLSystemRequest.m +++ b/SmartDeviceLink/SDLSystemRequest.m @@ -12,11 +12,14 @@ @implementation SDLSystemRequest +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSystemRequest]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithType:(SDLRequestType)requestType fileName:(nullable NSString *)fileName { self = [self init]; @@ -42,28 +45,28 @@ - (instancetype)initWithProprietaryType:(NSString *)proprietaryType fileName:(nu } - (void)setRequestType:(SDLRequestType)requestType { - [parameters sdl_setObject:requestType forName:SDLRPCParameterNameRequestType]; + [self.parameters sdl_setObject:requestType forName:SDLRPCParameterNameRequestType]; } - (SDLRequestType)requestType { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameRequestType error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameRequestType error:&error]; } - (void)setRequestSubType:(nullable NSString *)requestSubType { - [parameters sdl_setObject:requestSubType forName:SDLRPCParameterNameRequestSubType]; + [self.parameters sdl_setObject:requestSubType forName:SDLRPCParameterNameRequestSubType]; } - (nullable NSString *)requestSubType { - return [parameters sdl_objectForName:SDLRPCParameterNameRequestSubType ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRequestSubType ofClass:NSString.class error:nil]; } - (void)setFileName:(nullable NSString *)fileName { - [parameters sdl_setObject:fileName forName:SDLRPCParameterNameFilename]; + [self.parameters sdl_setObject:fileName forName:SDLRPCParameterNameFilename]; } - (nullable NSString *)fileName { - return [parameters sdl_objectForName:SDLRPCParameterNameFilename ofClass:NSString.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFilename ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLSystemRequestResponse.m b/SmartDeviceLink/SDLSystemRequestResponse.m index 8f5150302..3275c2228 100644 --- a/SmartDeviceLink/SDLSystemRequestResponse.m +++ b/SmartDeviceLink/SDLSystemRequestResponse.m @@ -12,11 +12,14 @@ @implementation SDLSystemRequestResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameSystemRequest]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLTTSChunk.m b/SmartDeviceLink/SDLTTSChunk.m index 3d66387d0..49f036835 100644 --- a/SmartDeviceLink/SDLTTSChunk.m +++ b/SmartDeviceLink/SDLTTSChunk.m @@ -55,21 +55,21 @@ - (instancetype)initWithText:(NSString *)text type:(SDLSpeechCapabilities)type { } - (void)setText:(NSString *)text { - [store sdl_setObject:text forName:SDLRPCParameterNameText]; + [self.store sdl_setObject:text forName:SDLRPCParameterNameText]; } - (NSString *)text { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameText ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameText ofClass:NSString.class error:&error]; } - (void)setType:(SDLSpeechCapabilities)type { - [store sdl_setObject:type forName:SDLRPCParameterNameType]; + [self.store sdl_setObject:type forName:SDLRPCParameterNameType]; } - (SDLSpeechCapabilities)type { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameType error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameType error:&error]; } @end diff --git a/SmartDeviceLink/SDLTemperature.m b/SmartDeviceLink/SDLTemperature.m index 66759f4fd..45d1e2280 100644 --- a/SmartDeviceLink/SDLTemperature.m +++ b/SmartDeviceLink/SDLTemperature.m @@ -31,21 +31,21 @@ - (instancetype)initWithUnit:(SDLTemperatureUnit)unit value:(float)value { } - (void)setUnit:(SDLTemperatureUnit)unit { - [store sdl_setObject:unit forName:SDLRPCParameterNameUnit]; + [self.store sdl_setObject:unit forName:SDLRPCParameterNameUnit]; } - (SDLTemperatureUnit)unit { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameUnit error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameUnit error:&error]; } - (void)setValue:(NSNumber *)value { - [store sdl_setObject:value forName:SDLRPCParameterNameValue]; + [self.store sdl_setObject:value forName:SDLRPCParameterNameValue]; } - (NSNumber *)value { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameValue ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameValue ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLTemplateColorScheme.m b/SmartDeviceLink/SDLTemplateColorScheme.m index da1e833e3..0c758fbbd 100644 --- a/SmartDeviceLink/SDLTemplateColorScheme.m +++ b/SmartDeviceLink/SDLTemplateColorScheme.m @@ -39,27 +39,27 @@ - (instancetype)initWithPrimaryColor:(UIColor *)primaryColor secondaryColor:(UIC } - (void)setPrimaryColor:(nullable SDLRGBColor *)primaryColor { - [store sdl_setObject:primaryColor forName:SDLRPCParameterNamePrimaryColor]; + [self.store sdl_setObject:primaryColor forName:SDLRPCParameterNamePrimaryColor]; } - (nullable SDLRGBColor *)primaryColor { - return [store sdl_objectForName:SDLRPCParameterNamePrimaryColor ofClass:SDLRGBColor.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePrimaryColor ofClass:SDLRGBColor.class error:nil]; } - (void)setSecondaryColor:(nullable SDLRGBColor *)secondaryColor { - [store sdl_setObject:secondaryColor forName:SDLRPCParameterNameSecondaryColor]; + [self.store sdl_setObject:secondaryColor forName:SDLRPCParameterNameSecondaryColor]; } - (nullable SDLRGBColor *)secondaryColor { - return [store sdl_objectForName:SDLRPCParameterNameSecondaryColor ofClass:SDLRGBColor.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSecondaryColor ofClass:SDLRGBColor.class error:nil]; } - (void)setBackgroundColor:(nullable SDLRGBColor *)backgroundColor { - [store sdl_setObject:backgroundColor forName:SDLRPCParameterNameBackgroundColor]; + [self.store sdl_setObject:backgroundColor forName:SDLRPCParameterNameBackgroundColor]; } - (nullable SDLRGBColor *)backgroundColor { - return [store sdl_objectForName:SDLRPCParameterNameBackgroundColor ofClass:SDLRGBColor.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameBackgroundColor ofClass:SDLRGBColor.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLTextField.m b/SmartDeviceLink/SDLTextField.m index 6ac0fb052..cc50aa743 100644 --- a/SmartDeviceLink/SDLTextField.m +++ b/SmartDeviceLink/SDLTextField.m @@ -13,39 +13,39 @@ @implementation SDLTextField - (void)setName:(SDLTextFieldName)name { - [store sdl_setObject:name forName:SDLRPCParameterNameName]; + [self.store sdl_setObject:name forName:SDLRPCParameterNameName]; } - (SDLTextFieldName)name { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameName error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameName error:&error]; } - (void)setCharacterSet:(SDLCharacterSet)characterSet { - [store sdl_setObject:characterSet forName:SDLRPCParameterNameCharacterSet]; + [self.store sdl_setObject:characterSet forName:SDLRPCParameterNameCharacterSet]; } - (SDLCharacterSet)characterSet { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameCharacterSet error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameCharacterSet error:&error]; } - (void)setWidth:(NSNumber *)width { - [store sdl_setObject:width forName:SDLRPCParameterNameWidth]; + [self.store sdl_setObject:width forName:SDLRPCParameterNameWidth]; } - (NSNumber *)width { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameWidth ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameWidth ofClass:NSNumber.class error:&error]; } - (void)setRows:(NSNumber *)rows { - [store sdl_setObject:rows forName:SDLRPCParameterNameRows]; + [self.store sdl_setObject:rows forName:SDLRPCParameterNameRows]; } - (NSNumber *)rows { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameRows ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameRows ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLTireStatus.m b/SmartDeviceLink/SDLTireStatus.m index 9dd0a9036..aa1bac556 100644 --- a/SmartDeviceLink/SDLTireStatus.m +++ b/SmartDeviceLink/SDLTireStatus.m @@ -12,66 +12,66 @@ @implementation SDLTireStatus - (void)setPressureTelltale:(SDLWarningLightStatus)pressureTelltale { - [store sdl_setObject:pressureTelltale forName:SDLRPCParameterNamePressureTelltale]; + [self.store sdl_setObject:pressureTelltale forName:SDLRPCParameterNamePressureTelltale]; } - (SDLWarningLightStatus)pressureTelltale { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNamePressureTelltale error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNamePressureTelltale error:&error]; } - (void)setLeftFront:(SDLSingleTireStatus *)leftFront { - [store sdl_setObject:leftFront forName:SDLRPCParameterNameLeftFront]; + [self.store sdl_setObject:leftFront forName:SDLRPCParameterNameLeftFront]; } - (SDLSingleTireStatus *)leftFront { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLeftFront ofClass:SDLSingleTireStatus.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLeftFront ofClass:SDLSingleTireStatus.class error:&error]; } - (void)setRightFront:(SDLSingleTireStatus *)rightFront { - [store sdl_setObject:rightFront forName:SDLRPCParameterNameRightFront]; + [self.store sdl_setObject:rightFront forName:SDLRPCParameterNameRightFront]; } - (SDLSingleTireStatus *)rightFront { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameRightFront ofClass:SDLSingleTireStatus.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameRightFront ofClass:SDLSingleTireStatus.class error:&error]; } - (void)setLeftRear:(SDLSingleTireStatus *)leftRear { - [store sdl_setObject:leftRear forName:SDLRPCParameterNameLeftRear]; + [self.store sdl_setObject:leftRear forName:SDLRPCParameterNameLeftRear]; } - (SDLSingleTireStatus *)leftRear { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLeftRear ofClass:SDLSingleTireStatus.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLeftRear ofClass:SDLSingleTireStatus.class error:&error]; } - (void)setRightRear:(SDLSingleTireStatus *)rightRear { - [store sdl_setObject:rightRear forName:SDLRPCParameterNameRightRear]; + [self.store sdl_setObject:rightRear forName:SDLRPCParameterNameRightRear]; } - (SDLSingleTireStatus *)rightRear { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameRightRear ofClass:SDLSingleTireStatus.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameRightRear ofClass:SDLSingleTireStatus.class error:&error]; } - (void)setInnerLeftRear:(SDLSingleTireStatus *)innerLeftRear { - [store sdl_setObject:innerLeftRear forName:SDLRPCParameterNameInnerLeftRear]; + [self.store sdl_setObject:innerLeftRear forName:SDLRPCParameterNameInnerLeftRear]; } - (SDLSingleTireStatus *)innerLeftRear { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameInnerLeftRear ofClass:SDLSingleTireStatus.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameInnerLeftRear ofClass:SDLSingleTireStatus.class error:&error]; } - (void)setInnerRightRear:(SDLSingleTireStatus *)innerRightRear { - [store sdl_setObject:innerRightRear forName:SDLRPCParameterNameInnerRightRear]; + [self.store sdl_setObject:innerRightRear forName:SDLRPCParameterNameInnerRightRear]; } - (SDLSingleTireStatus *)innerRightRear { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameInnerRightRear ofClass:SDLSingleTireStatus.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameInnerRightRear ofClass:SDLSingleTireStatus.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLTouchCoord.m b/SmartDeviceLink/SDLTouchCoord.m index 5c5500cdf..e41a6435c 100644 --- a/SmartDeviceLink/SDLTouchCoord.m +++ b/SmartDeviceLink/SDLTouchCoord.m @@ -12,21 +12,21 @@ @implementation SDLTouchCoord - (void)setX:(NSNumber *)x { - [store sdl_setObject:x forName:SDLRPCParameterNameX]; + [self.store sdl_setObject:x forName:SDLRPCParameterNameX]; } - (NSNumber *)x { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameX ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameX ofClass:NSNumber.class error:&error]; } - (void)setY:(NSNumber *)y { - [store sdl_setObject:y forName:SDLRPCParameterNameY]; + [self.store sdl_setObject:y forName:SDLRPCParameterNameY]; } - (NSNumber *)y { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameY ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameY ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLTouchEvent.m b/SmartDeviceLink/SDLTouchEvent.m index 89b2648ee..617174bbc 100644 --- a/SmartDeviceLink/SDLTouchEvent.m +++ b/SmartDeviceLink/SDLTouchEvent.m @@ -13,30 +13,30 @@ @implementation SDLTouchEvent - (void)setTouchEventId:(NSNumber *)touchEventId { - [store sdl_setObject:touchEventId forName:SDLRPCParameterNameId]; + [self.store sdl_setObject:touchEventId forName:SDLRPCParameterNameId]; } - (NSNumber *)touchEventId { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameId ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameId ofClass:NSNumber.class error:&error]; } - (void)setTimeStamp:(NSArray *> *)timeStamp { - [store sdl_setObject:timeStamp forName:SDLRPCParameterNameTS]; + [self.store sdl_setObject:timeStamp forName:SDLRPCParameterNameTS]; } - (NSArray *> *)timeStamp { NSError *error = nil; - return [store sdl_objectsForName:SDLRPCParameterNameTS ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectsForName:SDLRPCParameterNameTS ofClass:NSNumber.class error:&error]; } - (void)setCoord:(NSArray *)coord { - [store sdl_setObject:coord forName:SDLRPCParameterNameCoordinate]; + [self.store sdl_setObject:coord forName:SDLRPCParameterNameCoordinate]; } - (NSArray *)coord { NSError *error = nil; - return [store sdl_objectsForName:SDLRPCParameterNameCoordinate ofClass:SDLTouchCoord.class error:&error]; + return [self.store sdl_objectsForName:SDLRPCParameterNameCoordinate ofClass:SDLTouchCoord.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLTouchEventCapabilities.m b/SmartDeviceLink/SDLTouchEventCapabilities.m index 9ff250e27..5a69566da 100644 --- a/SmartDeviceLink/SDLTouchEventCapabilities.m +++ b/SmartDeviceLink/SDLTouchEventCapabilities.m @@ -12,30 +12,30 @@ @implementation SDLTouchEventCapabilities - (void)setPressAvailable:(NSNumber *)pressAvailable { - [store sdl_setObject:pressAvailable forName:SDLRPCParameterNamePressAvailable]; + [self.store sdl_setObject:pressAvailable forName:SDLRPCParameterNamePressAvailable]; } - (NSNumber *)pressAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNamePressAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNamePressAvailable ofClass:NSNumber.class error:&error]; } - (void)setMultiTouchAvailable:(NSNumber *)multiTouchAvailable { - [store sdl_setObject:multiTouchAvailable forName:SDLRPCParameterNameMultiTouchAvailable]; + [self.store sdl_setObject:multiTouchAvailable forName:SDLRPCParameterNameMultiTouchAvailable]; } - (NSNumber *)multiTouchAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameMultiTouchAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameMultiTouchAvailable ofClass:NSNumber.class error:&error]; } - (void)setDoublePressAvailable:(NSNumber *)doublePressAvailable { - [store sdl_setObject:doublePressAvailable forName:SDLRPCParameterNameDoublePressAvailable]; + [self.store sdl_setObject:doublePressAvailable forName:SDLRPCParameterNameDoublePressAvailable]; } - (NSNumber *)doublePressAvailable { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameDoublePressAvailable ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameDoublePressAvailable ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLTurn.m b/SmartDeviceLink/SDLTurn.m index c788c77c5..ec4ced937 100644 --- a/SmartDeviceLink/SDLTurn.m +++ b/SmartDeviceLink/SDLTurn.m @@ -24,19 +24,19 @@ - (instancetype)initWithNavigationText:(nullable NSString *)navigationText turnI } - (void)setNavigationText:(nullable NSString *)navigationText { - [store sdl_setObject:navigationText forName:SDLRPCParameterNameNavigationText]; + [self.store sdl_setObject:navigationText forName:SDLRPCParameterNameNavigationText]; } - (nullable NSString *)navigationText { - return [store sdl_objectForName:SDLRPCParameterNameNavigationText ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNavigationText ofClass:NSString.class error:nil]; } - (void)setTurnIcon:(nullable SDLImage *)turnIcon { - [store sdl_setObject:turnIcon forName:SDLRPCParameterNameTurnIcon]; + [self.store sdl_setObject:turnIcon forName:SDLRPCParameterNameTurnIcon]; } - (nullable SDLImage *)turnIcon { - return [store sdl_objectForName:SDLRPCParameterNameTurnIcon ofClass:SDLImage.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTurnIcon ofClass:SDLImage.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLUnregisterAppInterface.m b/SmartDeviceLink/SDLUnregisterAppInterface.m index 22bfdc590..d191da5bb 100644 --- a/SmartDeviceLink/SDLUnregisterAppInterface.m +++ b/SmartDeviceLink/SDLUnregisterAppInterface.m @@ -12,11 +12,14 @@ @implementation SDLUnregisterAppInterface +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUnregisterAppInterface]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLUnregisterAppInterfaceResponse.m b/SmartDeviceLink/SDLUnregisterAppInterfaceResponse.m index c9978d630..7cc5eced3 100644 --- a/SmartDeviceLink/SDLUnregisterAppInterfaceResponse.m +++ b/SmartDeviceLink/SDLUnregisterAppInterfaceResponse.m @@ -12,11 +12,14 @@ @implementation SDLUnregisterAppInterfaceResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUnregisterAppInterface]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLUnsubscribeButton.m b/SmartDeviceLink/SDLUnsubscribeButton.m index 7d6d0157a..3e84ad5b6 100644 --- a/SmartDeviceLink/SDLUnsubscribeButton.m +++ b/SmartDeviceLink/SDLUnsubscribeButton.m @@ -13,11 +13,14 @@ @implementation SDLUnsubscribeButton +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUnsubscribeButton]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithButtonName:(SDLButtonName)buttonName { self = [self init]; @@ -31,12 +34,12 @@ - (instancetype)initWithButtonName:(SDLButtonName)buttonName { } - (void)setButtonName:(SDLButtonName)buttonName { - [parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; + [self.parameters sdl_setObject:buttonName forName:SDLRPCParameterNameButtonName]; } - (SDLButtonName)buttonName { NSError *error = nil; - return [parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; + return [self.parameters sdl_enumForName:SDLRPCParameterNameButtonName error:&error]; } @end diff --git a/SmartDeviceLink/SDLUnsubscribeButtonResponse.m b/SmartDeviceLink/SDLUnsubscribeButtonResponse.m index 27f5f0266..6d705d36e 100644 --- a/SmartDeviceLink/SDLUnsubscribeButtonResponse.m +++ b/SmartDeviceLink/SDLUnsubscribeButtonResponse.m @@ -12,11 +12,14 @@ @implementation SDLUnsubscribeButtonResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUnsubscribeButton]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleData.m b/SmartDeviceLink/SDLUnsubscribeVehicleData.m index 996aa9883..1df1d2a5f 100644 --- a/SmartDeviceLink/SDLUnsubscribeVehicleData.m +++ b/SmartDeviceLink/SDLUnsubscribeVehicleData.m @@ -12,11 +12,14 @@ @implementation SDLUnsubscribeVehicleData +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUnsubscribeVehicleData]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPosition airbagStatus:(BOOL)airbagStatus beltStatus:(BOOL)beltStatus bodyInformation:(BOOL)bodyInformation clusterModeStatus:(BOOL)clusterModeStatus deviceStatus:(BOOL)deviceStatus driverBraking:(BOOL)driverBraking eCallInfo:(BOOL)eCallInfo emergencyEvent:(BOOL)emergencyEvent engineTorque:(BOOL)engineTorque externalTemperature:(BOOL)externalTemperature fuelLevel:(BOOL)fuelLevel fuelLevelState:(BOOL)fuelLevelState gps:(BOOL)gps headLampStatus:(BOOL)headLampStatus instantFuelConsumption:(BOOL)instantFuelConsumption myKey:(BOOL)myKey odometer:(BOOL)odometer prndl:(BOOL)prndl rpm:(BOOL)rpm speed:(BOOL)speed steeringWheelAngle:(BOOL)steeringWheelAngle tirePressure:(BOOL)tirePressure wiperStatus:(BOOL)wiperStatus { return [self initWithAccelerationPedalPosition:accelerationPedalPosition airbagStatus:airbagStatus beltStatus:beltStatus bodyInformation:bodyInformation clusterModeStatus:clusterModeStatus deviceStatus:deviceStatus driverBraking:driverBraking eCallInfo:eCallInfo electronicParkBrakeStatus:NO emergencyEvent:emergencyEvent engineOilLife:NO engineTorque:engineTorque externalTemperature:externalTemperature fuelLevel:fuelLevel fuelLevelState:fuelLevelState fuelRange:NO gps:gps headLampStatus:headLampStatus instantFuelConsumption:instantFuelConsumption myKey:myKey odometer:odometer prndl:prndl rpm:rpm speed:speed steeringWheelAngle:steeringWheelAngle tirePressure:tirePressure turnSignal:NO wiperStatus:wiperStatus]; @@ -66,235 +69,235 @@ - (instancetype)initWithAccelerationPedalPosition:(BOOL)accelerationPedalPositio } - (void)setGps:(nullable NSNumber *)gps { - [parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; + [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; } - (nullable NSNumber *)gps { - return [parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:NSNumber.class error:nil]; } - (void)setSpeed:(nullable NSNumber *)speed { - [parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; + [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; } - (nullable NSNumber *)speed { - return [parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:NSNumber.class error:nil]; } - (void)setRpm:(nullable NSNumber *)rpm { - [parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; + [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; } - (nullable NSNumber *)rpm { - return [parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel:(nullable NSNumber *)fuelLevel { - [parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; + [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; } - (nullable NSNumber *)fuelLevel { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:NSNumber.class error:nil]; } - (void)setFuelLevel_State:(nullable NSNumber *)fuelLevel_State { - [parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; + [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; } - (nullable NSNumber *)fuelLevel_State { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:NSNumber.class error:nil]; } - (void)setFuelRange:(nullable NSNumber *)fuelRange { - [parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; + [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; } - (nullable NSNumber *)fuelRange { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:NSNumber.class error:nil]; } - (void)setInstantFuelConsumption:(nullable NSNumber *)instantFuelConsumption { - [parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; + [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; } - (nullable NSNumber *)instantFuelConsumption { - return [parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:NSNumber.class error:nil]; } - (void)setExternalTemperature:(nullable NSNumber *)externalTemperature { - [parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; + [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; } - (nullable NSNumber *)externalTemperature { - return [parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:NSNumber.class error:nil]; } - (void)setPrndl:(nullable NSNumber *)prndl { - [parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; + [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; } - (nullable NSNumber *)prndl { - return [parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:NSNumber.class error:nil]; } - (void)setTirePressure:(nullable NSNumber *)tirePressure { - [parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; + [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; } - (nullable NSNumber *)tirePressure { - return [parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:NSNumber.class error:nil]; } - (void)setOdometer:(nullable NSNumber *)odometer { - [parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; + [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; } - (nullable NSNumber *)odometer { - return [parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:NSNumber.class error:nil]; } - (void)setBeltStatus:(nullable NSNumber *)beltStatus { - [parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; + [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; } - (nullable NSNumber *)beltStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:NSNumber.class error:nil]; } - (void)setBodyInformation:(nullable NSNumber *)bodyInformation { - [parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; + [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; } - (nullable NSNumber *)bodyInformation { - return [parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:NSNumber.class error:nil]; } - (void)setDeviceStatus:(nullable NSNumber *)deviceStatus { - [parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; + [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; } - (nullable NSNumber *)deviceStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:NSNumber.class error:nil]; } - (void)setDriverBraking:(nullable NSNumber *)driverBraking { - [parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; + [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; } - (nullable NSNumber *)driverBraking { - return [parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:NSNumber.class error:nil]; } - (void)setWiperStatus:(nullable NSNumber *)wiperStatus { - [parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; + [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; } - (nullable NSNumber *)wiperStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:NSNumber.class error:nil]; } - (void)setHeadLampStatus:(nullable NSNumber *)headLampStatus { - [parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; + [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; } - (nullable NSNumber *)headLampStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:NSNumber.class error:nil]; } - (void)setEngineOilLife:(nullable NSNumber *)engineOilLife { - [parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; + [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; } - (nullable NSNumber *)engineOilLife { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:NSNumber.class error:nil]; } - (void)setEngineTorque:(nullable NSNumber *)engineTorque { - [parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; + [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; } - (nullable NSNumber *)engineTorque { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:NSNumber.class error:nil]; } - (void)setAccPedalPosition:(nullable NSNumber *)accPedalPosition { - [parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; + [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; } - (nullable NSNumber *)accPedalPosition { - return [parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:NSNumber.class error:nil]; } - (void)setSteeringWheelAngle:(nullable NSNumber *)steeringWheelAngle { - [parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; + [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; } - (nullable NSNumber *)steeringWheelAngle { - return [parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:NSNumber.class error:nil]; } - (void)setECallInfo:(nullable NSNumber *)eCallInfo { - [parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; + [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; } - (nullable NSNumber *)eCallInfo { - return [parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:NSNumber.class error:nil]; } - (void)setAirbagStatus:(nullable NSNumber *)airbagStatus { - [parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; + [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; } - (nullable NSNumber *)airbagStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:NSNumber.class error:nil]; } - (void)setEmergencyEvent:(nullable NSNumber *)emergencyEvent { - [parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; + [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; } - (nullable NSNumber *)emergencyEvent { - return [parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:NSNumber.class error:nil]; } - (void)setClusterModeStatus:(nullable NSNumber *)clusterModeStatus { - [parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; + [self.parameters sdl_setObject:clusterModeStatus forName:SDLRPCParameterNameClusterModeStatus]; } - (nullable NSNumber *)clusterModeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModeStatus ofClass:NSNumber.class error:nil]; } - (void)setMyKey:(nullable NSNumber *)myKey { - [parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; + [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; } - (nullable NSNumber *)myKey { - return [parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:NSNumber.class error:nil]; } - (void)setElectronicParkBrakeStatus:(nullable NSNumber *)electronicParkBrakeStatus { - [parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; + [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; } - (nullable NSNumber *)electronicParkBrakeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:NSNumber.class error:nil]; } - (void)setTurnSignal:(nullable NSNumber *)turnSignal { - [parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; + [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; } - (nullable NSNumber *)turnSignal { - return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:NSNumber.class error:nil]; } - (void)setCloudAppVehicleID:(nullable NSNumber *)cloudAppVehicleID { - [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; + [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; } - (nullable NSNumber *)cloudAppVehicleID { - return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m index c72ebbf5e..b7bddc70d 100644 --- a/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m +++ b/SmartDeviceLink/SDLUnsubscribeVehicleDataResponse.m @@ -13,242 +13,245 @@ @implementation SDLUnsubscribeVehicleDataResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUnsubscribeVehicleData]) { } return self; } +#pragma clang diagnostic pop - (void)setGps:(nullable SDLVehicleDataResult *)gps { - [parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; + [self.parameters sdl_setObject:gps forName:SDLRPCParameterNameGPS]; } - (nullable SDLVehicleDataResult *)gps { - return [parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameGPS ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setSpeed:(nullable SDLVehicleDataResult *)speed { - [parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; + [self.parameters sdl_setObject:speed forName:SDLRPCParameterNameSpeed]; } - (nullable SDLVehicleDataResult *)speed { - return [parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSpeed ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setRpm:(nullable SDLVehicleDataResult *)rpm { - [parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; + [self.parameters sdl_setObject:rpm forName:SDLRPCParameterNameRPM]; } - (nullable SDLVehicleDataResult *)rpm { - return [parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameRPM ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setFuelLevel:(nullable SDLVehicleDataResult *)fuelLevel { - [parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; + [self.parameters sdl_setObject:fuelLevel forName:SDLRPCParameterNameFuelLevel]; } - (nullable SDLVehicleDataResult *)fuelLevel { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevel ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setFuelLevel_State:(nullable SDLVehicleDataResult *)fuelLevel_State { - [parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; + [self.parameters sdl_setObject:fuelLevel_State forName:SDLRPCParameterNameFuelLevelState]; } - (nullable SDLVehicleDataResult *)fuelLevel_State { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelLevelState ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setFuelRange:(nullable SDLVehicleDataResult *)fuelRange { - [parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; + [self.parameters sdl_setObject:fuelRange forName:SDLRPCParameterNameFuelRange]; } - (nullable SDLVehicleDataResult *)fuelRange { - return [parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameFuelRange ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setInstantFuelConsumption:(nullable SDLVehicleDataResult *)instantFuelConsumption { - [parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; + [self.parameters sdl_setObject:instantFuelConsumption forName:SDLRPCParameterNameInstantFuelConsumption]; } - (nullable SDLVehicleDataResult *)instantFuelConsumption { - return [parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameInstantFuelConsumption ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setExternalTemperature:(nullable SDLVehicleDataResult *)externalTemperature { - [parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; + [self.parameters sdl_setObject:externalTemperature forName:SDLRPCParameterNameExternalTemperature]; } - (nullable SDLVehicleDataResult *)externalTemperature { - return [parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameExternalTemperature ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setPrndl:(nullable SDLVehicleDataResult *)prndl { - [parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; + [self.parameters sdl_setObject:prndl forName:SDLRPCParameterNamePRNDL]; } - (nullable SDLVehicleDataResult *)prndl { - return [parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNamePRNDL ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setTirePressure:(nullable SDLVehicleDataResult *)tirePressure { - [parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; + [self.parameters sdl_setObject:tirePressure forName:SDLRPCParameterNameTirePressure]; } - (nullable SDLVehicleDataResult *)tirePressure { - return [parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTirePressure ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setOdometer:(nullable SDLVehicleDataResult *)odometer { - [parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; + [self.parameters sdl_setObject:odometer forName:SDLRPCParameterNameOdometer]; } - (nullable SDLVehicleDataResult *)odometer { - return [parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameOdometer ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setBeltStatus:(nullable SDLVehicleDataResult *)beltStatus { - [parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; + [self.parameters sdl_setObject:beltStatus forName:SDLRPCParameterNameBeltStatus]; } - (nullable SDLVehicleDataResult *)beltStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBeltStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setBodyInformation:(nullable SDLVehicleDataResult *)bodyInformation { - [parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; + [self.parameters sdl_setObject:bodyInformation forName:SDLRPCParameterNameBodyInformation]; } - (nullable SDLVehicleDataResult *)bodyInformation { - return [parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameBodyInformation ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setDeviceStatus:(nullable SDLVehicleDataResult *)deviceStatus { - [parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; + [self.parameters sdl_setObject:deviceStatus forName:SDLRPCParameterNameDeviceStatus]; } - (nullable SDLVehicleDataResult *)deviceStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDeviceStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setDriverBraking:(nullable SDLVehicleDataResult *)driverBraking { - [parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; + [self.parameters sdl_setObject:driverBraking forName:SDLRPCParameterNameDriverBraking]; } - (nullable SDLVehicleDataResult *)driverBraking { - return [parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameDriverBraking ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setWiperStatus:(nullable SDLVehicleDataResult *)wiperStatus { - [parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; + [self.parameters sdl_setObject:wiperStatus forName:SDLRPCParameterNameWiperStatus]; } - (nullable SDLVehicleDataResult *)wiperStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameWiperStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setHeadLampStatus:(nullable SDLVehicleDataResult *)headLampStatus { - [parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; + [self.parameters sdl_setObject:headLampStatus forName:SDLRPCParameterNameHeadLampStatus]; } - (nullable SDLVehicleDataResult *)headLampStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameHeadLampStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setEngineOilLife:(nullable SDLVehicleDataResult *)engineOilLife { - [parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; + [self.parameters sdl_setObject:engineOilLife forName:SDLRPCParameterNameEngineOilLife]; } - (nullable SDLVehicleDataResult *)engineOilLife { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineOilLife ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setEngineTorque:(nullable SDLVehicleDataResult *)engineTorque { - [parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; + [self.parameters sdl_setObject:engineTorque forName:SDLRPCParameterNameEngineTorque]; } - (nullable SDLVehicleDataResult *)engineTorque { - return [parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEngineTorque ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setAccPedalPosition:(nullable SDLVehicleDataResult *)accPedalPosition { - [parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; + [self.parameters sdl_setObject:accPedalPosition forName:SDLRPCParameterNameAccelerationPedalPosition]; } - (nullable SDLVehicleDataResult *)accPedalPosition { - return [parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAccelerationPedalPosition ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setSteeringWheelAngle:(nullable SDLVehicleDataResult *)steeringWheelAngle { - [parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; + [self.parameters sdl_setObject:steeringWheelAngle forName:SDLRPCParameterNameSteeringWheelAngle]; } - (nullable SDLVehicleDataResult *)steeringWheelAngle { - return [parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameSteeringWheelAngle ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setECallInfo:(nullable SDLVehicleDataResult *)eCallInfo { - [parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; + [self.parameters sdl_setObject:eCallInfo forName:SDLRPCParameterNameECallInfo]; } - (nullable SDLVehicleDataResult *)eCallInfo { - return [parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameECallInfo ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setAirbagStatus:(nullable SDLVehicleDataResult *)airbagStatus { - [parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; + [self.parameters sdl_setObject:airbagStatus forName:SDLRPCParameterNameAirbagStatus]; } - (nullable SDLVehicleDataResult *)airbagStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameAirbagStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setEmergencyEvent:(nullable SDLVehicleDataResult *)emergencyEvent { - [parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; + [self.parameters sdl_setObject:emergencyEvent forName:SDLRPCParameterNameEmergencyEvent]; } - (nullable SDLVehicleDataResult *)emergencyEvent { - return [parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameEmergencyEvent ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setClusterModes:(nullable SDLVehicleDataResult *)clusterModes { - [parameters sdl_setObject:clusterModes forName:SDLRPCParameterNameClusterModes]; + [self.parameters sdl_setObject:clusterModes forName:SDLRPCParameterNameClusterModes]; } - (nullable SDLVehicleDataResult *)clusterModes { - return [parameters sdl_objectForName:SDLRPCParameterNameClusterModes ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameClusterModes ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setMyKey:(nullable SDLVehicleDataResult *)myKey { - [parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; + [self.parameters sdl_setObject:myKey forName:SDLRPCParameterNameMyKey]; } - (nullable SDLVehicleDataResult *)myKey { - return [parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameMyKey ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setElectronicParkBrakeStatus:(nullable SDLVehicleDataResult *)electronicParkBrakeStatus { - [parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; + [self.parameters sdl_setObject:electronicParkBrakeStatus forName:SDLRPCParameterNameElectronicParkBrakeStatus]; } - (nullable SDLVehicleDataResult *)electronicParkBrakeStatus { - return [parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameElectronicParkBrakeStatus ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setTurnSignal:(nullable SDLVehicleDataResult *)turnSignal { - [parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; + [self.parameters sdl_setObject:turnSignal forName:SDLRPCParameterNameTurnSignal]; } - (nullable SDLVehicleDataResult *)turnSignal { - return [parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameTurnSignal ofClass:SDLVehicleDataResult.class error:nil]; } - (void)setCloudAppVehicleID:(nullable SDLVehicleDataResult *)cloudAppVehicleID { - [parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; + [self.parameters sdl_setObject:cloudAppVehicleID forName:SDLRPCParameterNameCloudAppVehicleID]; } - (nullable SDLVehicleDataResult *)cloudAppVehicleID { - return [parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil]; + return [self.parameters sdl_objectForName:SDLRPCParameterNameCloudAppVehicleID ofClass:SDLVehicleDataResult.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLUnsubscribeWayPoints.m b/SmartDeviceLink/SDLUnsubscribeWayPoints.m index a086688e5..30b3e2c07 100644 --- a/SmartDeviceLink/SDLUnsubscribeWayPoints.m +++ b/SmartDeviceLink/SDLUnsubscribeWayPoints.m @@ -11,11 +11,14 @@ @implementation SDLUnsubscribeWayPoints +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUnsubscribeWayPoints]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLUnsubscribeWayPointsResponse.m b/SmartDeviceLink/SDLUnsubscribeWayPointsResponse.m index 4d48fb340..7eb3e6369 100644 --- a/SmartDeviceLink/SDLUnsubscribeWayPointsResponse.m +++ b/SmartDeviceLink/SDLUnsubscribeWayPointsResponse.m @@ -11,11 +11,14 @@ @implementation SDLUnsubscribeWayPointsResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUnsubscribeWayPoints]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLUpdateTurnList.m b/SmartDeviceLink/SDLUpdateTurnList.m index 3b6e77603..ed7d6328a 100644 --- a/SmartDeviceLink/SDLUpdateTurnList.m +++ b/SmartDeviceLink/SDLUpdateTurnList.m @@ -14,11 +14,14 @@ @implementation SDLUpdateTurnList +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUpdateTurnList]) { } return self; } +#pragma clang diagnostic pop - (instancetype)initWithTurnList:(nullable NSArray *)turnList softButtons:(nullable NSArray *)softButtons { self = [self init]; @@ -33,19 +36,19 @@ - (instancetype)initWithTurnList:(nullable NSArray *)turnList softBut } - (void)setTurnList:(nullable NSArray *)turnList { - [parameters sdl_setObject:turnList forName:SDLRPCParameterNameTurnList]; + [self.parameters sdl_setObject:turnList forName:SDLRPCParameterNameTurnList]; } - (nullable NSArray *)turnList { - return [parameters sdl_objectsForName:SDLRPCParameterNameTurnList ofClass:SDLTurn.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameTurnList ofClass:SDLTurn.class error:nil]; } - (void)setSoftButtons:(nullable NSArray *)softButtons { - [parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; + [self.parameters sdl_setObject:softButtons forName:SDLRPCParameterNameSoftButtons]; } - (nullable NSArray *)softButtons { - return [parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; + return [self.parameters sdl_objectsForName:SDLRPCParameterNameSoftButtons ofClass:SDLSoftButton.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLUpdateTurnListResponse.m b/SmartDeviceLink/SDLUpdateTurnListResponse.m index 2759e6e26..5231609d7 100644 --- a/SmartDeviceLink/SDLUpdateTurnListResponse.m +++ b/SmartDeviceLink/SDLUpdateTurnListResponse.m @@ -12,11 +12,14 @@ @implementation SDLUpdateTurnListResponse +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" - (instancetype)init { if (self = [super initWithName:SDLRPCFunctionNameUpdateTurnList]) { } return self; } +#pragma clang diagnostic pop @end diff --git a/SmartDeviceLink/SDLVehicleDataResult.m b/SmartDeviceLink/SDLVehicleDataResult.m index e4621a926..0dfd9b1f3 100644 --- a/SmartDeviceLink/SDLVehicleDataResult.m +++ b/SmartDeviceLink/SDLVehicleDataResult.m @@ -11,21 +11,21 @@ @implementation SDLVehicleDataResult - (void)setDataType:(SDLVehicleDataType)dataType { - [store sdl_setObject:dataType forName:SDLRPCParameterNameDataType]; + [self.store sdl_setObject:dataType forName:SDLRPCParameterNameDataType]; } - (SDLVehicleDataType)dataType { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameDataType error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameDataType error:&error]; } - (void)setResultCode:(SDLVehicleDataResultCode)resultCode { - [store sdl_setObject:resultCode forName:SDLRPCParameterNameResultCode]; + [self.store sdl_setObject:resultCode forName:SDLRPCParameterNameResultCode]; } - (SDLVehicleDataResultCode)resultCode { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameResultCode error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameResultCode error:&error]; } @end diff --git a/SmartDeviceLink/SDLVehicleType.m b/SmartDeviceLink/SDLVehicleType.m index 50d3023a5..5f3df0700 100644 --- a/SmartDeviceLink/SDLVehicleType.m +++ b/SmartDeviceLink/SDLVehicleType.m @@ -12,35 +12,35 @@ @implementation SDLVehicleType - (void)setMake:(nullable NSString *)make { - [store sdl_setObject:make forName:SDLRPCParameterNameMake]; + [self.store sdl_setObject:make forName:SDLRPCParameterNameMake]; } - (nullable NSString *)make { - return [store sdl_objectForName:SDLRPCParameterNameMake ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMake ofClass:NSString.class error:nil]; } - (void)setModel:(nullable NSString *)model { - [store sdl_setObject:model forName:SDLRPCParameterNameModel]; + [self.store sdl_setObject:model forName:SDLRPCParameterNameModel]; } - (nullable NSString *)model { - return [store sdl_objectForName:SDLRPCParameterNameModel ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameModel ofClass:NSString.class error:nil]; } - (void)setModelYear:(nullable NSString *)modelYear { - [store sdl_setObject:modelYear forName:SDLRPCParameterNameModelYear]; + [self.store sdl_setObject:modelYear forName:SDLRPCParameterNameModelYear]; } - (nullable NSString *)modelYear { - return [store sdl_objectForName:SDLRPCParameterNameModelYear ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameModelYear ofClass:NSString.class error:nil]; } - (void)setTrim:(nullable NSString *)trim { - [store sdl_setObject:trim forName:SDLRPCParameterNameTrim]; + [self.store sdl_setObject:trim forName:SDLRPCParameterNameTrim]; } - (nullable NSString *)trim { - return [store sdl_objectForName:SDLRPCParameterNameTrim ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTrim ofClass:NSString.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLVideoStreamingCapability.m b/SmartDeviceLink/SDLVideoStreamingCapability.m index f9cee09c5..8f2d0d630 100644 --- a/SmartDeviceLink/SDLVideoStreamingCapability.m +++ b/SmartDeviceLink/SDLVideoStreamingCapability.m @@ -32,35 +32,35 @@ - (instancetype)initWithPreferredResolution:(nullable SDLImageResolution *)prefe } - (void)setPreferredResolution:(nullable SDLImageResolution *)preferredResolution { - [store sdl_setObject:preferredResolution forName:SDLRPCParameterNamePreferredResolution]; + [self.store sdl_setObject:preferredResolution forName:SDLRPCParameterNamePreferredResolution]; } - (nullable SDLImageResolution *)preferredResolution { - return [store sdl_objectForName:SDLRPCParameterNamePreferredResolution ofClass:SDLImageResolution.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePreferredResolution ofClass:SDLImageResolution.class error:nil]; } - (void)setMaxBitrate:(nullable NSNumber *)maxBitrate { - [store sdl_setObject:maxBitrate forName:SDLRPCParameterNameMaxBitrate]; + [self.store sdl_setObject:maxBitrate forName:SDLRPCParameterNameMaxBitrate]; } - (nullable NSNumber *)maxBitrate { - return [store sdl_objectForName:SDLRPCParameterNameMaxBitrate ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMaxBitrate ofClass:NSNumber.class error:nil]; } - (void)setSupportedFormats:(nullable NSArray *)supportedFormats { - [store sdl_setObject:supportedFormats forName:SDLRPCParameterNameSupportedFormats]; + [self.store sdl_setObject:supportedFormats forName:SDLRPCParameterNameSupportedFormats]; } - (nullable NSArray *)supportedFormats { - return [store sdl_objectsForName:SDLRPCParameterNameSupportedFormats ofClass:SDLVideoStreamingFormat.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameSupportedFormats ofClass:SDLVideoStreamingFormat.class error:nil]; } - (void)setHapticSpatialDataSupported:(nullable NSNumber *)hapticSpatialDataSupported { - [store sdl_setObject:hapticSpatialDataSupported forName:SDLRPCParameterNameHapticSpatialDataSupported]; + [self.store sdl_setObject:hapticSpatialDataSupported forName:SDLRPCParameterNameHapticSpatialDataSupported]; } - (nullable NSNumber *)hapticSpatialDataSupported { - return [store sdl_objectForName:SDLRPCParameterNameHapticSpatialDataSupported ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHapticSpatialDataSupported ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLVideoStreamingFormat.m b/SmartDeviceLink/SDLVideoStreamingFormat.m index eb031a9c4..4fda8d340 100644 --- a/SmartDeviceLink/SDLVideoStreamingFormat.m +++ b/SmartDeviceLink/SDLVideoStreamingFormat.m @@ -26,20 +26,20 @@ - (instancetype)initWithCodec:(SDLVideoStreamingCodec)codec protocol:(SDLVideoSt - (SDLVideoStreamingProtocol)protocol { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameVideoProtocol error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameVideoProtocol error:&error]; } - (void)setProtocol:(SDLVideoStreamingProtocol)protocol { - [store sdl_setObject:protocol forName:SDLRPCParameterNameVideoProtocol]; + [self.store sdl_setObject:protocol forName:SDLRPCParameterNameVideoProtocol]; } - (SDLVideoStreamingCodec)codec { NSError *error = nil; - return [store sdl_enumForName:SDLRPCParameterNameVideoCodec error:&error]; + return [self.store sdl_enumForName:SDLRPCParameterNameVideoCodec error:&error]; } - (void)setCodec:(SDLVideoStreamingCodec)codec { - [store sdl_setObject:codec forName:SDLRPCParameterNameVideoCodec]; + [self.store sdl_setObject:codec forName:SDLRPCParameterNameVideoCodec]; } @end diff --git a/SmartDeviceLink/SDLVrHelpItem.m b/SmartDeviceLink/SDLVrHelpItem.m index 5584818d9..8a9424b62 100644 --- a/SmartDeviceLink/SDLVrHelpItem.m +++ b/SmartDeviceLink/SDLVrHelpItem.m @@ -36,29 +36,29 @@ - (instancetype)initWithText:(NSString *)text image:(nullable SDLImage *)image { } - (void)setText:(NSString *)text { - [store sdl_setObject:text forName:SDLRPCParameterNameText]; + [self.store sdl_setObject:text forName:SDLRPCParameterNameText]; } - (NSString *)text { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameText ofClass:NSString.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameText ofClass:NSString.class error:&error]; } - (void)setImage:(nullable SDLImage *)image { - [store sdl_setObject:image forName:SDLRPCParameterNameImage]; + [self.store sdl_setObject:image forName:SDLRPCParameterNameImage]; } - (nullable SDLImage *)image { - return [store sdl_objectForName:SDLRPCParameterNameImage ofClass:SDLImage.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameImage ofClass:SDLImage.class error:nil]; } - (void)setPosition:(NSNumber *)position { - [store sdl_setObject:position forName:SDLRPCParameterNamePosition]; + [self.store sdl_setObject:position forName:SDLRPCParameterNamePosition]; } - (NSNumber *)position { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNamePosition ofClass:NSNumber.class error:&error]; } @end diff --git a/SmartDeviceLink/SDLWeatherAlert.m b/SmartDeviceLink/SDLWeatherAlert.m index d1dccaa53..8d09e78f3 100644 --- a/SmartDeviceLink/SDLWeatherAlert.m +++ b/SmartDeviceLink/SDLWeatherAlert.m @@ -32,51 +32,51 @@ - (instancetype)initWithTitle:(nullable NSString *)title summary:(nullable NSStr } - (void)setTitle:(nullable NSString *)title { - [store sdl_setObject:title forName:SDLRPCParameterNameTitle]; + [self.store sdl_setObject:title forName:SDLRPCParameterNameTitle]; } - (nullable NSString *)title { - return [store sdl_objectForName:SDLRPCParameterNameTitle ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTitle ofClass:NSString.class error:nil]; } - (void)setSummary:(nullable NSString *)summary { - [store sdl_setObject:summary forName:SDLRPCParameterNameSummary]; + [self.store sdl_setObject:summary forName:SDLRPCParameterNameSummary]; } - (nullable NSString *)summary { - return [store sdl_objectForName:SDLRPCParameterNameSummary ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSummary ofClass:NSString.class error:nil]; } - (void)setExpires:(nullable SDLDateTime *)expires { - [store sdl_setObject:expires forName:SDLRPCParameterNameExpires]; + [self.store sdl_setObject:expires forName:SDLRPCParameterNameExpires]; } - (nullable SDLDateTime *)expires { - return [store sdl_objectForName:SDLRPCParameterNameExpires ofClass:SDLDateTime.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameExpires ofClass:SDLDateTime.class error:nil]; } - (void)setRegions:(nullable NSArray *)regions { - [store sdl_setObject:regions forName:SDLRPCParameterNameRegions]; + [self.store sdl_setObject:regions forName:SDLRPCParameterNameRegions]; } - (nullable NSArray *)regions { - return [store sdl_objectsForName:SDLRPCParameterNameRegions ofClass:NSString.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameRegions ofClass:NSString.class error:nil]; } - (void)setSeverity:(nullable NSString *)severity { - [store sdl_setObject:severity forName:SDLRPCParameterNameSeverity]; + [self.store sdl_setObject:severity forName:SDLRPCParameterNameSeverity]; } - (nullable NSString *)severity { - return [store sdl_objectForName:SDLRPCParameterNameSeverity ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameSeverity ofClass:NSString.class error:nil]; } - (void)setTimeIssued:(nullable SDLDateTime *)timeIssued { - [store sdl_setObject:timeIssued forName:SDLRPCParameterNameTimeIssued]; + [self.store sdl_setObject:timeIssued forName:SDLRPCParameterNameTimeIssued]; } - (nullable SDLDateTime *)timeIssued { - return [store sdl_objectForName:SDLRPCParameterNameTimeIssued ofClass:SDLDateTime.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTimeIssued ofClass:SDLDateTime.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLWeatherData.m b/SmartDeviceLink/SDLWeatherData.m index e10663fab..4be530ec5 100644 --- a/SmartDeviceLink/SDLWeatherData.m +++ b/SmartDeviceLink/SDLWeatherData.m @@ -51,179 +51,179 @@ - (instancetype)initWithCurrentTemperature:(nullable SDLTemperature *)currentTem } - (void)setCurrentTemperature:(nullable SDLTemperature *)currentTemperature { - [store sdl_setObject:currentTemperature forName:SDLRPCParameterNameCurrentTemperature]; + [self.store sdl_setObject:currentTemperature forName:SDLRPCParameterNameCurrentTemperature]; } - (nullable SDLTemperature *)currentTemperature { - return [store sdl_objectForName:SDLRPCParameterNameCurrentTemperature ofClass:SDLTemperature.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCurrentTemperature ofClass:SDLTemperature.class error:nil]; } - (void)setTemperatureHigh:(nullable SDLTemperature *)temperatureHigh { - [store sdl_setObject:temperatureHigh forName:SDLRPCParameterNameTemperatureHigh]; + [self.store sdl_setObject:temperatureHigh forName:SDLRPCParameterNameTemperatureHigh]; } - (nullable SDLTemperature *)temperatureHigh { - return [store sdl_objectForName:SDLRPCParameterNameTemperatureHigh ofClass:SDLTemperature.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTemperatureHigh ofClass:SDLTemperature.class error:nil]; } - (void)setTemperatureLow:(nullable SDLTemperature *)temperatureLow { - [store sdl_setObject:temperatureLow forName:SDLRPCParameterNameTemperatureLow]; + [self.store sdl_setObject:temperatureLow forName:SDLRPCParameterNameTemperatureLow]; } - (nullable SDLTemperature *)temperatureLow { - return [store sdl_objectForName:SDLRPCParameterNameTemperatureLow ofClass:SDLTemperature.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTemperatureLow ofClass:SDLTemperature.class error:nil]; } - (void)setApparentTemperature:(nullable SDLTemperature *)apparentTemperature { - [store sdl_setObject:apparentTemperature forName:SDLRPCParameterNameApparentTemperature]; + [self.store sdl_setObject:apparentTemperature forName:SDLRPCParameterNameApparentTemperature]; } - (nullable SDLTemperature *)apparentTemperature { - return [store sdl_objectForName:SDLRPCParameterNameApparentTemperature ofClass:SDLTemperature.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameApparentTemperature ofClass:SDLTemperature.class error:nil]; } - (void)setApparentTemperatureHigh:(nullable SDLTemperature *)apparentTemperatureHigh { - [store sdl_setObject:apparentTemperatureHigh forName:SDLRPCParameterNameApparentTemperatureHigh]; + [self.store sdl_setObject:apparentTemperatureHigh forName:SDLRPCParameterNameApparentTemperatureHigh]; } - (nullable SDLTemperature *)apparentTemperatureHigh { - return [store sdl_objectForName:SDLRPCParameterNameApparentTemperatureHigh ofClass:SDLTemperature.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameApparentTemperatureHigh ofClass:SDLTemperature.class error:nil]; } - (void)setApparentTemperatureLow:(nullable SDLTemperature *)apparentTemperatureLow { - [store sdl_setObject:apparentTemperatureLow forName:SDLRPCParameterNameApparentTemperatureLow]; + [self.store sdl_setObject:apparentTemperatureLow forName:SDLRPCParameterNameApparentTemperatureLow]; } - (nullable SDLTemperature *)apparentTemperatureLow { - return [store sdl_objectForName:SDLRPCParameterNameApparentTemperatureLow ofClass:SDLTemperature.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameApparentTemperatureLow ofClass:SDLTemperature.class error:nil]; } - (void)setWeatherSummary:(nullable NSString *)weatherSummary { - [store sdl_setObject:weatherSummary forName:SDLRPCParameterNameWeatherSummary]; + [self.store sdl_setObject:weatherSummary forName:SDLRPCParameterNameWeatherSummary]; } - (nullable NSString *)weatherSummary { - return [store sdl_objectForName:SDLRPCParameterNameWeatherSummary ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameWeatherSummary ofClass:NSString.class error:nil]; } - (void)setTime:(nullable SDLDateTime *)time { - [store sdl_setObject:time forName:SDLRPCParameterNameTime]; + [self.store sdl_setObject:time forName:SDLRPCParameterNameTime]; } - (nullable SDLDateTime *)time { - return [store sdl_objectForName:SDLRPCParameterNameTime ofClass:SDLDateTime.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameTime ofClass:SDLDateTime.class error:nil]; } - (void)setHumidity:(nullable NSNumber *)humidity { - [store sdl_setObject:humidity forName:SDLRPCParameterNameHumidity]; + [self.store sdl_setObject:humidity forName:SDLRPCParameterNameHumidity]; } - (nullable NSNumber *)humidity { - return [store sdl_objectForName:SDLRPCParameterNameHumidity ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameHumidity ofClass:NSNumber.class error:nil]; } - (void)setCloudCover:(nullable NSNumber *)cloudCover { - [store sdl_setObject:cloudCover forName:SDLRPCParameterNameCloudCover]; + [self.store sdl_setObject:cloudCover forName:SDLRPCParameterNameCloudCover]; } - (nullable NSNumber *)cloudCover { - return [store sdl_objectForName:SDLRPCParameterNameCloudCover ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCloudCover ofClass:NSNumber.class error:nil]; } - (void)setMoonPhase:(nullable NSNumber *)moonPhase { - [store sdl_setObject:moonPhase forName:SDLRPCParameterNameMoonPhase]; + [self.store sdl_setObject:moonPhase forName:SDLRPCParameterNameMoonPhase]; } - (nullable NSNumber *)moonPhase { - return [store sdl_objectForName:SDLRPCParameterNameMoonPhase ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMoonPhase ofClass:NSNumber.class error:nil]; } - (void)setWindBearing:(nullable NSNumber *)windBearing { - [store sdl_setObject:windBearing forName:SDLRPCParameterNameWindBearing]; + [self.store sdl_setObject:windBearing forName:SDLRPCParameterNameWindBearing]; } - (nullable NSNumber *)windBearing { - return [store sdl_objectForName:SDLRPCParameterNameWindBearing ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameWindBearing ofClass:NSNumber.class error:nil]; } - (void)setWindGust:(nullable NSNumber *)windGust { - [store sdl_setObject:windGust forName:SDLRPCParameterNameWindGust]; + [self.store sdl_setObject:windGust forName:SDLRPCParameterNameWindGust]; } - (nullable NSNumber *)windGust { - return [store sdl_objectForName:SDLRPCParameterNameWindGust ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameWindGust ofClass:NSNumber.class error:nil]; } - (void)setWindSpeed:(nullable NSNumber *)windSpeed { - [store sdl_setObject:windSpeed forName:SDLRPCParameterNameWindSpeed]; + [self.store sdl_setObject:windSpeed forName:SDLRPCParameterNameWindSpeed]; } - (nullable NSNumber *)windSpeed { - return [store sdl_objectForName:SDLRPCParameterNameWindSpeed ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameWindSpeed ofClass:NSNumber.class error:nil]; } - (void)setNearestStormBearing:(nullable NSNumber *)nearestStormBearing { - [store sdl_setObject:nearestStormBearing forName:SDLRPCParameterNameNearestStormBearing]; + [self.store sdl_setObject:nearestStormBearing forName:SDLRPCParameterNameNearestStormBearing]; } - (nullable NSNumber *)nearestStormBearing { - return [store sdl_objectForName:SDLRPCParameterNameNearestStormBearing ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNearestStormBearing ofClass:NSNumber.class error:nil]; } - (void)setNearestStormDistance:(nullable NSNumber *)nearestStormDistance { - [store sdl_setObject:nearestStormDistance forName:SDLRPCParameterNameNearestStormDistance]; + [self.store sdl_setObject:nearestStormDistance forName:SDLRPCParameterNameNearestStormDistance]; } - (nullable NSNumber *)nearestStormDistance { - return [store sdl_objectForName:SDLRPCParameterNameNearestStormDistance ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameNearestStormDistance ofClass:NSNumber.class error:nil]; } - (void)setPrecipAccumulation:(nullable NSNumber *)precipAccumulation { - [store sdl_setObject:precipAccumulation forName:SDLRPCParameterNamePrecipAccumulation]; + [self.store sdl_setObject:precipAccumulation forName:SDLRPCParameterNamePrecipAccumulation]; } - (nullable NSNumber *)precipAccumulation { - return [store sdl_objectForName:SDLRPCParameterNamePrecipAccumulation ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePrecipAccumulation ofClass:NSNumber.class error:nil]; } - (void)setPrecipIntensity:(nullable NSNumber *)precipIntensity { - [store sdl_setObject:precipIntensity forName:SDLRPCParameterNamePrecipIntensity]; + [self.store sdl_setObject:precipIntensity forName:SDLRPCParameterNamePrecipIntensity]; } - (nullable NSNumber *)precipIntensity { - return [store sdl_objectForName:SDLRPCParameterNamePrecipIntensity ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePrecipIntensity ofClass:NSNumber.class error:nil]; } - (void)setPrecipProbability:(nullable NSNumber *)precipProbability { - [store sdl_setObject:precipProbability forName:SDLRPCParameterNamePrecipProbability]; + [self.store sdl_setObject:precipProbability forName:SDLRPCParameterNamePrecipProbability]; } - (nullable NSNumber *)precipProbability { - return [store sdl_objectForName:SDLRPCParameterNamePrecipProbability ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePrecipProbability ofClass:NSNumber.class error:nil]; } - (void)setPrecipType:(nullable NSString *)precipType { - [store sdl_setObject:precipType forName:SDLRPCParameterNamePrecipType]; + [self.store sdl_setObject:precipType forName:SDLRPCParameterNamePrecipType]; } - (nullable NSString *)precipType { - return [store sdl_objectForName:SDLRPCParameterNamePrecipType ofClass:NSString.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNamePrecipType ofClass:NSString.class error:nil]; } - (void)setVisibility:(nullable NSNumber *)visibility { - [store sdl_setObject:visibility forName:SDLRPCParameterNameVisibility]; + [self.store sdl_setObject:visibility forName:SDLRPCParameterNameVisibility]; } - (nullable NSNumber *)visibility { - return [store sdl_objectForName:SDLRPCParameterNameVisibility ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameVisibility ofClass:NSNumber.class error:nil]; } - (void)setWeatherIcon:(nullable SDLImage *)weatherIcon { - [store sdl_setObject:weatherIcon forName:SDLRPCParameterNameWeatherIcon]; + [self.store sdl_setObject:weatherIcon forName:SDLRPCParameterNameWeatherIcon]; } - (nullable SDLImage *)weatherIcon { - return [store sdl_objectForName:SDLRPCParameterNameWeatherIcon ofClass:SDLImage.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameWeatherIcon ofClass:SDLImage.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLWeatherServiceData.m b/SmartDeviceLink/SDLWeatherServiceData.m index 59ed81be3..60b110e0d 100644 --- a/SmartDeviceLink/SDLWeatherServiceData.m +++ b/SmartDeviceLink/SDLWeatherServiceData.m @@ -42,52 +42,52 @@ - (instancetype)initWithLocation:(SDLLocationDetails *)location currentForecast: } - (void)setLocation:(SDLLocationDetails *)location { - [store sdl_setObject:location forName:SDLRPCParameterNameLocation]; + [self.store sdl_setObject:location forName:SDLRPCParameterNameLocation]; } - (SDLLocationDetails *)location { NSError *error = nil; - return [store sdl_objectForName:SDLRPCParameterNameLocation ofClass:SDLLocationDetails.class error:&error]; + return [self.store sdl_objectForName:SDLRPCParameterNameLocation ofClass:SDLLocationDetails.class error:&error]; } - (void)setCurrentForecast:(nullable SDLWeatherData *)currentForecast { - [store sdl_setObject:currentForecast forName:SDLRPCParameterNameCurrentForecast]; + [self.store sdl_setObject:currentForecast forName:SDLRPCParameterNameCurrentForecast]; } - (nullable SDLWeatherData *)currentForecast { - return [store sdl_objectForName:SDLRPCParameterNameCurrentForecast ofClass:SDLWeatherData.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCurrentForecast ofClass:SDLWeatherData.class error:nil]; } - (void)setMinuteForecast:(nullable NSArray *)minuteForecast { - [store sdl_setObject:minuteForecast forName:SDLRPCParameterNameMinuteForecast]; + [self.store sdl_setObject:minuteForecast forName:SDLRPCParameterNameMinuteForecast]; } - (nullable NSArray *)minuteForecast { - return [store sdl_objectsForName:SDLRPCParameterNameMinuteForecast ofClass:SDLWeatherData.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameMinuteForecast ofClass:SDLWeatherData.class error:nil]; } - (void)setHourlyForecast:(nullable NSArray *)hourlyForecast { - [store sdl_setObject:hourlyForecast forName:SDLRPCParameterNameHourlyForecast]; + [self.store sdl_setObject:hourlyForecast forName:SDLRPCParameterNameHourlyForecast]; } - (nullable NSArray *)hourlyForecast { - return [store sdl_objectsForName:SDLRPCParameterNameHourlyForecast ofClass:SDLWeatherData.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameHourlyForecast ofClass:SDLWeatherData.class error:nil]; } - (void)setMultidayForecast:(nullable NSArray *)multidayForecast { - [store sdl_setObject:multidayForecast forName:SDLRPCParameterNameMultidayForecast]; + [self.store sdl_setObject:multidayForecast forName:SDLRPCParameterNameMultidayForecast]; } - (nullable NSArray *)multidayForecast { - return [store sdl_objectsForName:SDLRPCParameterNameMultidayForecast ofClass:SDLWeatherData.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameMultidayForecast ofClass:SDLWeatherData.class error:nil]; } - (void)setAlerts:(nullable NSArray *)alerts { - [store sdl_setObject:alerts forName:SDLRPCParameterNameAlerts]; + [self.store sdl_setObject:alerts forName:SDLRPCParameterNameAlerts]; } - (nullable NSArray *)alerts { - return [store sdl_objectsForName:SDLRPCParameterNameAlerts ofClass:SDLWeatherAlert.class error:nil]; + return [self.store sdl_objectsForName:SDLRPCParameterNameAlerts ofClass:SDLWeatherAlert.class error:nil]; } @end diff --git a/SmartDeviceLink/SDLWeatherServiceManifest.m b/SmartDeviceLink/SDLWeatherServiceManifest.m index 25da6461b..753a152ed 100644 --- a/SmartDeviceLink/SDLWeatherServiceManifest.m +++ b/SmartDeviceLink/SDLWeatherServiceManifest.m @@ -31,43 +31,43 @@ - (instancetype)initWithCurrentForecastSupported:(BOOL)currentForecastSupported } - (void)setCurrentForecastSupported:(nullable NSNumber *)currentForecastSupported { - [store sdl_setObject:currentForecastSupported forName:SDLRPCParameterNameCurrentForecastSupported]; + [self.store sdl_setObject:currentForecastSupported forName:SDLRPCParameterNameCurrentForecastSupported]; } - (nullable NSNumber *)currentForecastSupported { - return [store sdl_objectForName:SDLRPCParameterNameCurrentForecastSupported ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameCurrentForecastSupported ofClass:NSNumber.class error:nil]; } - (void)setMaxMultidayForecastAmount:(nullable NSNumber *)maxMultidayForecastAmount { - [store sdl_setObject:maxMultidayForecastAmount forName:SDLRPCParameterNameMaxMultidayForecastAmount]; + [self.store sdl_setObject:maxMultidayForecastAmount forName:SDLRPCParameterNameMaxMultidayForecastAmount]; } - (nullable NSNumber *)maxMultidayForecastAmount { - return [store sdl_objectForName:SDLRPCParameterNameMaxMultidayForecastAmount ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMaxMultidayForecastAmount ofClass:NSNumber.class error:nil]; } - (void)setMaxHourlyForecastAmount:(nullable NSNumber *)maxHourlyForecastAmount { - [store sdl_setObject:maxHourlyForecastAmount forName:SDLRPCParameterNameMaxHourlyForecastAmount]; + [self.store sdl_setObject:maxHourlyForecastAmount forName:SDLRPCParameterNameMaxHourlyForecastAmount]; } - (nullable NSNumber *)maxHourlyForecastAmount { - return [store sdl_objectForName:SDLRPCParameterNameMaxHourlyForecastAmount ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMaxHourlyForecastAmount ofClass:NSNumber.class error:nil]; } - (void)setMaxMinutelyForecastAmount:(nullable NSNumber *)maxMinutelyForecastAmount { - [store sdl_setObject:maxMinutelyForecastAmount forName:SDLRPCParameterNameMaxMinutelyForecastAmount]; + [self.store sdl_setObject:maxMinutelyForecastAmount forName:SDLRPCParameterNameMaxMinutelyForecastAmount]; } - (nullable NSNumber *)maxMinutelyForecastAmount { - return [store sdl_objectForName:SDLRPCParameterNameMaxMinutelyForecastAmount ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameMaxMinutelyForecastAmount ofClass:NSNumber.class error:nil]; } - (void)setWeatherForLocationSupported:(nullable NSNumber *)weatherForLocationSupported { - [store sdl_setObject:weatherForLocationSupported forName:SDLRPCParameterNameWeatherForLocationSupported]; + [self.store sdl_setObject:weatherForLocationSupported forName:SDLRPCParameterNameWeatherForLocationSupported]; } - (nullable NSNumber *)weatherForLocationSupported { - return [store sdl_objectForName:SDLRPCParameterNameWeatherForLocationSupported ofClass:NSNumber.class error:nil]; + return [self.store sdl_objectForName:SDLRPCParameterNameWeatherForLocationSupported ofClass:NSNumber.class error:nil]; } @end diff --git a/SmartDeviceLink/SmartDeviceLink.h b/SmartDeviceLink/SmartDeviceLink.h index 4ae1a7d37..59b4763c1 100644 --- a/SmartDeviceLink/SmartDeviceLink.h +++ b/SmartDeviceLink/SmartDeviceLink.h @@ -310,6 +310,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLMassageZone.h" #import "SDLMediaClockFormat.h" #import "SDLMediaType.h" +#import "SDLMenuManagerConstants.h" #import "SDLMetadataType.h" #import "SDLModuleType.h" #import "SDLNavigationAction.h" @@ -371,6 +372,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLStreamingMediaConfiguration.h" // Streaming +#import "SDLAudioFile.h" #import "SDLAudioStreamManager.h" #import "SDLAudioStreamManagerDelegate.h" #import "SDLCarWindowViewController.h" diff --git a/SmartDeviceLinkSwift/Info.plist b/SmartDeviceLinkSwift/Info.plist index ed1455724..93c3f315c 100644 --- a/SmartDeviceLinkSwift/Info.plist +++ b/SmartDeviceLinkSwift/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 6.2.3 + 6.3.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCNotificationNotificationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCNotificationNotificationSpec.m index 307e45d81..c1ed2e966 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCNotificationNotificationSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCNotificationNotificationSpec.m @@ -21,7 +21,10 @@ __block NSString *testName = nil; beforeEach(^{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testNotification = [[SDLOnCommand alloc] initWithName:@"testNotification"]; +#pragma clang diagnostic pop testName = SDLDidReceiveCommandNotification; }); diff --git a/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCRequestNotificationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCRequestNotificationSpec.m index 4751c9361..b317f00f8 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCRequestNotificationSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCRequestNotificationSpec.m @@ -21,7 +21,10 @@ __block NSString *testName = nil; beforeEach(^{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testRequest = [[SDLAddCommand alloc] initWithName:@"testRequest"]; +#pragma clang diagnostic pop testName = SDLDidReceiveAddCommandResponse; }); diff --git a/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCResponseNotificationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCResponseNotificationSpec.m index a0aaf3b08..14349a7fa 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCResponseNotificationSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/Notification Tests/SDLRPCResponseNotificationSpec.m @@ -20,7 +20,10 @@ __block NSString *testName = nil; beforeEach(^{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testResponse = [[SDLAddCommandResponse alloc] initWithName:@"testResponse"]; +#pragma clang diagnostic pop testName = SDLDidReceiveAddCommandRequest; }); diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLAudioStreamManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLAudioStreamManagerSpec.m index a087ecb5a..e538122f5 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLAudioStreamManagerSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLAudioStreamManagerSpec.m @@ -10,6 +10,7 @@ __block SDLAudioStreamManager *testManager = nil; __block SDLStreamingAudioManagerMock *mockAudioManager = nil; __block NSURL *testAudioFileURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"testAudio" withExtension:@"mp3"]; + __block NSData *testAudioFileData = [NSData dataWithContentsOfURL:testAudioFileURL options:0 error:nil]; beforeEach(^{ mockAudioManager = [[SDLStreamingAudioManagerMock alloc] init]; @@ -27,30 +28,93 @@ }); describe(@"when audio streaming is not connected", ^{ + context(@"with a file URL", ^{ + beforeEach(^{ + mockAudioManager.audioConnected = NO; + [testManager pushWithFileURL:testAudioFileURL]; + + [NSThread sleepForTimeInterval:0.5]; + }); + + describe(@"after attempting to play the file", ^{ + beforeEach(^{ + [mockAudioManager clearData]; + [testManager playNextWhenReady]; + }); + + it(@"should fail to send data", ^{ + expect(mockAudioManager.dataSinceClear.length).to(equal(0)); + expect(mockAudioManager.error.code).toEventually(equal(SDLAudioStreamManagerErrorNotConnected)); + }); + }); + }); + + context(@"with a data buffer", ^{ + beforeEach(^{ + mockAudioManager.audioConnected = NO; + [testManager pushWithData:testAudioFileData]; + + [NSThread sleepForTimeInterval:0.5]; + }); + + describe(@"after attempting to play the file", ^{ + beforeEach(^{ + [mockAudioManager clearData]; + [testManager playNextWhenReady]; + }); + + it(@"should fail to send data", ^{ + expect(mockAudioManager.dataSinceClear.length).to(equal(0)); + expect(mockAudioManager.error.code).toEventually(equal(SDLAudioStreamManagerErrorNotConnected)); + }); + }); + }); + }); + + describe(@"after adding an audio file to the queue", ^{ beforeEach(^{ - mockAudioManager.audioConnected = NO; + mockAudioManager.audioConnected = YES; [testManager pushWithFileURL:testAudioFileURL]; [NSThread sleepForTimeInterval:0.5]; }); + it(@"should have a file in the queue", ^{ + expect(testManager.queue).toNot(beEmpty()); + }); + describe(@"after attempting to play the file", ^{ beforeEach(^{ [mockAudioManager clearData]; [testManager playNextWhenReady]; + + [NSThread sleepForTimeInterval:1.0]; }); - it(@"should fail to send data", ^{ - expect(mockAudioManager.dataSinceClear.length).to(equal(0)); - expect(mockAudioManager.fileError.code).to(equal(SDLAudioStreamManagerErrorNotConnected)); + it(@"should be sending data", ^{ + expect(testManager.isPlaying).toEventually(beTrue()); + expect(mockAudioManager.dataSinceClear.length).toEventually(equal(34380)); + + // Fails when it shouldn't, `weakself` goes to nil in `sdl_playNextWhenReady` + expect(mockAudioManager.finishedPlaying).toEventually(beTrue()); + }); + }); + + describe(@"after stopping the manager", ^{ + beforeEach(^{ + [testManager stop]; + }); + + it(@"should have an empty queue", ^{ + expect(testManager.queue).toEventually(beEmpty()); }); }); }); - describe(@"after adding an audio file to the queue", ^{ + describe(@"after adding an audio buffer to the queue", ^{ beforeEach(^{ mockAudioManager.audioConnected = YES; - [testManager pushWithFileURL:testAudioFileURL]; + [testManager pushWithData:testAudioFileData]; [NSThread sleepForTimeInterval:0.5]; }); @@ -59,7 +123,7 @@ expect(testManager.queue).toNot(beEmpty()); }); - describe(@"after attempting to play the file", ^{ + describe(@"after attempting to play the audio buffer", ^{ beforeEach(^{ [mockAudioManager clearData]; [testManager playNextWhenReady]; @@ -67,10 +131,10 @@ it(@"should be sending data", ^{ expect(testManager.isPlaying).toEventually(beTrue()); - expect(mockAudioManager.dataSinceClear.length).toEventually(equal(34380)); + expect(mockAudioManager.dataSinceClear.length).toEventually(equal(14838)); // Fails when it shouldn't, `weakself` goes to nil in `sdl_playNextWhenReady` -// expect(mockAudioManager.fileFinishedPlaying).toEventually(beTrue()); + expect(mockAudioManager.finishedPlaying).toEventually(beTrue()); }); }); @@ -80,7 +144,7 @@ }); it(@"should have an empty queue", ^{ - expect(testManager.queue).to(beEmpty()); + expect(testManager.queue).toEventually(beEmpty()); }); }); }); diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetSpec.m index c89a969be..bce012034 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLChoiceSetSpec.m @@ -69,6 +69,7 @@ expect(testChoiceSet.timeoutPrompt).to(equal([SDLTTSChunk textChunksFromString:testTimeoutPrompt])); expect(testChoiceSet.helpPrompt).to(equal([SDLTTSChunk textChunksFromString:testHelpPrompt])); expect(testChoiceSet.helpList).to(equal(@[testHelpItem])); + expect(testChoiceSet.helpList.firstObject.position).to(equal(1)); expect(testChoiceSet.delegate).to(equal(testDelegate)); expect(testChoiceSet.choices).to(equal(@[testCell])); }); @@ -150,6 +151,18 @@ }); }); }); + + describe(@"setting data", ^{ + beforeEach(^{ + testChoiceSet = [[SDLChoiceSet alloc] init]; + }); + + it(@"should properly set help list position", ^{ + testChoiceSet.helpList = @[testHelpItem]; + + expect(testHelpItem.position).to(equal(1)); + }); + }); }); QuickSpecEnd diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m index afbd93873..c7dd86483 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m @@ -1,5 +1,6 @@ #import #import +#import #import "SDLDeleteFileResponse.h" #import "SDLError.h" @@ -14,6 +15,7 @@ #import "SDLPutFile.h" #import "SDLPutFileResponse.h" #import "SDLRPCResponse.h" +#import "SDLStateMachine.h" #import "TestConnectionManager.h" #import "TestMultipleFilesConnectionManager.h" #import "TestFileProgressResponse.h" @@ -31,6 +33,7 @@ @interface SDLFileManager () @property (strong, nonatomic) NSMutableDictionary *> *failedFileUploadsCount; @property (assign, nonatomic) UInt8 maxFileUploadAttempts; @property (assign, nonatomic) UInt8 maxArtworkUploadAttempts; +@property (strong, nonatomic) SDLStateMachine *stateMachine; - (BOOL)sdl_canFileBeUploadedAgain:(nullable SDLFile *)file maxUploadCount:(int)maxRetryCount failedFileUploadsCount:(NSMutableDictionary *> *)failedFileUploadsCount; + (NSMutableDictionary *> *)sdl_incrementFailedUploadCountForFileName:(SDLFileName *)fileName failedFileUploadsCount:(NSMutableDictionary *> *)failedFileUploadsCount; @@ -1675,12 +1678,33 @@ - (BOOL)sdl_canFileBeUploadedAgain:(nullable SDLFile *)file maxUploadCount:(int) describe(@"the file cannot be uploaded again", ^{ it(@"should not upload a file that is nil", ^{ + // Make sure we are in the ready state + testFileManager.stateMachine = OCMClassMock([SDLStateMachine class]); + OCMStub([testFileManager.stateMachine currentState]).andReturn(SDLFileManagerStateReady); + expect([testFileManager.currentState isEqualToEnum:SDLFileManagerStateReady]).to(beTrue()); + testFile = nil; BOOL canUploadAgain = [testFileManager sdl_canFileBeUploadedAgain:testFile maxUploadCount:5 failedFileUploadsCount:testFailedFileUploadsCount]; expect(canUploadAgain).to(equal(NO)); }); it(@"should not upload a file that has already been uploaded the max number of times", ^{ + // Make sure we are in the ready state + testFileManager.stateMachine = OCMClassMock([SDLStateMachine class]); + OCMStub([testFileManager.stateMachine currentState]).andReturn(SDLFileManagerStateReady); + expect([testFileManager.currentState isEqualToEnum:SDLFileManagerStateReady]).to(beTrue()); + + testFailedFileUploadsCount[testFileName] = @4; + BOOL canUploadAgain = [testFileManager sdl_canFileBeUploadedAgain:testFile maxUploadCount:4 failedFileUploadsCount:testFailedFileUploadsCount]; + expect(canUploadAgain).to(equal(NO)); + }); + + it(@"should not upload a file if the file manager is not in state ready", ^{ + // Make sure we are NOT in the ready state + testFileManager.stateMachine = OCMClassMock([SDLStateMachine class]); + OCMStub([testFileManager.stateMachine currentState]).andReturn(SDLFileManagerStateShutdown); + expect([testFileManager.currentState isEqualToEnum:SDLFileManagerStateShutdown]).to(beTrue()); + testFailedFileUploadsCount[testFileName] = @4; BOOL canUploadAgain = [testFileManager sdl_canFileBeUploadedAgain:testFile maxUploadCount:4 failedFileUploadsCount:testFailedFileUploadsCount]; expect(canUploadAgain).to(equal(NO)); @@ -1688,6 +1712,13 @@ - (BOOL)sdl_canFileBeUploadedAgain:(nullable SDLFile *)file maxUploadCount:(int) }); describe(@"the file can be uploaded again", ^{ + beforeEach(^{ + // Make sure we are in the ready state + testFileManager.stateMachine = OCMClassMock([SDLStateMachine class]); + OCMStub([testFileManager.stateMachine currentState]).andReturn(SDLFileManagerStateReady); + expect([testFileManager.currentState isEqualToEnum:SDLFileManagerStateReady]).to(beTrue()); + }); + it(@"should upload a file that has not yet failed to upload", ^{ testFailedFileUploadsCount = [NSMutableDictionary dictionary]; BOOL canUploadAgain = [testFileManager sdl_canFileBeUploadedAgain:testFile maxUploadCount:2 failedFileUploadsCount:testFailedFileUploadsCount]; diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuCellSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuCellSpec.m index 84936f211..ee6f61278 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuCellSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuCellSpec.m @@ -8,6 +8,7 @@ describe(@"a menu cell", ^{ __block SDLMenuCell *testCell = nil; + __block SDLMenuCell *testCell2 = nil; describe(@"initializing", ^{ __block NSString *someTitle = nil; @@ -54,6 +55,21 @@ expect(testCell.subCells).to(equal(someSubcells)); }); }); + describe(@"check cell eqality", ^{ + it(@"should compare cells and return true if cells equal", ^{ + testCell = [[SDLMenuCell alloc] initWithTitle:@"Title" icon:nil subCells:@[]]; + testCell2 = [[SDLMenuCell alloc] initWithTitle:@"Title" icon:nil subCells:@[]]; + + expect([testCell isEqual:testCell2]).to(equal(true)); + }); + + it(@"should compare cells and return false if not equal ", ^{ + testCell = [[SDLMenuCell alloc] initWithTitle:@"True" icon:nil subCells:@[]]; + testCell2 = [[SDLMenuCell alloc] initWithTitle:@"False" icon:nil subCells:@[]]; + + expect([testCell isEqual:testCell2]).to(equal(false)); + }); + }); }); QuickSpecEnd diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m index 9eb966520..2b96e74b0 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLMenuManagerSpec.m @@ -5,20 +5,32 @@ #import "SDLAddCommand.h" #import "SDLAddSubMenu.h" #import "SDLDeleteCommand.h" +#import "SDLDeleteSubMenu.h" #import "SDLDisplayCapabilities.h" +#import "SDLDisplayType.h" #import "SDLFileManager.h" #import "SDLHMILevel.h" #import "SDLImage.h" #import "SDLImageField.h" #import "SDLImageFieldName.h" +#import "SDLMediaClockFormat.h" #import "SDLMenuCell.h" #import "SDLMenuManager.h" +#import "SDLMenuManagerConstants.h" #import "SDLOnCommand.h" #import "SDLOnHMIStatus.h" +#import "SDLRegisterAppInterfaceResponse.h" #import "SDLRPCNotificationNotification.h" +#import "SDLRPCParameterNames.h" +#import "SDLRPCResponseNotification.h" +#import "SDLSetDisplayLayoutResponse.h" +#import "SDLScreenManager.h" +#import "SDLScreenParams.h" #import "SDLSystemContext.h" +#import "SDLTextField.h" #import "TestConnectionManager.h" + @interface SDLMenuCell() @property (assign, nonatomic) UInt32 parentCellId; @@ -51,11 +63,14 @@ @interface SDLMenuManager() __block SDLMenuManager *testManager = nil; __block TestConnectionManager *mockConnectionManager = nil; __block SDLFileManager *mockFileManager = nil; - + __block SDLSetDisplayLayoutResponse *testSetDisplayLayoutResponse = nil; + __block SDLDisplayCapabilities *testDisplayCapabilities = nil; + __block SDLRegisterAppInterfaceResponse *testRegisterAppInterfaceResponse = nil; __block SDLArtwork *testArtwork = nil; __block SDLArtwork *testArtwork2 = nil; __block SDLMenuCell *textOnlyCell = nil; + __block SDLMenuCell *textOnlyCell2 = nil; __block SDLMenuCell *textAndImageCell = nil; __block SDLMenuCell *submenuCell = nil; __block SDLMenuCell *submenuImageCell = nil; @@ -68,6 +83,8 @@ @interface SDLMenuManager() textAndImageCell = [[SDLMenuCell alloc] initWithTitle:@"Test 2" icon:testArtwork voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; submenuCell = [[SDLMenuCell alloc] initWithTitle:@"Test 3" icon:nil subCells:@[textOnlyCell, textAndImageCell]]; submenuImageCell = [[SDLMenuCell alloc] initWithTitle:@"Test 4" icon:testArtwork2 subCells:@[textOnlyCell]]; + textOnlyCell2 = [[SDLMenuCell alloc] initWithTitle:@"Test 5" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + mockConnectionManager = [[TestConnectionManager alloc] init]; mockFileManager = OCMClassMock([SDLFileManager class]); @@ -154,6 +171,34 @@ @interface SDLMenuManager() }); }); + describe(@"Notificaiton Responses", ^{ + it(@"should set display capabilities when SDLDidReceiveSetDisplayLayoutResponse is received", ^{ + testDisplayCapabilities = [[SDLDisplayCapabilities alloc] init]; + + testSetDisplayLayoutResponse = [[SDLSetDisplayLayoutResponse alloc] init]; + testSetDisplayLayoutResponse.success = @YES; + testSetDisplayLayoutResponse.displayCapabilities = testDisplayCapabilities; + + SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveRegisterAppInterfaceResponse object:self rpcResponse:testSetDisplayLayoutResponse]; + [[NSNotificationCenter defaultCenter] postNotification:notification]; + + expect(testManager.displayCapabilities).to(equal(testDisplayCapabilities)); + }); + + it(@"should set display capabilities when SDLDidReceiveRegisterAppInterfaceResponse is received", ^{ + testDisplayCapabilities = [[SDLDisplayCapabilities alloc] init]; + + testRegisterAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init]; + testRegisterAppInterfaceResponse.success = @YES; + testRegisterAppInterfaceResponse.displayCapabilities = testDisplayCapabilities; + + SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testRegisterAppInterfaceResponse]; + [[NSNotificationCenter defaultCenter] postNotification:notification]; + + expect(testManager.displayCapabilities).to(equal(testDisplayCapabilities)); + }); + }); + describe(@"updating menu cells", ^{ beforeEach(^{ testManager.currentHMILevel = SDLHMILevelFull; @@ -196,6 +241,7 @@ @interface SDLMenuManager() }); it(@"should properly update with subcells", ^{ + OCMStub([mockFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg invokeBlock]]); testManager.menuCells = @[submenuCell]; [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; @@ -233,12 +279,14 @@ @interface SDLMenuManager() }); }); + // No longer a valid unit test context(@"when the image is not on the head unit", ^{ beforeEach(^{ - OCMStub([mockFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO); + testManager.dynamicMenuUpdatesMode = SDLDynamicMenuUpdatesModeForceOff; + OCMStub([mockFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg invokeBlock]]); }); - it(@"should immediately attempt to update without the image", ^{ + it(@"should wait till image is on head unit and attempt to update without the image", ^{ testManager.menuCells = @[textAndImageCell, submenuImageCell]; NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass: %@", [SDLAddCommand class]]; @@ -257,17 +305,140 @@ @interface SDLMenuManager() }); }); - describe(@"updating when a menu already exists", ^{ + describe(@"updating when a menu already exists with dynamic updates on", ^{ beforeEach(^{ + testManager.dynamicMenuUpdatesMode = SDLDynamicMenuUpdatesModeForceOn; + OCMStub([mockFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg invokeBlock]]); + }); + + it(@"should send deletes first", ^{ testManager.menuCells = @[textOnlyCell]; - [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; // Adds - [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; // Submenu + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; testManager.menuCells = @[textAndImageCell]; - [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; // Deletes + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; + NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; + + NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLAddCommand class]]; + NSArray *adds = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addCommandPredicate]; + + expect(deletes).to(haveCount(1)); + expect(adds).to(haveCount(2)); + }); + + it(@"should send dynamic deletes first then dynamic adds case with 2 submenu cells", ^{ + testManager.menuCells = @[textOnlyCell, submenuCell, submenuImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + testManager.menuCells = @[submenuCell, submenuImageCell, textOnlyCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; + NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; + + NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLAddCommand class]]; + NSArray *adds = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addCommandPredicate]; + + NSPredicate *addSubmenuPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass: %@", [SDLAddSubMenu class]]; + NSArray *submenu = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addSubmenuPredicate]; + + expect(deletes).to(haveCount(1)); + expect(adds).to(haveCount(5)); + expect(submenu).to(haveCount(2)); + }); + + it(@"should send dynamic deletes first then dynamic adds when removing one submenu cell", ^{ + testManager.menuCells = @[textOnlyCell, textAndImageCell, submenuCell, submenuImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + testManager.menuCells = @[textOnlyCell, textAndImageCell, submenuCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; + NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; + + NSPredicate *deleteSubCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteSubMenu class]]; + NSArray *subDeletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteSubCommandPredicate]; + + NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLAddCommand class]]; + NSArray *adds = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addCommandPredicate]; + + NSPredicate *addSubmenuPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass: %@", [SDLAddSubMenu class]]; + NSArray *submenu = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addSubmenuPredicate]; + + expect(deletes).to(haveCount(0)); + expect(subDeletes).to(haveCount(1)); + expect(adds).to(haveCount(5)); + expect(submenu).to(haveCount(2)); + }); + + it(@"should send dynamic deletes first then dynamic adds when adding one new cell", ^{ + testManager.menuCells = @[textOnlyCell, textAndImageCell, submenuCell, submenuImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + testManager.menuCells = @[textOnlyCell, textAndImageCell, submenuCell, submenuImageCell, textOnlyCell2]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; + NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; + + NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLAddCommand class]]; + NSArray *adds = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addCommandPredicate]; + + NSPredicate *addSubmenuPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass: %@", [SDLAddSubMenu class]]; + NSArray *submenu = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addSubmenuPredicate]; + + expect(deletes).to(haveCount(0)); + expect(adds).to(haveCount(6)); + expect(submenu).to(haveCount(2)); + }); + + it(@"should send dynamic deletes first then dynamic adds when cells stay the same", ^{ + testManager.menuCells = @[textOnlyCell, textOnlyCell2, textAndImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + testManager.menuCells = @[textOnlyCell, textOnlyCell2, textAndImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; + NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; + + NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLAddCommand class]]; + NSArray *adds = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addCommandPredicate]; + + expect(deletes).to(haveCount(0)); + expect(adds).to(haveCount(3)); + }); + }); + + describe(@"updating when a menu already exists with dynamic updates off", ^{ + beforeEach(^{ + testManager.dynamicMenuUpdatesMode = SDLDynamicMenuUpdatesModeForceOff; + OCMStub([mockFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg invokeBlock]]); }); it(@"should send deletes first", ^{ + testManager.menuCells = @[textOnlyCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + testManager.menuCells = @[textAndImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; @@ -277,6 +448,99 @@ @interface SDLMenuManager() expect(deletes).to(haveCount(1)); expect(adds).to(haveCount(2)); }); + + it(@"should deletes first case 2", ^{ + testManager.menuCells = @[textOnlyCell, textAndImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + testManager.menuCells = @[textAndImageCell, textOnlyCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; + NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; + + NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLAddCommand class]]; + NSArray *adds = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addCommandPredicate]; + + expect(deletes).to(haveCount(2)); + expect(adds).to(haveCount(4)); + }); + + it(@"should send deletes first case 3", ^{ + testManager.menuCells = @[textOnlyCell, textAndImageCell, submenuCell, submenuImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + testManager.menuCells = @[textOnlyCell, textAndImageCell, submenuCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; + NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; + + NSPredicate *deleteSubCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteSubMenu class]]; + NSArray *subDeletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteSubCommandPredicate]; + + NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLAddCommand class]]; + NSArray *adds = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addCommandPredicate]; + + NSPredicate *addSubmenuPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass: %@", [SDLAddSubMenu class]]; + NSArray *submenu = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addSubmenuPredicate]; + + expect(deletes).to(haveCount(2)); + expect(subDeletes).to(haveCount(2)); + expect(adds).to(haveCount(9)); + expect(submenu).to(haveCount(3)); + }); + + it(@"should send deletes first case 4", ^{ + testManager.menuCells = @[textOnlyCell, textAndImageCell, submenuCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + testManager.menuCells = @[textOnlyCell, textAndImageCell, submenuCell, textOnlyCell2]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; + NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; + + NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLAddCommand class]]; + NSArray *adds = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addCommandPredicate]; + + NSPredicate *addSubmenuPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass: %@", [SDLAddSubMenu class]]; + NSArray *submenu = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addSubmenuPredicate]; + + NSPredicate *deleteSubCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteSubMenu class]]; + NSArray *subDeletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteSubCommandPredicate]; + + expect(deletes).to(haveCount(2)); + expect(adds).to(haveCount(9)); + expect(submenu).to(haveCount(2)); + expect(subDeletes).to(haveCount(1)); + }); + + it(@"should deletes first case 5", ^{ + testManager.menuCells = @[textOnlyCell, textOnlyCell2, textAndImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + testManager.menuCells = @[textOnlyCell, textOnlyCell2, textAndImageCell]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + [mockConnectionManager respondToLastMultipleRequestsWithSuccess:YES]; + + NSPredicate *deleteCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLDeleteCommand class]]; + NSArray *deletes = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:deleteCommandPredicate]; + + NSPredicate *addCommandPredicate = [NSPredicate predicateWithFormat:@"self isMemberOfClass:%@", [SDLAddCommand class]]; + NSArray *adds = [[mockConnectionManager.receivedRequests copy] filteredArrayUsingPredicate:addCommandPredicate]; + + expect(deletes).to(haveCount(3)); + expect(adds).to(haveCount(6)); + }); }); }); diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonManagerSpec.m index 094da3fc8..3a7ac4a65 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonManagerSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonManagerSpec.m @@ -12,7 +12,9 @@ #import "SDLSoftButtonCapabilities.h" #import "SDLSoftButtonManager.h" #import "SDLSoftButtonObject.h" +#import "SDLSoftButtonReplaceOperation.h" #import "SDLSoftButtonState.h" +#import "SDLSoftButtonTransitionOperation.h" #import "TestConnectionManager.h" @interface SDLSoftButtonObject() @@ -29,17 +31,13 @@ @interface SDLSoftButtonManager() @property (weak, nonatomic) id connectionManager; @property (weak, nonatomic) SDLFileManager *fileManager; -@property (strong, nonatomic, nullable) SDLShow *inProgressUpdate; -@property (copy, nonatomic, nullable) SDLSoftButtonUpdateCompletionHandler inProgressHandler; - -@property (assign, nonatomic) BOOL hasQueuedUpdate; -@property (copy, nonatomic, nullable) SDLSoftButtonUpdateCompletionHandler queuedUpdateHandler; +@property (strong, nonatomic) NSOperationQueue *transactionQueue; @property (copy, nonatomic, nullable) SDLHMILevel currentLevel; @property (strong, nonatomic, nullable) SDLDisplayCapabilities *displayCapabilities; @property (strong, nonatomic, nullable) SDLSoftButtonCapabilities *softButtonCapabilities; -@property (assign, nonatomic) BOOL waitingOnHMILevelUpdateToUpdate; +@property (strong, nonatomic) NSMutableArray *batchQueue; @end @@ -63,16 +61,10 @@ @interface SDLSoftButtonManager() __block SDLSoftButtonObject *testObject2 = nil; __block NSString *object2Name = @"O2 Name"; __block NSString *object2State1Name = @"O2S1 Name"; - __block NSString *object2State2Name = @"O2S2 Name"; __block NSString *object2State1Text = @"O2S1 Text"; - __block NSString *object2State2Text = @"O2S2 Text"; __block NSString *object2State1ArtworkName = @"O2S1 Artwork"; __block SDLArtwork *object2State1Art = [[SDLArtwork alloc] initWithData:[@"TestData" dataUsingEncoding:NSUTF8StringEncoding] name:object2State1ArtworkName fileExtension:@"png" persistent:YES]; __block SDLSoftButtonState *object2State1 = [[SDLSoftButtonState alloc] initWithStateName:object2State1Name text:object2State1Text artwork:object2State1Art]; - __block SDLSoftButtonState *object2State2 = [[SDLSoftButtonState alloc] initWithStateName:object2State2Name text:object2State2Text image:nil]; - - __block SDLArtwork *staticIconArt = [SDLArtwork artworkWithStaticIcon:SDLStaticIconNameDate]; - __block SDLSoftButtonState *staticIconState = [[SDLSoftButtonState alloc] initWithStateName:@"Static State" text:nil artwork:staticIconArt]; beforeEach(^{ testFileManager = OCMClassMock([SDLFileManager class]); @@ -90,11 +82,9 @@ @interface SDLSoftButtonManager() expect(testManager.softButtonObjects).to(beEmpty()); expect(testManager.currentMainField1).to(beNil()); - expect(testManager.inProgressUpdate).to(beNil()); - expect(testManager.hasQueuedUpdate).to(beFalse()); expect(testManager.displayCapabilities).to(beNil()); expect(testManager.softButtonCapabilities).to(beNil()); - expect(testManager.waitingOnHMILevelUpdateToUpdate).to(beFalse()); + expect(testManager.transactionQueue).toNot(beNil()); }); context(@"when in HMI NONE", ^{ @@ -109,8 +99,7 @@ @interface SDLSoftButtonManager() it(@"should set the soft buttons, but not update", ^{ expect(testManager.softButtonObjects).toNot(beEmpty()); - expect(testManager.waitingOnHMILevelUpdateToUpdate).to(beTrue()); - expect(testManager.inProgressUpdate).to(beNil()); + expect(testManager.transactionQueue.suspended).to(beTrue()); }); }); @@ -126,8 +115,7 @@ @interface SDLSoftButtonManager() it(@"should set the soft buttons, but not update", ^{ expect(testManager.softButtonObjects).toNot(beEmpty()); - expect(testManager.waitingOnHMILevelUpdateToUpdate).to(beTrue()); - expect(testManager.inProgressUpdate).to(beNil()); + expect(testManager.transactionQueue.suspended).to(beTrue()); }); }); @@ -153,12 +141,38 @@ @interface SDLSoftButtonManager() testManager.softButtonObjects = @[testObject1, testObject2]; }); + describe(@"while batching", ^{ + beforeEach(^{ + testManager.batchUpdates = YES; + + [testObject1 transitionToNextState]; + [testObject2 transitionToNextState]; + testManager.softButtonObjects = @[testObject2, testObject1]; + }); + + it(@"should properly queue the batching updates", ^{ + expect(testManager.transactionQueue.operationCount).to(equal(1)); + expect(testManager.batchQueue).to(haveCount(1)); + }); + }); + it(@"should set soft buttons correctly", ^{ expect(testManager.softButtonObjects).toNot(beNil()); expect(testObject1.buttonId).to(equal(0)); expect(testObject2.buttonId).to(equal(100)); expect(testObject1.manager).to(equal(testManager)); expect(testObject2.manager).to(equal(testManager)); + + expect(testManager.transactionQueue.operationCount).to(equal(1)); + }); + + it(@"should replace earlier operations when a replace operation is entered", ^{ + [testObject1 transitionToNextState]; + testManager.softButtonObjects = @[testObject1]; + expect(testManager.transactionQueue.operationCount).to(equal(3)); + expect(testManager.transactionQueue.operations[0].isCancelled).to(beTrue()); + expect(testManager.transactionQueue.operations[1].isCancelled).to(beTrue()); + expect(testManager.transactionQueue.operations[2].isCancelled).to(beFalse()); }); it(@"should retrieve soft buttons correctly", ^{ @@ -168,192 +182,52 @@ @interface SDLSoftButtonManager() context(@"when the HMI level is now NONE", ^{ beforeEach(^{ testManager.currentLevel = SDLHMILevelNone; - testManager.inProgressUpdate = nil; }); it(@"should not transition buttons", ^{ [testObject1 transitionToNextState]; - expect(testManager.inProgressUpdate).to(beNil()); + expect(testManager.transactionQueue.suspended).to(beTrue()); + expect(testManager.transactionQueue.operationCount).to(equal(2)); // Replace and transition }); }); }); - describe(@"uploading soft buttons to a head unit that supports images", ^{ + describe(@"transitioning soft button states", ^{ beforeEach(^{ - SDLSoftButtonCapabilities *softButtonImagesSupported = [[SDLSoftButtonCapabilities alloc] init]; - softButtonImagesSupported.imageSupported = @YES; - testManager.softButtonCapabilities = softButtonImagesSupported; - }); - - context(@"when button artworks are static icons", ^{ - beforeEach(^{ - testObject1 = [[SDLSoftButtonObject alloc] initWithName:object1Name state:staticIconState handler:nil]; - testManager.softButtonObjects = @[testObject1]; - }); - - it(@"should not have attempted to upload any artworks", ^{ - OCMReject([testFileManager uploadArtwork:[OCMArg any] completionHandler:[OCMArg any]]); - }); - }); - - context(@"when button artworks are already on the file system", ^{ - beforeEach(^{ - OCMStub([testFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(YES); - - testObject1 = [[SDLSoftButtonObject alloc] initWithName:object1Name states:@[object1State1, object1State2] initialStateName:object1State1Name handler:nil]; - testObject2 = [[SDLSoftButtonObject alloc] initWithName:object2Name state:object2State1 handler:nil]; - - testManager.softButtonObjects = @[testObject1, testObject2]; - }); - - it(@"should not have attempted to upload any artworks", ^{ - OCMReject([testFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg any]]); - }); - - it(@"should set the in progress update", ^{ - NSArray *inProgressSoftButtons = testManager.inProgressUpdate.softButtons; - - expect(testManager.hasQueuedUpdate).to(beFalse()); - expect(testManager.inProgressUpdate.mainField1).to(equal(@"")); - expect(inProgressSoftButtons).to(haveCount(2)); - expect(inProgressSoftButtons[0].text).to(equal(object1State1Text)); - expect(inProgressSoftButtons[1].text).to(equal(object2State1Text)); - expect(inProgressSoftButtons[0].image).to(beNil()); - expect(inProgressSoftButtons[1].image.value).to(equal(object2State1ArtworkName)); - }); - }); - - context(@"when button artworks are not already on the file system, before upload finishes", ^{ - beforeEach(^{ - OCMStub([testFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO); - - testObject1 = [[SDLSoftButtonObject alloc] initWithName:object1Name states:@[object1State1, object1State2] initialStateName:object1State1Name handler:nil]; - testObject2 = [[SDLSoftButtonObject alloc] initWithName:object2Name state:object2State1 handler:nil]; - - testManager.softButtonObjects = @[testObject1, testObject2]; - }); - - it(@"should attempt to upload an artwork", ^{ - OCMVerify([testFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg any]]); - }); - - it(@"should set the in progress update for text only buttons", ^{ - NSArray *inProgressSoftButtons = testManager.inProgressUpdate.softButtons; + testObject1 = [[SDLSoftButtonObject alloc] initWithName:object1Name states:@[object1State1, object1State2] initialStateName:object1State1Name handler:nil]; + testObject2 = [[SDLSoftButtonObject alloc] initWithName:object2Name state:object2State1 handler:nil]; - expect(testManager.hasQueuedUpdate).to(beFalse()); - expect(testManager.inProgressUpdate.mainField1).to(equal(@"")); - expect(inProgressSoftButtons).to(haveCount(2)); - expect(inProgressSoftButtons[0].text).to(equal(object1State1Text)); - expect(inProgressSoftButtons[1].text).to(equal(object2State1Text)); - expect(inProgressSoftButtons[0].image).to(beNil()); - expect(inProgressSoftButtons[1].image).to(beNil()); - }); + testManager.softButtonObjects = @[testObject1, testObject2]; }); - context(@"when button artworks are not already on the file system, after upload finishes", ^{ + context(@"when batching", ^{ beforeEach(^{ - OCMStub([testFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO); - OCMStub([testFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg invokeBlock]]); + testManager.batchUpdates = YES; - testObject1 = [[SDLSoftButtonObject alloc] initWithName:object1Name states:@[object1State1, object1State2] initialStateName:object1State1Name handler:nil]; - testObject2 = [[SDLSoftButtonObject alloc] initWithName:object2Name state:object2State1 handler:nil]; + SDLSoftButtonReplaceOperation *replaceOp = [[SDLSoftButtonReplaceOperation alloc] init]; + SDLSoftButtonTransitionOperation *transitionOp = [[SDLSoftButtonTransitionOperation alloc] init]; + testManager.batchQueue = [NSMutableArray arrayWithArray:@[replaceOp, transitionOp]]; - testManager.softButtonObjects = @[testObject1, testObject2]; + [testObject1 transitionToStateNamed:object1State2Name]; }); - it(@"should attempt to upload an artwork", ^{ - OCMVerify([testFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg any]]); - }); - - it(@"should set the in progress update for text only buttons and have a queued update", ^{ - NSArray *inProgressSoftButtons = testManager.inProgressUpdate.softButtons; - - expect(testManager.hasQueuedUpdate).to(beTrue()); - expect(testManager.inProgressUpdate.mainField1).to(equal(@"")); - expect(inProgressSoftButtons).to(haveCount(2)); - expect(inProgressSoftButtons[0].text).to(equal(object1State1Text)); - expect(inProgressSoftButtons[1].text).to(equal(object2State1Text)); - expect(inProgressSoftButtons[0].image).to(beNil()); - expect(inProgressSoftButtons[1].image).to(beNil()); + it(@"should batch queue the update and remove the old transition operation", ^{ + expect(testManager.transactionQueue.operationCount).to(equal(1)); + expect(testManager.batchQueue.count).to(equal(2)); }); }); - }); - describe(@"uploading soft buttons to a head unit that does not support images", ^{ - beforeEach(^{ - SDLSoftButtonCapabilities *softButtonImagesSupported = [[SDLSoftButtonCapabilities alloc] init]; - softButtonImagesSupported.imageSupported = @NO; - testManager.softButtonCapabilities = softButtonImagesSupported; - }); - - context(@"when the button contains images", ^{ + context(@"when not batching", ^{ beforeEach(^{ - testObject1 = [[SDLSoftButtonObject alloc] initWithName:object1Name states:@[object1State1, object1State2] initialStateName:object1State1Name handler:nil]; - testObject2 = [[SDLSoftButtonObject alloc] initWithName:object2Name state:object2State2 handler:nil]; - testManager.softButtonObjects = @[testObject1, testObject2]; - }); - - it(@"should not have attempted to upload any artworks", ^{ - OCMReject([testFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg any]]); + testManager.batchUpdates = NO; }); - it(@"should set the in progress update to be text buttons", ^{ - NSArray *inProgressSoftButtons = testManager.inProgressUpdate.softButtons; + it(@"should queue an update", ^{ + [testObject1 transitionToStateNamed:object1State2Name]; - expect(testManager.hasQueuedUpdate).to(beFalse()); - expect(testManager.inProgressUpdate.mainField1).to(equal(@"")); - expect(inProgressSoftButtons).to(haveCount(2)); - expect(inProgressSoftButtons[0].text).to(equal(object1State1Text)); - expect(inProgressSoftButtons[1].text).to(equal(object2State2Text)); - expect(inProgressSoftButtons[0].image).to(beNil()); - expect(inProgressSoftButtons[1].image.value).to(beNil()); - }); - }); - - context(@"when the button does not contain images", ^{ - beforeEach(^{ - testObject1 = [[SDLSoftButtonObject alloc] initWithName:object1Name states:@[object1State1, object1State2] initialStateName:object1State1Name handler:nil]; - testObject2 = [[SDLSoftButtonObject alloc] initWithName:object2Name state:object2State2 handler:nil]; - testManager.softButtonObjects = @[testObject1, testObject2]; + expect(testManager.transactionQueue.operationCount).to(equal(2)); // Replace and transition }); - - it(@"should not have attempted to upload any artworks", ^{ - OCMReject([testFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg any]]); - }); - - it(@"should set the in progress update to be text buttons", ^{ - NSArray *inProgressSoftButtons = testManager.inProgressUpdate.softButtons; - - expect(testManager.hasQueuedUpdate).to(beFalse()); - expect(testManager.inProgressUpdate.mainField1).to(equal(@"")); - expect(inProgressSoftButtons).to(haveCount(2)); - expect(inProgressSoftButtons[0].text).to(equal(object1State1Text)); - expect(inProgressSoftButtons[1].text).to(equal(object2State2Text)); - expect(inProgressSoftButtons[0].image).to(beNil()); - expect(inProgressSoftButtons[1].image.value).to(beNil()); - }); - }); - }); - - describe(@"transitioning soft button states", ^{ - beforeEach(^{ - OCMStub([testFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(YES); - - testObject1 = [[SDLSoftButtonObject alloc] initWithName:object1Name states:@[object1State1, object1State2] initialStateName:object1State1Name handler:nil]; - testObject2 = [[SDLSoftButtonObject alloc] initWithName:object2Name state:object2State1 handler:nil]; - - testManager.softButtonObjects = @[testObject1, testObject2]; - }); - - it(@"should queue an update", ^{ - testManager.inProgressUpdate = nil; // Reset due to setting the soft button objects - [testObject1 transitionToStateNamed:object1State2Name]; - - expect(testManager.inProgressUpdate).toNot(beNil()); - expect(testManager.inProgressUpdate.mainField1).to(beEmpty()); - expect(testManager.inProgressUpdate.softButtons[0].text).to(equal(object1State2Text)); - expect(testManager.inProgressUpdate.softButtons[1].text).to(equal(object2State1Text)); }); }); @@ -368,12 +242,10 @@ @interface SDLSoftButtonManager() expect(testManager.softButtonObjects).to(beEmpty()); expect(testManager.currentMainField1).to(beNil()); - expect(testManager.inProgressUpdate).to(beNil()); - expect(testManager.hasQueuedUpdate).to(beFalse()); + expect(testManager.transactionQueue.operationCount).to(equal(0)); expect(testManager.currentLevel).to(beNil()); expect(testManager.displayCapabilities).to(beNil()); expect(testManager.softButtonCapabilities).to(beNil()); - expect(testManager.waitingOnHMILevelUpdateToUpdate).to(beFalse()); }); }); }); diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonTransitionOperationSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonTransitionOperationSpec.m new file mode 100644 index 000000000..7f18dd5a4 --- /dev/null +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLSoftButtonTransitionOperationSpec.m @@ -0,0 +1,107 @@ +#import +#import +#import + +#import "SDLSoftButtonTransitionOperation.h" + +#import "SDLConnectionManagerType.h" +#import "SDLFileManager.h" +#import "SDLLogMacros.h" +#import "SDLSoftButtonCapabilities.h" +#import "SDLShow.h" +#import "SDLShowResponse.h" +#import "SDLSoftButton.h" +#import "SDLSoftButtonObject.h" +#import "SDLSoftButtonState.h" +#import "TestConnectionManager.h" + +QuickSpecBegin(SDLSoftButtonTransitionOperationSpec) + +describe(@"a soft button transition operation", ^{ + __block SDLSoftButtonTransitionOperation *testOp = nil; + + __block TestConnectionManager *testConnectionManager = nil; + + __block BOOL hasCalledOperationCompletionHandler = NO; + __block NSError *resultError = nil; + + __block NSArray *testSoftButtonObjects = nil; + __block NSString *button1Text = @"Text text 1"; + __block NSString *button2Text = @"Text text 2"; + __block NSString *testMainField1 = @"Test 1"; + + beforeEach(^{ + resultError = nil; + hasCalledOperationCompletionHandler = NO; + + testConnectionManager = [[TestConnectionManager alloc] init]; + + SDLSoftButtonState *object1State1 = [[SDLSoftButtonState alloc] initWithStateName:@"State 1" text:button1Text artwork:nil]; + SDLSoftButtonObject *button1 = [[SDLSoftButtonObject alloc] initWithName:@"Button 1" state:object1State1 handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {}]; + + SDLSoftButtonState *object2State1 = [[SDLSoftButtonState alloc] initWithStateName:@"State 2" text:button2Text image:nil]; + SDLSoftButtonObject *button2 = [[SDLSoftButtonObject alloc] initWithName:@"Button 2" state:object2State1 handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {}]; + + testSoftButtonObjects = @[button1, button2]; + }); + + it(@"should have a priority of 'normal'", ^{ + testOp = [[SDLSoftButtonTransitionOperation alloc] init]; + + expect(@(testOp.queuePriority)).to(equal(@(NSOperationQueuePriorityNormal))); + }); + + describe(@"running the operation", ^{ + beforeEach(^{ + SDLSoftButtonCapabilities *capabilities = [[SDLSoftButtonCapabilities alloc] init]; + capabilities.imageSupported = @YES; + + testOp = [[SDLSoftButtonTransitionOperation alloc] initWithConnectionManager:testConnectionManager capabilities:capabilities softButtons:testSoftButtonObjects mainField1:testMainField1]; + [testOp start]; + }); + + it(@"should send the correct RPCs", ^{ + NSArray *sentRequests = testConnectionManager.receivedRequests; + expect(sentRequests).to(haveCount(1)); + expect(sentRequests.firstObject.mainField1).to(equal(testMainField1)); + expect(sentRequests.firstObject.mainField2).to(beNil()); + expect(sentRequests.firstObject.softButtons).to(haveCount(2)); + expect(sentRequests.firstObject.softButtons.firstObject.text).to(equal(button1Text)); + expect(sentRequests.firstObject.softButtons.firstObject.image).to(beNil()); + expect(sentRequests.firstObject.softButtons.firstObject.type).to(equal(SDLSoftButtonTypeText)); + expect(sentRequests.firstObject.softButtons.lastObject.text).to(equal(button2Text)); + expect(sentRequests.firstObject.softButtons.lastObject.image).to(beNil()); + expect(sentRequests.firstObject.softButtons.lastObject.type).to(equal(SDLSoftButtonTypeText)); + }); + + context(@"if it returns correctly", ^{ + beforeEach(^{ + SDLShowResponse *response = [[SDLShowResponse alloc] init]; + response.success = @YES; + + [testConnectionManager respondToLastRequestWithResponse:response]; + }); + + it(@"should finish the operation", ^{ + expect(testOp.isFinished).to(beTrue()); + expect(testOp.error).to(beNil()); + }); + }); + + context(@"if it returns an error", ^{ + beforeEach(^{ + SDLShowResponse *response = [[SDLShowResponse alloc] init]; + response.success = @NO; + + [testConnectionManager respondToLastRequestWithResponse:response]; + }); + + it(@"should finish the operation", ^{ + expect(testOp.isFinished).to(beTrue()); + expect(testOp.error).toNot(beNil()); + }); + }); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/DevAPISpecs/TestSystemCapabilityObserver.h b/SmartDeviceLinkTests/DevAPISpecs/TestSystemCapabilityObserver.h new file mode 100644 index 000000000..0e6c8bcbb --- /dev/null +++ b/SmartDeviceLinkTests/DevAPISpecs/TestSystemCapabilityObserver.h @@ -0,0 +1,24 @@ +// +// TestSystemCapabilityObserver.h +// SmartDeviceLinkTests +// +// Created by Joel Fischer on 5/23/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import + +@class SDLSystemCapabilityManager; + +NS_ASSUME_NONNULL_BEGIN + +@interface TestSystemCapabilityObserver : NSObject + +@property (assign, nonatomic) NSUInteger selectorCalledCount; + +- (void)capabilityUpdated; +- (void)capabilityUpdatedWithNotification:(SDLSystemCapabilityManager *)capabilityManager; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLinkTests/DevAPISpecs/TestSystemCapabilityObserver.m b/SmartDeviceLinkTests/DevAPISpecs/TestSystemCapabilityObserver.m new file mode 100644 index 000000000..5366b0884 --- /dev/null +++ b/SmartDeviceLinkTests/DevAPISpecs/TestSystemCapabilityObserver.m @@ -0,0 +1,30 @@ +// +// TestSystemCapabilityObserver.m +// SmartDeviceLinkTests +// +// Created by Joel Fischer on 5/23/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import "TestSystemCapabilityObserver.h" + +@implementation TestSystemCapabilityObserver + +- (instancetype)init { + self = [super init]; + if (!self) { return nil; } + + _selectorCalledCount = 0; + + return self; +} + +- (void)capabilityUpdated { + self.selectorCalledCount++; +} + +- (void)capabilityUpdatedWithNotification:(SDLSystemCapabilityManager *)capabilityManager { + self.selectorCalledCount++; +} + +@end diff --git a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m index a087dc86f..579658c79 100644 --- a/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m +++ b/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m @@ -215,7 +215,10 @@ context(@"During V1 session", ^ { it(@"Should send the correct data", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" [[[[mockRequest stub] andReturn:dictionaryV1] ignoringNonObjectArgs] serializeAsDictionary:1]; +#pragma clang diagnostic pop SDLProtocol* testProtocol = [[SDLProtocol alloc] init]; SDLV1ProtocolHeader *testHeader = [[SDLV1ProtocolHeader alloc] init]; @@ -252,9 +255,12 @@ context(@"During V2 session", ^ { it(@"Should send the correct data bulk data when bulk data is available", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" [[[[mockRequest stub] andReturn:dictionaryV2] ignoringNonObjectArgs] serializeAsDictionary:2]; +#pragma clang diagnostic pop [[[mockRequest stub] andReturn:@0x98765] correlationID]; - [[[mockRequest stub] andReturn:@"DeleteCommand"] getFunctionName]; + [[[mockRequest stub] andReturn:@"DeleteCommand"] name]; [[[mockRequest stub] andReturn:[NSData dataWithBytes:"COMMAND" length:strlen("COMMAND")]] bulkData]; SDLProtocol* testProtocol = [[SDLProtocol alloc] init]; diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnAppInterfaceUnregisteredSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnAppInterfaceUnregisteredSpec.m index fd5980b58..334e9fe8b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnAppInterfaceUnregisteredSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnAppInterfaceUnregisteredSpec.m @@ -29,7 +29,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameReason:SDLAppInterfaceUnregisteredReasonAppUnauthorized}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnAppInterfaceUnregistered}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnAppInterfaceUnregistered* testNotification = [[SDLOnAppInterfaceUnregistered alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.reason).to(equal(SDLAppInterfaceUnregisteredReasonAppUnauthorized)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnAppServiceDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnAppServiceDataSpec.m index b5fe3fff0..35e43e2ab 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnAppServiceDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnAppServiceDataSpec.m @@ -37,7 +37,10 @@ SDLRPCParameterNameServiceData:testAppServiceData }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnAppServiceData}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnAppServiceData *testNotification = [[SDLOnAppServiceData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.serviceData).to(equal(testAppServiceData)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnButtonEventSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnButtonEventSpec.m index 2a298eb5e..55d11cc3f 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnButtonEventSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnButtonEventSpec.m @@ -37,7 +37,10 @@ SDLRPCParameterNameButtonEventMode:SDLButtonEventModeButtonDown, SDLRPCParameterNameCustomButtonId:@4252}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnButtonEvent}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnButtonEvent* testNotification = [[SDLOnButtonEvent alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.buttonName).to(equal(SDLButtonNameCustomButton)); expect(testNotification.buttonEventMode).to(equal(SDLButtonEventModeButtonDown)); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnButtonPressSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnButtonPressSpec.m index 1b098318b..4bc510738 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnButtonPressSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnButtonPressSpec.m @@ -37,7 +37,10 @@ SDLRPCParameterNameButtonPressMode:SDLButtonPressModeLong, SDLRPCParameterNameCustomButtonId:@5642}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnButtonPress}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnButtonPress* testNotification = [[SDLOnButtonPress alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.buttonName).to(equal(SDLButtonNameCustomButton)); expect(testNotification.buttonPressMode).to(equal(SDLButtonPressModeLong)); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnCommandSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnCommandSpec.m index aac8b32b1..d815683b1 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnCommandSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnCommandSpec.m @@ -32,7 +32,10 @@ @{SDLRPCParameterNameCommandId:@5676544, SDLRPCParameterNameTriggerSource:SDLTriggerSourceKeyboard}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnCommand}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnCommand* testNotification = [[SDLOnCommand alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.cmdID).to(equal(@5676544)); expect(testNotification.triggerSource).to(equal(SDLTriggerSourceKeyboard)); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnDriverDistractionSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnDriverDistractionSpec.m index b03394532..b242c0a3a 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnDriverDistractionSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnDriverDistractionSpec.m @@ -29,7 +29,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameState:SDLDriverDistractionStateOn}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnDriverDistraction}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnDriverDistraction* testNotification = [[SDLOnDriverDistraction alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.state).to(equal(SDLDriverDistractionStateOn)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnEncodedSyncPDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnEncodedSyncPDataSpec.m index c2760571d..9078bbf16 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnEncodedSyncPDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnEncodedSyncPDataSpec.m @@ -34,7 +34,10 @@ SDLRPCParameterNameURLUppercase:@"www.zombo.com", SDLRPCParameterNameTimeoutCapitalized:@564}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnEncodedSyncPData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnEncodedSyncPData* testNotification = [[SDLOnEncodedSyncPData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.data).to(equal([@[@"0"] mutableCopy])); expect(testNotification.URL).to(equal(@"www.zombo.com")); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnHMIStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnHMIStatusSpec.m index c3aca6127..61b1165d3 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnHMIStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnHMIStatusSpec.m @@ -41,7 +41,10 @@ SDLRPCParameterNameSystemContext: SDLSystemContextHMIObscured, SDLRPCParameterNameVideoStreamingState: SDLVideoStreamingStateStreamable}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnHMIStatus}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnHMIStatus* testNotification = [[SDLOnHMIStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.hmiLevel).to(equal(SDLHMILevelLimited)); expect(testNotification.audioStreamingState).to(equal(SDLAudioStreamingStateAttenuated)); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnHashChangeSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnHashChangeSpec.m index 035afda9d..b76ef13fc 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnHashChangeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnHashChangeSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameHashId:@"hash"}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnHashChange}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnHashChange* testNotification = [[SDLOnHashChange alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.hashID).to(equal(@"hash")); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnInteriorVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnInteriorVehicleDataSpec.m index 45ae4c993..1afa25d05 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnInteriorVehicleDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnInteriorVehicleDataSpec.m @@ -35,7 +35,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameModuleData:someModuleData}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnInteriorVehicleData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnInteriorVehicleData* testNotification = [[SDLOnInteriorVehicleData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.moduleData).to(equal(someModuleData)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnKeyboardInputSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnKeyboardInputSpec.m index baec5f3c7..899ccf768 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnKeyboardInputSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnKeyboardInputSpec.m @@ -32,7 +32,10 @@ @{SDLRPCParameterNameEvent:SDLKeyboardEventSubmitted, SDLRPCParameterNameData:@"qwertyg"}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnKeyboardInput}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnKeyboardInput* testNotification = [[SDLOnKeyboardInput alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.event).to(equal(SDLKeyboardEventSubmitted)); expect(testNotification.data).to(equal(@"qwertyg")); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLanguageChangeSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLanguageChangeSpec.m index c8e589a54..d371737a1 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLanguageChangeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLanguageChangeSpec.m @@ -33,7 +33,10 @@ @{SDLRPCParameterNameLanguage:SDLLanguageEsEs, SDLRPCParameterNameHMIDisplayLanguage:SDLLanguageDeDe}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnLanguageChange}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnLanguageChange* testNotification = [[SDLOnLanguageChange alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.language).to(equal(SDLLanguageEsEs)); expect(testNotification.hmiDisplayLanguage).to(equal(SDLLanguageDeDe)); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLockScreenStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLockScreenStatusSpec.m index 3355797d8..cd12a3d46 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLockScreenStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnLockScreenStatusSpec.m @@ -39,7 +39,10 @@ @"OnLockScreenStatus":SDLLockScreenStatusRequired, @"hmiLevel":SDLHMILevelNone}, SDLRPCParameterNameOperationName:@"OnLockScreenStatus"}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnLockScreenStatus* testNotification = [[SDLOnLockScreenStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.driverDistractionStatus).to(equal(@NO)); expect(testNotification.userSelected).to(equal(@3)); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnPermissionsChangeSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnPermissionsChangeSpec.m index 70e5c103a..d0d8e07d5 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnPermissionsChangeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnPermissionsChangeSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNamePermissionItem:[@[item] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnPermissionsChange}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnPermissionsChange* testNotification = [[SDLOnPermissionsChange alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.permissionItem).to(equal([@[item] mutableCopy])); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnRCStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnRCStatusSpec.m index 584bcd3ec..618950bd0 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnRCStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnRCStatusSpec.m @@ -36,7 +36,10 @@ SDLRPCParameterNameAllowed:@YES }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnRCStatus}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnRCStatus* testNotification = [[SDLOnRCStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.allowed).to(equal(@YES)); expect(testNotification.allocatedModules).to(equal([@[allocatedModule] copy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSyncPDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSyncPDataSpec.m index 89f0d5b7e..197b77fbe 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSyncPDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSyncPDataSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameURLUppercase:@"https://www.youtube.com/watch?v=ygr5AHufBN4", SDLRPCParameterNameTimeoutCapitalized:@8357}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnSyncPData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnSyncPData* testNotification = [[SDLOnSyncPData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.URL).to(equal(@"https://www.youtube.com/watch?v=ygr5AHufBN4")); expect(testNotification.Timeout).to(equal(@8357)); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemCapabilityUpdatedSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemCapabilityUpdatedSpec.m index b6102042d..2c1844a80 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemCapabilityUpdatedSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemCapabilityUpdatedSpec.m @@ -38,7 +38,10 @@ SDLRPCParameterNameSystemCapability:testSystemCapability }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnSystemCapabilityUpdated}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnSystemCapabilityUpdated *testNotification = [[SDLOnSystemCapabilityUpdated alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.systemCapability).to(equal(testSystemCapability)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemRequestSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemRequestSpec.m index 3acaee1ac..63b2bbd58 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemRequestSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnSystemRequestSpec.m @@ -49,7 +49,10 @@ SDLRPCParameterNameOffset:@2532678684, SDLRPCParameterNameLength:@50000000000}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnSystemRequest}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnSystemRequest* testNotification = [[SDLOnSystemRequest alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.requestType).to(equal(SDLRequestTypeFileResume)); expect(testNotification.requestSubType).to(equal(@"subtype")); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnTBTClientStateSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnTBTClientStateSpec.m index f0a39c387..fdbe9039c 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnTBTClientStateSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnTBTClientStateSpec.m @@ -30,7 +30,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameState:SDLTBTStateETARequest}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnTBTClientState}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnTBTClientState* testNotification = [[SDLOnTBTClientState alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.state).to(equal(SDLTBTStateETARequest)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnTouchEventSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnTouchEventSpec.m index 6445c2e64..72377a740 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnTouchEventSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnTouchEventSpec.m @@ -36,7 +36,10 @@ @{SDLRPCParameterNameType:SDLTouchTypeBegin, SDLRPCParameterNameEvent:[@[event] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnTouchEvent}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnTouchEvent* testNotification = [[SDLOnTouchEvent alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.type).to(equal(SDLTouchTypeBegin)); expect(testNotification.event).to(equal([@[event] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m index d28a9c843..d835c5f9b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnVehicleDataSpec.m @@ -146,7 +146,10 @@ SDLRPCParameterNameVIN:@"222222222722", SDLRPCParameterNameWiperStatus:SDLWiperStatusStalled}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnVehicleData}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOnVehicleData* testNotification = [[SDLOnVehicleData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testNotification.accPedalPosition).to(equal(@99.99999999)); expect(testNotification.airbagStatus).to(equal(airbag)); diff --git a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnWaypointChangeSpec.m b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnWaypointChangeSpec.m index 94e319360..48a9b5668 100644 --- a/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnWaypointChangeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/NotificationSpecs/SDLOnWaypointChangeSpec.m @@ -71,8 +71,10 @@ }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameOnWayPointChange }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testNotification = [[SDLOnWayPointChange alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical @@ -89,8 +91,10 @@ SDLRPCParameterNameParameters: @{} } }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testNotification = [[SDLOnWayPointChange alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); it(@"should return nil for waypoints", ^{ diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddCommandSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddCommandSpec.m index 7d7d3214c..c89033af5 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddCommandSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddCommandSpec.m @@ -42,9 +42,11 @@ SDLRPCParameterNameVRCommands:[@[@"name", @"anotherName"] mutableCopy], SDLRPCParameterNameCommandIcon:image}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameAddCommand}} mutableCopy]; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAddCommand* testRequest = [[SDLAddCommand alloc] initWithDictionary:dict]; - +#pragma clang diagnostic pop + expect(testRequest.cmdID).to(equal(@434577)); expect(testRequest.menuParams).to(equal(menu)); expect(testRequest.vrCommands).to(equal([@[@"name", @"anotherName"] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddSubMenuSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddSubMenuSpec.m index 28584c689..2efd1eee2 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddSubMenuSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAddSubMenuSpec.m @@ -80,7 +80,10 @@ } }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameAddSubMenu}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAddSubMenu* testRequest = [[SDLAddSubMenu alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.menuID).to(equal(@(menuId))); expect(testRequest.position).to(equal(@(position))); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertManeuverSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertManeuverSpec.m index 63ee96868..a17065993 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertManeuverSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertManeuverSpec.m @@ -36,7 +36,10 @@ @{SDLRPCParameterNameTTSChunks:[@[tts] mutableCopy], SDLRPCParameterNameSoftButtons:[@[button] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameAlertManeuver}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAlertManeuver* testRequest = [[SDLAlertManeuver alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.ttsChunks).to(equal([@[tts] mutableCopy])); expect(testRequest.softButtons).to(equal([@[button] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertSpec.m index 58d6c6fe5..27d853822 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLAlertSpec.m @@ -54,7 +54,10 @@ SDLRPCParameterNameProgressIndicator:@NO, SDLRPCParameterNameSoftButtons:[@[button] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameAlert}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAlert* testRequest = [[SDLAlert alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.alertText1).to(equal(@"alert#1")); expect(testRequest.alertText2).to(equal(@"alert#2")); @@ -78,7 +81,10 @@ SDLRPCParameterNameProgressIndicator:@NO, SDLRPCParameterNameSoftButtons:[NSNull null]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameAlert}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAlert* testRequest = [[SDLAlert alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expectAction(^{ NSArray *softButtons = testRequest.softButtons; }).to(raiseException()); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m index fc22e5c54..648d4cbc9 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLButtonPressSpec.m @@ -38,7 +38,10 @@ SDLRPCParameterNameButtonName : SDLButtonNameAC, SDLRPCParameterNameButtonPressMode : SDLButtonPressModeShort}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameButtonPress}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLButtonPress* testRequest = [[SDLButtonPress alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.moduleType).to(equal(SDLModuleTypeClimate)); expect(testRequest.buttonName).to(equal(SDLButtonNameAC)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLChangeRegistrationSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLChangeRegistrationSpec.m index 40ada9d6f..8fac41395 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLChangeRegistrationSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLChangeRegistrationSpec.m @@ -122,8 +122,10 @@ SDLRPCParameterNameNGNMediaScreenAppName:someNGNMediaAppName, SDLRPCParameterNameVRSynonyms:someVRSynonyms}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameChangeRegistration}} mutableCopy]; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testRequest = [[SDLChangeRegistration alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop }); // Since the properties are immutable, a copy should be executed as a retain, so they should be identical @@ -154,7 +156,10 @@ context(@"when no parameters are set", ^{ beforeEach(^{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testRequest = [[SDLChangeRegistration alloc] initWithDictionary:[NSMutableDictionary dictionary]]; +#pragma clang diagnostic pop }); it(@"Should return nil if for language", ^ { diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCreateInteractionChoiceSetSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCreateInteractionChoiceSetSpec.m index 973189701..c4c20ea47 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCreateInteractionChoiceSetSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLCreateInteractionChoiceSetSpec.m @@ -34,7 +34,10 @@ @{SDLRPCParameterNameInteractionChoiceSetId:@141414, SDLRPCParameterNameChoiceSet:[@[choice] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameCreateInteractionChoiceSet}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLCreateInteractionChoiceSet* testRequest = [[SDLCreateInteractionChoiceSet alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.interactionChoiceSetID).to(equal(@141414)); expect(testRequest.choiceSet).to(equal([@[choice] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteCommandSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteCommandSpec.m index fc275fd96..42b036672 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteCommandSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteCommandSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameCommandId:@11223344}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameDeleteCommand}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDeleteCommand* testRequest = [[SDLDeleteCommand alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.cmdID).to(equal(@11223344)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteFileSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteFileSpec.m index bb07a874d..50e5d2af3 100755 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteFileSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteFileSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameSyncFileName:@"synchro"}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameDeleteFile}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDeleteFile* testRequest = [[SDLDeleteFile alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.syncFileName).to(equal(@"synchro")); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteInteractionChoiceSetSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteInteractionChoiceSetSpec.m index 81e6f9d2c..a06bd3836 100755 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteInteractionChoiceSetSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteInteractionChoiceSetSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameInteractionChoiceSetId:@20314}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameDeleteInteractionChoiceSet}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDeleteInteractionChoiceSet* testRequest = [[SDLDeleteInteractionChoiceSet alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.interactionChoiceSetID).to(equal(@20314)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteSubMenuSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteSubMenuSpec.m index 5f628f745..1a71c63f8 100755 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteSubMenuSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDeleteSubMenuSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameMenuId:@25614}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameDeleteSubMenu}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDeleteSubMenu* testRequest = [[SDLDeleteSubMenu alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.menuID).to(equal(@25614)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDiagnosticMessageSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDiagnosticMessageSpec.m index bd75d5853..045840b41 100755 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDiagnosticMessageSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDiagnosticMessageSpec.m @@ -34,7 +34,10 @@ SDLRPCParameterNameMessageLength:@55555, SDLRPCParameterNameMessageData:[@[@1, @4, @16, @64] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameDiagnosticMessage}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDiagnosticMessage* testRequest = [[SDLDiagnosticMessage alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.targetID).to(equal(@3562)); expect(testRequest.messageLength).to(equal(@55555)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDialNumberSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDialNumberSpec.m index 100b6786e..dcb2c211c 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDialNumberSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLDialNumberSpec.m @@ -49,8 +49,10 @@ } } }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testRequest = [[SDLDialNumber alloc] initWithDictionary:[initDict mutableCopy]]; +#pragma clang diagnostic pop }); it(@"should get 'number' correctly", ^{ @@ -67,8 +69,10 @@ } } }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testRequest = [[SDLDialNumber alloc] initWithDictionary:[initDict mutableCopy]]; +#pragma clang diagnostic pop }); it(@"should return nil for number", ^{ diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLEncodedSyncPDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLEncodedSyncPDataSpec.m index d838bcebb..95d110a1f 100755 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLEncodedSyncPDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLEncodedSyncPDataSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameData:[@[@"2", @"2", @"2"] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameEncodedSyncPData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLEncodedSyncPData* testRequest = [[SDLEncodedSyncPData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.data).to(equal([@[@"2", @"2", @"2"] mutableCopy])); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetAppServiceDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetAppServiceDataSpec.m index a217223a8..a02387d79 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetAppServiceDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetAppServiceDataSpec.m @@ -43,7 +43,10 @@ SDLRPCParameterNameSubscribe:@(testSubscribe) }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetAppServiceData}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetAppServiceData *testRequest = [[SDLGetAppServiceData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.serviceType).to(equal(testServiceType)); expect(testRequest.subscribe).to(beTrue()); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetCloudAppPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetCloudAppPropertiesSpec.m index 37c1810a2..b831c1f00 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetCloudAppPropertiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetCloudAppPropertiesSpec.m @@ -37,10 +37,12 @@ SDLRPCParameterNameAppId:testAppID }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetCloudAppProperties}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetCloudAppProperties *testRequest = [[SDLGetCloudAppProperties alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.appID).to(equal(testAppID)); - expect(testRequest.getFunctionName).to(equal(SDLRPCFunctionNameGetCloudAppProperties)); }); it(@"Should initialize correctly with the convenience init", ^{ diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetDTCsSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetDTCsSpec.m index 25e489c46..b1b4cb5df 100755 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetDTCsSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetDTCsSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameECUName:@4321, SDLRPCParameterNameDTCMask:@22}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameEndAudioPassThru}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetDTCs* testRequest = [[SDLGetDTCs alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.ecuName).to(equal(@4321)); expect(testRequest.dtcMask).to(equal(@22)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetFileSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetFileSpec.m index f2f25dfbc..ba594e259 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetFileSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetFileSpec.m @@ -54,7 +54,10 @@ SDLRPCParameterNameLength:@(testLength) }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetFile}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetFile *testRequest = [[SDLGetFile alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.fileName).to(equal(testFileName)); expect(testRequest.appServiceId).to(equal(testAppServiceId)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m index 600c9826b..d3ed4c409 100755 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetInteriorVehicleDataSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameModuleType : SDLModuleTypeRadio, SDLRPCParameterNameSubscribe : @YES}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetInteriorVehicleData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetInteriorVehicleData* testRequest = [[SDLGetInteriorVehicleData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.moduleType).to(equal(SDLModuleTypeRadio)); expect(testRequest.subscribe).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m index a5cbac428..13f9f156a 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitiesSpec.m @@ -28,7 +28,10 @@ } } }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetSystemCapability *testRequest = [[SDLGetSystemCapability alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.systemCapabilityType).to(equal(SDLSystemCapabilityTypePhoneCall)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitySpec.m index 77d175818..3fe6ca695 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitySpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetSystemCapabilitySpec.m @@ -49,7 +49,10 @@ SDLRPCParameterNameSubscribe:@(testSubcribe) }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetSystemCapability}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetSystemCapability *testRequest = [[SDLGetSystemCapability alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.systemCapabilityType).to(equal(testSystemCapabilityType)); expect(testRequest.subscribe).to(beFalse()); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m index 4945d87fd..eab7f6210 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetVehicleDataSpec.m @@ -112,7 +112,10 @@ SDLRPCParameterNameTurnSignal:@NO, SDLRPCParameterNameWiperStatus:@YES}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetVehicleData}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetVehicleData* testRequest = [[SDLGetVehicleData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.accPedalPosition).to(equal(@YES)); expect(testRequest.airbagStatus).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetWaypointsSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetWaypointsSpec.m index 3b0c706c3..f22c4722e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetWaypointsSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLGetWaypointsSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameWayPointType:SDLWayPointTypeAll}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetWayPoints}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetWayPoints* testRequest = [[SDLGetWayPoints alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.waypointType).to(equal(SDLWayPointTypeAll)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformAppServiceInteractionSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformAppServiceInteractionSpec.m index 7d5cde77a..56b4b7584 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformAppServiceInteractionSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformAppServiceInteractionSpec.m @@ -50,7 +50,10 @@ SDLRPCParameterNameRequestServiceActive:@(testRequestServiceActive) }, SDLRPCParameterNameOperationName:SDLRPCFunctionNamePerformAppServiceInteraction}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPerformAppServiceInteraction *testRequest = [[SDLPerformAppServiceInteraction alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.serviceUri).to(equal(testServiceUri)); expect(testRequest.serviceID).to(equal(testServiceID)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformAudioPassThruSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformAudioPassThruSpec.m index ec8799689..539fbe77a 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformAudioPassThruSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformAudioPassThruSpec.m @@ -50,7 +50,10 @@ SDLRPCParameterNameAudioType:SDLAudioTypePCM, SDLRPCParameterNameMuteAudio:@NO}, SDLRPCParameterNameOperationName:SDLRPCFunctionNamePerformAudioPassThru}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPerformAudioPassThru* testRequest = [[SDLPerformAudioPassThru alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.audioPassThruDisplayText1).to(equal(@"passthru#1")); expect(testRequest.audioPassThruDisplayText2).to(equal(@"passthru#2")); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformInteractionSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformInteractionSpec.m index 6c905afbe..6424d27f7 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformInteractionSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPerformInteractionSpec.m @@ -61,7 +61,10 @@ SDLRPCParameterNameVRHelp:[@[helpItem] mutableCopy], SDLRPCParameterNameInteractionLayout:SDLLayoutModeIconWithSearch}, SDLRPCParameterNameOperationName:SDLRPCFunctionNamePerformInteraction}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPerformInteraction* testRequest = [[SDLPerformInteraction alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.initialText).to(equal(@"a")); expect(testRequest.initialPrompt).to(equal([@[chunk1] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPublishAppServiceSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPublishAppServiceSpec.m index a11ec3fb0..2268eea1e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPublishAppServiceSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPublishAppServiceSpec.m @@ -43,7 +43,10 @@ SDLRPCParameterNameAppServiceManifest:testAppServiceManifest }, SDLRPCParameterNameOperationName:SDLRPCFunctionNamePublishAppService}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPublishAppService *testRequest = [[SDLPublishAppService alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.appServiceManifest).to(equal(testAppServiceManifest)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPutFileSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPutFileSpec.m index b8c8f4f6b..4d5a6948d 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPutFileSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLPutFileSpec.m @@ -54,7 +54,10 @@ + (unsigned long)sdl_getCRC32ChecksumForBulkData:(NSData *)data; SDLRPCParameterNameLength:@123456789, SDLRPCParameterNameCRC:@0xffffffff}, SDLRPCParameterNameOperationName:SDLRPCFunctionNamePutFile}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPutFile* testRequest = [[SDLPutFile alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.syncFileName).to(equal(@"fileName")); expect(testRequest.fileType).to(equal(SDLFileTypeJPEG)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLReadDIDSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLReadDIDSpec.m index a5ee105d1..d255c8dbc 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLReadDIDSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLReadDIDSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameECUName:@33112, SDLRPCParameterNameDIDLocation:[@[@200, @201, @205] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameEndAudioPassThru}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLReadDID* testRequest = [[SDLReadDID alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.ecuName).to(equal(@33112)); expect(testRequest.didLocation).to(equal([@[@200, @201, @205] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m index d559adaa2..fbc22b5a2 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLRegisterAppInterfaceSpec.m @@ -113,7 +113,10 @@ SDLRPCParameterNameNightColorScheme: colorScheme, }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameRegisterAppInterface}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRegisterAppInterface* testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRegisterAppInterface.syncMsgVersion).to(equal(version)); expect(testRegisterAppInterface.appName).to(match(appName)); @@ -211,7 +214,10 @@ }); it(@"initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:", ^{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRegisterAppInterface *testRegisterAppInterface = [[SDLRegisterAppInterface alloc] initWithAppName:appName appId:appId languageDesired:language isMediaApp:isMediaApp appTypes:appTypes shortAppName:shortAppName]; +#pragma clang diagnostic pop expect(testRegisterAppInterface.fullAppID).to(beNil()); expect(testRegisterAppInterface.appID).to(match(appId)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLResetGlobalPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLResetGlobalPropertiesSpec.m index 67ffbbec9..2a13731f8 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLResetGlobalPropertiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLResetGlobalPropertiesSpec.m @@ -29,7 +29,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameProperties:[@[SDLGlobalPropertyMenuName, SDLGlobalPropertyVoiceRecognitionHelpTitle] copy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameResetGlobalProperties}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLResetGlobalProperties* testRequest = [[SDLResetGlobalProperties alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.properties).to(equal([@[SDLGlobalPropertyMenuName, SDLGlobalPropertyVoiceRecognitionHelpTitle] copy])); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLScrollableMessageSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLScrollableMessageSpec.m index d8074b2eb..0514b1936 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLScrollableMessageSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLScrollableMessageSpec.m @@ -37,7 +37,10 @@ SDLRPCParameterNameTimeout:@9182, SDLRPCParameterNameSoftButtons:[@[button] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameScrollableMessage}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLScrollableMessage* testRequest = [[SDLScrollableMessage alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.scrollableMessageBody).to(equal(@"thatmessagebody")); expect(testRequest.timeout).to(equal(@9182)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSendHapticDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSendHapticDataSpec.m index d02e8f9bb..d6fba321a 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSendHapticDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSendHapticDataSpec.m @@ -41,7 +41,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameHapticRectData:@[testStruct]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSendHapticData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSendHapticData *testRequest = [[SDLSendHapticData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.hapticRectData).to(equal(@[testStruct])); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSendLocationSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSendLocationSpec.m index 244d3fdce..d7e15a019 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSendLocationSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSendLocationSpec.m @@ -164,8 +164,10 @@ SDLRPCParameterNameOperationName:SDLRPCFunctionNameSendLocation } }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testRequest = [[SDLSendLocation alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical @@ -190,8 +192,10 @@ SDLRPCParameterNameParameters: @{} } }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testRequest = [[SDLSendLocation alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); it(@"should return nil for parameters", ^{ diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetAppIconSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetAppIconSpec.m index 983d79eeb..12b66d4a7 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetAppIconSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetAppIconSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameSyncFileName:@"A/File/Name"}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetAppIcon}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSetAppIcon* testRequest = [[SDLSetAppIcon alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.syncFileName).to(equal(@"A/File/Name")); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetCloudAppPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetCloudAppPropertiesSpec.m index 974170a3d..3068de94c 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetCloudAppPropertiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetCloudAppPropertiesSpec.m @@ -36,7 +36,10 @@ SDLRPCParameterNameProperties:testProperties }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetCloudAppProperties}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSetCloudAppProperties *testRequest = [[SDLSetCloudAppProperties alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.properties).to(equal(testProperties)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetDisplayLayoutSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetDisplayLayoutSpec.m index 397b2e88b..5d8b1b9ce 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetDisplayLayoutSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetDisplayLayoutSpec.m @@ -48,7 +48,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameDisplayLayout:@"wat"}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetDisplayLayout}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSetDisplayLayout* testRequest = [[SDLSetDisplayLayout alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.displayLayout).to(equal(@"wat")); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetGlobalPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetGlobalPropertiesSpec.m index f983a1da9..b12672582 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetGlobalPropertiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetGlobalPropertiesSpec.m @@ -57,7 +57,10 @@ SDLRPCParameterNameMenuIcon:image, SDLRPCParameterNameKeyboardProperties:keyboard}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetGlobalProperties}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSetGlobalProperties* testRequest = [[SDLSetGlobalProperties alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.helpPrompt).to(equal([@[chunk1] mutableCopy])); expect(testRequest.timeoutPrompt).to(equal([@[chunk2] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetInteriorVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetInteriorVehicleDataSpec.m index d77ce6a89..99d30b21f 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetInteriorVehicleDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetInteriorVehicleDataSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameModuleData : someModuleData}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetInteriorVehicleData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSetInteriorVehicleData* testRequest = [[SDLSetInteriorVehicleData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.moduleData).to(equal(someModuleData)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m index bd806af6b..255ce747d 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSetMediaClockTimerSpec.m @@ -35,7 +35,10 @@ SDLRPCParameterNameAudioStreamingIndicator:testIndicator }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetMediaClockTimer}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSetMediaClockTimer* testRequest = [[SDLSetMediaClockTimer alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.startTime).to(equal(time1)); expect(testRequest.endTime).to(equal(time2)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowConstantTBTSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowConstantTBTSpec.m index 451dece6d..69c9195eb 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowConstantTBTSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowConstantTBTSpec.m @@ -65,7 +65,10 @@ SDLRPCParameterNameManeuverComplete:@NO, SDLRPCParameterNameSoftButtons:[@[button] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameShowConstantTBT}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLShowConstantTBT* testRequest = [[SDLShowConstantTBT alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.navigationText1).to(equal(@"nav1")); expect(testRequest.navigationText2).to(equal(@"nav2")); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m index 341500b20..d9274e8e9 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLShowSpec.m @@ -329,7 +329,10 @@ SDLRPCParameterNameCustomPresets:[@[@"preset1", @"preset2"] mutableCopy], SDLRPCParameterNameMetadataTags:testMetadata}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameShow}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLShow* testRequest = [[SDLShow alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.mainField1).to(equal(@"field1")); expect(testRequest.mainField2).to(equal(@"field2")); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSliderSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSliderSpec.m index e5b3ba339..7689b8904 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSliderSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSliderSpec.m @@ -58,7 +58,10 @@ SDLRPCParameterNameSliderFooter:testFooters, SDLRPCParameterNameTimeout:@(testTimeout)}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSlider}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testRequest = [[SDLSlider alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.numTicks).to(equal(testNumTicks)); expect(testRequest.position).to(equal(testPosition)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSpeakSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSpeakSpec.m index 761c10505..8642bb4a2 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSpeakSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSpeakSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameTTSChunks:[@[chunk] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSpeak}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSpeak* testRequest = [[SDLSpeak alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.ttsChunks).to(equal([@[chunk] mutableCopy])); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeButtonSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeButtonSpec.m index d748e24bd..67a99173b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeButtonSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeButtonSpec.m @@ -30,7 +30,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameButtonName:SDLButtonNamePreset5}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubscribeButton}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSubscribeButton* testRequest = [[SDLSubscribeButton alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.buttonName).to(equal(SDLButtonNamePreset5)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m index c90c8a45e..b4d677936 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSubscribeVehicleDataSpec.m @@ -112,7 +112,10 @@ SDLRPCParameterNameTurnSignal:@NO, SDLRPCParameterNameWiperStatus:@NO}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubscribeVehicleData}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSubscribeVehicleData* testRequest = [[SDLSubscribeVehicleData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.accPedalPosition).to(equal(@YES)); expect(testRequest.airbagStatus).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSystemRequestSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSystemRequestSpec.m index 1b27f45a8..19954c463 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSystemRequestSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLSystemRequestSpec.m @@ -28,7 +28,10 @@ SDLRPCParameterNameRequestSubType: testSubType, SDLRPCParameterNameFilename:testFileName}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSystemRequest}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSystemRequest* testRequest = [[SDLSystemRequest alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.requestType).to(equal(testRequestType)); expect(testRequest.requestSubType).to(equal(testSubType)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeButtonSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeButtonSpec.m index dd7f72d28..48f6ef76b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeButtonSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeButtonSpec.m @@ -30,7 +30,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameButtonName:SDLButtonNamePreset0}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeButton}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLUnsubscribeButton* testRequest = [[SDLUnsubscribeButton alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.buttonName).to(equal(SDLButtonNamePreset0)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m index f538f412e..adb9307bd 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUnsubscribeVehicleDataSpec.m @@ -112,7 +112,10 @@ SDLRPCParameterNameTurnSignal:@YES, SDLRPCParameterNameWiperStatus:@YES}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeVehicleData}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLUnsubscribeVehicleData* testRequest = [[SDLUnsubscribeVehicleData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.accPedalPosition).to(equal(@YES)); expect(testRequest.airbagStatus).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUpdateTurnListSpec.m b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUpdateTurnListSpec.m index 1fe93731f..ec31cd98f 100644 --- a/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUpdateTurnListSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/RequestSpecs/SDLUpdateTurnListSpec.m @@ -36,7 +36,10 @@ @{SDLRPCParameterNameTurnList:[@[turn] mutableCopy], SDLRPCParameterNameSoftButtons:[@[button] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameUpdateTurnList}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLUpdateTurnList* testRequest = [[SDLUpdateTurnList alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testRequest.turnList).to(equal([@[turn] mutableCopy])); expect(testRequest.softButtons).to(equal([@[button] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDeleteFileResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDeleteFileResponseSpec.m index 6eb54798e..9ff80e15a 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDeleteFileResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDeleteFileResponseSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameSpaceAvailable:@0}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameDeleteFile}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDeleteFileResponse* testResponse = [[SDLDeleteFileResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.spaceAvailable).to(equal(@0)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDiagnosticMessageResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDiagnosticMessageResponseSpec.m index b8efd9c97..239581a67 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDiagnosticMessageResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLDiagnosticMessageResponseSpec.m @@ -28,7 +28,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameMessageDataResult:@[@3, @9, @27, @81]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameDiagnosticMessage}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDiagnosticMessageResponse* testResponse = [[SDLDiagnosticMessageResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.messageDataResult).to(equal(@[@3, @9, @27, @81])); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetAppServiceDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetAppServiceDataResponseSpec.m index 53b04382b..2df52a5ab 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetAppServiceDataResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetAppServiceDataResponseSpec.m @@ -38,7 +38,10 @@ SDLRPCParameterNameServiceData:testAppServiceData }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetAppServiceData}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetAppServiceDataResponse *testResponse = [[SDLGetAppServiceDataResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.serviceData).to(equal(testAppServiceData)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetCloudAppPropertiesResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetCloudAppPropertiesResponseSpec.m index 4da3f7c89..0109daf10 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetCloudAppPropertiesResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetCloudAppPropertiesResponseSpec.m @@ -36,7 +36,10 @@ SDLRPCParameterNameProperties:testProperties }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetCloudAppProperties}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetCloudAppPropertiesResponse *testResponse = [[SDLGetCloudAppPropertiesResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.properties).to(equal(testProperties)); expect(testResponse.name).to(equal(SDLRPCFunctionNameSetCloudAppProperties)); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetDTCsResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetDTCsResponseSpec.m index 5c6ea8658..ec2afbdb5 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetDTCsResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetDTCsResponseSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameECUHeader:@404, SDLRPCParameterNameDTC:[@[@"FFFF", @"FFFE", @"FFFD"] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetDTCs}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetDTCsResponse* testResponse = [[SDLGetDTCsResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.ecuHeader).to(equal(@404)); expect(testResponse.dtc).to(equal([@[@"FFFF", @"FFFE", @"FFFD"] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetFileResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetFileResponseSpec.m index 04bc119be..908a88a60 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetFileResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetFileResponseSpec.m @@ -48,7 +48,10 @@ SDLRPCParameterNameCRC:@(testCrc) }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetFile}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetFileResponse *testResponse = [[SDLGetFileResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.offset).to(equal(testOffset)); expect(testResponse.length).to(equal(testLength)); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataResponseSpec.m index 7541d2625..94d086cff 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataResponseSpec.m @@ -40,7 +40,10 @@ @{SDLRPCParameterNameModuleData:someModuleData, SDLRPCParameterNameIsSubscribed:@NO}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetInteriorVehicleData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetInteriorVehicleDataResponse* testResponse = [[SDLGetInteriorVehicleDataResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.moduleData).to(equal(someModuleData)); expect(testResponse.isSubscribed).to(equal(@NO)); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetSystemCapabilityResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetSystemCapabilityResponseSpec.m index 54d9c561e..96f69128e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetSystemCapabilityResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetSystemCapabilityResponseSpec.m @@ -41,7 +41,10 @@ SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetSystemCapability } }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetSystemCapabilityResponse *testResponse = [[SDLGetSystemCapabilityResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.systemCapability.systemCapabilityType).to(equal(SDLSystemCapabilityTypeNavigation)); expect(testResponse.systemCapability.navigationCapability.sendLocationEnabled).to(equal(YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m index 9d672c532..ed1db8343 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetVehicleDataResponseSpec.m @@ -149,7 +149,10 @@ SDLRPCParameterNameVIN:vin, SDLRPCParameterNameWiperStatus:SDLWiperStatusAutomaticHigh}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameGetVehicleData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGetVehicleDataResponse* testResponse = [[SDLGetVehicleDataResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.accPedalPosition).to(equal(@0)); expect(testResponse.airbagStatus).to(equal(airbag)); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetWaypointsResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetWaypointsResponseSpec.m index c54acf9fa..a5dcf14ea 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetWaypointsResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetWaypointsResponseSpec.m @@ -69,8 +69,10 @@ } } }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testResponse = [[SDLGetWayPointsResponse alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical @@ -87,8 +89,10 @@ SDLRPCParameterNameParameters: @{} } }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testResponse = [[SDLGetWayPointsResponse alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); it(@"should return nil for waypoints", ^{ diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLListFilesResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLListFilesResponseSpec.m index 02ab663c8..dd2b83867 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLListFilesResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLListFilesResponseSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameFilenames:[@[@"Music/music.mp3", @"Documents/document.txt", @"Downloads/format.exe"] mutableCopy], SDLRPCParameterNameSpaceAvailable:@500000000}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameListFiles}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLListFilesResponse* testResponse = [[SDLListFilesResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.filenames).to(equal([@[@"Music/music.mp3", @"Documents/document.txt", @"Downloads/format.exe"] mutableCopy])); expect(testResponse.spaceAvailable).to(equal(@500000000)); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPerformAppServiceInteractionResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPerformAppServiceInteractionResponseSpec.m index 9ac23a78f..aa3eefcf7 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPerformAppServiceInteractionResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPerformAppServiceInteractionResponseSpec.m @@ -35,7 +35,10 @@ SDLRPCParameterNameServiceSpecificResult:testServiceSpecificResult }, SDLRPCParameterNameOperationName:SDLRPCFunctionNamePublishAppService}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPerformAppServiceInteractionResponse *testResponse = [[SDLPerformAppServiceInteractionResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.serviceSpecificResult).to(equal(testServiceSpecificResult)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPerformInteractionResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPerformInteractionResponseSpec.m index 832ed3e44..073c7bbcd 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPerformInteractionResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPerformInteractionResponseSpec.m @@ -36,7 +36,10 @@ SDLRPCParameterNameManualTextEntry:@"entry", SDLRPCParameterNameTriggerSource:SDLTriggerSourceKeyboard}, SDLRPCParameterNameOperationName:SDLRPCFunctionNamePerformInteraction}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPerformInteractionResponse* testResponse = [[SDLPerformInteractionResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.choiceID).to(equal(@25)); expect(testResponse.manualTextEntry).to(equal(@"entry")); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPublishAppServiceResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPublishAppServiceResponseSpec.m index 7c3e84317..2ab9c517a 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPublishAppServiceResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPublishAppServiceResponseSpec.m @@ -37,7 +37,10 @@ SDLRPCParameterNameAppServiceRecord:testAppServiceRecord }, SDLRPCParameterNameOperationName:SDLRPCFunctionNamePublishAppService}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPublishAppServiceResponse *testResponse = [[SDLPublishAppServiceResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.appServiceRecord).to(equal(testAppServiceRecord)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPutFileResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPutFileResponseSpec.m index 347be0314..575dc0f6b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPutFileResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLPutFileResponseSpec.m @@ -29,7 +29,10 @@ @{SDLRPCParameterNameSpaceAvailable:@1248, }, SDLRPCParameterNameOperationName:SDLRPCFunctionNamePutFile}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPutFileResponse* testResponse = [[SDLPutFileResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.spaceAvailable).to(equal(@1248)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLReadDIDResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLReadDIDResponseSpec.m index 1ecc59fc9..05626af68 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLReadDIDResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLReadDIDResponseSpec.m @@ -31,7 +31,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameDIDResult:[@[result] mutableCopy]}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameReadDID}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLReadDIDResponse* testResponse = [[SDLReadDIDResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.didResult).to(equal([@[result] mutableCopy])); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m index b8c1c816b..4d7918de4 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLRegisterAppInterfaceResponseSpec.m @@ -93,7 +93,10 @@ SDLRPCParameterNameIconResumed: @YES, }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameRegisterAppInterface}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRegisterAppInterfaceResponse* testResponse = [[SDLRegisterAppInterfaceResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.syncMsgVersion).to(equal(version)); expect(testResponse.language).to(equal(SDLLanguageEsMx)); @@ -164,7 +167,10 @@ SDLRPCParameterNameIconResumed: NSNull.null, }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameRegisterAppInterface}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRegisterAppInterfaceResponse* testResponse = [[SDLRegisterAppInterfaceResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expectAction(^{ [testResponse syncMsgVersion]; }).to(raiseException()); expectAction(^{ [testResponse language]; }).to(raiseException()); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetCloudAppPropertiesResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetCloudAppPropertiesResponseSpec.m index fdcf9144e..4a49b7d6b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetCloudAppPropertiesResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetCloudAppPropertiesResponseSpec.m @@ -26,7 +26,10 @@ NSDictionary *dict = @{SDLRPCParameterNameResponse:@{ SDLRPCParameterNameParameters:@{}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetCloudAppProperties}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSetCloudAppPropertiesResponse *testResponse = [[SDLSetCloudAppPropertiesResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse).toNot(beNil()); expect(testResponse.name).to(equal(SDLRPCFunctionNameSetCloudAppProperties)); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetDisplayLayoutResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetDisplayLayoutResponseSpec.m index 41e36b842..7a82e0456 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetDisplayLayoutResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetDisplayLayoutResponseSpec.m @@ -47,7 +47,10 @@ SDLRPCParameterNameSoftButtonCapabilities:[@[softButton] mutableCopy], SDLRPCParameterNamePresetBankCapabilities:presetBank}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetDisplayLayout}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSetDisplayLayoutResponse* testResponse = [[SDLSetDisplayLayoutResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.displayCapabilities).to(equal(info)); expect(testResponse.buttonCapabilities).to(equal([@[button] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetInteriorVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetInteriorVehicleDataResponseSpec.m index cbb26be8b..ae989b0a9 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetInteriorVehicleDataResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSetInteriorVehicleDataResponseSpec.m @@ -36,7 +36,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameModuleData:someModuleData}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSetInteriorVehicleData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSetInteriorVehicleDataResponse* testResponse = [[SDLSetInteriorVehicleDataResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.moduleData).to(equal(someModuleData)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSliderResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSliderResponseSpec.m index bddbb04a4..b1e269dfc 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSliderResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSliderResponseSpec.m @@ -29,7 +29,10 @@ @{SDLRPCParameterNameParameters: @{SDLRPCParameterNameSliderPosition:@13}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSlider}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSliderResponse* testResponse = [[SDLSliderResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.sliderPosition).to(equal(@13)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m index fa3f163a4..6b1f4303b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLSubscribeVehicleDataResponseSpec.m @@ -116,7 +116,10 @@ SDLRPCParameterNameTurnSignal:vehicleDataResult, SDLRPCParameterNameWiperStatus:vehicleDataResult}, SDLRPCParameterNameOperationName:SDLRPCFunctionNameSubscribeVehicleData}}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSubscribeVehicleDataResponse* testResponse = [[SDLSubscribeVehicleDataResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.accPedalPosition).to(equal(vehicleDataResult)); expect(testResponse.airbagStatus).to(equal(vehicleDataResult)); diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m index d9ba58f6b..8e91afc1d 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLUnsubscribeVehicleDataResponseSpec.m @@ -117,7 +117,10 @@ SDLRPCParameterNameCloudAppVehicleID:vehicleDataResult }, SDLRPCParameterNameOperationName:SDLRPCFunctionNameUnsubscribeVehicleData}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLUnsubscribeVehicleDataResponse* testResponse = [[SDLUnsubscribeVehicleDataResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testResponse.gps).to(equal(vehicleDataResult)); expect(testResponse.speed).to(equal(vehicleDataResult)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAirbagStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAirbagStatusSpec.m index 032857f4b..ca3f98a20 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAirbagStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAirbagStatusSpec.m @@ -47,7 +47,10 @@ SDLRPCParameterNameDriverKneeAirbagDeployed:SDLVehicleDataEventStatusNo, SDLRPCParameterNamePassengerSideAirbagDeployed:SDLVehicleDataEventStatusYes, SDLRPCParameterNamePassengerKneeAirbagDeployed:SDLVehicleDataEventStatusNoEvent} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAirbagStatus* testStruct = [[SDLAirbagStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.driverAirbagDeployed).to(equal(SDLVehicleDataEventStatusYes)); expect(testStruct.driverSideAirbagDeployed).to(equal(SDLVehicleDataEventStatusNoEvent)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppInfoSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppInfoSpec.m index f230a7898..894149a49 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppInfoSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppInfoSpec.m @@ -31,7 +31,10 @@ NSMutableDictionary *dict = [@{SDLRPCParameterNameAppDisplayName:@"display name", SDLRPCParameterNameAppVersion:@"1.2.3.4", SDLRPCParameterNameAppBundleId:@"com.app.bundle"} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAppInfo* testStruct = [[SDLAppInfo alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.appDisplayName).to(equal(@"display name")); expect(testStruct.appVersion).to(equal(@"1.2.3.4")); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceCapabilitySpec.m index 220ce9e30..b39ad49b7 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceCapabilitySpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceCapabilitySpec.m @@ -21,7 +21,10 @@ beforeEach(^{ testUpdateReason = SDLServiceUpdateActivated; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testUpdatedAppServiceRecord = [[SDLAppServiceRecord alloc] initWithDictionary:@{SDLRPCParameterNameServiceID:@"1234", SDLRPCParameterNameServicePublished:@YES}]; +#pragma clang diagnostic pop }); it(@"Should set and get correctly", ^{ @@ -37,8 +40,10 @@ NSDictionary *dict = @{SDLRPCParameterNameUpdateReason:testUpdateReason, SDLRPCParameterNameUpdatedAppServiceRecord:testUpdatedAppServiceRecord }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAppServiceCapability *testStruct = [[SDLAppServiceCapability alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.updateReason).to(equal(testUpdateReason)); expect(testStruct.updatedAppServiceRecord).to(equal(testUpdatedAppServiceRecord)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceDataSpec.m index ec1aef4ab..bfd451fa8 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceDataSpec.m @@ -57,7 +57,10 @@ SDLRPCParameterNameWeatherServiceData:testWeatherServiceData, SDLRPCParameterNameNavigationServiceData:testNavigationServiceData }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAppServiceData *testStruct = [[SDLAppServiceData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.serviceType).to(equal(testServiceType)); expect(testStruct.serviceId).to(equal(testServiceId)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceManifestSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceManifestSpec.m index b12c8e8ad..430d869b5 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceManifestSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceManifestSpec.m @@ -81,7 +81,10 @@ SDLRPCParameterNameMediaServiceManifest:testMediaServiceManifest, SDLRPCParameterNameNavigationServiceManifest:testNavigationServiceManifest }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAppServiceManifest *testStruct = [[SDLAppServiceManifest alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.serviceName).to(match(testServiceName)); expect(testStruct.serviceType).to(equal(testServiceType)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceRecordSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceRecordSpec.m index f0d99c84f..ec56f1da5 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceRecordSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServiceRecordSpec.m @@ -23,7 +23,10 @@ beforeEach(^{ testServiceID = @"12345"; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testAppServiceManifest = [[SDLAppServiceManifest alloc] initWithDictionary:@{SDLRPCParameterNameAllowAppConsumers:@NO}]; +#pragma clang diagnostic pop testServicePublished = @NO; testServiceActive = @YES; }); @@ -56,7 +59,10 @@ SDLRPCParameterNameServicePublished:testServicePublished, SDLRPCParameterNameServiceActive:testServiceActive }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAppServiceRecord *testStruct = [[SDLAppServiceRecord alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.serviceID).to(match(testServiceID)); expect(testStruct.serviceManifest).to(equal(testAppServiceManifest)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServicesCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServicesCapabilitiesSpec.m index 486a664e8..14b88578f 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServicesCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAppServicesCapabilitiesSpec.m @@ -19,7 +19,10 @@ __block NSArray *testAppServices = nil; beforeEach(^{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testAppServices = @[[[SDLAppServiceCapability alloc] initWithDictionary:@{SDLRPCParameterNameUpdateReason:SDLServiceUpdateRemoved}]]; +#pragma clang diagnostic pop }); it(@"Should set and get correctly", ^{ @@ -38,7 +41,10 @@ it(@"Should get correctly when initialized with a dictionary", ^{ NSDictionary *dict = @{SDLRPCParameterNameAppServices:testAppServices }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAppServicesCapabilities *testStruct = [[SDLAppServicesCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.appServices).to(equal(testAppServices)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlCapabilitiesSpec.m index d99d76c22..d4ba87009 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlCapabilitiesSpec.m @@ -63,7 +63,10 @@ SDLRPCParameterNameEqualizerAvailable:@(NO), SDLRPCParameterNameEqualizerMaxChannelId:@12 } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAudioControlCapabilities* testStruct = [[SDLAudioControlCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.moduleName).to(equal(@"module")); expect(testStruct.sourceAvailable).to(equal(@(NO))); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlDataSpec.m index 19b88b71b..bd350d32b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioControlDataSpec.m @@ -48,7 +48,10 @@ SDLRPCParameterNameVolume:@(NO), SDLRPCParameterNameEqualizerSettings:[@[someEqualizerSettings] copy] } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAudioControlData* testStruct = [[SDLAudioControlData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.source).to(equal(SDLPrimaryAudioSourceCD)); expect(testStruct.keepContext).to(equal(@(NO))); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioPassThruCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioPassThruCapabilitiesSpec.m index 915af499a..60a5624da 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioPassThruCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLAudioPassThruCapabilitiesSpec.m @@ -34,7 +34,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameSamplingRate:SDLSamplingRate22KHZ, SDLRPCParameterNameBitsPerSample:SDLBitsPerSample8Bit, SDLRPCParameterNameAudioType:SDLAudioTypePCM} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLAudioPassThruCapabilities* testStruct = [[SDLAudioPassThruCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.samplingRate).to(equal(SDLSamplingRate22KHZ)); expect(testStruct.bitsPerSample).to(equal(SDLBitsPerSample8Bit)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBeltStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBeltStatusSpec.m index dbe9d7b1f..704f4c370 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBeltStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBeltStatusSpec.m @@ -68,7 +68,10 @@ SDLRPCParameterNameRightRearInflatableBelted:SDLVehicleDataEventStatusFault, SDLRPCParameterNameMiddleRow1BeltDeployed:SDLVehicleDataEventStatusNoEvent, SDLRPCParameterNameMiddleRow1BuckleBelted:SDLVehicleDataEventStatusNotSupported} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLBeltStatus* testStruct = [[SDLBeltStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.driverBeltDeployed).to(equal(SDLVehicleDataEventStatusNoEvent)); expect(testStruct.passengerBeltDeployed).to(equal(SDLVehicleDataEventStatusYes)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m index 9c8765525..cd75a33b0 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLBodyInformationSpec.m @@ -44,7 +44,10 @@ SDLRPCParameterNamePassengerDoorAjar:@NO, SDLRPCParameterNameRearLeftDoorAjar:@NO, SDLRPCParameterNameRearRightDoorAjar:@YES} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLBodyInformation* testStruct = [[SDLBodyInformation alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.parkBrakeActive).to(equal(@YES)); expect(testStruct.ignitionStableStatus).to(equal(SDLIgnitionStableStatusNotStable)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLButtonCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLButtonCapabilitiesSpec.m index f4a0a3a89..f60e67998 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLButtonCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLButtonCapabilitiesSpec.m @@ -35,7 +35,10 @@ SDLRPCParameterNameShortPressAvailable:@YES, SDLRPCParameterNameLongPressAvailable:@YES, SDLRPCParameterNameUpDownAvailable:@NO} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLButtonCapabilities* testStruct = [[SDLButtonCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.name).to(equal(SDLButtonNameCustomButton)); expect(testStruct.shortPressAvailable).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLChoiceSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLChoiceSpec.m index 7cb870b61..770f83cf7 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLChoiceSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLChoiceSpec.m @@ -47,7 +47,10 @@ SDLRPCParameterNameSecondaryText:@"Arbitrary", SDLRPCParameterNameTertiaryText:@"qwerty", SDLRPCParameterNameSecondaryImage:secondaryImage} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLChoice* testStruct = [[SDLChoice alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.choiceID).to(equal(@3)); expect(testStruct.menuName).to(equal(@"Hello")); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m index 1bc146b4e..5867bb897 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlCapabilitiesSpec.m @@ -74,7 +74,10 @@ SDLRPCParameterNameHeatedRearWindowAvailable:@YES, SDLRPCParameterNameHeatedMirrorsAvailable:@NO } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLClimateControlCapabilities* testStruct = [[SDLClimateControlCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.moduleName).to(equal(@"Name")); expect(testStruct.fanSpeedAvailable).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m index 8864f9ef5..9c89ff291 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClimateControlDataSpec.m @@ -115,8 +115,11 @@ SDLRPCParameterNameHeatedRearWindowEnable:@NO, SDLRPCParameterNameHeatedMirrorsEnable:@YES, } mutableCopy]; - + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLClimateControlData* testStruct = [[SDLClimateControlData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.fanSpeed).to(equal(@43)); expect(testStruct.currentTemperature).to(equal(currentTemp)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLCloudAppPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLCloudAppPropertiesSpec.m index 8e933275e..4c505753d 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLCloudAppPropertiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLCloudAppPropertiesSpec.m @@ -63,7 +63,10 @@ SDLRPCParameterNameHybridAppPreference:testHybridAppPreference, SDLRPCParameterNameEndpoint:testEndpoint }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLCloudAppProperties *testStruct = [[SDLCloudAppProperties alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.nicknames).to(equal(testNicknames)); expect(testStruct.appID).to(equal(testAppID)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClusterModeStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClusterModeStatusSpec.m index fcafcde1b..1b8fe4a53 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClusterModeStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLClusterModeStatusSpec.m @@ -36,7 +36,10 @@ SDLRPCParameterNamePowerModeQualificationStatus:SDLPowerModeQualificationStatusOk, SDLRPCParameterNameCarModeStatus:SDLCarModeStatusCrash, SDLRPCParameterNamePowerModeStatus:SDLPowerModeStatusKeyOut} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLClusterModeStatus* testStruct = [[SDLClusterModeStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.powerModeActive).to(equal(@NO)); expect(testStruct.powerModeQualificationStatus).to(equal(SDLPowerModeQualificationStatusOk)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDIDResult.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDIDResult.m index 263793455..fc8354588 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDIDResult.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDIDResult.m @@ -32,7 +32,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameResultCode:SDLVehicleDataResultCodeDataNotSubscribed, SDLRPCParameterNameDIDLocation:@300, SDLRPCParameterNameData:@"gertwydhty4235tdhedt4tue"} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDIDResult* testStruct = [[SDLDIDResult alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.resultCode).to(equal(SDLVehicleDataResultCodeDataNotSubscribed)); expect(testStruct.didLocation).to(equal(@300)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDateTimeSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDateTimeSpec.m index 5f4091d0f..2961c9b9e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDateTimeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDateTimeSpec.m @@ -51,7 +51,10 @@ SDLRPCParameterNameYear:@4000, SDLRPCParameterNameTimezoneMinuteOffset:@0, SDLRPCParameterNameTimezoneHourOffset:@1000} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDateTime* testStruct = [[SDLDateTime alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.millisecond).to(equal(@100)); expect(testStruct.second).to(equal(@4)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDeviceInfoSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDeviceInfoSpec.m index d1fcc5b55..f59877d3f 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDeviceInfoSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDeviceInfoSpec.m @@ -39,7 +39,10 @@ SDLRPCParameterNameOSVersion:@"9.9", SDLRPCParameterNameCarrier:@"ThatOneWirelessCompany", SDLRPCParameterNameMaxNumberRFCOMMPorts:@20} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDeviceInfo* testStruct = [[SDLDeviceInfo alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.hardware).to(equal(@"GDFR34F")); expect(testStruct.firmwareRev).to(equal(@"4.2a")); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDeviceStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDeviceStatusSpec.m index 847c7b95c..f2c404d60 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDeviceStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLDeviceStatusSpec.m @@ -57,7 +57,10 @@ SDLRPCParameterNameSignalLevelStatus:SDLDeviceLevelStatusTwoBars, SDLRPCParameterNamePrimaryAudioSource:SDLPrimaryAudioSourceBluetoothStereo, SDLRPCParameterNameECallEventActive:@NO} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLDeviceStatus* testStruct = [[SDLDeviceStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.voiceRecOn).to(equal(@NO)); expect(testStruct.btIconOn).to(equal(@NO)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLECallInfoSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLECallInfoSpec.m index d7229bdbc..49abcafbe 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLECallInfoSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLECallInfoSpec.m @@ -33,7 +33,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameECallNotificationStatus:SDLVehicleDataNotificationStatusNormal, SDLRPCParameterNameAuxECallNotificationStatus:SDLVehicleDataNotificationStatusActive, SDLRPCParameterNameECallConfirmationStatus:SDLECallConfirmationStatusInProgress} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLECallInfo* testStruct = [[SDLECallInfo alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.eCallNotificationStatus).to(equal(SDLVehicleDataNotificationStatusNormal)); expect(testStruct.auxECallNotificationStatus).to(equal(SDLVehicleDataNotificationStatusActive)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEmergencyEventSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEmergencyEventSpec.m index 3ac05c2e5..0c7047863 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEmergencyEventSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEmergencyEventSpec.m @@ -40,7 +40,10 @@ SDLRPCParameterNameRolloverEvent:SDLVehicleDataEventStatusYes, SDLRPCParameterNameMaximumChangeVelocity:@33, SDLRPCParameterNameMultipleEvents:SDLVehicleDataEventStatusNo} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLEmergencyEvent* testStruct = [[SDLEmergencyEvent alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.emergencyEventType).to(equal(SDLEmergencyEventTypeFrontal)); expect(testStruct.fuelCutoffStatus).to(equal(SDLFuelCutoffStatusNormalOperation)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEqualizerSettingsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEqualizerSettingsSpec.m index 599a36b1c..3a3e9ab1b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEqualizerSettingsSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLEqualizerSettingsSpec.m @@ -39,7 +39,10 @@ SDLRPCParameterNameChannelName:@"channel", SDLRPCParameterNameChannelSetting:@45 } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLEqualizerSettings* testStruct = [[SDLEqualizerSettings alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.channelId).to(equal(@2)); expect(testStruct.channelName).to(equal(@"channel")); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLFuelRangeSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLFuelRangeSpec.m index 8461f67a9..faad50b3b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLFuelRangeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLFuelRangeSpec.m @@ -31,8 +31,10 @@ NSDictionary *dict = @{SDLRPCParameterNameType:SDLFuelTypeLPG, SDLRPCParameterNameRange:@23 }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLFuelRange *testStruct = [[SDLFuelRange alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.type).to(equal(SDLFuelTypeLPG)); expect(testStruct.range).to(equal(@23)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGPSDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGPSDataSpec.m index 9251e315f..dc1361833 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGPSDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLGPSDataSpec.m @@ -78,7 +78,10 @@ SDLRPCParameterNameAltitude:@3000, SDLRPCParameterNameHeading:@96, SDLRPCParameterNameSpeed:@64} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLGPSData* testStruct = [[SDLGPSData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.longitudeDegrees).to(equal(@31.41592653589793)); expect(testStruct.latitudeDegrees).to(equal(@45)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m index c47c4ce24..9f64d4af8 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMICapabilitiesSpec.m @@ -46,7 +46,10 @@ SDLRPCParameterNamePhoneCall: somePhoneCallState, SDLRPCParameterNameVideoStreaming: someVideoStreamState }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testStruct = [[SDLHMICapabilities alloc] initWithDictionary:[structInitDict mutableCopy]]; +#pragma clang diagnostic pop }); it(@"should properly set phone call", ^{ diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMIPermissionsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMIPermissionsSpec.m index 9b677e6ee..0e97bb117 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMIPermissionsSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMIPermissionsSpec.m @@ -28,7 +28,10 @@ it(@"Should get correctly when initialized", ^ { NSMutableDictionary* dict = [@{SDLRPCParameterNameAllowed:[@[SDLHMILevelBackground, SDLHMILevelFull] copy], SDLRPCParameterNameUserDisallowed:[@[SDLHMILevelNone, SDLHMILevelLimited] copy]} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLHMIPermissions* testStruct = [[SDLHMIPermissions alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.allowed).to(equal([@[SDLHMILevelBackground, SDLHMILevelFull] copy])); expect(testStruct.userDisallowed).to(equal([@[SDLHMILevelNone, SDLHMILevelLimited] copy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlCapabilitiesSpec.m index 7bc085453..7b766f176 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlCapabilitiesSpec.m @@ -53,7 +53,10 @@ SDLRPCParameterNameDistanceUnitAvailable:@(YES), SDLRPCParameterNameDisplayModeUnitAvailable:@(NO) } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLHMISettingsControlCapabilities* testStruct = [[SDLHMISettingsControlCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.moduleName).to(equal(@"temperatureUnit")); expect(testStruct.distanceUnitAvailable).to(equal(@(YES))); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlDataSpec.m index 59f730476..ec0ac4984 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHMISettingsControlDataSpec.m @@ -37,7 +37,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameDisplayMode:SDLDisplayModeAuto, SDLRPCParameterNameTemperatureUnit:SDLTemperatureUnitCelsius, SDLRPCParameterNameDistanceUnit:SDLDistanceUnitKilometers} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLHMISettingsControlData* testStruct = [[SDLHMISettingsControlData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.displayMode).to(equal(SDLDisplayModeAuto)); expect(testStruct.temperatureUnit).to(equal(SDLTemperatureUnitCelsius)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHapticRectSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHapticRectSpec.m index b5ea6b725..0ea323c24 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHapticRectSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHapticRectSpec.m @@ -49,7 +49,10 @@ SDLRPCParameterNameHeight:@3000 } } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLHapticRect *testStruct = [[SDLHapticRect alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.id).to(equal(@2)); expect(testStruct.rect.x).to(equal(@20)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHeadLampStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHeadLampStatusSpec.m index 201ce6bce..c47ab6fe5 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHeadLampStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLHeadLampStatusSpec.m @@ -32,7 +32,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameLowBeamsOn:@YES, SDLRPCParameterNameHighBeamsOn:@NO, SDLRPCParameterNameAmbientLightSensorStatus:SDLAmbientLightStatusTwilight3} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLHeadLampStatus* testStruct = [[SDLHeadLampStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.lowBeamsOn).to(equal(@YES)); expect(testStruct.highBeamsOn).to(equal(@NO)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageFieldSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageFieldSpec.m index 3850163be..26317d657 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageFieldSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageFieldSpec.m @@ -36,7 +36,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameName:SDLImageFieldNameTurnIcon, SDLRPCParameterNameImageTypeSupported:[@[SDLFileTypePNG, SDLFileTypeJPEG] copy], SDLRPCParameterNameImageResolution:resolution} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLImageField* testStruct = [[SDLImageField alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.name).to(equal(SDLImageFieldNameTurnIcon)); expect(testStruct.imageTypeSupported).to(equal([@[SDLFileTypePNG, SDLFileTypeJPEG] copy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageResolutionSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageResolutionSpec.m index 8bacdab56..6754178b4 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageResolutionSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageResolutionSpec.m @@ -28,7 +28,10 @@ NSDictionary *dict = @{SDLRPCParameterNameResolutionHeight:@69, SDLRPCParameterNameResolutionWidth:@869, }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLImageResolution *testStruct = [[SDLImageResolution alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.resolutionWidth).to(equal(@869)); expect(testStruct.resolutionHeight).to(equal(@69)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageSpec.m index 62335c659..85bac3a78 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLImageSpec.m @@ -51,7 +51,10 @@ SDLRPCParameterNameImageType:imageType, SDLRPCParameterNameImageTemplate:@YES } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testSDLImage = [[SDLImage alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expectedValue = value; expectedImageType = imageType; diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLKeyboardPropertiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLKeyboardPropertiesSpec.m index a615413fa..e535cc100 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLKeyboardPropertiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLKeyboardPropertiesSpec.m @@ -40,7 +40,10 @@ SDLRPCParameterNameKeypressMode:SDLKeypressModeResendCurrentEntry, SDLRPCParameterNameLimitedCharacterList:[@[@"s", @"r", @"f", @"q"] mutableCopy], SDLRPCParameterNameAutoCompleteText:@"Auto Carrot"} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLKeyboardProperties* testStruct = [[SDLKeyboardProperties alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.language).to(equal(SDLLanguageDaDk)); expect(testStruct.keyboardLayout).to(equal(SDLKeyboardLayoutQWERTZ)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightCapabilitiesSpec.m index a5aa62996..b89f3dbb9 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightCapabilitiesSpec.m @@ -42,7 +42,10 @@ SDLRPCParameterNameRGBColorSpaceAvailable:@NO } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLLightCapabilities* testStruct = [[SDLLightCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.name).to(equal(SDLLightNameFogLights)); expect(testStruct.densityAvailable).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlCapabilitiesSpec.m index 837a6cacd..7531a4813 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlCapabilitiesSpec.m @@ -40,8 +40,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameModuleName:@"moduleName", SDLRPCParameterNameSupportedLights:[@[somelightCapabilities] copy] } mutableCopy]; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLLightControlCapabilities* testStruct = [[SDLLightControlCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.moduleName).to(equal(@"moduleName")); expect(testStruct.supportedLights).to(equal([@[somelightCapabilities] copy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlDataSpec.m index a882bdf2f..bad28c0dc 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightControlDataSpec.m @@ -32,8 +32,10 @@ it(@"Should get correctly when initialized", ^ { NSMutableDictionary* dict = [@{SDLRPCParameterNameLightState:[@[someLightState] copy]} mutableCopy]; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLLightControlData* testStruct = [[SDLLightControlData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.lightState).to(equal([@[someLightState] copy])); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightStateSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightStateSpec.m index dc478bb06..54afdb804 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightStateSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLightStateSpec.m @@ -68,7 +68,10 @@ SDLRPCParameterNameDensity:@(0.5), SDLRPCParameterNameColor:someRGBColor} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLLightState* testStruct = [[SDLLightState alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.id).to(equal(SDLLightNameFogLights)); expect(testStruct.status).to(equal(SDLLightStatusOn)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationCoordinateSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationCoordinateSpec.m index 011c8f8e4..5908c7c0e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationCoordinateSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationCoordinateSpec.m @@ -54,8 +54,10 @@ SDLRPCParameterNameLongitudeDegrees: someLongitude, SDLRPCParameterNameLatitudeDegrees: someLatitude, }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testStruct = [[SDLLocationCoordinate alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical @@ -85,8 +87,10 @@ beforeEach(^{ NSDictionary *initDict = @{ }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testStruct = [[SDLLocationCoordinate alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); it(@"should return nil for longitude", ^{ diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationDetailsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationDetailsSpec.m index 5bbdd7f00..e7a2e5dde 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationDetailsSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLLocationDetailsSpec.m @@ -152,8 +152,10 @@ SDLRPCParameterNameLocationImage: someImage, SDLRPCParameterNameSearchAddress: someAddress }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testStruct = [[SDLLocationDetails alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); // Since all the properties are immutable, a copy should be executed as a retain, which means they should be identical @@ -200,8 +202,10 @@ SDLRPCParameterNameParameters: @{} } }; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testStruct = [[SDLLocationDetails alloc] initWithDictionary:[NSMutableDictionary dictionaryWithDictionary:initDict]]; +#pragma clang diagnostic pop }); it(@"should return nil for coordinate", ^{ diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMassageCushionFirmnessSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMassageCushionFirmnessSpec.m index 1bd9b0a83..b41de4f8e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMassageCushionFirmnessSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMassageCushionFirmnessSpec.m @@ -34,7 +34,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameCushion:SDLMassageCushionSeatBolsters, SDLRPCParameterNameFirmness:@12 } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLMassageCushionFirmness* testStruct = [[SDLMassageCushionFirmness alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.cushion).to(equal(SDLMassageCushionSeatBolsters)); expect(testStruct.firmness).to(equal(@12)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMassageModeDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMassageModeDataSpec.m index 486049ffe..3e9abffcc 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMassageModeDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMassageModeDataSpec.m @@ -35,7 +35,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameMassageMode:SDLMassageModeLow, SDLRPCParameterNameMassageZone:SDLMassageZoneLumbar } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLMassageModeData* testStruct = [[SDLMassageModeData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.massageZone).to(equal(SDLMassageZoneLumbar)); expect(testStruct.massageMode).to(equal(SDLMassageModeLow)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceDataSpec.m index 821b7a098..66e98b741 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceDataSpec.m @@ -81,7 +81,10 @@ SDLRPCParameterNameQueueCurrentTrackNumber:@(testQueueCurrentTrackNumber), SDLRPCParameterNameQueueTotalTrackCount:@(testQueueTotalTrackCount) }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLMediaServiceData *testStruct = [[SDLMediaServiceData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.mediaType).to(equal(testMediaType)); expect(testStruct.mediaTitle).to(equal(testMediaTitle)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceManifestSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceManifestSpec.m index bdd8dab4b..90dca89d0 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceManifestSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMediaServiceManifestSpec.m @@ -23,7 +23,10 @@ it(@"Should get correctly when initialized with a dictionary", ^{ NSDictionary *dict = @{}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLMediaServiceManifest *testStruct = [[SDLMediaServiceManifest alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop // no parameters to test expect(testStruct).toNot(beNil()); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMenuParamsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMenuParamsSpec.m index 3b70bbfc8..95af8629e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMenuParamsSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMenuParamsSpec.m @@ -30,7 +30,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameParentId:@(testParentId), SDLRPCParameterNamePosition:@(testPosition), SDLRPCParameterNameMenuName:testMenuName} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLMenuParams* testStruct = [[SDLMenuParams alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.parentID).to(equal(@(testParentId))); expect(testStruct.position).to(equal(@(testPosition))); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLModuleDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLModuleDataSpec.m index 5a67924ad..10789bd9c 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLModuleDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLModuleDataSpec.m @@ -50,7 +50,10 @@ SDLRPCParameterNameAudioControlData:someAudioData, SDLRPCParameterNameLightControlData:someLightData, SDLRPCParameterNameHmiSettingsControlData:someHMISettingsData} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLModuleData* testStruct = [[SDLModuleData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.moduleType).to(equal(SDLModuleTypeRadio)); expect(testStruct.radioControlData).to(equal(someRadioData)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMyKeySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMyKeySpec.m index 0eab03e46..f3c30f866 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMyKeySpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLMyKeySpec.m @@ -26,7 +26,10 @@ it(@"Should get correctly when initialized", ^ { NSMutableDictionary* dict = [@{SDLRPCParameterNameE911Override:SDLVehicleDataStatusOn} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLMyKey* testStruct = [[SDLMyKey alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.e911Override).to(equal(SDLVehicleDataStatusOn)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationCapabilitySpec.m index e6db95484..d13388fbf 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationCapabilitySpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationCapabilitySpec.m @@ -25,7 +25,10 @@ it(@"Should get correctly when initialized with a dictionary", ^ { NSDictionary *dict = @{SDLRPCParameterNameGetWayPointsEnabled: @(YES), SDLRPCParameterNameSendLocationEnabled: @(YES)}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLNavigationCapability* testStruct = [[SDLNavigationCapability alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.getWayPointsEnabled).to(equal(YES)); expect(testStruct.sendLocationEnabled).to(equal(YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationInstructionSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationInstructionSpec.m index f7edb055b..9f3a3ff76 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationInstructionSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationInstructionSpec.m @@ -68,7 +68,10 @@ SDLRPCParameterNameDetails:testDetails, SDLRPCParameterNameImage:testImage }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLNavigationInstruction *testStruct = [[SDLNavigationInstruction alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.locationDetails).to(equal(testLocationDetails)); expect(testStruct.action).to(equal(testAction)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationServiceDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationServiceDataSpec.m index 96ec6dae7..a2d884800 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationServiceDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationServiceDataSpec.m @@ -73,7 +73,10 @@ SDLRPCParameterNameNextInstructionDistanceScale:@(testNextInstructionDistanceScale), SDLRPCParameterNamePrompt:testPrompt }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLNavigationServiceData *testStruct = [[SDLNavigationServiceData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.timestamp).to(equal(testTimestamp)); expect(testStruct.origin).to(equal(testOrigin)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationServiceManifestSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationServiceManifestSpec.m index 30786c531..25078a1c8 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationServiceManifestSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLNavigationServiceManifestSpec.m @@ -30,7 +30,10 @@ it(@"Should get correctly when initialized with a dictionary", ^{ NSDictionary *dict = @{SDLRPCParameterNameAcceptsWayPoints:@(testAcceptsWayPoints)}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLNavigationServiceManifest *testStruct = [[SDLNavigationServiceManifest alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.acceptsWayPoints).to(equal(testAcceptsWayPoints)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLOasisAddressSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLOasisAddressSpec.m index dbada5f4e..4ad5eb98c 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLOasisAddressSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLOasisAddressSpec.m @@ -47,7 +47,10 @@ SDLRPCParameterNameSubLocality:@"18", SDLRPCParameterNameThoroughfare:@"Candy Lane", SDLRPCParameterNameSubThoroughfare:@"123"} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLOasisAddress* testStruct = [[SDLOasisAddress alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.countryName).to(equal(@"United States")); expect(testStruct.countryCode).to(equal(@"US")); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLParameterPermissionsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLParameterPermissionsSpec.m index 746bbea63..74297dd0d 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLParameterPermissionsSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLParameterPermissionsSpec.m @@ -28,7 +28,10 @@ it(@"Should get correctly when initialized", ^ { NSMutableDictionary* dict = [@{SDLRPCParameterNameAllowed:[@[SDLHMILevelBackground, SDLHMILevelFull] copy], SDLRPCParameterNameUserDisallowed:[@[SDLHMILevelNone, SDLHMILevelLimited] copy]} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLParameterPermissions* testStruct = [[SDLParameterPermissions alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.allowed).to(equal([@[SDLHMILevelBackground, SDLHMILevelFull] copy])); expect(testStruct.userDisallowed).to(equal([@[SDLHMILevelNone, SDLHMILevelLimited] copy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPermissionItemSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPermissionItemSpec.m index 8f629a11d..83b7f57cc 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPermissionItemSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPermissionItemSpec.m @@ -35,7 +35,10 @@ NSMutableDictionary *dict = [@{SDLRPCParameterNameRPCName:@"RPCNameThing", SDLRPCParameterNameHMIPermissions:hmiPermissions, SDLRPCParameterNameParameterPermissions:parameterPermissions} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPermissionItem* testStruct = [[SDLPermissionItem alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.rpcName).to(equal(@"RPCNameThing")); expect(testStruct.hmiPermissions).to(equal(hmiPermissions)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPhoneCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPhoneCapabilitySpec.m index a38ddec4b..3d57f7084 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPhoneCapabilitySpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPhoneCapabilitySpec.m @@ -21,7 +21,10 @@ describe(@"Initialization tests", ^{ it(@"Should get correctly when initialized with a dictionary", ^ { NSDictionary *dict = @{SDLRPCParameterNameDialNumberEnabled: @(YES)}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPhoneCapability *testStruct = [[SDLPhoneCapability alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.dialNumberEnabled).to(equal(YES)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPresetBankCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPresetBankCapabilitiesSpec.m index b10eace7b..5aef07a2f 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPresetBankCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLPresetBankCapabilitiesSpec.m @@ -24,7 +24,10 @@ it(@"Should get correctly when initialized", ^ { NSMutableDictionary *dict = [@{SDLRPCParameterNameOnScreenPresetsAvailable:@YES} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLPresetBankCapabilities* testStruct = [[SDLPresetBankCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.onScreenPresetsAvailable).to(equal(@YES)); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRDSDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRDSDataSpec.m index 082f201e3..211eb03ac 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRDSDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRDSDataSpec.m @@ -38,8 +38,12 @@ SDLRPCParameterNameTrafficProgramIdentification : @NO, SDLRPCParameterNameTrafficAnnouncementIdentification : @YES, SDLRPCParameterNameRegion : @"reg"} mutableCopy]; - SDLRDSData* testStruct = [[SDLRDSData alloc] initWithDictionary:dict]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + SDLRDSData* testStruct = [[SDLRDSData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop + expect(testStruct.programService).to(equal(@"ps")); expect(testStruct.radioText).to(equal(@"rt")); expect(testStruct.clockText).to(equal(@"2017-07-25T19:20:30-5:00")); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRGBColorSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRGBColorSpec.m index 766b72298..355bebbb1 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRGBColorSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRGBColorSpec.m @@ -41,7 +41,10 @@ NSDictionary *dict = @{SDLRPCParameterNameRed: @0, SDLRPCParameterNameGreen: @100, SDLRPCParameterNameBlue: @255}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRGBColor *testStruct = [[SDLRGBColor alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.red).to(equal(@0)); expect(testStruct.green).to(equal(@100)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m index 8ac7c7563..20c057b60 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlCapabilitiesSpec.m @@ -50,7 +50,10 @@ SDLRPCParameterNameSiriusXMRadioAvailable : @NO, SDLRPCParameterNameSISDataAvailable:@YES } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRadioControlCapabilities* testStruct = [[SDLRadioControlCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.moduleName).to(equal(@"someName")); expect(testStruct.radioEnableAvailable).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m index 58d9f8f92..49ba62568 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRadioControlDataSpec.m @@ -49,7 +49,10 @@ SDLRPCParameterNameState : SDLRadioStateNotFound, SDLRPCParameterNameHDRadioEnable : @NO } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRadioControlData* testStruct = [[SDLRadioControlData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.frequencyInteger).to(equal(@101)); expect(testStruct.frequencyFraction).to(equal(@7)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRectangleSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRectangleSpec.m index ceb7628e9..4fcadd62d 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRectangleSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRectangleSpec.m @@ -37,7 +37,10 @@ SDLRPCParameterNameY:@200, SDLRPCParameterNameWidth:@2000, SDLRPCParameterNameHeight:@3000}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRectangle *testStruct = [[SDLRectangle alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.x).to(equal(@20)); expect(testStruct.y).to(equal(@200)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m index c8b359d49..d444905a2 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLRemoteControlCapabilitiesSpec.m @@ -57,7 +57,10 @@ SDLRPCParameterNameLightControlCapabilities :[@[someLightControlCapabilities] copy], SDLRPCParameterNameHmiSettingsControlCapabilities : [@[someHMISettingsControlCapabilities] copy] } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRemoteControlCapabilities* testStruct = [[SDLRemoteControlCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.seatControlCapabilities).to(equal([@[someSeatControlCapabilities] copy])); expect(testStruct.climateControlCapabilities).to(equal([@[someClimateControlCapabilities] copy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSISDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSISDataSpec.m index 6803917cb..7e82d7cf9 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSISDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSISDataSpec.m @@ -54,8 +54,10 @@ SDLRPCParameterNameStationIDNumber:someID, SDLRPCParameterNameStationMessage:@"message" } mutableCopy]; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSISData* testStruct = [[SDLSISData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.stationShortName).to(equal(@"short")); expect(testStruct.stationIDNumber).to(equal(someID)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLScreenParamsSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLScreenParamsSpec.m index 421272ba4..6f730982a 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLScreenParamsSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLScreenParamsSpec.m @@ -33,7 +33,10 @@ it(@"Should get correctly when initialized", ^ { NSMutableDictionary *dict = [@{SDLRPCParameterNameResolution:resolution, SDLRPCParameterNameTouchEventAvailable:capabilities} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLScreenParams* testStruct = [[SDLScreenParams alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.resolution).to(equal(resolution)); expect(testStruct.touchEventAvailable).to(equal(capabilities)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlCapabilitiesSpec.m index ed1cb779b..bb320be41 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlCapabilitiesSpec.m @@ -117,7 +117,10 @@ SDLRPCParameterNameMassageCushionFirmnessAvailable:@NO, SDLRPCParameterNameMemoryAvailable:@NO } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSeatControlCapabilities *testStruct = [[SDLSeatControlCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.moduleName).to(equal(@"moduleName")); expect(testStruct.heatingEnabledAvailable).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlDataSpec.m index f7b75b357..ee3a4638e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatControlDataSpec.m @@ -126,7 +126,10 @@ SDLRPCParameterNameMassageCushionFirmness:[@[massageCushionFirmness] mutableCopy], SDLRPCParameterNameMemory:seatMemoryAction } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSeatControlData *testStruct = [[SDLSeatControlData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.id).to(equal(SDLSupportedSeatDriver)); expect(testStruct.heatingEnabled).to(equal(@NO)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatMemoryActionSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatMemoryActionSpec.m index aaeece688..1d5573ebc 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatMemoryActionSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSeatMemoryActionSpec.m @@ -41,7 +41,10 @@ SDLRPCParameterNameLabel:@"none", SDLRPCParameterNameAction: SDLSeatMemoryActionTypeNone } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSeatMemoryAction *testStruct = [[SDLSeatMemoryAction alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.id).to(equal(@54)); expect(testStruct.action).to(equal(SDLSeatMemoryActionTypeNone)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSingleTireStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSingleTireStatusSpec.m index 41b685e31..c5bb0a4fa 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSingleTireStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSingleTireStatusSpec.m @@ -33,7 +33,10 @@ SDLRPCParameterNameTPMS: SDLTPMSLow, SDLRPCParameterNamePressure: @67.78 }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSingleTireStatus* testStruct = [[SDLSingleTireStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.status).to(equal(SDLComponentVolumeStatusLow)); expect(testStruct.monitoringSystemStatus).to(equal(SDLTPMSLow)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSoftButtonCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSoftButtonCapabilitiesSpec.m index 131ddebf1..3e4397e75 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSoftButtonCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSoftButtonCapabilitiesSpec.m @@ -33,7 +33,10 @@ SDLRPCParameterNameLongPressAvailable:@YES, SDLRPCParameterNameUpDownAvailable:@NO, SDLRPCParameterNameImageSupported:@NO} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSoftButtonCapabilities* testStruct = [[SDLSoftButtonCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.shortPressAvailable).to(equal(@NO)); expect(testStruct.longPressAvailable).to(equal(@YES)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSoftButtonSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSoftButtonSpec.m index 6c637bc38..0c4eb1b44 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSoftButtonSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSoftButtonSpec.m @@ -45,7 +45,10 @@ SDLRPCParameterNameIsHighlighted:@YES, SDLRPCParameterNameSoftButtonId:@5423, SDLRPCParameterNameSystemAction:SDLSystemActionKeepContext} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSoftButton* testStruct = [[SDLSoftButton alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.type).to(equal(SDLSoftButtonTypeImage)); expect(testStruct.text).to(equal(@"Button")); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStartTimeSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStartTimeSpec.m index f4ba0eacd..704d059dc 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStartTimeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStartTimeSpec.m @@ -33,7 +33,10 @@ NSDictionary *dict = @{SDLRPCParameterNameHours:@(testHours), SDLRPCParameterNameMinutes:@(testMinutes), SDLRPCParameterNameSeconds:@(testSeconds)}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLStartTime *testStruct = [[SDLStartTime alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.hours).to(equal(@(testHours))); expect(testStruct.minutes).to(equal(@(testMinutes))); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStationIDNumberSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStationIDNumberSpec.m index 92390aab4..b0ee6efc5 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStationIDNumberSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLStationIDNumberSpec.m @@ -36,8 +36,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameCountryCode:@91, SDLRPCParameterNameFCCFacilityId:@23 } mutableCopy]; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLStationIDNumber* testStruct = [[SDLStationIDNumber alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.countryCode).to(equal(@91)); expect(testStruct.fccFacilityId).to(equal(@23)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSyncMsgVersionSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSyncMsgVersionSpec.m index f8bc93df5..061e72072 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSyncMsgVersionSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSyncMsgVersionSpec.m @@ -30,7 +30,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameMajorVersion:@4, SDLRPCParameterNameMinorVersion:@532, SDLRPCParameterNamePatchVersion:@12} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSyncMsgVersion* testStruct = [[SDLSyncMsgVersion alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.majorVersion).to(equal(@4)); expect(testStruct.minorVersion).to(equal(@532)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m index c759058d8..ea41d0163 100755 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLSystemCapabilitySpec.m @@ -62,7 +62,10 @@ SDLRPCParameterNameRemoteControlCapability:testRemoteControlCapabilities, SDLRPCParameterNameVideoStreamingCapability:testVideoStreamingCapability }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLSystemCapability *testStruct = [[SDLSystemCapability alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.systemCapabilityType).to(equal(SDLSystemCapabilityTypeNavigation)); expect(testStruct.appServicesCapabilities).to(equal(testAppServicesCapabilities)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTTSChunkSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTTSChunkSpec.m index 3111d04a0..c5418c6e6 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTTSChunkSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTTSChunkSpec.m @@ -32,7 +32,10 @@ it(@"should correctly initialize with initWithDictionary", ^{ NSDictionary* dict = @{SDLRPCParameterNameText: testText, SDLRPCParameterNameType: testCapabilities}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testStruct = [[SDLTTSChunk alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.text).to(equal(testText)); expect(testStruct.type).to(equal(testCapabilities)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemperatureSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemperatureSpec.m index 3e234d098..32e23e50e 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemperatureSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemperatureSpec.m @@ -27,7 +27,10 @@ NSMutableDictionary* dict = [@{SDLRPCParameterNameUnit : SDLTemperatureUnitCelsius , SDLRPCParameterNameValue:@30 } mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLTemperature* testStruct = [[SDLTemperature alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.unit).to(equal(SDLTemperatureUnitCelsius)); expect(testStruct.value).to(equal(@30)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemplateColorSchemeSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemplateColorSchemeSpec.m index f52354d7b..09315c1c5 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemplateColorSchemeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTemplateColorSchemeSpec.m @@ -54,7 +54,10 @@ NSDictionary *dict = @{SDLRPCParameterNameRed: @0, SDLRPCParameterNameGreen: @100, SDLRPCParameterNameBlue: @255}; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRGBColor *testStruct = [[SDLRGBColor alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.red).to(equal(@0)); expect(testStruct.green).to(equal(@100)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTextFieldSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTextFieldSpec.m index 983ec47a1..330d53a3f 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTextFieldSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTextFieldSpec.m @@ -36,7 +36,10 @@ SDLRPCParameterNameCharacterSet:SDLCharacterSetType5, SDLRPCParameterNameWidth:@111, SDLRPCParameterNameRows:@4} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLTextField* testStruct = [[SDLTextField alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.name).to(equal(SDLTextFieldNameTertiaryText)); expect(testStruct.characterSet).to(equal(SDLCharacterSetType5)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTireStatusSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTireStatusSpec.m index 67243d863..1787e04c9 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTireStatusSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTireStatusSpec.m @@ -51,7 +51,10 @@ SDLRPCParameterNameRightRear:tire4, SDLRPCParameterNameInnerLeftRear:tire5, SDLRPCParameterNameInnerRightRear:tire6} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLTireStatus* testStruct = [[SDLTireStatus alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.pressureTelltale).to(equal(SDLWarningLightStatusOff)); expect(testStruct.leftFront).to(equal(tire1)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchCoordSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchCoordSpec.m index c0dcee58a..b2cbcda17 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchCoordSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchCoordSpec.m @@ -27,7 +27,10 @@ it(@"Should get correctly when initialized", ^ { NSMutableDictionary *dict = [@{SDLRPCParameterNameX:@67, SDLRPCParameterNameY:@362} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLTouchCoord* testStruct = [[SDLTouchCoord alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.x).to(equal(@67)); expect(testStruct.y).to(equal(@362)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchEventCapabilitiesSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchEventCapabilitiesSpec.m index e54ec7b26..aaf9137d7 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchEventCapabilitiesSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchEventCapabilitiesSpec.m @@ -30,7 +30,10 @@ NSMutableDictionary *dict = [@{SDLRPCParameterNamePressAvailable:@YES, SDLRPCParameterNameMultiTouchAvailable:@NO, SDLRPCParameterNameDoublePressAvailable:@NO} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLTouchEventCapabilities* testStruct = [[SDLTouchEventCapabilities alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.pressAvailable).to(equal(@YES)); expect(testStruct.multiTouchAvailable).to(equal(@NO)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchEventSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchEventSpec.m index 1939c356e..85c35feeb 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchEventSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTouchEventSpec.m @@ -33,7 +33,10 @@ NSMutableDictionary *dict = [@{SDLRPCParameterNameId:@3, SDLRPCParameterNameTS:[@[@23, @52, @41345234] mutableCopy], SDLRPCParameterNameCoordinate:[@[coord] mutableCopy]} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLTouchEvent* testStruct = [[SDLTouchEvent alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.touchEventId).to(equal(@3)); expect(testStruct.timeStamp).to(equal([@[@23, @52, @41345234] mutableCopy])); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTurnSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTurnSpec.m index defce62e7..22b76fc33 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTurnSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLTurnSpec.m @@ -30,7 +30,10 @@ it(@"Should get correctly when initialized", ^ { NSMutableDictionary *dict = [@{SDLRPCParameterNameNavigationText:@"NAVTEXT", SDLRPCParameterNameTurnIcon:image} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLTurn* testStruct = [[SDLTurn alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.navigationText).to(equal(@"NAVTEXT")); expect(testStruct.turnIcon).to(equal(image)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleDataResultSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleDataResultSpec.m index 0c1c6c899..8a504b85b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleDataResultSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleDataResultSpec.m @@ -29,7 +29,10 @@ it(@"Should get correctly when initialized", ^ { NSMutableDictionary* dict = [@{SDLRPCParameterNameDataType:SDLVehicleDataTypeAirbagStatus, SDLRPCParameterNameResultCode:SDLVehicleDataResultCodeDisallowed} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLVehicleDataResult* testStruct = [[SDLVehicleDataResult alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.dataType).to(equal(SDLVehicleDataTypeAirbagStatus)); expect(testStruct.resultCode).to(equal(SDLVehicleDataResultCodeDisallowed)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleTypeSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleTypeSpec.m index a4f3efa0d..cf7582276 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleTypeSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVehicleTypeSpec.m @@ -33,7 +33,10 @@ SDLRPCParameterNameModel:@"Model", SDLRPCParameterNameModelYear:@"3.141*10^36", SDLRPCParameterNameTrim:@"AE"} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLVehicleType* testStruct = [[SDLVehicleType alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.make).to(equal(@"Make")); expect(testStruct.model).to(equal(@"Model")); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m index 274d625d5..7c83fe99b 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingCapabilitySpec.m @@ -43,8 +43,10 @@ SDLRPCParameterNameMaxBitrate: maxBitrate, SDLRPCParameterNameSupportedFormats: formatArray, SDLRPCParameterNameHapticSpatialDataSupported: hapticDataSupported} mutableCopy]; - +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLVideoStreamingCapability* testStruct = [[SDLVideoStreamingCapability alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.preferredResolution).to(equal(resolution)); expect(testStruct.maxBitrate).to(equal(maxBitrate)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingFormatSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingFormatSpec.m index a6b386738..08d53cde8 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingFormatSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVideoStreamingFormatSpec.m @@ -22,7 +22,10 @@ it(@"Should get correctly when initialized with a dictionary", ^ { NSMutableDictionary* dict = [@{SDLRPCParameterNameVideoProtocol: SDLVideoStreamingProtocolRAW, SDLRPCParameterNameVideoCodec: SDLVideoStreamingCodecH264} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLVideoStreamingFormat* testStruct = [[SDLVideoStreamingFormat alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.protocol).to(equal(SDLVideoStreamingProtocolRAW)); expect(testStruct.codec).to(equal(SDLVideoStreamingCodecH264)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVrHelpItemSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVrHelpItemSpec.m index ea2153359..f3ae63c5c 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVrHelpItemSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLVrHelpItemSpec.m @@ -34,7 +34,10 @@ NSMutableDictionary *dict = [@{SDLRPCParameterNameText:@"DON'T PANIC", SDLRPCParameterNameImage:image, SDLRPCParameterNamePosition:@42} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLVRHelpItem* testStruct = [[SDLVRHelpItem alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.text).to(equal(@"DON'T PANIC")); expect(testStruct.image).to(equal(image)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherAlertSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherAlertSpec.m index e4c34b529..594988bd5 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherAlertSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherAlertSpec.m @@ -57,7 +57,10 @@ SDLRPCParameterNameSeverity:testSeverity, SDLRPCParameterNameTimeIssued:testTimeIssued }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLWeatherAlert *testStruct = [[SDLWeatherAlert alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.title).to(equal(testTitle)); expect(testStruct.summary).to(equal(testSummary)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherDataSpec.m index f46cb0539..911e92935 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherDataSpec.m @@ -127,7 +127,10 @@ SDLRPCParameterNameVisibility:@(testVisibility), SDLRPCParameterNameWeatherIcon:testWeatherIcon }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLWeatherData *testStruct = [[SDLWeatherData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.currentTemperature).to(equal(testCurrentTemp)); expect(testStruct.temperatureHigh).to(equal(testTempHigh)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherServiceDataSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherServiceDataSpec.m index dadf888a4..cd5360074 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherServiceDataSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherServiceDataSpec.m @@ -29,6 +29,8 @@ testLocation = [[SDLLocationDetails alloc] init]; testLocation.locationName = @"testLocationName"; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLWeatherData *testWeatherDataA = [[SDLWeatherData alloc] initWithDictionary:@{SDLRPCParameterNameWeatherSummary:@"testWeatherDataA"}]; SDLWeatherData *testWeatherDataB = [[SDLWeatherData alloc] initWithDictionary:@{SDLRPCParameterNameWeatherSummary:@"testWeatherDataB"}]; SDLWeatherData *testWeatherDataC = [[SDLWeatherData alloc] initWithDictionary:@{SDLRPCParameterNameWeatherSummary:@"testWeatherDataC"}]; @@ -38,6 +40,7 @@ testMultidayForecast = @[testWeatherDataA, testWeatherDataC]; SDLWeatherAlert *testWeatherAlertA = [[SDLWeatherAlert alloc] initWithDictionary:@{SDLRPCParameterNameTitle:@"testWeatherAlertA"}]; +#pragma clang diagnostic pop testAlerts = @[testWeatherAlertA]; }); @@ -66,7 +69,10 @@ SDLRPCParameterNameMultidayForecast:testMultidayForecast, SDLRPCParameterNameAlerts:testAlerts }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLWeatherServiceData *testStruct = [[SDLWeatherServiceData alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.location).to(equal(testLocation)); expect(testStruct.currentForecast).to(equal(testCurrentForecast)); diff --git a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherServiceManifestSpec.m b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherServiceManifestSpec.m index 1a495d633..666b680d7 100644 --- a/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherServiceManifestSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/StructSpecs/SDLWeatherServiceManifestSpec.m @@ -48,7 +48,10 @@ SDLRPCParameterNameMaxMinutelyForecastAmount:@(testMaxMinutelyForecastAmount), SDLRPCParameterNameWeatherForLocationSupported:@(testWeatherForLocationSupported) }; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLWeatherServiceManifest *testStruct = [[SDLWeatherServiceManifest alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop expect(testStruct.currentForecastSupported).to(equal(testCurrentForecastSupported)); expect(testStruct.maxMultidayForecastAmount).to(equal(testMaxMultidayForecastAmount)); diff --git a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCMessageSpec.m b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCMessageSpec.m index 0ace806a0..c6ebbe9dc 100644 --- a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCMessageSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCMessageSpec.m @@ -15,16 +15,22 @@ describe(@"Readonly Property Tests", ^ { it(@"Should get name correctly when initialized with name", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@"Poorly Named"]; +#pragma clang diagnostic pop expect(testMessage.name).to(equal(@"Poorly Named")); }); it(@"Should get correctly when initialized with dictionary", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameNotification: @{SDLRPCParameterNameParameters: @{@"name":@"George"}, SDLRPCParameterNameOperationName:@"Poorly Named"}} mutableCopy]]; +#pragma clang diagnostic pop expect(testMessage.name).to(equal(@"Poorly Named")); expect(testMessage.messageType).to(equal(SDLRPCParameterNameNotification)); @@ -33,62 +39,87 @@ describe(@"Parameter Tests", ^ { it(@"Should set and get correctly", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""]; [testMessage setParameters:@"ADogAPanicInAPagoda" value:@"adogaPAnIcinaPAgoDA"]; - expect([testMessage getParameters:@"ADogAPanicInAPagoda"]).to(equal(@"adogaPAnIcinaPAgoDA")); +#pragma clang diagnostic pop + + expect(testMessage.parameters[@"ADogAPanicInAPagoda"]).to(equal(@"adogaPAnIcinaPAgoDA")); }); it(@"Should get correctly when initialized", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameResponse: @{SDLRPCParameterNameParameters: @{@"age":@25}, SDLRPCParameterNameOperationName:@"Nameless"}} mutableCopy]]; +#pragma clang diagnostic pop - expect([testMessage getParameters:@"age"]).to(equal(@25)); + expect(testMessage.parameters[@"age"]).to(equal(@25)); }); it(@"Should be nil if not set", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""]; - expect([testMessage getParameters:@"ADogAPanicInAPagoda"]).to(beNil()); + expect(testMessage.parameters[@"ADogAPanicInAPagoda"]).to(beNil()); +#pragma clang diagnostic pop }); }); describe(@"FunctionName Tests", ^ { it(@"Should set and get correctly", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""]; [testMessage setFunctionName:@"Functioning"]; +#pragma clang diagnostic pop - expect([testMessage getFunctionName]).to(equal(@"Functioning")); + expect(testMessage.name).to(equal(@"Functioning")); }); it(@"Should get correctly when initialized", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameRequest: @{SDLRPCParameterNameParameters: @{@"age":@25}, SDLRPCParameterNameOperationName:@"DoNothing"}} mutableCopy]]; +#pragma clang diagnostic pop - expect([testMessage getFunctionName]).to(equal(@"DoNothing")); - + expect(testMessage.name).to(equal(@"DoNothing")); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" testMessage = [[SDLRPCMessage alloc] initWithName:@"DoSomething"]; +#pragma clang diagnostic pop - expect([testMessage getFunctionName]).to(equal(@"DoSomething")); + expect(testMessage.name).to(equal(@"DoSomething")); }); it(@"Should be nil if not set", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameNotification: @{SDLRPCParameterNameParameters: @{}}} mutableCopy]]; - expect([testMessage getFunctionName]).to(beNil()); +#pragma clang diagnostic pop + expect(testMessage.name).to(beNil()); }); }); describe(@"BulkDataTests", ^ { it(@"Should set and get correctly", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""]; +#pragma clang diagnostic pop const char* testString = "ImportantData"; testMessage.bulkData = [NSData dataWithBytes:testString length:strlen(testString)]; @@ -97,16 +128,22 @@ }); it(@"Should get correctly when initialized", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithDictionary:[@{SDLRPCParameterNameNotification: @{SDLRPCParameterNameParameters: @{}}, SDLRPCParameterNameBulkData:[NSData dataWithBytes:"ImageData" length:strlen("ImageData")]} mutableCopy]]; +#pragma clang diagnostic pop expect(testMessage.bulkData).to(equal([NSData dataWithBytes:"ImageData" length:strlen("ImageData")])); }); it(@"Should be nil if not set", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCMessage* testMessage = [[SDLRPCMessage alloc] initWithName:@""]; +#pragma clang diagnostic pop expect(testMessage.bulkData).to(beNil()); }); diff --git a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCRequestSpec.m b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCRequestSpec.m index 1846e0700..a8f771928 100644 --- a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCRequestSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCRequestSpec.m @@ -14,7 +14,10 @@ describe(@"Getter/Setter Tests", ^ { it(@"Should set and get correctly", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCRequest* testRequest = [[SDLRPCRequest alloc] initWithName:@"A Legitimate Request"]; +#pragma clang diagnostic pop testRequest.correlationID = @14641; @@ -22,4 +25,4 @@ }); }); -QuickSpecEnd \ No newline at end of file +QuickSpecEnd diff --git a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCResponseSpec.m index edb1a3cab..637c7f3ee 100644 --- a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCResponseSpec.m @@ -17,7 +17,10 @@ describe(@"Getter/Setter Tests", ^ { it(@"Should set and get correctly", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCResponse* response = [[SDLRPCResponse alloc] initWithName:@"A Legitimate Response"]; +#pragma clang diagnostic pop response.correlationID = @14641; response.success = @YES; @@ -38,9 +41,12 @@ SDLRPCParameterNameInfo:@"Test Info"}, SDLRPCParameterNameCorrelationId:@1004, SDLRPCParameterNameOperationName:SDLRPCParameterNameResponse}} mutableCopy]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" SDLRPCResponse* testResponse = [[SDLRPCResponse alloc] initWithDictionary:dict]; +#pragma clang diagnostic pop - expect(testResponse.getFunctionName).to(equal(SDLRPCParameterNameResponse)); + expect(testResponse.name).to(equal(SDLRPCParameterNameResponse)); expect(testResponse.correlationID).to(equal(@1004)); expect(testResponse.success).to(equal(@YES)); expect(testResponse.resultCode).to(equal(SDLRPCParameterNameSuccess)); diff --git a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCStructSpec.m b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCStructSpec.m index 1b2c4d348..8dd6eaf99 100644 --- a/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCStructSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/SuperclassSpecs/SDLRPCStructSpec.m @@ -14,10 +14,13 @@ describe(@"SerializeAsDictionary Tests", ^ { it(@"Should serialize correctly", ^ { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" NSMutableDictionary *dict = [@{@"Key":@"Value", @"Answer":@42, @"Struct":[[SDLRPCStruct alloc] initWithDictionary:[@{@"Array":@[@1, @1, @1, @1]} mutableCopy]]} mutableCopy]; SDLRPCStruct* testStruct = [[SDLRPCStruct alloc] initWithDictionary:dict]; expect([testStruct serializeAsDictionary:2]).to(equal([@{@"Key":@"Value", @"Answer":@42, @"Struct":@{@"Array":@[@1, @1, @1, @1]}} mutableCopy])); +#pragma clang diagnostic pop }); }); diff --git a/SmartDeviceLinkTests/SDLMenuRunScoreSpec.m b/SmartDeviceLinkTests/SDLMenuRunScoreSpec.m new file mode 100644 index 000000000..1c2fca4fe --- /dev/null +++ b/SmartDeviceLinkTests/SDLMenuRunScoreSpec.m @@ -0,0 +1,27 @@ +#import +#import +#import + +#import "SDLDynamicMenuUpdateRunScore.h" + +QuickSpecBegin(SDLMenuRunScoreSpec) + +describe(@"menuRunScore", ^{ + __block SDLDynamicMenuUpdateRunScore *runScore = nil; + + beforeEach(^{ + NSArray *oldMenuStatus = @[@1, @2, @3]; + NSArray *updatedMenuStatus = @[@3, @2, @1]; + NSUInteger numberOfAdds = 5; + + runScore = [[SDLDynamicMenuUpdateRunScore alloc] initWithOldStatus:oldMenuStatus updatedStatus:updatedMenuStatus score:numberOfAdds]; + }); + + it(@"should instantiate correctly", ^{ + expect(runScore.oldStatus).to(equal(@[@1, @2, @3])); + expect(runScore.updatedStatus).to(equal(@[@3, @2, @1])); + expect(runScore.score).to(equal(5)); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/SDLMenuUpdateAlgorithmSpec.m b/SmartDeviceLinkTests/SDLMenuUpdateAlgorithmSpec.m new file mode 100644 index 000000000..a8a666fb6 --- /dev/null +++ b/SmartDeviceLinkTests/SDLMenuUpdateAlgorithmSpec.m @@ -0,0 +1,188 @@ +// +// SDLMenuUpdateAlgorithmSpec.m +// SmartDeviceLinkTests +// +// Created by Justin Gluck on 5/15/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import +#import +#import + +#import "SDLMenuCell.h" +#import "SDLDynamicMenuUpdateRunScore.h" +#import "SDLDynamicMenuUpdateAlgorithm.h" + +QuickSpecBegin(SDLMenuUpdateAlgorithmSpec) + +typedef NS_ENUM(NSUInteger, MenuCellState) { + MenuCellStateDelete, + MenuCellStateAdd, + MenuCellStateKeep +}; + +describe(@"menuUpdateAlgorithm", ^{ + __block SDLDynamicMenuUpdateRunScore *runScore = nil; + + __block SDLMenuCell *oldCell1 = nil; + __block SDLMenuCell *oldCell2 = nil; + __block SDLMenuCell *oldCell3 = nil; + __block SDLMenuCell *oldCell4 = nil; + __block SDLMenuCell *oldCell5 = nil; + __block SDLMenuCell *oldCell6 = nil; + + __block SDLMenuCell *newCell1 = nil; + __block SDLMenuCell *newCell2 = nil; + __block SDLMenuCell *newCell3 = nil; + __block SDLMenuCell *newCell4 = nil; + __block SDLMenuCell *newCell5 = nil; + __block SDLMenuCell *newCell6 = nil; + + // 0 = Delete 1 = Add 2 = Keep + describe(@"compare old and new menu cells", ^{ + beforeEach(^{ + oldCell1 = [[SDLMenuCell alloc] initWithTitle:@"Cell 1" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + oldCell2 = [[SDLMenuCell alloc] initWithTitle:@"Cell 2" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + oldCell3 = [[SDLMenuCell alloc] initWithTitle:@"Cell 3" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + oldCell4 = [[SDLMenuCell alloc] initWithTitle:@"Cell 4" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + oldCell5 = [[SDLMenuCell alloc] initWithTitle:@"Cell 5" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + oldCell6 = [[SDLMenuCell alloc] initWithTitle:@"Cell 6" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + + newCell1 = [[SDLMenuCell alloc] initWithTitle:@"Cell 1" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + newCell2 = [[SDLMenuCell alloc] initWithTitle:@"Cell 2" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + newCell3 = [[SDLMenuCell alloc] initWithTitle:@"Cell 3" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + newCell4 = [[SDLMenuCell alloc] initWithTitle:@"Cell 4" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + newCell5 = [[SDLMenuCell alloc] initWithTitle:@"Cell 5" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + newCell6 = [[SDLMenuCell alloc] initWithTitle:@"Cell 6" icon:nil voiceCommands:nil handler:^(SDLTriggerSource _Nonnull triggerSource) {}]; + }); + + it(@"should have a new menu status of 22221 and an old menu status of 2222 on best run", ^{ + + NSArray *oldMenuCells = @[oldCell1, oldCell2, oldCell3, oldCell4]; + NSArray *updatedMenuCells = @[newCell1, newCell2, newCell3, newCell4, newCell5]; + + runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldMenuCells updatedMenuCells:updatedMenuCells]; + + expect(runScore.updatedStatus.count).to(equal(5)); + expect(runScore.oldStatus.count).to(equal(4)); + expect(runScore.score).to(equal(1)); + + expect(runScore.updatedStatus[0].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.updatedStatus[1].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.updatedStatus[2].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.updatedStatus[3].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.updatedStatus[4].integerValue).to(equal(MenuCellStateAdd)); + + expect(runScore.oldStatus[0].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.oldStatus[1].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.oldStatus[2].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.oldStatus[3].integerValue).to(equal(MenuCellStateKeep)); + }); + + it(@"should have a new menu status of 222 and an old menu status of 2220 on best run", ^{ + + NSArray *oldMenuCells = @[oldCell1, oldCell2, oldCell3, oldCell4]; + NSArray *updatedMenuCells = @[newCell1, newCell2, newCell3]; + + runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldMenuCells updatedMenuCells:updatedMenuCells]; + + expect(runScore.updatedStatus.count).to(equal(3)); + expect(runScore.oldStatus.count).to(equal(4)); + expect(runScore.score).to(equal(0)); + + expect(runScore.updatedStatus[0].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.updatedStatus[1].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.updatedStatus[2].integerValue).to(equal(MenuCellStateKeep)); + + expect(runScore.oldStatus[0].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.oldStatus[1].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.oldStatus[2].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.oldStatus[3].integerValue).to(equal(MenuCellStateDelete)); + }); + + it(@"should have a new menu status of 111 and an old menu status of 000 on best run", ^{ + NSArray *oldMenuCells = @[oldCell1, oldCell2, oldCell3]; + NSArray *updatedMenuCells = @[newCell4, newCell5, newCell6]; + + runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldMenuCells updatedMenuCells:updatedMenuCells]; + + expect(runScore.updatedStatus.count).to(equal(3)); + expect(runScore.oldStatus.count).to(equal(3)); + expect(runScore.score).to(equal(3)); + + expect(runScore.updatedStatus[0].integerValue).to(equal(MenuCellStateAdd)); + expect(runScore.updatedStatus[1].integerValue).to(equal(MenuCellStateAdd)); + expect(runScore.updatedStatus[2].integerValue).to(equal(MenuCellStateAdd)); + + expect(runScore.oldStatus[0].integerValue).to(equal(MenuCellStateDelete)); + expect(runScore.oldStatus[1].integerValue).to(equal(MenuCellStateDelete)); + expect(runScore.oldStatus[2].integerValue).to(equal(MenuCellStateDelete)); + }); + + it(@"should have a new menu status of 1212 and an old menu status of 2020 on best run", ^{ + NSArray *oldMenuCells = @[oldCell1, oldCell2, oldCell3, oldCell4]; + NSArray *updatedMenuCells = @[oldCell2, oldCell1, oldCell4, oldCell3 ]; + + runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldMenuCells updatedMenuCells:updatedMenuCells]; + + expect(runScore.updatedStatus.count).to(equal(4)); + expect(runScore.oldStatus.count).to(equal(4)); + expect(runScore.score).to(equal(2)); + + expect(runScore.updatedStatus[0].integerValue).to(equal(MenuCellStateAdd)); + expect(runScore.updatedStatus[1].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.updatedStatus[2].integerValue).to(equal(MenuCellStateAdd)); + expect(runScore.updatedStatus[3].integerValue).to(equal(MenuCellStateKeep)); + + expect(runScore.oldStatus[0].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.oldStatus[1].integerValue).to(equal(MenuCellStateDelete)); + expect(runScore.oldStatus[2].integerValue).to(equal(MenuCellStateKeep)); + expect(runScore.oldStatus[3].integerValue).to(equal(MenuCellStateDelete)); + }); + + it(@"should have no new menu status and an old menu status is 2222", ^{ + NSArray *oldMenuCells = @[oldCell1, oldCell2, oldCell3, oldCell4]; + NSArray *updatedMenuCells = @[]; + + runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldMenuCells updatedMenuCells:updatedMenuCells]; + + expect(runScore.updatedStatus.count).to(equal(0)); + expect(runScore.oldStatus.count).to(equal(4)); + expect(runScore.score).to(equal(0)); + + expect(runScore.oldStatus[0].integerValue).to(equal(MenuCellStateDelete)); + expect(runScore.oldStatus[1].integerValue).to(equal(MenuCellStateDelete)); + expect(runScore.oldStatus[2].integerValue).to(equal(MenuCellStateDelete)); + expect(runScore.oldStatus[3].integerValue).to(equal(MenuCellStateDelete)); + }); + + it(@"should have menu status of 1111 and no old menu status", ^{ + NSArray *oldMenuCells = @[]; + NSArray *updatedMenuCells = @[oldCell1, oldCell2, oldCell3, oldCell4]; + + runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldMenuCells updatedMenuCells:updatedMenuCells]; + + expect(runScore.updatedStatus.count).to(equal(4)); + expect(runScore.oldStatus.count).to(equal(0)); + expect(runScore.score).to(equal(4)); + + expect(runScore.updatedStatus[0].integerValue).to(equal(MenuCellStateAdd)); + expect(runScore.updatedStatus[1].integerValue).to(equal(MenuCellStateAdd)); + expect(runScore.updatedStatus[2].integerValue).to(equal(MenuCellStateAdd)); + expect(runScore.updatedStatus[3].integerValue).to(equal(MenuCellStateAdd)); + }); + + + it(@"should return nil of old and new menu is an empty array", ^{ + NSArray *oldMenuCells = @[]; + NSArray *updatedMenuCells = @[]; + + runScore = [SDLDynamicMenuUpdateAlgorithm compareOldMenuCells:oldMenuCells updatedMenuCells:updatedMenuCells]; + + expect(runScore).to(beNil()); + }); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/SDLScreenManagerSpec.m b/SmartDeviceLinkTests/SDLScreenManagerSpec.m index 481295539..5bb3943c5 100644 --- a/SmartDeviceLinkTests/SDLScreenManagerSpec.m +++ b/SmartDeviceLinkTests/SDLScreenManagerSpec.m @@ -17,7 +17,7 @@ @interface SDLSoftButtonManager() @property (weak, nonatomic) id connectionManager; @property (weak, nonatomic) SDLFileManager *fileManager; -@property (strong, nonatomic, nullable) SDLShow *inProgressUpdate; +@property (strong, nonatomic) NSOperationQueue *transactionQueue; @property (copy, nonatomic, nullable) SDLHMILevel currentLevel; @end @@ -100,7 +100,7 @@ @interface SDLScreenManager() it(@"should have in progress updates", ^{ expect(testScreenManager.textAndGraphicManager.inProgressUpdate).toNot(beNil()); - expect(testScreenManager.softButtonManager.inProgressUpdate).toNot(beNil()); + expect(testScreenManager.softButtonManager.transactionQueue.operationCount).to(equal(1)); expect(testScreenManager.textAndGraphicManager.batchUpdates).to(beFalse()); expect(testScreenManager.softButtonManager.batchUpdates).to(beFalse()); diff --git a/SmartDeviceLinkTests/SDLSoftButtonReplaceOperationSpec.m b/SmartDeviceLinkTests/SDLSoftButtonReplaceOperationSpec.m new file mode 100644 index 000000000..8b162d283 --- /dev/null +++ b/SmartDeviceLinkTests/SDLSoftButtonReplaceOperationSpec.m @@ -0,0 +1,289 @@ +#import +#import +#import + +#import "SDLSoftButtonReplaceOperation.h" + +#import "SDLArtwork.h" +#import "SDLConnectionManagerType.h" +#import "SDLDisplayCapabilities+ShowManagerExtensions.h" +#import "SDLFileManager.h" +#import "SDLLogMacros.h" +#import "SDLShow.h" +#import "SDLSoftButton.h" +#import "SDLSoftButtonCapabilities.h" +#import "SDLSoftButtonObject.h" +#import "SDLSoftButtonState.h" +#import "TestConnectionManager.h" + +QuickSpecBegin(SDLSoftButtonReplaceOperationSpec) + +describe(@"a soft button replace operation", ^{ + __block SDLSoftButtonReplaceOperation *testOp = nil; + + __block TestConnectionManager *testConnectionManager = nil; + __block SDLFileManager *testFileManager = nil; + + __block BOOL hasCalledOperationCompletionHandler = NO; + __block NSError *resultError = nil; + + __block NSString *object1Name = @"O1 Name"; + __block NSString *object1State1Name = @"O1S1 Name"; + __block NSString *object1State2Name = @"O1S2 Name"; + __block NSString *object1State1Text = @"O1S1 Text"; + __block NSString *object1State2Text = @"O1S2 Text"; + __block SDLSoftButtonState *object1State1 = nil; + __block SDLSoftButtonState *object1State2 = nil; + __block SDLSoftButtonObject *button1 = nil; + + __block NSString *object2Name = @"O2 Name"; + __block NSString *object2State1Name = @"O2S1 Name"; + __block NSString *object2State1Text = @"O2S1 Text"; + __block NSString *object2State1ArtworkName = @"O2S1 Artwork"; + __block SDLArtwork *object2State1Art = nil; + __block SDLSoftButtonState *object2State1 = nil; + __block SDLSoftButtonObject *button2 = nil; + + __block NSString *object3Name = @"O3 Name"; + __block NSString *object3State1Name = @"O3S1 Name"; + __block NSString *object3State1Text = @"O3S1 Text"; + __block NSString *object3State1IconName = SDLStaticIconNameRSS; + __block SDLArtwork *object3State1Art = nil; + __block SDLSoftButtonState *object3State1 = nil; + __block SDLSoftButtonObject *button3 = nil; + + __block NSString *object4Name = @"O4 Name"; + __block NSString *object4State1Name = @"O4S1 Name"; + __block NSString *object4State1IconName = SDLStaticIconNameAlbum; + __block SDLArtwork *object4State1Art = nil; + __block SDLSoftButtonState *object4State1 = nil; + __block SDLSoftButtonObject *button4 = nil; + + __block NSString *testMainField1 = @"Test main field 1"; + + beforeEach(^{ + resultError = nil; + hasCalledOperationCompletionHandler = NO; + + testConnectionManager = [[TestConnectionManager alloc] init]; + testFileManager = OCMClassMock([SDLFileManager class]); + + object1State1 = [[SDLSoftButtonState alloc] initWithStateName:object1State1Name text:object1State1Text artwork:nil]; + object1State2 = [[SDLSoftButtonState alloc] initWithStateName:object1State2Name text:object1State2Text artwork:nil]; + button1 = [[SDLSoftButtonObject alloc] initWithName:object1Name state:object1State1 handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {}]; + + object2State1Art = [[SDLArtwork alloc] initWithData:[@"TestData" dataUsingEncoding:NSUTF8StringEncoding] name:object2State1ArtworkName fileExtension:@"png" persistent:YES]; + object2State1 = [[SDLSoftButtonState alloc] initWithStateName:object2State1Name text:object2State1Text artwork:object2State1Art]; + button2 = [[SDLSoftButtonObject alloc] initWithName:object2Name state:object2State1 handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {}]; + + object3State1Art = [[SDLArtwork alloc] initWithStaticIcon:object3State1IconName]; + object3State1 = [[SDLSoftButtonState alloc] initWithStateName:object3State1Name text:object3State1Text artwork:object3State1Art]; + button3 = [[SDLSoftButtonObject alloc] initWithName:object3Name state:object3State1 handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {}]; + + object4State1Art = [[SDLArtwork alloc] initWithStaticIcon:object4State1IconName]; + object4State1 = [[SDLSoftButtonState alloc] initWithStateName:object4State1Name text:nil artwork:object4State1Art];; + button4 = [[SDLSoftButtonObject alloc] initWithName:object4Name state:object4State1 handler:^(SDLOnButtonPress * _Nullable buttonPress, SDLOnButtonEvent * _Nullable buttonEvent) {}];; + + OCMStub([testFileManager uploadArtworks:[OCMArg any] progressHandler:[OCMArg invokeBlock] completionHandler:[OCMArg invokeBlock]]); + }); + + it(@"should have a priority of 'normal'", ^{ + testOp = [[SDLSoftButtonReplaceOperation alloc] init]; + + expect(@(testOp.queuePriority)).to(equal(@(NSOperationQueuePriorityNormal))); + }); + + describe(@"running the operation", ^{ + context(@"without artworks", ^{ + beforeEach(^{ + SDLSoftButtonCapabilities *capabilities = [[SDLSoftButtonCapabilities alloc] init]; + capabilities.imageSupported = @YES; + + NSArray *testSoftButtonObjects = @[button1]; + + testOp = [[SDLSoftButtonReplaceOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager capabilities:capabilities softButtonObjects:testSoftButtonObjects mainField1:testMainField1]; + [testOp start]; + }); + + it(@"should send the correct RPCs", ^{ + NSArray *sentRequests = testConnectionManager.receivedRequests; + expect(sentRequests).to(haveCount(1)); + expect(sentRequests.firstObject.mainField1).to(equal(testMainField1)); + expect(sentRequests.firstObject.mainField2).to(beNil()); + expect(sentRequests.firstObject.softButtons).to(haveCount(1)); + expect(sentRequests.firstObject.softButtons.firstObject.text).to(equal(object1State1Text)); + expect(sentRequests.firstObject.softButtons.firstObject.image).to(beNil()); + expect(sentRequests.firstObject.softButtons.firstObject.type).to(equal(SDLSoftButtonTypeText)); + }); + }); + + context(@"with artworks", ^{ + __block NSArray *testSoftButtonObjects = nil; + + beforeEach(^{ + testSoftButtonObjects = @[button1, button2]; + }); + + context(@"but we don't support artworks", ^{ + beforeEach(^{ + SDLSoftButtonCapabilities *capabilities = [[SDLSoftButtonCapabilities alloc] init]; + capabilities.imageSupported = @NO; + + testOp = [[SDLSoftButtonReplaceOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager capabilities:capabilities softButtonObjects:testSoftButtonObjects mainField1:testMainField1]; + [testOp start]; + }); + + it(@"should not send artworks", ^{ + OCMReject([testFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg any]]); + + NSArray *sentRequests = testConnectionManager.receivedRequests; + expect(sentRequests).to(haveCount(1)); + expect(sentRequests.firstObject.mainField1).to(equal(testMainField1)); + expect(sentRequests.firstObject.mainField2).to(beNil()); + expect(sentRequests.firstObject.softButtons).to(haveCount(2)); + expect(sentRequests.firstObject.softButtons.firstObject.text).to(equal(object1State1Text)); + expect(sentRequests.firstObject.softButtons.firstObject.image).to(beNil()); + expect(sentRequests.firstObject.softButtons.firstObject.type).to(equal(SDLSoftButtonTypeText)); + expect(sentRequests.firstObject.softButtons.lastObject.text).to(equal(object2State1Text)); + expect(sentRequests.firstObject.softButtons.lastObject.image).to(beNil()); + expect(sentRequests.firstObject.softButtons.lastObject.type).to(equal(SDLSoftButtonTypeText)); + }); + }); + + context(@"but we don't support artworks and some buttons are image-only", ^{ + __block NSArray *testImageOnlySoftButtonObjects = nil; + + beforeEach(^{ + testImageOnlySoftButtonObjects = @[button3, button4]; + }); + + beforeEach(^{ + SDLSoftButtonCapabilities *capabilities = [[SDLSoftButtonCapabilities alloc] init]; + capabilities.imageSupported = @NO; + + testOp = [[SDLSoftButtonReplaceOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager capabilities:capabilities softButtonObjects:testImageOnlySoftButtonObjects mainField1:testMainField1]; + [testOp start]; + }); + + it(@"should not send artworks", ^{ + OCMReject([testFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg any]]); + }); + + it(@"should not send any buttons", ^{ + NSArray *sentRequests = testConnectionManager.receivedRequests; + expect(sentRequests).to(haveCount(0)); + }); + + it(@"should have set the operation to finished", ^ { + expect(testOp.isFinished).to(beTrue()); + }); + }); + + context(@"and we support artworks", ^{ + __block SDLSoftButtonCapabilities *buttonCapabilities = nil; + + beforeEach(^{ + buttonCapabilities = [[SDLSoftButtonCapabilities alloc] init]; + buttonCapabilities.imageSupported = @YES; + }); + + context(@"when artworks are already on the system", ^{ + beforeEach(^{ + OCMStub([testFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(YES); + + testOp = [[SDLSoftButtonReplaceOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager capabilities:buttonCapabilities softButtonObjects:testSoftButtonObjects mainField1:testMainField1]; + [testOp start]; + }); + + it(@"should not upload artworks", ^{ + OCMReject([testFileManager uploadArtworks:[OCMArg any] completionHandler:[OCMArg any]]); + + NSArray *sentRequests = testConnectionManager.receivedRequests; + expect(sentRequests).to(haveCount(1)); + expect(sentRequests.firstObject.mainField1).to(equal(testMainField1)); + expect(sentRequests.firstObject.mainField2).to(beNil()); + expect(sentRequests.firstObject.softButtons).to(haveCount(2)); + expect(sentRequests.firstObject.softButtons.firstObject.text).to(equal(object1State1Text)); + expect(sentRequests.firstObject.softButtons.firstObject.image).to(beNil()); + expect(sentRequests.firstObject.softButtons.firstObject.type).to(equal(SDLSoftButtonTypeText)); + expect(sentRequests.firstObject.softButtons.lastObject.text).to(equal(object2State1Text)); + expect(sentRequests.firstObject.softButtons.lastObject.image).toNot(beNil()); + expect(sentRequests.firstObject.softButtons.lastObject.type).to(equal(SDLSoftButtonTypeBoth)); + }); + }); + + context(@"when the artworks need uploading", ^{ + __block SDLSoftButtonCapabilities *buttonCapabilities = nil; + + beforeEach(^{ + buttonCapabilities = [[SDLSoftButtonCapabilities alloc] init]; + buttonCapabilities.imageSupported = @YES; + }); + + context(@"when artworks are static icons", ^{ + beforeEach(^{ + testSoftButtonObjects = @[button3]; + + testOp = [[SDLSoftButtonReplaceOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager capabilities:buttonCapabilities softButtonObjects:testSoftButtonObjects mainField1:testMainField1]; + [testOp start]; + }); + + it(@"should skip uploading artwork", ^{ + OCMReject([testFileManager uploadArtwork:[OCMArg any] completionHandler:[OCMArg any]]); + + NSArray *sentRequests = testConnectionManager.receivedRequests; + expect(sentRequests).to(haveCount(1)); + expect(sentRequests.firstObject.mainField1).to(equal(testMainField1)); + expect(sentRequests.firstObject.mainField2).to(beNil()); + expect(sentRequests.firstObject.softButtons).to(haveCount(1)); + expect(sentRequests.firstObject.softButtons.firstObject.text).to(equal(object3State1Text)); + expect(sentRequests.firstObject.softButtons.firstObject.image).toNot(beNil()); + expect(sentRequests.firstObject.softButtons.firstObject.type).to(equal(SDLSoftButtonTypeBoth)); + }); + }); + + context(@"when artwork are not already on the system", ^{ + beforeEach(^{ + OCMStub([testFileManager hasUploadedFile:[OCMArg isNotNil]]).andReturn(NO); + + testOp = [[SDLSoftButtonReplaceOperation alloc] initWithConnectionManager:testConnectionManager fileManager:testFileManager capabilities:buttonCapabilities softButtonObjects:testSoftButtonObjects mainField1:testMainField1]; + [testOp start]; + }); + + it(@"should upload artworks", ^{ + OCMVerify([testFileManager uploadArtworks:[OCMArg checkWithBlock:^BOOL(id obj) { + NSArray *artworks = (NSArray *)obj; + return (artworks.count == 1); + }] progressHandler:[OCMArg any] completionHandler:[OCMArg any]]); + + // Both the text only buttons and the image buttons should be sent + NSArray *sentRequests = testConnectionManager.receivedRequests; + expect(sentRequests).to(haveCount(2)); + expect(sentRequests.firstObject.mainField1).to(equal(testMainField1)); + expect(sentRequests.firstObject.mainField2).to(beNil()); + expect(sentRequests.firstObject.softButtons).to(haveCount(2)); + expect(sentRequests.firstObject.softButtons.firstObject.text).to(equal(object1State1Text)); + expect(sentRequests.firstObject.softButtons.firstObject.image).to(beNil()); + expect(sentRequests.firstObject.softButtons.firstObject.type).to(equal(SDLSoftButtonTypeText)); + expect(sentRequests.firstObject.softButtons.lastObject.text).to(equal(object2State1Text)); + expect(sentRequests.firstObject.softButtons.lastObject.image).to(beNil()); + expect(sentRequests.firstObject.softButtons.lastObject.type).to(equal(SDLSoftButtonTypeText)); + + expect(sentRequests.lastObject.mainField1).to(equal(testMainField1)); + expect(sentRequests.lastObject.mainField2).to(beNil()); + expect(sentRequests.lastObject.softButtons).to(haveCount(2)); + expect(sentRequests.lastObject.softButtons.firstObject.text).to(equal(object1State1Text)); + expect(sentRequests.lastObject.softButtons.firstObject.image).to(beNil()); + expect(sentRequests.firstObject.softButtons.firstObject.type).to(equal(SDLSoftButtonTypeText)); + expect(sentRequests.lastObject.softButtons.lastObject.text).to(equal(object2State1Text)); + expect(sentRequests.lastObject.softButtons.lastObject.image).toNot(beNil()); + expect(sentRequests.lastObject.softButtons.lastObject.type).to(equal(SDLSoftButtonTypeBoth)); + }); + }); + }); + }); + }); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/SDLStreamingAudioManagerMock.h b/SmartDeviceLinkTests/SDLStreamingAudioManagerMock.h index 2717798a5..0b92d26d5 100644 --- a/SmartDeviceLinkTests/SDLStreamingAudioManagerMock.h +++ b/SmartDeviceLinkTests/SDLStreamingAudioManagerMock.h @@ -21,13 +21,14 @@ #pragma mark SDLStreamingAudioManagerType @property (assign, nonatomic, readonly, getter=isAudioConnected) BOOL audioConnected; - (BOOL)sendAudioData:(NSData *)audioData; - - (void)setAudioConnected:(BOOL)audioConnected; #pragma mark SDLAudioStreamManagerDelegate - (void)audioStreamManager:(SDLAudioStreamManager *)audioManager fileDidFinishPlaying:(SDLAudioFile *)file successfully:(BOOL)successfully; +- (void)audioStreamManager:(SDLAudioStreamManager *)audioManager dataBufferDidFinishPlayingSuccessfully:(BOOL)successfully; - (void)audioStreamManager:(SDLAudioStreamManager *)audioManager errorDidOccurForFile:(SDLAudioFile *)file error:(NSError *)error; -@property (assign, nonatomic, readonly) BOOL fileFinishedPlaying; -@property (strong, nonatomic, readonly) NSError *fileError; +- (void)audioStreamManager:(SDLAudioStreamManager *)audioManager errorDidOccurForDataBuffer:(NSError *)error; +@property (assign, nonatomic, readonly) BOOL finishedPlaying; +@property (strong, nonatomic, readonly) NSError *error; @end diff --git a/SmartDeviceLinkTests/SDLStreamingAudioManagerMock.m b/SmartDeviceLinkTests/SDLStreamingAudioManagerMock.m index 21d1d8732..6d03a7264 100644 --- a/SmartDeviceLinkTests/SDLStreamingAudioManagerMock.m +++ b/SmartDeviceLinkTests/SDLStreamingAudioManagerMock.m @@ -14,8 +14,8 @@ @interface SDLStreamingAudioManagerMock() @property (strong, nonatomic) NSMutableData *mutableDataSinceClear; -@property (assign, nonatomic, readwrite) BOOL fileFinishedPlaying; -@property (strong, nonatomic, readwrite) NSError *fileError; +@property (assign, nonatomic, readwrite) BOOL finishedPlaying; +@property (strong, nonatomic, readwrite) NSError *error; @end @@ -35,8 +35,8 @@ - (void)clearData { _lastSentData = nil; _mutableDataSinceClear = nil; - _fileFinishedPlaying = NO; - _fileError = nil; + _finishedPlaying = NO; + _error = nil; } #pragma mark SDLStreamingAudioManagerType @@ -62,11 +62,19 @@ - (void)setAudioConnected:(BOOL)audioConnected { #pragma mark SDLAudioStreamManagerDelegate - (void)audioStreamManager:(SDLAudioStreamManager *)audioManager fileDidFinishPlaying:(SDLAudioFile *)file successfully:(BOOL)successfully { - _fileFinishedPlaying = successfully; + _finishedPlaying = successfully; +} + +- (void)audioStreamManager:(SDLAudioStreamManager *)audioManager dataBufferDidFinishPlayingSuccessfully:(BOOL)successfully { + _finishedPlaying = successfully; } - (void)audioStreamManager:(SDLAudioStreamManager *)audioManager errorDidOccurForFile:(SDLAudioFile *)file error:(NSError *)error { - _fileError = error; + _error = error; +} + +- (void)audioStreamManager:(SDLAudioStreamManager *)audioManager errorDidOccurForDataBuffer:(NSError *)error { + _error = error; } @end diff --git a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m index 109b8ea2d..2354e8f29 100644 --- a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m +++ b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m @@ -29,6 +29,14 @@ #import "SDLSystemCapabilityManager.h" #import "SDLVideoStreamingCapability.h" #import "TestConnectionManager.h" +#import "TestSystemCapabilityObserver.h" + + +@interface SDLSystemCapabilityManager () + +@property (assign, nonatomic, readwrite) BOOL supportsSubscriptions; + +@end QuickSpecBegin(SDLSystemCapabilityManagerSpec) @@ -181,7 +189,7 @@ }); }); - context(@"When notified of a Set Display Layout Response", ^ { + context(@"When notified of a SetDisplayLayout Response", ^ { __block SDLSetDisplayLayoutResponse *testSetDisplayLayoutResponse = nil; __block SDLDisplayCapabilities *testDisplayCapabilities = nil; __block NSArray *testSoftButtonCapabilities = nil; @@ -216,7 +224,7 @@ testSetDisplayLayoutResponse.presetBankCapabilities = testPresetBankCapabilities; }); - describe(@"If the Set Display Layout request fails", ^{ + describe(@"If the SetDisplayLayout request fails", ^{ beforeEach(^{ testSetDisplayLayoutResponse.success = @NO; SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testSetDisplayLayoutResponse]; @@ -231,7 +239,7 @@ }); }); - describe(@"If the Set Display Layout request succeeds", ^{ + describe(@"If the SetDisplayLayout request succeeds", ^{ beforeEach(^{ testSetDisplayLayoutResponse.success = @YES; SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveSetDisplayLayoutResponse object:self rpcResponse:testSetDisplayLayoutResponse]; @@ -263,8 +271,8 @@ }); }); - context(@"When sending a Get System Capability request", ^{ - __block SDLGetSystemCapabilityResponse *testGetSystemCapabilityResponse; + context(@"When sending a GetSystemCapability request", ^{ + __block SDLGetSystemCapabilityResponse *testGetSystemCapabilityResponse = nil; __block SDLPhoneCapability *testPhoneCapability = nil; beforeEach(^{ @@ -347,6 +355,7 @@ SDLSystemCapability *newCapability = [[SDLSystemCapability alloc] initWithPhoneCapability:phoneCapability]; SDLOnSystemCapabilityUpdated *update = [[SDLOnSystemCapabilityUpdated alloc] initWithSystemCapability:newCapability]; SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidReceiveSystemCapabilityUpdatedNotification object:nil rpcNotification:update]; + [[NSNotificationCenter defaultCenter] postNotification:notification]; }); @@ -355,6 +364,118 @@ }); }); + describe(@"subscribing to capability types", ^{ + __block TestSystemCapabilityObserver *phoneObserver = nil; + __block TestSystemCapabilityObserver *navigationObserver = nil; + + __block NSUInteger blockObserverTriggeredCount = 0; + + beforeEach(^{ + blockObserverTriggeredCount = 0; + testSystemCapabilityManager.supportsSubscriptions = YES; + + phoneObserver = [[TestSystemCapabilityObserver alloc] init]; + [testSystemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:phoneObserver selector:@selector(capabilityUpdatedWithNotification:)]; + navigationObserver = [[TestSystemCapabilityObserver alloc] init]; + [testSystemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypeNavigation withObserver:navigationObserver selector:@selector(capabilityUpdatedWithNotification:)]; + }); + + describe(@"when observers aren't supported", ^{ + __block BOOL observationSuccess = NO; + + beforeEach(^{ + testSystemCapabilityManager.supportsSubscriptions = NO; + + observationSuccess = [testSystemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:phoneObserver selector:@selector(capabilityUpdatedWithNotification:)]; + }); + + it(@"should fail to subscribe", ^{ + expect(observationSuccess).to(beFalse()); + }); + }); + + context(@"from a GetSystemCapabilitiesResponse", ^{ + __block id blockObserver = nil; + + beforeEach(^{ + blockObserver = [testSystemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypePhoneCall withBlock:^(SDLSystemCapability * _Nonnull systemCapability) { + blockObserverTriggeredCount++; + }]; + + SDLGetSystemCapabilityResponse *testResponse = [[SDLGetSystemCapabilityResponse alloc] init]; + testResponse.systemCapability = [[SDLSystemCapability alloc] initWithPhoneCapability:[[SDLPhoneCapability alloc] initWithDialNumber:YES]]; + SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveGetSystemCapabilitiesResponse object:nil rpcResponse:testResponse]; + + [[NSNotificationCenter defaultCenter] postNotification:notification]; + }); + + it(@"should notify subscribers of the new data", ^{ + expect(phoneObserver.selectorCalledCount).toEventually(equal(1)); + expect(blockObserverTriggeredCount).toEventually(equal(1)); + expect(navigationObserver.selectorCalledCount).toEventually(equal(0)); + }); + + describe(@"unsubscribing", ^{ + beforeEach(^{ + [testSystemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:phoneObserver]; + [testSystemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:blockObserver]; + + SDLGetSystemCapabilityResponse *testResponse = [[SDLGetSystemCapabilityResponse alloc] init]; + testResponse.systemCapability = [[SDLSystemCapability alloc] initWithPhoneCapability:[[SDLPhoneCapability alloc] initWithDialNumber:YES]]; + SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveGetSystemCapabilitiesResponse object:nil rpcResponse:testResponse]; + + [[NSNotificationCenter defaultCenter] postNotification:notification]; + }); + + it(@"should not notify the subscriber of the new data", ^{ + expect(phoneObserver.selectorCalledCount).toEventually(equal(1)); // No change from above + expect(blockObserverTriggeredCount).toEventually(equal(1)); + expect(navigationObserver.selectorCalledCount).toEventually(equal(0)); + }); + }); + }); + + context(@"from an OnSystemCapabilities notification", ^{ + __block id blockObserver = nil; + + beforeEach(^{ + blockObserver = [testSystemCapabilityManager subscribeToCapabilityType:SDLSystemCapabilityTypePhoneCall withBlock:^(SDLSystemCapability * _Nonnull systemCapability) { + blockObserverTriggeredCount++; + }]; + + SDLOnSystemCapabilityUpdated *testNotification = [[SDLOnSystemCapabilityUpdated alloc] initWithSystemCapability:[[SDLSystemCapability alloc] initWithPhoneCapability:[[SDLPhoneCapability alloc] initWithDialNumber:YES]]]; + SDLRPCNotificationNotification *notification = [[SDLRPCNotificationNotification alloc] initWithName:SDLDidReceiveSystemCapabilityUpdatedNotification object:nil rpcNotification:testNotification]; + + [[NSNotificationCenter defaultCenter] postNotification:notification]; + }); + + it(@"should notify subscribers of the new data", ^{ + expect(phoneObserver.selectorCalledCount).toEventually(equal(1)); + expect(blockObserverTriggeredCount).toEventually(equal(1)); + expect(navigationObserver.selectorCalledCount).toEventually(equal(0)); + }); + + describe(@"unsubscribing", ^{ + beforeEach(^{ + [testSystemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:phoneObserver]; + [testSystemCapabilityManager unsubscribeFromCapabilityType:SDLSystemCapabilityTypePhoneCall withObserver:blockObserver]; + + SDLGetSystemCapabilityResponse *testResponse = [[SDLGetSystemCapabilityResponse alloc] init]; + testResponse.systemCapability = [[SDLSystemCapability alloc] initWithPhoneCapability:[[SDLPhoneCapability alloc] initWithDialNumber:YES]]; + SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveGetSystemCapabilitiesResponse object:nil rpcResponse:testResponse]; + + [[NSNotificationCenter defaultCenter] postNotification:notification]; + }); + + it(@"should not notify the subscriber of the new data", ^{ + expect(phoneObserver.selectorCalledCount).toEventually(equal(1)); // No change from above + expect(blockObserverTriggeredCount).toEventually(equal(1)); + expect(navigationObserver.selectorCalledCount).toEventually(equal(0)); + }); + }); + }); + }); + describe(@"merging app services capability changes", ^{ __block SDLAppServicesCapabilities *baseAppServices = nil; __block SDLAppServiceCapability *deleteCapability = nil; diff --git a/SmartDeviceLinkTests/TestUtilities/TestConnectionManager.h b/SmartDeviceLinkTests/TestUtilities/TestConnectionManager.h index b538249b0..5b07db771 100644 --- a/SmartDeviceLinkTests/TestUtilities/TestConnectionManager.h +++ b/SmartDeviceLinkTests/TestUtilities/TestConnectionManager.h @@ -27,7 +27,7 @@ NS_ASSUME_NONNULL_BEGIN */ @property (copy, nonatomic, nullable) SDLResponseHandler lastRequestBlock; -@property (copy, nonatomic, nullable) SDLMultipleRequestCompletionHandler lastMultipleCompletionBlock; +@property (copy, nonatomic, nullable) NSMutableArray *multipleCompletionBlocks; /** * Call the last request's block with a specific response. diff --git a/SmartDeviceLinkTests/TestUtilities/TestConnectionManager.m b/SmartDeviceLinkTests/TestUtilities/TestConnectionManager.m index 5ba813171..4f823a4e6 100644 --- a/SmartDeviceLinkTests/TestUtilities/TestConnectionManager.m +++ b/SmartDeviceLinkTests/TestUtilities/TestConnectionManager.m @@ -22,6 +22,7 @@ - (instancetype)init { } _receivedRequests = [NSMutableArray<__kindof SDLRPCMessage *> array]; + _multipleCompletionBlocks = [NSMutableArray array]; return self; } @@ -50,7 +51,7 @@ - (void)sendRequests:(nonnull NSArray *)requests progressHandle } }]; - _lastMultipleCompletionBlock = completionHandler; + [_multipleCompletionBlocks addObject:completionHandler]; } - (void)sendSequentialRequests:(nonnull NSArray *)requests progressHandler:(nullable SDLMultipleSequentialRequestProgressHandler)progressHandler completionHandler:(nullable SDLMultipleRequestCompletionHandler)completionHandler { @@ -59,7 +60,7 @@ - (void)sendSequentialRequests:(nonnull NSArray *)requests prog progressHandler(request, nil, nil, (double)idx / (double)requests.count); }]; - _lastMultipleCompletionBlock = completionHandler; + [_multipleCompletionBlocks addObject:completionHandler]; } - (void)respondToLastRequestWithResponse:(__kindof SDLRPCResponse *)response { @@ -97,8 +98,10 @@ - (void)respondToRequestWithResponse:(__kindof SDLRPCResponse *)response request } - (void)respondToLastMultipleRequestsWithSuccess:(BOOL)success { - if (self.lastMultipleCompletionBlock != nil) { - self.lastMultipleCompletionBlock(success); + if (self.multipleCompletionBlocks.lastObject != nil) { + SDLMultipleRequestCompletionHandler block = [self.multipleCompletionBlocks.lastObject copy]; + [self.multipleCompletionBlocks removeLastObject]; + block(success); } } diff --git a/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPConstantsSpec.m b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPConstantsSpec.m new file mode 100644 index 000000000..b9fe49b1b --- /dev/null +++ b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPConstantsSpec.m @@ -0,0 +1,25 @@ +// +// SDLIAPConstantsSpec.m +// SmartDeviceLinkTests +// +// Created by Nicole on 5/29/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import +#import + +#import "SDLIAPConstants.h" + +QuickSpecBegin(SDLIAPConstantsSpec) + +describe(@"SDLIAPConstants", ^{ + it(@"Should return the correct protocol string", ^ { + expect(ControlProtocolString).to(match(@"com.smartdevicelink.prot0")); + expect(IndexedProtocolStringPrefix).to(match(@"com.smartdevicelink.prot")); + expect(LegacyProtocolString).to(match(@"com.ford.sync.prot0")); + expect(MultiSessionProtocolString).to(match(@"com.smartdevicelink.multisession")); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPControlSessionSpec.m b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPControlSessionSpec.m new file mode 100644 index 000000000..dbce3da78 --- /dev/null +++ b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPControlSessionSpec.m @@ -0,0 +1,66 @@ +// +// SDLIAPControlSessionSpec.m +// SmartDeviceLinkTests +// +// Created by Nicole on 4/16/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import +#import +#import + +#import "SDLIAPControlSession.h" + +#import "EAAccessory+OCMock.m" +#import "SDLIAPConstants.h" +#import "SDLIAPControlSessionDelegate.h" +#import "SDLIAPSession.h" +#import "SDLTimer.h" + + +@interface SDLIAPControlSession() +@property (nullable, strong, nonatomic) SDLTimer *protocolIndexTimer; +@property (weak, nonatomic) id delegate; +@end + +QuickSpecBegin(SDLIAPControlSessionSpec) + +describe(@"SDLIAPControlSession", ^{ + __block SDLIAPControlSession *controlSession = nil; + __block EAAccessory *mockAccessory = nil; + __block id mockDelegate = nil; + + beforeEach(^{ + mockDelegate = OCMProtocolMock(@protocol(SDLIAPControlSessionDelegate)); + mockAccessory = [EAAccessory.class sdlCoreMock]; + }); + + describe(@"init", ^{ + beforeEach(^{ + controlSession = [[SDLIAPControlSession alloc] initWithAccessory:mockAccessory delegate:mockDelegate]; + }); + + it(@"Should get/set correctly", ^{ + expect(controlSession.accessory).to(equal(mockAccessory)); + expect(controlSession.protocolString).to(equal(ControlProtocolString)); + expect(controlSession.protocolIndexTimer).to(beNil()); + expect(controlSession.delegate).to(equal(mockDelegate)); + }); + }); + + describe(@"starting a session", ^{ + context(@"it should attempt to retry the session", ^{ + beforeEach(^{ + controlSession = [[SDLIAPControlSession alloc] initWithAccessory:nil delegate:mockDelegate]; + }); + + it(@"Should start correctly", ^{ + [controlSession startSession]; + OCMExpect([mockDelegate controlSessionShouldRetry]); + }); + }); + }); +}); + +QuickSpecEnd diff --git a/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPDataSessionSpec.m b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPDataSessionSpec.m new file mode 100644 index 000000000..1d980b139 --- /dev/null +++ b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPDataSessionSpec.m @@ -0,0 +1,78 @@ +// +// SDLIAPDataSessionSpec.m +// SmartDeviceLinkTests +// +// Created by Nicole on 4/23/19. +// Copyright © 2019 smartdevicelink. All rights reserved. +// + +#import +#import +#import + +#import "SDLIAPDataSession.h" + +#import "EAAccessory+OCMock.m" +#import "SDLIAPConstants.h" +#import "SDLIAPSession.h" +#import "SDLIAPDataSessionDelegate.h" +#import "SDLMutableDataQueue.h" + + +@interface SDLIAPDataSession() + +@property (weak, nonatomic) id delegate; +@property (nonatomic, strong) SDLMutableDataQueue *sendDataQueue; +@property (nonatomic, strong) dispatch_semaphore_t canceledSemaphore; + +@end + +QuickSpecBegin(SDLIAPDataSessionSpec) + +describe(@"SDLIAPDataSession", ^{ + __block SDLIAPDataSession *dataSession = nil; + __block EAAccessory *mockAccessory = nil; + __block id mockDelegate = nil; + + beforeEach(^{ + mockDelegate = OCMProtocolMock(@protocol(SDLIAPDataSessionDelegate)); + mockAccessory = [EAAccessory.class sdlCoreMock]; + }); + + describe(@"init", ^{ + beforeEach(^{ + dataSession = [[SDLIAPDataSession alloc] initWithAccessory:mockAccessory delegate:mockDelegate forProtocol:MultiSessionProtocolString]; + }); + + it(@"Should init correctly", ^{ + expect(dataSession.delegate).to(equal(mockDelegate)); + expect(dataSession.sendDataQueue).toNot(beNil()); + expect(dataSession.canceledSemaphore).toNot(beNil()); + }); + + it(@"Should get correctly", ^{ + expect(dataSession.accessory).to(equal(mockAccessory)); + expect(dataSession.protocolString).to(equal(MultiSessionProtocolString)); + expect(dataSession.isStopped).to(beTrue()); + expect(dataSession.connectionID).to(equal(0)); + expect(dataSession.sessionInProgress).to(beFalse()); + }); + }); + + describe(@"starting a session", ^{ + context(@"it should attempt to retry the session", ^{ + beforeEach(^{ + dataSession = [[SDLIAPDataSession alloc] initWithAccessory:nil delegate:mockDelegate forProtocol:MultiSessionProtocolString]; + }); + + it(@"Should start correctly", ^{ + [dataSession startSession]; + OCMExpect([mockDelegate dataSessionShouldRetry]); + }); + }); + }); +}); + +QuickSpecEnd + + diff --git a/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPSessionSpec.m b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPSessionSpec.m index 672aa76b1..f253a1d44 100644 --- a/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPSessionSpec.m +++ b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPSessionSpec.m @@ -12,151 +12,33 @@ #import "EAAccessory+OCMock.m" #import "SDLIAPSession.h" -#import "SDLMutableDataQueue.h" -#import "SDLStreamDelegate.h" +#import "SDLIAPConstants.h" -@interface SDLIAPSession () -@property (nonatomic, assign) BOOL isInputStreamOpen; -@property (nonatomic, assign) BOOL isOutputStreamOpen; -@property (nonatomic, assign) BOOL isDataSession; -@property (nullable, nonatomic, strong) NSThread *ioStreamThread; -@property (nonatomic, strong) SDLMutableDataQueue *sendDataQueue; -@property (nonatomic, strong) dispatch_semaphore_t canceledSemaphore; -- (BOOL)sdl_startWithSession:(EASession *)session; -@end QuickSpecBegin(SDLIAPSessionSpec) describe(@"SDLIAPSession", ^{ - __block SDLIAPSession *iapSession = nil; __block EAAccessory *mockAccessory = nil; - __block NSString *protocol = nil; describe(@"Initialization", ^{ + __block SDLIAPSession *testSession = nil; + beforeEach(^{ mockAccessory = [EAAccessory.class sdlCoreMock]; + testSession = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:ControlProtocolString]; }); - it(@"Should init correctly with a control protocol string", ^{ - protocol = @"com.smartdevicelink.prot0"; - iapSession = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:protocol]; - - expect(iapSession.isDataSession).to(beFalse()); - }); - - it(@"Should init correctly with a multisession protocol string", ^{ - protocol = @"com.smartdevicelink.multisession"; - iapSession = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:protocol]; - - expect(iapSession.isDataSession).to(beTrue()); - }); - - it(@"Should init correctly with a legacy protocol string", ^{ - protocol = @"com.ford.sync.prot0"; - iapSession = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:protocol]; - - expect(iapSession.isDataSession).to(beTrue()); - }); - - it(@"Should init correctly with a indexed protocol string", ^{ - protocol = @"com.smartdevicelink.prot1"; - iapSession = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:protocol]; - - expect(iapSession.isDataSession).to(beTrue()); - }); - - afterEach(^{ - expect(iapSession).toNot(beNil()); - expect(iapSession.protocol).to(match(protocol)); - expect(iapSession.accessory).to(equal(mockAccessory)); - expect(iapSession.canceledSemaphore).toNot(beNil()); - expect(iapSession.sendDataQueue).toNot(beNil()); - expect(iapSession.isInputStreamOpen).to(beFalse()); - expect(iapSession.isOutputStreamOpen).to(beFalse()); - }); - }); - - describe(@"When starting a session", ^{ - __block SDLStreamDelegate *streamDelegate = nil; - __block NSInputStream *inputStream = nil; - __block NSOutputStream *outputStream = nil; - - describe(@"unsuccessfully", ^{ - beforeEach(^{ - protocol = @"com.smartdevicelink.multisession"; - mockAccessory = [EAAccessory.class sdlCoreMock]; - iapSession = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:protocol]; - streamDelegate = [[SDLStreamDelegate alloc] init]; - iapSession.streamDelegate = streamDelegate; - }); - - it(@"the start method should return false if a session cannot be created", ^{ - BOOL success = [iapSession sdl_startWithSession:nil]; - expect(success).to(beFalse()); - expect(iapSession.ioStreamThread).to(beNil()); - expect(iapSession.isInputStreamOpen).to(beFalse()); - expect(iapSession.isOutputStreamOpen).to(beFalse()); - }); - }); - - describe(@"successfully", ^{ - beforeEach(^{ - inputStream = OCMClassMock([NSInputStream class]); - outputStream = OCMClassMock([NSOutputStream class]); - }); - - context(@"if creating a control session", ^{ - beforeEach(^{ - protocol = @"com.smartdevicelink.prot0"; - mockAccessory = [EAAccessory.class sdlCoreMock]; - iapSession = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:protocol]; - streamDelegate = [[SDLStreamDelegate alloc] init]; - iapSession.streamDelegate = streamDelegate; - - expect(iapSession.isDataSession).to(beFalse()); - }); - - it(@"should establish a control session ", ^{ - EASession *mockSession = [EASession.class mockSessionWithAccessory:mockAccessory protocolString:protocol inputStream:inputStream outputStream:outputStream]; - iapSession.easession = mockSession; - - BOOL success = [iapSession sdl_startWithSession:mockSession]; - expect(success).to(beTrue()); - expect(iapSession.ioStreamThread).to(beNil()); - expect(iapSession.easession.inputStream).toNot(beNil()); - expect(iapSession.easession.outputStream).toNot(beNil()); - }); - }); - - context(@"if creating a data session", ^{ - beforeEach(^{ - protocol = @"com.smartdevicelink.multisession"; - mockAccessory = [EAAccessory.class sdlCoreMock]; - iapSession = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:protocol]; - streamDelegate = [[SDLStreamDelegate alloc] init]; - iapSession.streamDelegate = streamDelegate; - - expect(iapSession.isDataSession).to(beTrue()); - }); - - it(@"should establish a data session ", ^{ - EASession *mockSession = [EASession.class mockSessionWithAccessory:mockAccessory protocolString:protocol inputStream:inputStream outputStream:outputStream]; - iapSession.easession = mockSession; - BOOL success = [iapSession sdl_startWithSession:mockSession]; - expect(success).to(beTrue()); - expect(iapSession.ioStreamThread).toNot(beNil()); - // The streams are opened in the `sdl_streamHasSpaceHandler` method - expect(iapSession.easession.inputStream).toNot(beNil()); - expect(iapSession.easession.outputStream).toNot(beNil()); - }); - }); + it(@"should init correctly", ^{ + expect(testSession.accessory).to(equal(mockAccessory)); + expect(testSession.protocolString).to(equal(ControlProtocolString)); + expect(testSession.isInputStreamOpen).to(beFalse()); + expect(testSession.isOutputStreamOpen).to(beFalse()); }); - afterEach(^{ - [iapSession stop]; - - expect(iapSession.easession).to(beNil()); - expect(iapSession.ioStreamThread).to(beNil()); + it(@"should get correctly", ^{ + expect(testSession.isStopped).to(beTrue()); + expect(testSession.connectionID).to(equal(0)); + expect(testSession.isSessionInProgress).to(beFalse()); }); }); }); diff --git a/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPTransportSpec.m b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPTransportSpec.m index 7223c8d0b..0f39c0dff 100644 --- a/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPTransportSpec.m +++ b/SmartDeviceLinkTests/TransportSpecs/iAP/SDLIAPTransportSpec.m @@ -6,23 +6,32 @@ // Copyright © 2019 smartdevicelink. All rights reserved. // -#import #import #import #import #import "EAAccessory+OCMock.m" +#import "SDLIAPConstants.h" #import "SDLIAPTransport.h" #import "SDLIAPSession.h" #import "SDLTimer.h" +#import "SDLIAPControlSession.h" +#import "SDLIAPControlSessionDelegate.h" +#import "SDLIAPDataSession.h" +#import "SDLIAPDataSessionDelegate.h" @interface SDLIAPTransport () + +@property (nullable, strong, nonatomic) SDLIAPControlSession *controlSession; +@property (nullable, strong, nonatomic) SDLIAPDataSession *dataSession; + @property (assign, nonatomic) int retryCounter; @property (assign, nonatomic) BOOL sessionSetupInProgress; +@property (assign, nonatomic) BOOL transportDestroyed; @property (nonatomic, assign) UIBackgroundTaskIdentifier backgroundTaskId; -@property (nullable, strong, nonatomic) SDLTimer *protocolIndexTimer; @property (assign, nonatomic) BOOL accessoryConnectDuringActiveSession; -- (BOOL)sdl_isSessionActive:(SDLIAPSession *)session newAccessory:(EAAccessory *)newAccessory; +- (BOOL)sdl_isDataSessionActive:(nullable SDLIAPDataSession *)dataSession newAccessory:(EAAccessory *)newAccessory; + @end QuickSpecBegin(SDLIAPTransportSpec) @@ -43,73 +52,144 @@ - (BOOL)sdl_isSessionActive:(SDLIAPSession *)session newAccessory:(EAAccessory * it(@"Should init correctly", ^{ expect(transport.delegate).toNot(beNil()); expect(transport.controlSession).to(beNil()); - expect(transport.session).to(beNil()); + expect(transport.dataSession).to(beNil()); expect(transport.sessionSetupInProgress).to(beFalse()); - expect(transport.session).to(beNil()); - expect(transport.controlSession).to(beNil()); expect(transport.retryCounter).to(equal(0)); - expect(transport.protocolIndexTimer).to(beNil()); expect(transport.accessoryConnectDuringActiveSession).to(beFalse()); }); }); - describe(@"When an accessory connects while a session is not open", ^{ - beforeEach(^{ - transport.session = nil; + describe(@"When checking if the data session is active ", ^{ + it(@"should return that the data session is not active if the data session is nil", ^{ + transport.dataSession = nil; + + BOOL sessionInProgress = [transport sdl_isDataSessionActive:transport.dataSession newAccessory:mockAccessory]; + expect(sessionInProgress).to(beFalse()); }); - it(@"If no session is open, it should create a session when an accessory connects", ^{ - BOOL sessionInProgress = [transport sdl_isSessionActive:transport.session newAccessory:mockAccessory]; + it(@"should return that the data session is not active if the data session is not inprogress", ^{ + SDLIAPDataSession *mockDataSession = OCMClassMock([SDLIAPDataSession class]); + OCMStub([mockDataSession isSessionInProgress]).andReturn(NO); + + BOOL sessionInProgress = [transport sdl_isDataSessionActive:transport.dataSession newAccessory:mockAccessory]; expect(sessionInProgress).to(beFalse()); }); - }); - describe(@"When an accessory connects when a session is already open", ^{ - beforeEach(^{ - transport.session = OCMClassMock([SDLIAPSession class]); + it(@"should return that the data session is not active if the data session and the new accessory have matching connection ids", ^{ + SDLIAPDataSession *mockDataSession = OCMClassMock([SDLIAPDataSession class]); + OCMStub([mockDataSession isSessionInProgress]).andReturn(YES); + OCMStub([mockDataSession connectionID]).andReturn(5); + + BOOL sessionInProgress = [transport sdl_isDataSessionActive:mockDataSession newAccessory:mockAccessory]; + expect(sessionInProgress).to(beFalse()); }); - it(@"If a session is in progress", ^{ - BOOL sessionInProgress = [transport sdl_isSessionActive:transport.session newAccessory:mockAccessory]; + it(@"should return that the data session is active if the data session and the new accessory have different connection ids", ^{ + SDLIAPDataSession *mockDataSession = OCMClassMock([SDLIAPDataSession class]); + OCMStub([mockDataSession isSessionInProgress]).andReturn(YES); + OCMStub([mockDataSession connectionID]).andReturn(96); + + BOOL sessionInProgress = [transport sdl_isDataSessionActive:mockDataSession newAccessory:mockAccessory]; expect(sessionInProgress).to(beTrue()); }); }); - describe(@"When an accessory disconnects while a data session is open", ^{ + describe(@"When an accessory disconnects", ^{ + __block NSNotification *accessoryDisconnectedNotification = nil; + beforeEach(^{ - transport.controlSession = nil; - transport.session = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:@"com.smartdevicelink.multisession"]; - transport.accessoryConnectDuringActiveSession = YES; - NSNotification *accessoryDisconnectedNotification = [[NSNotification alloc] initWithName:EAAccessoryDidDisconnectNotification object:nil userInfo:@{EAAccessoryKey: mockAccessory}]; - [[NSNotificationCenter defaultCenter] postNotification:accessoryDisconnectedNotification]; + accessoryDisconnectedNotification = [[NSNotification alloc] initWithName:EAAccessoryDidDisconnectNotification object:nil userInfo:@{EAAccessoryKey: mockAccessory}]; }); - it(@"It should close the open data session", ^{ - expect(transport.session).to(beNil()); - expect(transport.controlSession).to(beNil()); - expect(transport.retryCounter).to(equal(0)); - expect(transport.accessoryConnectDuringActiveSession).to(beFalse()); - expect(transport.sessionSetupInProgress).to(beFalse()); + context(@"If an accessory disconnects during an active session", ^{ + beforeEach(^{ + transport.accessoryConnectDuringActiveSession = YES; + [[NSNotificationCenter defaultCenter] postNotification:accessoryDisconnectedNotification]; + }); + + it(@"should set accessoryConnectDuringActiveSession to NO when the accessory disconnects", ^{ + expect(transport.accessoryConnectDuringActiveSession).to(beFalse()); + }); }); - }); - describe(@"When an accessory disconnects while a control session is open", ^{ - beforeEach(^{ - transport.controlSession = [[SDLIAPSession alloc] initWithAccessory:mockAccessory forProtocol:@"com.smartdevicelink.prot0"];; - transport.session = nil; - transport.accessoryConnectDuringActiveSession = NO; - transport.sessionSetupInProgress = YES; - transport.retryCounter = 1; - NSNotification *accessoryDisconnectedNotification = [[NSNotification alloc] initWithName:EAAccessoryDidDisconnectNotification object:nil userInfo:@{EAAccessoryKey: mockAccessory}]; - [[NSNotificationCenter defaultCenter] postNotification:accessoryDisconnectedNotification]; + context(@"If an accessory disconnects while no session is active", ^{ + beforeEach(^{ + transport.accessoryConnectDuringActiveSession = NO; + [[NSNotificationCenter defaultCenter] postNotification:accessoryDisconnectedNotification]; + }); + + it(@"should leave accessoryConnectDuringActiveSession at NO when the accessory disconnects", ^{ + expect(transport.accessoryConnectDuringActiveSession).to(beFalse()); + }); }); - it(@"It should close the open control session", ^{ - expect(transport.session).to(beNil()); - expect(transport.controlSession).to(beNil()); - expect(transport.retryCounter).to(equal(0)); - expect(transport.accessoryConnectDuringActiveSession).to(beFalse()); - expect(transport.sessionSetupInProgress).to(beFalse()); + context(@"When a neither a data or control session is open", ^{ + beforeEach(^{ + transport.dataSession = nil; + transport.controlSession = nil; + + [[NSNotificationCenter defaultCenter] postNotification:accessoryDisconnectedNotification]; + }); + + it(@"It should cleanup on disconnect", ^{ + expect(transport.retryCounter).to(equal(0)); + expect(transport.sessionSetupInProgress).to(beFalse()); + expect(transport.transportDestroyed).to(beFalse()); + }); + }); + + context(@"When a data session is open", ^{ + __block SDLIAPDataSession *mockDataSession = nil; + + beforeEach(^{ + mockDataSession = OCMClassMock([SDLIAPDataSession class]); + OCMStub([mockDataSession isSessionInProgress]).andReturn(YES); + transport.dataSession = mockDataSession; + transport.controlSession = nil; + + [[NSNotificationCenter defaultCenter] postNotification:accessoryDisconnectedNotification]; + }); + + it(@"It should cleanup on disconnect", ^{ + expect(transport.retryCounter).to(equal(0)); + expect(transport.sessionSetupInProgress).to(beFalse()); + expect(transport.transportDestroyed).to(beTrue()); + }); + + it(@"It should close and destroy data session", ^{ + OCMVerify([mockDataSession destroySession]); + }); + + it(@"It should notify the lifecycle manager that the transport disconnected ", ^{ + OCMVerify([mockTransportDelegate onTransportDisconnected]); + }); + }); + + describe(@"When a control session is open", ^{ + __block SDLIAPControlSession *mockControlSession = nil; + + beforeEach(^{ + mockControlSession = OCMClassMock([SDLIAPControlSession class]); + OCMStub([mockControlSession isSessionInProgress]).andReturn(YES); + transport.controlSession = mockControlSession; + transport.dataSession = nil; + + [[NSNotificationCenter defaultCenter] postNotification:accessoryDisconnectedNotification]; + }); + + it(@"It should cleanup on disconnect", ^{ + expect(transport.retryCounter).to(equal(0)); + expect(transport.sessionSetupInProgress).to(beFalse()); + expect(transport.transportDestroyed).to(beFalse()); + }); + + it(@"It should close and destroy data session", ^{ + OCMVerify([mockControlSession destroySession]); + }); + + it(@"Should not tell the delegate that the transport closed", ^{ + OCMReject([mockTransportDelegate onTransportDisconnected]); + }); }); }); }); diff --git a/bson_c_lib b/bson_c_lib index 82f9e9dcb..5e79ef239 160000 --- a/bson_c_lib +++ b/bson_c_lib @@ -1 +1 @@ -Subproject commit 82f9e9dcb1f49811ec678a6d19d4f90da831ac0f +Subproject commit 5e79ef239b88246504ca8efa017479bf417c5164 diff --git a/docs/Classes.html b/docs/Classes.html index 642fe7a4a..f8498c085 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -21,6 +21,7 @@

Section Contents

  • SDLArtwork
  • SDLAudioControlCapabilities
  • SDLAudioControlData
  • +
  • SDLAudioFile
  • SDLAudioPassThruCapabilities
  • SDLAudioStreamManager
  • SDLBeltStatus
  • @@ -1103,6 +1104,70 @@

    Swift

    +

    + SDLAudioFile +

    + +

    Undocumented

    + + See more + + +

    Objective-C

    +
    @interface SDLAudioFile : NSObject
    +
    +/**
    + If initialized with a file URL, the file URL it came from
    + */
    +@property (nullable, copy, nonatomic, readonly) NSURL *inputFileURL;
    +
    +/**
    + If initialized with a file URL, where the transcoder should produce the transcoded PCM audio file
    + */
    +@property (nullable, copy, nonatomic, readonly) NSURL *outputFileURL;
    +
    +/**
    + In seconds. UINT32_MAX if unknown.
    + */
    +@property (assign, nonatomic) UInt32 estimatedDuration;
    +
    +/**
    + The PCM audio data to be transferred and played
    + */
    +@property (copy, nonatomic, readonly) NSData *data;
    +
    +/**
    + The size of the PCM audio data in bytes
    + */
    +@property (assign, nonatomic, readonly) unsigned long long fileSize;
    +
    +/**
    + Initialize an audio file to be queued and played
    +
    + @param inputURL The file that exists on the device to be transcoded and queued
    + @param outputURL The target URL that the transcoded file will be output to
    + @param duration The duration of the file
    + @return The audio file object
    + */
    +- (instancetype)initWithInputFileURL:(NSURL *)inputURL outputFileURL:(NSURL *)outputURL estimatedDuration:(UInt32)duration;
    +
    +/**
    + Initialize a buffer of PCM audio data to be queued and played
    +
    + @param data The PCM audio data buffer
    + @return The audio file object
    + */
    +- (instancetype)initWithData:(NSData *)data;
    +
    +@end
    + + +

    Swift

    +
    class SDLAudioFile : NSObject
    + + + +

    SDLAudioPassThruCapabilities

    @@ -1149,7 +1214,7 @@

    Objective-C

    /** The queue of audio files that will be played in sequence */ -@property (copy, nonatomic, readonly) NSArray<SDLAudioFile *> *queue; +@property (copy, nonatomic, readonly) NSArray<SDLAudioFile *> *queue; /** Init should only occur with dependencies. use `initWithManager:` @@ -1177,6 +1242,22 @@

    Objective-C

    */
    - (void)pushWithFileURL:(NSURL *)fileURL; +/** + Push a new audio buffer onto the queue. Call `playNextWhenReady` to start playing the pushed audio buffer. + + This data must be of the required PCM format. See SDLSystemCapabilityManager.pcmStreamCapability and SDLAudioPassThruCapability.h. + + This is *an example* of a PCM format used by some head units: + - audioType: PCM + - samplingRate: 16kHZ + - bitsPerSample: 16 bits + + There is generally only one channel to the data. + + @param data The audio buffer to be pushed onto the queue + */ +- (void)pushWithData:(NSData *)data; + /** Play the next item in the queue. If an item is currently playing, it will continue playing and this item will begin playing after it is completed. @@ -4418,6 +4499,44 @@

    Objective-C

    */
    - (void)sendSequentialRequests:(NSArray<SDLRPCRequest *> *)requests progressHandler:(nullable SDLMultipleSequentialRequestProgressHandler)progressHandler completionHandler:(nullable SDLMultipleRequestCompletionHandler)completionHandler NS_SWIFT_NAME(sendSequential(requests:progressHandler:completionHandler:)); + +#pragma mark - RPC Subscriptions + +typedef void (^SDLRPCUpdatedBlock) (__kindof SDLRPCMessage *message); + +/** + * Subscribe to callbacks about a particular RPC request, notification, or response with a block callback. + * + * @param rpcName The name of the RPC request, response, or notification to subscribe to. + * @param block The block that will be called every time an RPC of the name and type specified is received. + * @return An object that can be passed to `unsubscribeFromRPC:ofType:withObserver:` to unsubscribe the block. + */ +- (id)subscribeToRPC:(SDLNotificationName)rpcName withBlock:(SDLRPCUpdatedBlock)block NS_SWIFT_NAME(subscribe(to:block:)); + +/** + * Subscribe to callbacks about a particular RPC request, notification, or response with a selector callback. + * + * The selector supports the following parameters: + * + * 1. Zero parameters e.g. `- (void)registerAppInterfaceResponse` + * 2. One parameter e.g. `- (void)registerAppInterfaceResponse:(NSNotification *)notification;` + * + * Note that using this method to get a response instead of the `sendRequest:withResponseHandler:` method of getting a response, you will not be notifed of any `SDLGenericResponse` errors where the head unit doesn't understand the request. + * + * @param rpcName The name of the RPC request, response, or notification to subscribe to. + * @param observer The object that will have its selector called every time an RPC of the name and type specified is received. + * @param selector The selector on `observer` that will be called every time an RPC of the name and type specified is received. + */ +- (void)subscribeToRPC:(SDLNotificationName)rpcName withObserver:(id)observer selector:(SEL)selector NS_SWIFT_NAME(subscribe(to:observer:selector:)); + +/** + * Unsubscribe to callbacks about a particular RPC request, notification, or response. + * + * @param rpcName The name of the RPC request, response, or notification to unsubscribe from. + * @param observer The object representing a block callback or selector callback to be unsubscribed + */ +- (void)unsubscribeFromRPC:(SDLNotificationName)rpcName withObserver:(id)observer NS_SWIFT_NAME(unsubscribe(from:observer:)); + @end @@ -6178,11 +6297,7 @@

    Objective-C

    -
    @interface SDLRPCMessage : SDLRPCStruct <NSCopying> {
    -    NSMutableDictionary<NSString *, id> *function;
    -    NSMutableDictionary<NSString *, id> *parameters;
    -    NSString *messageType;
    -}
    +  
    @interface SDLRPCMessage : SDLRPCStruct <NSCopying>
     
     /**
      *  Convenience init
    @@ -6190,29 +6305,21 @@ 

    Objective-C

    * @param name The name of the message * @return A SDLRPCMessage object */
    -- (instancetype)initWithName:(NSString *)name; - -/** - * Convenience init - * - * @param dict A dictionary with the format @{messageType: @{parameters}} - * @return A SDLRPCMessage object - */ -- (instancetype)initWithDictionary:(NSDictionary<NSString *, id> *)dict; +- (instancetype)initWithName:(NSString *)name __deprecated_msg("This is not intended to be a public facing API"); /** * Returns the function name. * * @return The function name */ -- (nullable NSString *)getFunctionName; +- (nullable NSString *)getFunctionName __deprecated_msg("Call the .name property instead"); /** * Sets the function name. * * @param functionName The function name */ -- (void)setFunctionName:(nullable NSString *)functionName; +- (void)setFunctionName:(nullable NSString *)functionName __deprecated_msg("This is not intended to be a public facing API"); /** * Returns the value associated with the provided key. If the key does not exist, null is returned. @@ -6220,7 +6327,7 @@

    Objective-C

    * @param functionName The key name * @return The value associated with the function name */
    -- (nullable NSObject *)getParameters:(NSString *)functionName; +- (nullable NSObject *)getParameters:(NSString *)functionName __deprecated_msg("Call the .parameters property instead"); /** * Sets a key-value pair using the function name as the key. @@ -6228,7 +6335,7 @@

    Objective-C

    * @param functionName The name for the key * @param value The value associated with the function name */
    -- (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value; +- (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value __deprecated_msg("This is not intended to be a public facing API"); /** * The data in the message @@ -6240,6 +6347,11 @@

    Objective-C

    */
    @property (strong, nonatomic, readonly) NSString *name; +/** + The JSON-RPC parameters + */ +@property (strong, nonatomic, readonly) NSMutableDictionary<NSString *, id> *parameters; + /** * The type of data in the message */ @@ -6406,9 +6518,9 @@

    Objective-C

    -
    @interface SDLRPCStruct : NSObject <NSCopying> {
    -    NSMutableDictionary<NSString *, id> *store;
    -}
    +  
    @interface SDLRPCStruct : NSObject <NSCopying>
    +
    +@property (strong, nonatomic, readonly) NSMutableDictionary<NSString *, id> *store;
     
     /**
      *  Convenience init
    @@ -6416,14 +6528,7 @@ 

    Objective-C

    * @param dict A dictionary * @return A SDLRPCStruct object */
    -- (instancetype)initWithDictionary:(NSDictionary<NSString *, id> *)dict; - -/** - * Init - * - * @return A SDLRPCStruct object - */ -- (instancetype)init; +- (instancetype)initWithDictionary:(NSDictionary<NSString *, id> *)dict __deprecated_msg("This is not intended for public use"); /** * Converts struct to JSON formatted data @@ -6431,7 +6536,7 @@

    Objective-C

    * @param version The protocol version * @return JSON formatted data */
    -- (NSDictionary<NSString *, id> *)serializeAsDictionary:(Byte)version; +- (NSDictionary<NSString *, id> *)serializeAsDictionary:(Byte)version __deprecated_msg("This is not intended for public use"); @end
    @@ -6779,6 +6884,17 @@

    Objective-C

    */ @property (copy, nonatomic) NSArray<SDLMenuCell *> *menu; +/** +Change the mode of the dynamic menu updater to be enabled, disabled, or enabled on known compatible head units. + +The current status for dynamic menu updates. A dynamic menu update allows for smarter building of menu changes. If this status is set to `SDLDynamicMenuUpdatesModeForceOn`, menu updates will only create add commands for new items and delete commands for items no longer appearing in the menu. This helps reduce possible RPCs failures as there will be significantly less commands sent to the HMI. + +If set to `SDLDynamicMenuUpdatesModeForceOff`, menu updates will work the legacy way. This means when a new menu is set the entire old menu is deleted and add commands are created for every item regarldess if the item appears in both the old and new menu. This method is RPCs heavy and may cause some failures when creating and updating large menus. + + We recommend using either `SDLDynamicMenuUpdatesModeOnWithCompatibility` or `SDLDynamicMenuUpdatesModeForceOn`. `SDLDynamicMenuUpdatesModeOnWithCompatibility` turns dynamic updates off for head units that we know have poor compatibility with dynamic updates (e.g. they have bugs that cause menu items to not be placed correctly). + */ +@property (assign, nonatomic) SDLDynamicMenuUpdatesMode dynamicMenuUpdatesMode; + /** The current list of voice commands available for the user to speak and be recognized by the IVI's voice recognition engine. */ @@ -8197,7 +8313,9 @@

    Objective-C

    - (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer presentationTimestamp:(CMTime)presentationTimestamp; /** - * This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback + * This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback. + * + * NOTE: See the `.audioManager` (SDLAudioStreamManager) `pushWithData:` method for a more modern API. * * @param audioData The data in PCM audio format, to be played * @@ -8479,171 +8597,13 @@

    SDLSystemCapabilityManager

    -

    Undocumented

    +

    A manager that handles updating and subscribing to SDL capabilities.

    See more

    Objective-C

    -
    @interface SDLSystemCapabilityManager : NSObject
    -
    -/**
    - * @see SDLDisplayCapabilities
    - *
    - * Optional
    - */
    -@property (nullable, strong, nonatomic, readonly) SDLDisplayCapabilities *displayCapabilities;
    -
    -/**
    - * @see SDLHMICapabilities
    - *
    - * Optional
    - */
    -@property (nullable, strong, nonatomic, readonly) SDLHMICapabilities *hmiCapabilities;
    -
    -/**
    - * If returned, the platform supports on-screen SoftButtons
    - *
    - * @see SDLSoftButtonCapabilities
    - *
    - * Optional, Array of length 1 - 100, of SDLSoftButtonCapabilities
    - */
    -@property (nullable, copy, nonatomic, readonly) NSArray<SDLSoftButtonCapabilities *> *softButtonCapabilities;
    -
    -/**
    - * @see SDLButtonCapabilities
    - *
    - * Optional, Array of length 1 - 100, of SDLButtonCapabilities
    - */
    -@property (nullable, copy, nonatomic, readonly) NSArray<SDLButtonCapabilities *> *buttonCapabilities;
    -
    -/**
    - * If returned, the platform supports custom on-screen Presets
    - *
    - * @see SDLPresetBankCapabilities
    - *
    - * Optional
    - */
    -@property (nullable, strong, nonatomic, readonly) SDLPresetBankCapabilities *presetBankCapabilities;
    -
    -/**
    - * @see SDLHMIZoneCapabilities
    - *
    - * Optional, Array of length 1 - 100, of SDLHMIZoneCapabilities
    - */
    -@property (nullable, copy, nonatomic, readonly) NSArray<SDLHMIZoneCapabilities> *hmiZoneCapabilities;
    -
    -/**
    - * @see SDLSpeechCapabilities
    - *
    - * Optional, Array of length 1 - 100, of SDLSpeechCapabilities
    - */
    -@property (nullable, copy, nonatomic, readonly) NSArray<SDLSpeechCapabilities> *speechCapabilities;
    -
    -/**
    - * @see SDLPrerecordedSpeech
    - *
    - * Optional, Array of length 1 - 100, of SDLPrerecordedSpeech
    - */
    -@property (nullable, copy, nonatomic, readonly) NSArray<SDLPrerecordedSpeech> *prerecordedSpeechCapabilities;
    -
    -/**
    - * @see SDLVRCapabilities
    - *
    - * True if the head unit supports voice recognition; false if not.
    - */
    -@property (nonatomic, assign, readonly) BOOL vrCapability;
    -
    -/**
    - * @see SDLAudioPassThruCapabilities
    - *
    - * Optional, Array of length 1 - 100, of SDLAudioPassThruCapabilities
    - */
    -@property (nullable, copy, nonatomic, readonly) NSArray<SDLAudioPassThruCapabilities *> *audioPassThruCapabilities;
    -
    -/**
    - * @see SDLAudioPassThruCapabilities
    - *
    - * Optional, Array of length 1 - 100, of SDLAudioPassThruCapabilities
    - */
    -@property (nullable, strong, nonatomic, readonly) SDLAudioPassThruCapabilities *pcmStreamCapability;
    -
    -/**
    - * If returned, the platform supports app services
    - *
    - * @see SDLAppServicesCapabilities
    - *
    - * Optional
    - */
    -@property (nullable, strong, nonatomic, readonly) SDLAppServicesCapabilities *appServicesCapabilities;
    -
    -/**
    - * If returned, the platform supports navigation
    - *
    - * @see SDLNavigationCapability
    - *
    - * Optional
    - */
    -@property (nullable, strong, nonatomic, readonly) SDLNavigationCapability *navigationCapability;
    -
    -/**
    - * If returned, the platform supports making phone calls
    - *
    - * @see SDLPhoneCapability
    - *
    - * Optional
    - */
    -@property (nullable, strong, nonatomic, readonly) SDLPhoneCapability *phoneCapability;
    -
    -/**
    - * If returned, the platform supports video streaming
    - *
    - * @see SDLVideoStreamingCapability
    - *
    - * Optional
    - */
    -@property (nullable, strong, nonatomic, readonly) SDLVideoStreamingCapability *videoStreamingCapability;
    -
    -/**
    - * If returned, the platform supports remote control capabilities
    - *
    - * @see SDLRemoteControlCapabilities
    - *
    - * Optional
    - */
    -@property (nullable, strong, nonatomic, readonly) SDLRemoteControlCapabilities *remoteControlCapability;
    -
    -/**
    - *  Init is unavailable. Dependencies must be injected using initWithConnectionManager:
    - *
    - *  @return nil
    - */
    -- (instancetype)init NS_UNAVAILABLE;
    -
    -/**
    - *  Creates a new system capability manager with a specified connection manager
    - *
    - *  @param manager A connection manager to use to forward on RPCs
    - *
    - *  @return An instance of SDLSystemCapabilityManager
    - */
    -- (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)manager NS_DESIGNATED_INITIALIZER;
    -
    -/**
    - *  Stops the manager. This method is used internally.
    - */
    -- (void)stop;
    -
    -/**
    - *  Retrieves a capability type from the remote system. This function must be called in order to retrieve the values for `navigationCapability`, `phoneCapability`, `videoStreamingCapability`, `remoteControlCapability`, and `appServicesCapabilities`. If you do not call this method first, those values will be nil. After calling this method, assuming there is no error in the handler, you may retrieve the capability you requested from the manager within the handler.
    - *
    - *  @param type The type of capability to retrieve
    - *  @param handler The handler to be called when the retrieval is complete
    - */
    -- (void)updateCapabilityType:(SDLSystemCapabilityType)type completionHandler:(SDLUpdateCapabilityHandler)handler;
    -
    -
    -@end
    +
    @interface SDLSystemCapabilityManager : NSObject

    Swift

    diff --git a/docs/Classes/SDLAudioFile.html b/docs/Classes/SDLAudioFile.html new file mode 100644 index 000000000..c9b151dbe --- /dev/null +++ b/docs/Classes/SDLAudioFile.html @@ -0,0 +1,171 @@ +

    SDLAudioFile Class Reference

    + +

    Section Contents

    + + + +

    Overview

    + +

    Undocumented

    + + +
    +

    + inputFileURL +

    + +

    If initialized with a file URL, the file URL it came from

    + + + +

    Objective-C

    +
    @property (readonly, copy, nonatomic, nullable) NSURL *inputFileURL;
    + + +

    Swift

    +
    var inputFileURL: URL? { get }
    + + + + +

    + outputFileURL +

    + +

    If initialized with a file URL, where the transcoder should produce the transcoded PCM audio file

    + + + +

    Objective-C

    +
    @property (readonly, copy, nonatomic, nullable) NSURL *outputFileURL;
    + + +

    Swift

    +
    var outputFileURL: URL? { get }
    + + + + +

    + estimatedDuration +

    + +

    In seconds. UINT32_MAX if unknown.

    + + + +

    Objective-C

    +
    @property (assign, readwrite, nonatomic) UInt32 estimatedDuration;
    + + +

    Swift

    +
    var estimatedDuration: UInt32 { get set }
    + + + + +

    + data +

    + +

    The PCM audio data to be transferred and played

    + + + +

    Objective-C

    +
    @property (readonly, copy, nonatomic) NSData *_Nonnull data;
    + + +

    Swift

    +
    var data: Data { get }
    + + + + +

    + fileSize +

    + +

    The size of the PCM audio data in bytes

    + + + +

    Objective-C

    +
    @property (readonly, assign, nonatomic) unsigned long long fileSize;
    + + +

    Swift

    +
    var fileSize: UInt64 { get }
    + + + + +

    + -initWithInputFileURL:outputFileURL:estimatedDuration: +

    + +

    Initialize an audio file to be queued and played

    + + + +

    Objective-C

    +
    - (nonnull instancetype)initWithInputFileURL:(nonnull NSURL *)inputURL
    +                               outputFileURL:(nonnull NSURL *)outputURL
    +                           estimatedDuration:(UInt32)duration;
    + + +

    Swift

    +
    init(inputFileURL inputURL: URL, outputFileURL outputURL: URL, estimatedDuration duration: UInt32)
    + + + +

    Parameters

    +
    +
    inputURL
    +

    The file that exists on the device to be transcoded and queued

    +
    outputURL
    +

    The target URL that the transcoded file will be output to

    +
    duration
    +

    The duration of the file

    +
    +
    +

    Return Value

    +

    The audio file object

    +
    + +

    + -initWithData: +

    + +

    Initialize a buffer of PCM audio data to be queued and played

    + + + +

    Objective-C

    +
    - (nonnull instancetype)initWithData:(nonnull NSData *)data;
    + + +

    Swift

    +
    init(data: Data)
    + + + +

    Parameters

    +
    +
    data
    +

    The PCM audio data buffer

    +
    +
    +

    Return Value

    +

    The audio file object

    +
    + +
    diff --git a/docs/Classes/SDLAudioStreamManager.html b/docs/Classes/SDLAudioStreamManager.html index 4e27b955c..7ccd87607 100644 --- a/docs/Classes/SDLAudioStreamManager.html +++ b/docs/Classes/SDLAudioStreamManager.html @@ -9,6 +9,7 @@

    Section Contents

  • -init
  • -initWithManager:
  • -pushWithFileURL:
  • +
  • -pushWithData:
  • -playNextWhenReady
  • -stop
  • @@ -62,11 +63,11 @@

    Objective-C

    -
    @property (readonly, copy, nonatomic) NSArray<SDLAudioFile *> *_Nonnull queue;
    +
    @property (readonly, copy, nonatomic) NSArray<SDLAudioFile *> *_Nonnull queue;

    Swift

    -
    var queue: [SDLAudioFile] { get }
    +
    var queue: [SDLAudioFile] { get }
    @@ -148,6 +149,41 @@

    Parameters

    File URL to convert

    +

    + -pushWithData: +

    + +

    Push a new audio buffer onto the queue. Call playNextWhenReady to start playing the pushed audio buffer.

    + +

    This data must be of the required PCM format. See SDLSystemCapabilityManager.pcmStreamCapability and SDLAudioPassThruCapability.h.

    + +

    This is an example of a PCM format used by some head units:

    + +
      +
    • audioType: PCM
    • +
    • samplingRate: 16kHZ
    • +
    • bitsPerSample: 16 bits
    • +
    + +

    There is generally only one channel to the data.

    + + + +

    Objective-C

    +
    - (void)pushWithData:(nonnull NSData *)data;
    + + +

    Swift

    +
    func push(with data: Data)
    + + + +

    Parameters

    +
    +
    data
    +

    The audio buffer to be pushed onto the queue

    +
    +

    -playNextWhenReady

    diff --git a/docs/Classes/SDLManager.html b/docs/Classes/SDLManager.html index a13ab7752..971756bf0 100644 --- a/docs/Classes/SDLManager.html +++ b/docs/Classes/SDLManager.html @@ -25,6 +25,9 @@

    Section Contents

  • -sendRequest:withResponseHandler:
  • -sendRequests:progressHandler:completionHandler:
  • -sendSequentialRequests:progressHandler:completionHandler:
  • +
  • -subscribeToRPC:withBlock:
  • +
  • -subscribeToRPC:withObserver:selector:
  • +
  • -unsubscribeFromRPC:withObserver:
  • Overview

    @@ -494,4 +497,98 @@

    Parameters

    A handler to call when all requests have been responded to

    +

    + -subscribeToRPC:withBlock: +

    + +

    Subscribe to callbacks about a particular RPC request, notification, or response with a block callback.

    + + + +

    Objective-C

    +
    - (nonnull id)subscribeToRPC:(nonnull SDLNotificationName)rpcName
    +                   withBlock:(nonnull SDLRPCUpdatedBlock)block;
    + + +

    Swift

    +
    func subscribe(to rpcName: NSNotification.Name, block: @escaping SDLRPCUpdatedBlock) -> Any
    + + + +

    Parameters

    +
    +
    rpcName
    +

    The name of the RPC request, response, or notification to subscribe to.

    +
    block
    +

    The block that will be called every time an RPC of the name and type specified is received.

    +
    +
    +

    Return Value

    +

    An object that can be passed to unsubscribeFromRPC:ofType:withObserver: to unsubscribe the block.

    +
    + +

    + -subscribeToRPC:withObserver:selector: +

    + +

    Subscribe to callbacks about a particular RPC request, notification, or response with a selector callback.

    + +

    The selector supports the following parameters:

    + +
      +
    1. Zero parameters e.g. - (void)registerAppInterfaceResponse
    2. +
    3. One parameter e.g. - (void)registerAppInterfaceResponse:(NSNotification *)notification;
    4. +
    + +

    Note that using this method to get a response instead of the sendRequest:withResponseHandler: method of getting a response, you will not be notifed of any SDLGenericResponse errors where the head unit doesn’t understand the request.

    + + + +

    Objective-C

    +
    - (void)subscribeToRPC:(nonnull SDLNotificationName)rpcName
    +          withObserver:(nonnull id)observer
    +              selector:(nonnull SEL)selector;
    + + +

    Swift

    +
    func subscribe(to rpcName: NSNotification.Name, observer: Any, selector: Selector)
    + + + +

    Parameters

    +
    +
    rpcName
    +

    The name of the RPC request, response, or notification to subscribe to.

    +
    observer
    +

    The object that will have its selector called every time an RPC of the name and type specified is received.

    +
    selector
    +

    The selector on observer that will be called every time an RPC of the name and type specified is received.

    +
    + +

    + -unsubscribeFromRPC:withObserver: +

    + +

    Unsubscribe to callbacks about a particular RPC request, notification, or response.

    + + + +

    Objective-C

    +
    - (void)unsubscribeFromRPC:(nonnull SDLNotificationName)rpcName
    +              withObserver:(nonnull id)observer;
    + + +

    Swift

    +
    func unsubscribe(from rpcName: NSNotification.Name, observer: Any)
    + + + +

    Parameters

    +
    +
    rpcName
    +

    The name of the RPC request, response, or notification to unsubscribe from.

    +
    observer
    +

    The object representing a block callback or selector callback to be unsubscribed

    +
    + diff --git a/docs/Classes/SDLRPCMessage.html b/docs/Classes/SDLRPCMessage.html index 595c35d60..bc1866e74 100644 --- a/docs/Classes/SDLRPCMessage.html +++ b/docs/Classes/SDLRPCMessage.html @@ -3,17 +3,14 @@

    SDLRPCMessage Class Reference

    Section Contents

    @@ -23,51 +20,6 @@

    Overview

    -

    - function -

    - -

    Undocumented

    - - - -

    Objective-C

    -
    NSMutableDictionary<NSString *, id> *function
    - - - - - -

    - parameters -

    - -

    Undocumented

    - - - -

    Objective-C

    -
    NSMutableDictionary<NSString *, id> *parameters
    - - - - - -

    - messageType -

    - -

    Undocumented

    - - - -

    Objective-C

    -
    NSString *messageType
    - - - - -

    -initWithName:

    @@ -95,34 +47,6 @@

    Return Value

    A SDLRPCMessage object

    -

    - -initWithDictionary: -

    - -

    Convenience init

    - - - -

    Objective-C

    -
    - (nonnull instancetype)initWithDictionary:
    -    (nonnull NSDictionary<NSString *, id> *)dict;
    - - -

    Swift

    -
    init(dictionary dict: [String : Any])
    - - - -

    Parameters

    -
    -
    dict
    -

    A dictionary with the format @{messageType: @{parameters}}

    -
    -
    -

    Return Value

    -

    A SDLRPCMessage object

    -
    -

    -getFunctionName

    @@ -257,6 +181,25 @@

    Swift

    +

    + parameters +

    + +

    The JSON-RPC parameters

    + + + +

    Objective-C

    +
    @property (readonly, strong, nonatomic)
    +    NSMutableDictionary<NSString *, id> *_Nonnull parameters;
    + + +

    Swift

    +
    var parameters: NSMutableDictionary { get }
    + + + +

    messageType

    @@ -266,7 +209,7 @@

    Objective-C

    -
    @property (readonly, strong, nonatomic) NSString *_Nonnull messageType;
    +
    @property (readonly, strong, nonatomic) NSString *_Nonnull messageType;

    Swift

    diff --git a/docs/Classes/SDLRPCStruct.html b/docs/Classes/SDLRPCStruct.html index 3a0d903ec..6c00dbb22 100644 --- a/docs/Classes/SDLRPCStruct.html +++ b/docs/Classes/SDLRPCStruct.html @@ -5,7 +5,6 @@

    Section Contents

    @@ -24,9 +23,12 @@

    Objective-C

    -
    NSMutableDictionary<NSString *, id> *store
    +
    @property (strong, nonatomic, readonly) NSMutableDictionary<NSString *, id> *store
    +

    Swift

    +
    var store: NSMutableDictionary { get }
    + @@ -53,28 +55,6 @@

    Parameters

    dict

    A dictionary

    -
    -

    Return Value

    -

    A SDLRPCStruct object

    -
    - -

    - -init -

    - -

    Init

    - - - -

    Objective-C

    -
    - (nonnull instancetype)init;
    - - -

    Swift

    -
    init()
    - - -

    Return Value

    A SDLRPCStruct object

    diff --git a/docs/Classes/SDLScreenManager.html b/docs/Classes/SDLScreenManager.html index 1f3310f2b..cd981f30a 100644 --- a/docs/Classes/SDLScreenManager.html +++ b/docs/Classes/SDLScreenManager.html @@ -17,6 +17,7 @@

    Section Contents

  • textField4Type
  • softButtonObjects
  • menu
  • +
  • dynamicMenuUpdatesMode
  • voiceCommands
  • keyboardConfiguration
  • preloadedChoices
  • @@ -293,6 +294,31 @@

    Swift

    +

    + dynamicMenuUpdatesMode +

    + +

    Change the mode of the dynamic menu updater to be enabled, disabled, or enabled on known compatible head units.

    + +

    The current status for dynamic menu updates. A dynamic menu update allows for smarter building of menu changes. If this status is set to SDLDynamicMenuUpdatesModeForceOn, menu updates will only create add commands for new items and delete commands for items no longer appearing in the menu. This helps reduce possible RPCs failures as there will be significantly less commands sent to the HMI.

    + +

    If set to SDLDynamicMenuUpdatesModeForceOff, menu updates will work the legacy way. This means when a new menu is set the entire old menu is deleted and add commands are created for every item regarldess if the item appears in both the old and new menu. This method is RPCs heavy and may cause some failures when creating and updating large menus.

    + +

    We recommend using either SDLDynamicMenuUpdatesModeOnWithCompatibility or SDLDynamicMenuUpdatesModeForceOn. SDLDynamicMenuUpdatesModeOnWithCompatibility turns dynamic updates off for head units that we know have poor compatibility with dynamic updates (e.g. they have bugs that cause menu items to not be placed correctly).

    + + + +

    Objective-C

    +
    @property (assign, readwrite, nonatomic)
    +    SDLDynamicMenuUpdatesMode dynamicMenuUpdatesMode;
    + + +

    Swift

    +
    var dynamicMenuUpdatesMode: SDLDynamicMenuUpdatesMode { get set }
    + + + +

    voiceCommands

    diff --git a/docs/Classes/SDLStreamingMediaManager.html b/docs/Classes/SDLStreamingMediaManager.html index c162d8fd7..c77b0b81b 100644 --- a/docs/Classes/SDLStreamingMediaManager.html +++ b/docs/Classes/SDLStreamingMediaManager.html @@ -543,7 +543,9 @@

    -sendAudioData:

    -

    This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback

    +

    This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback.

    + +

    NOTE: See the .audioManager (SDLAudioStreamManager) pushWithData: method for a more modern API.

    diff --git a/docs/Classes/SDLSystemCapabilityManager.html b/docs/Classes/SDLSystemCapabilityManager.html index eb94938cb..4f066ba13 100644 --- a/docs/Classes/SDLSystemCapabilityManager.html +++ b/docs/Classes/SDLSystemCapabilityManager.html @@ -3,6 +3,7 @@

    SDLSystemCapabilityManager Class Reference

    Section Contents

    Overview

    -

    Undocumented

    +

    A manager that handles updating and subscribing to SDL capabilities.

    +

    + supportsSubscriptions +

    + +

    YES if subscriptions are available on the connected head unit. If NO, calls to subscribeToCapabilityType:withBlock and subscribeToCapabilityType:withObserver:selector will fail.

    + + + +

    Objective-C

    +
    @property (readonly, assign, nonatomic) BOOL supportsSubscriptions;
    + + +

    Swift

    +
    var supportsSubscriptions: Bool { get }
    + + + +

    displayCapabilities

    @@ -481,6 +504,24 @@

    Return Value

    An instance of SDLSystemCapabilityManager

    +

    + -start +

    + +

    Starts the manager. This method is used internally.

    + + + +

    Objective-C

    +
    - (void)start;
    + + +

    Swift

    +
    func start()
    + + + +

    -stop

    @@ -525,4 +566,101 @@

    Parameters

    The handler to be called when the retrieval is complete

    +

    + -subscribeToCapabilityType:withBlock: +

    + +

    Subscribe to a particular capability type using a block callback

    + + + +

    Objective-C

    +
    - (nullable id<NSObject>)
    +    subscribeToCapabilityType:(nonnull SDLSystemCapabilityType)type
    +                    withBlock:(nonnull SDLCapabilityUpdateHandler)block;
    + + +

    Swift

    +
    func subscribe(toCapabilityType type: SDLSystemCapabilityType, with block: @escaping SDLCapabilityUpdateHandler) -> NSObjectProtocol?
    + + + +

    Parameters

    +
    +
    type
    +

    The type of capability to subscribe to

    +
    block
    +

    The block to be called when the capability is updated

    +
    +
    +

    Return Value

    +

    An object that can be used to unsubscribe the block using unsubscribeFromCapabilityType:withObserver: by passing it in the observer callback, or nil if subscriptions aren’t available on this head unit

    +
    + +

    + -subscribeToCapabilityType:withObserver:selector: +

    + +

    Subscribe to a particular capability type with a selector callback. The selector supports the following parameters:

    + +
      +
    1. No parameters e.g. - (void)phoneCapabilityUpdated;
    2. +
    3. One SDLSystemCapability * parameter e.g. - (void)phoneCapabilityUpdated:(SDLSystemCapability *)capability
    4. +
    + +

    This method will be called immediately with the current value and called every time the value is updated on RPC v5.1.0+ systems (supportsSubscriptions == YES). If this method is called on a sub-v5.1.0 system (supportsSubscriptions == NO), the method will return NO and the selector will never be called.

    + + + +

    Objective-C

    +
    - (BOOL)subscribeToCapabilityType:(nonnull SDLSystemCapabilityType)type
    +                     withObserver:(nonnull id)observer
    +                         selector:(nonnull SEL)selector;
    + + +

    Swift

    +
    func subscribe(toCapabilityType type: SDLSystemCapabilityType, withObserver observer: Any, selector: Selector) -> Bool
    + + + +

    Parameters

    +
    +
    type
    +

    The type of the system capability to subscribe to

    +
    observer
    +

    The object that will have selector called whenever the capability is updated

    +
    selector
    +

    The selector on observer that will be called whenever the capability is updated

    +
    +
    +

    Return Value

    +

    Whether or not the subscription succeeded. NO if the connected system doesn’t support capability subscriptions, or if the selector doesn’t support the correct parameters (see above)

    +
    + +

    + -unsubscribeFromCapabilityType:withObserver: +

    + +

    Unsubscribe from a particular capability type. If it was subscribed with a block, the return value should be passed to the observer to unsubscribe the block. If it was subscribed with a selector, the observer object should be passed to unsubscribe the object selector.

    + + + +

    Objective-C

    +
    - (void)unsubscribeFromCapabilityType:(nonnull SDLSystemCapabilityType)type
    +                         withObserver:(nonnull id)observer;
    + + +

    Swift

    +
    func unsubscribe(fromCapabilityType type: SDLSystemCapabilityType, withObserver observer: Any)
    + + + +

    Parameters

    +
    +
    type
    +

    The type of the system capability to unsubscribe from

    +
    observer
    +

    The object that will be unsubscribed. If a block was subscribed, the return value should be passed. If a selector was subscribed, the observer object should be passed.

    +
    +
    diff --git a/docs/Enums.html b/docs/Enums.html index 6db1f98d3..1fddcb2cb 100644 --- a/docs/Enums.html +++ b/docs/Enums.html @@ -18,6 +18,8 @@

    Section Contents

  • SDLLogFlag
  • SDLLogLevel
  • SDLLogFormatType
  • +
  • SDLDynamicMenuUpdatesMode
  • +
  • MenuCellState
  • SDLPermissionGroupType
  • SDLPermissionGroupStatus
  • SDLRPCMessageType
  • @@ -218,7 +220,8 @@

    Objective-C

    SDLChoiceSetManagerErrorPendingPresentationDeleted = -1, SDLChoiceSetManagerErrorDeletionFailed = -2, SDLChoiceSetManagerErrorUploadFailed = -3, - SDLChoiceSetManagerErrorFailedToCreateMenuItems = -4 + SDLChoiceSetManagerErrorFailedToCreateMenuItems = -4, + SDLChoiceSetManagerErrorInvalidState = -5 }
    @@ -367,6 +370,54 @@

    Swift

    +

    + SDLDynamicMenuUpdatesMode +

    + +

    Dynamic Menu Manager Mode

    + +
      +
    • SDLDynamicMenuUpdatesModeForceOn: Forces on compatibility mode. This will force the menu manager to delete and re-add each menu item for every menu update. This mode is generally not advised due to performance issues.
    • +
    • SDLDynamicMenuUpdatesModeForceOn: This mode forces the menu manager to always dynamically update menu items for each menu update. This will provide the best performance but may cause ordering issues on some SYNC Gen 3 head units.
    • +
    • SDLDynamicMenuUpdatesModeForceOff: This mode checks whether the phone is connected to a SYNC Gen 3 head unit, which has known menu ordering issues. If it is, it will always delete and re-add every menu item, if not, it will dynamically update the menus.
    • +
    + + See more + + +

    Objective-C

    +
    enum SDLDynamicMenuUpdatesMode {}
    + + +

    Swift

    +
    enum SDLDynamicMenuUpdatesMode : UInt
    + + + + +

    + MenuCellState +

    + +

    Undocumented

    + + See more + + +

    Objective-C

    +
    NS_ENUM(NSUInteger, MenuCellState) {
    +    MenuCellStateDelete = 0,
    +    MenuCellStateAdd,
    +    MenuCellStateKeep
    +}
    + + +

    Swift

    +
    enum MenuCellState : UInt
    + + + +

    SDLPermissionGroupType

    diff --git a/docs/Enums/MenuCellState.html b/docs/Enums/MenuCellState.html new file mode 100644 index 000000000..07402562e --- /dev/null +++ b/docs/Enums/MenuCellState.html @@ -0,0 +1,71 @@ +

    MenuCellState Enumeration Reference

    + +

    Section Contents

    + + + +

    Overview

    + +

    Undocumented

    + + +
    +

    + MenuCellStateDelete +

    + +

    Undocumented

    + + + +

    Objective-C

    +
    MenuCellStateDelete = 0
    + + +

    Swift

    +
    case delete = 0
    + + + + +

    + MenuCellStateAdd +

    + +

    Undocumented

    + + + +

    Objective-C

    +
    MenuCellStateAdd
    + + +

    Swift

    +
    case add = 1
    + + + + +

    + MenuCellStateKeep +

    + +

    Undocumented

    + + + +

    Objective-C

    +
    MenuCellStateKeep
    + + +

    Swift

    +
    case keep = 2
    + + + + +
    diff --git a/docs/Enums/SDLChoiceSetManagerError.html b/docs/Enums/SDLChoiceSetManagerError.html index 1b59bb4fb..9fc53824f 100644 --- a/docs/Enums/SDLChoiceSetManagerError.html +++ b/docs/Enums/SDLChoiceSetManagerError.html @@ -7,6 +7,7 @@

    Section Contents

  • SDLChoiceSetManagerErrorDeletionFailed
  • SDLChoiceSetManagerErrorUploadFailed
  • SDLChoiceSetManagerErrorFailedToCreateMenuItems
  • +
  • SDLChoiceSetManagerErrorInvalidState
  • Overview

    @@ -87,4 +88,22 @@

    Swift

    +

    + SDLChoiceSetManagerErrorInvalidState +

    + +

    Undocumented

    + + + +

    Objective-C

    +
    SDLChoiceSetManagerErrorInvalidState = -5
    + + +

    Swift

    +
    case invalidState = -5
    + + + + diff --git a/docs/Enums/SDLDynamicMenuUpdatesMode.html b/docs/Enums/SDLDynamicMenuUpdatesMode.html new file mode 100644 index 000000000..d6343065c --- /dev/null +++ b/docs/Enums/SDLDynamicMenuUpdatesMode.html @@ -0,0 +1,77 @@ +

    SDLDynamicMenuUpdatesMode Enumeration Reference

    + +

    Section Contents

    + + + +

    Overview

    + +

    Dynamic Menu Manager Mode

    + +
      +
    • SDLDynamicMenuUpdatesModeForceOn: Forces on compatibility mode. This will force the menu manager to delete and re-add each menu item for every menu update. This mode is generally not advised due to performance issues.
    • +
    • SDLDynamicMenuUpdatesModeForceOn: This mode forces the menu manager to always dynamically update menu items for each menu update. This will provide the best performance but may cause ordering issues on some SYNC Gen 3 head units.
    • +
    • SDLDynamicMenuUpdatesModeForceOff: This mode checks whether the phone is connected to a SYNC Gen 3 head unit, which has known menu ordering issues. If it is, it will always delete and re-add every menu item, if not, it will dynamically update the menus.
    • +
    + + +
    +

    + SDLDynamicMenuUpdatesModeForceOn +

    + +

    Undocumented

    + + + +

    Objective-C

    +
    SDLDynamicMenuUpdatesModeForceOn = 0
    + + +

    Swift

    +
    case forceOn = 0
    + + + + +

    + SDLDynamicMenuUpdatesModeForceOff +

    + +

    Undocumented

    + + + +

    Objective-C

    +
    SDLDynamicMenuUpdatesModeForceOff
    + + +

    Swift

    +
    case forceOff = 1
    + + + + +

    + SDLDynamicMenuUpdatesModeOnWithCompatibility +

    + +

    Undocumented

    + + + +

    Objective-C

    +
    SDLDynamicMenuUpdatesModeOnWithCompatibility
    + + +

    Swift

    +
    case onWithCompatibility = 2
    + + + + +
    diff --git a/docs/Protocols.html b/docs/Protocols.html index 736adbf69..4810a6f6a 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -122,12 +122,30 @@

    Objective-C

    /** Called when a file from the SDLAudioStreamManager could not play - @param audioManager A reference to the audio stream manager + @param audioManager A reference to the audio stream manager @param fileURL The URL that failed @param error The error that occurred */ - (void)audioStreamManager:(SDLAudioStreamManager *)audioManager errorDidOccurForFile:(NSURL *)fileURL error:(NSError *)error; +@optional + +/** + Called when a data buffer from the SDLAudioStreamManager finishes playing + + @param audioManager A reference to the audio stream manager + @param successfully Whether or not the data buffer played successfully + */ +- (void)audioStreamManager:(SDLAudioStreamManager *)audioManager dataBufferDidFinishPlayingSuccessfully:(BOOL)successfully; + +/** + Called when a data buffer from the SDLAudioStreamManager could not play + + @param audioManager A reference to the audio stream manager + @param error The error that occurred + */ +- (void)audioStreamManager:(SDLAudioStreamManager *)audioManager errorDidOccurForDataBuffer:(NSError *)error; + @end
    diff --git a/docs/Protocols/SDLAudioStreamManagerDelegate.html b/docs/Protocols/SDLAudioStreamManagerDelegate.html index 7d322fbd1..6167c2529 100644 --- a/docs/Protocols/SDLAudioStreamManagerDelegate.html +++ b/docs/Protocols/SDLAudioStreamManagerDelegate.html @@ -5,6 +5,8 @@

    Section Contents

    Overview

    @@ -71,4 +73,56 @@

    Parameters

    The error that occurred

    +

    + -audioStreamManager:dataBufferDidFinishPlayingSuccessfully: +

    + +

    Called when a data buffer from the SDLAudioStreamManager finishes playing

    + + + +

    Objective-C

    +
    - (void)audioStreamManager:(nonnull SDLAudioStreamManager *)audioManager
    +    dataBufferDidFinishPlayingSuccessfully:(BOOL)successfully;
    + + +

    Swift

    +
    optional func audioStreamManager(_ audioManager: SDLAudioStreamManager, dataBufferDidFinishPlayingSuccessfully successfully: Bool)
    + + + +

    Parameters

    +
    +
    audioManager
    +

    A reference to the audio stream manager

    +
    successfully
    +

    Whether or not the data buffer played successfully

    +
    + +

    + -audioStreamManager:errorDidOccurForDataBuffer: +

    + +

    Called when a data buffer from the SDLAudioStreamManager could not play

    + + + +

    Objective-C

    +
    - (void)audioStreamManager:(nonnull SDLAudioStreamManager *)audioManager
    +    errorDidOccurForDataBuffer:(nonnull NSError *)error;
    + + +

    Swift

    +
    optional func audioStreamManager(_ audioManager: SDLAudioStreamManager, errorDidOccurForDataBuffer error: Error)
    + + + +

    Parameters

    +
    +
    audioManager
    +

    A reference to the audio stream manager

    +
    error
    +

    The error that occurred

    +
    + diff --git a/docs/Type Definitions.html b/docs/Type Definitions.html index 42e8e44f9..a72dd7e72 100644 --- a/docs/Type Definitions.html +++ b/docs/Type Definitions.html @@ -67,6 +67,7 @@

    Section Contents

  • SDLLogFilterBlock
  • SDLMaintenanceModeStatus
  • SDLManagerReadyBlock
  • +
  • SDLRPCUpdatedBlock
  • SDLMassageCushion
  • SDLMassageMode
  • SDLMassageZone
  • @@ -115,6 +116,7 @@

    Section Contents

  • SDLSupportedSeat
  • SDLSystemAction
  • SDLUpdateCapabilityHandler
  • +
  • SDLCapabilityUpdateHandler
  • SDLSystemCapabilityType
  • SDLSystemContext
  • SDLTBTState
  • @@ -1504,6 +1506,24 @@

    Swift

    +

    + SDLRPCUpdatedBlock +

    + +

    Undocumented

    + + + +

    Objective-C

    +
    typedef void (^SDLRPCUpdatedBlock) (__kindof SDLRPCMessage *message)
    + + +

    Swift

    +
    typealias SDLRPCUpdatedBlock = (SDLRPCMessage) -> Void
    + + + +

    SDLMassageCushion

    @@ -2486,6 +2506,29 @@

    Parameters

    The system capability manager

    +

    + SDLCapabilityUpdateHandler +

    + +

    An observer block for whenever a subscription is called.

    + + + +

    Objective-C

    +
    typedef void (^SDLCapabilityUpdateHandler)(SDLSystemCapability *_Nonnull)
    + + +

    Swift

    +
    typealias SDLCapabilityUpdateHandler = (SDLSystemCapability) -> Void
    + + + +

    Parameters

    +
    +
    capability
    +

    The capability that was updated.

    +
    +

    SDLSystemCapabilityType

    diff --git a/docs/index.html b/docs/index.html index 8da8467dc..953e7f084 100644 --- a/docs/index.html +++ b/docs/index.html @@ -40,6 +40,8 @@ url: Classes/SDLAudioControlCapabilities.html - name: SDLAudioControlData url: Classes/SDLAudioControlData.html + - name: SDLAudioFile + url: Classes/SDLAudioFile.html - name: SDLAudioPassThruCapabilities url: Classes/SDLAudioPassThruCapabilities.html - name: SDLAudioStreamManager @@ -2856,6 +2858,8 @@ url: Constants.html#/c:@SmartDeviceLinkVersionString - name: Enumerations sub_nav: + - name: MenuCellState + url: Enums/MenuCellState.html - name: SDLArtworkImageFormat url: Enums/SDLArtworkImageFormat.html - name: SDLAudioStreamManagerError @@ -2866,6 +2870,8 @@ url: Enums/SDLChoiceSetLayout.html - name: SDLChoiceSetManagerError url: Enums/SDLChoiceSetManagerError.html + - name: SDLDynamicMenuUpdatesMode + url: Enums/SDLDynamicMenuUpdatesMode.html - name: SDLFileManagerError url: Enums/SDLFileManagerError.html - name: SDLLogBytesDirection @@ -2954,6 +2960,8 @@ url: Type Definitions.html#/c:SDLButtonName.h@T@SDLButtonName - name: SDLButtonPressMode url: Type Definitions.html#/c:SDLButtonPressMode.h@T@SDLButtonPressMode + - name: SDLCapabilityUpdateHandler + url: Type Definitions.html#/c:SDLSystemCapabilityManager.h@T@SDLCapabilityUpdateHandler - name: SDLCarModeStatus url: Type Definitions.html#/c:SDLCarModeStatus.h@T@SDLCarModeStatus - name: SDLCharacterSet @@ -3118,6 +3126,8 @@ url: Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLRPCCommandNotificationHandler - name: SDLRPCFunctionName url: Type Definitions.html#/c:SDLRPCFunctionNames.h@T@SDLRPCFunctionName + - name: SDLRPCUpdatedBlock + url: Type Definitions.html#/c:SDLManager.h@T@SDLRPCUpdatedBlock - name: SDLRadioBand url: Type Definitions.html#/c:SDLRadioBand.h@T@SDLRadioBand - name: SDLRadioState diff --git a/docs/search.json b/docs/search.json index f7b9e8674..00470b67e 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -{"Type Definitions/SDLTouchIdentifier/.html#/c:@EA@SDLTouchIdentifier@SDLTouchIdentifierFirstFinger":{"name":"SDLTouchIdentifierFirstFinger","abstract":"

    Undocumented

    "},"Type Definitions/SDLTouchIdentifier/.html#/c:@EA@SDLTouchIdentifier@SDLTouchIdentifierSecondFinger":{"name":"SDLTouchIdentifierSecondFinger","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLAmbientLightStatus.h@T@SDLAmbientLightStatus":{"name":"SDLAmbientLightStatus","abstract":"

    Reflects the status of the ambient light sensor for headlamps

    "},"Type Definitions.html#/c:SDLAppHMIType.h@T@SDLAppHMIType":{"name":"SDLAppHMIType","abstract":"

    Enumeration listing possible app hmi types.

    "},"Type Definitions.html#/c:SDLAppInterfaceUnregisteredReason.h@T@SDLAppInterfaceUnregisteredReason":{"name":"SDLAppInterfaceUnregisteredReason","abstract":"

    Indicates reason why app interface was unregistered. The application is being disconnected by SDL.

    "},"Type Definitions.html#/c:SDLAppServiceType.h@T@SDLAppServiceType":{"name":"SDLAppServiceType","abstract":"

    Enumeration listing possible app service types.

    "},"Type Definitions.html#/c:SDLAudioStreamingIndicator.h@T@SDLAudioStreamingIndicator":{"name":"SDLAudioStreamingIndicator","abstract":"

    Enumeration listing possible indicators of audio streaming changes

    "},"Type Definitions.html#/c:SDLAudioStreamingState.h@T@SDLAudioStreamingState":{"name":"SDLAudioStreamingState","abstract":"

    Describes whether or not streaming audio is currently audible to the user. Though provided in every OnHMIStatus notification, this information is only relevant for applications that declare themselves as media apps in RegisterAppInterface

    "},"Type Definitions.html#/c:SDLAudioType.h@T@SDLAudioType":{"name":"SDLAudioType","abstract":"

    Describes different audio type options for PerformAudioPassThru

    "},"Type Definitions.html#/c:SDLBitsPerSample.h@T@SDLBitsPerSample":{"name":"SDLBitsPerSample","abstract":"

    Describes different bit depth options for PerformAudioPassThru

    "},"Type Definitions.html#/c:SDLButtonEventMode.h@T@SDLButtonEventMode":{"name":"SDLButtonEventMode","abstract":"

    Indicates whether the button was depressed or released. A BUTTONUP event will always be preceded by a BUTTONDOWN event.

    "},"Type Definitions.html#/c:SDLButtonName.h@T@SDLButtonName":{"name":"SDLButtonName","abstract":"

    Defines logical buttons which, on a given SDL unit, would correspond to either physical or soft (touchscreen) buttons. These logical buttons present a standard functional abstraction which the developer can rely upon, independent of the SDL unit. For example, the developer can rely upon the OK button having the same meaning to the user across SDL platforms.

    "},"Type Definitions.html#/c:SDLButtonPressMode.h@T@SDLButtonPressMode":{"name":"SDLButtonPressMode","abstract":"

    Indicates whether this is a LONG or SHORT button press

    "},"Type Definitions.html#/c:SDLCarModeStatus.h@T@SDLCarModeStatus":{"name":"SDLCarModeStatus","abstract":"

    Describes the carmode the vehicle is in. Used in ClusterModeStatus

    "},"Type Definitions.html#/c:SDLCharacterSet.h@T@SDLCharacterSet":{"name":"SDLCharacterSet","abstract":"

    Character sets supported by SDL. Used to describe text field capabilities.

    "},"Type Definitions.html#/c:SDLCompassDirection.h@T@SDLCompassDirection":{"name":"SDLCompassDirection","abstract":"

    The list of potential compass directions. Used in GPS data

    "},"Type Definitions.html#/c:SDLComponentVolumeStatus.h@T@SDLComponentVolumeStatus":{"name":"SDLComponentVolumeStatus","abstract":"

    The volume status of a vehicle component. Used in SingleTireStatus and VehicleData Fuel Level

    "},"Type Definitions.html#/c:SDLDefrostZone.h@T@SDLDefrostZone":{"name":"SDLDefrostZone","abstract":"

    Enumeration listing possible defrost zones. Used in ClimateControlCapabilities and Data.

    "},"Type Definitions.html#/c:SDLDeliveryMode.h@T@SDLDeliveryMode":{"name":"SDLDeliveryMode","abstract":"

    Specifies the mode in which the sendLocation request is sent. Used in SendLocation.

    "},"Type Definitions.html#/c:SDLDeviceLevelStatus.h@T@SDLDeviceLevelStatus":{"name":"SDLDeviceLevelStatus","abstract":"

    Reflects the reported battery status of the connected device, if reported. Used in DeviceStatus.

    "},"Type Definitions.html#/c:SDLDimension.h@T@SDLDimension":{"name":"SDLDimension","abstract":"

    The supported dimensions of the GPS. Used in GPSData

    "},"Type Definitions.html#/c:SDLDirection.h@T@SDLDirection":{"name":"SDLDirection","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLDisplayMode.h@T@SDLDisplayMode":{"name":"SDLDisplayMode","abstract":"

    Identifies the various display types used by SDL.

    "},"Type Definitions.html#/c:SDLDisplayType.h@T@SDLDisplayType":{"name":"SDLDisplayType","abstract":"

    Identifies the various display types used by SDL. Used in DisplayCapabilities.

    "},"Type Definitions.html#/c:SDLDistanceUnit.h@T@SDLDistanceUnit":{"name":"SDLDistanceUnit","abstract":"

    Wiper Status

    "},"Type Definitions.html#/c:SDLDriverDistractionState.h@T@SDLDriverDistractionState":{"name":"SDLDriverDistractionState","abstract":"

    Enumeration that describes possible states of driver distraction. Used in OnDriverDistraction.

    "},"Type Definitions.html#/c:SDLECallConfirmationStatus.h@T@SDLECallConfirmationStatus":{"name":"SDLECallConfirmationStatus","abstract":"

    Reflects the status of the eCall Notification. Used in ECallInfo

    "},"Type Definitions.html#/c:SDLElectronicParkBrakeStatus.h@T@SDLElectronicParkBrakeStatus":{"name":"SDLElectronicParkBrakeStatus","abstract":"

    Reflects the status of the Electronic Parking Brake. A Vehicle Data Type.

    "},"Type Definitions.html#/c:SDLEmergencyEventType.h@T@SDLEmergencyEventType":{"name":"SDLEmergencyEventType","abstract":"

    Reflects the emergency event status of the vehicle. Used in EmergencyEvent

    "},"Type Definitions.html#/c:SDLEnum.h@T@SDLEnum":{"name":"SDLEnum","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLFileManager.h@T@SDLFileManagerStartupCompletionHandler":{"name":"SDLFileManagerStartupCompletionHandler","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileName":{"name":"SDLFileName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerUploadCompletionHandler":{"name":"SDLFileManagerUploadCompletionHandler","abstract":"

    A completion handler called after a response from Core to a upload request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiUploadCompletionHandler":{"name":"SDLFileManagerMultiUploadCompletionHandler","abstract":"

    A completion handler called after a set of upload requests has completed.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiUploadProgressHandler":{"name":"SDLFileManagerMultiUploadProgressHandler","abstract":"

    In a multiple request send, a handler called after each response from Core to a upload request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerDeleteCompletionHandler":{"name":"SDLFileManagerDeleteCompletionHandler","abstract":"

    A completion handler called after a response from Core to a delete request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiDeleteCompletionHandler":{"name":"SDLFileManagerMultiDeleteCompletionHandler","abstract":"

    A completion handler called after a set of delete requests has completed.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerListFilesCompletionHandler":{"name":"SDLFileManagerListFilesCompletionHandler","abstract":"

    A completion handler called after response from Core to a list files request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerUploadArtworkCompletionHandler":{"name":"SDLFileManagerUploadArtworkCompletionHandler","abstract":"

    A completion handler called after a response from Core to a artwork upload request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiUploadArtworkCompletionHandler":{"name":"SDLFileManagerMultiUploadArtworkCompletionHandler","abstract":"

    A completion handler called after a set of upload artwork requests has completed.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiUploadArtworkProgressHandler":{"name":"SDLFileManagerMultiUploadArtworkProgressHandler","abstract":"

    In a multiple request send, a handler called after each response from Core to an artwork upload request.

    "},"Type Definitions.html#/c:SDLFileType.h@T@SDLFileType":{"name":"SDLFileType","abstract":"

    Enumeration listing possible file types. Used in SDLFile, PutFile, ImageField, OnSystemRequest

    "},"Type Definitions.html#/c:SDLFuelCutoffStatus.h@T@SDLFuelCutoffStatus":{"name":"SDLFuelCutoffStatus","abstract":"

    Reflects the status of the Restraints Control Module fuel pump cutoff. The fuel pump is cut off typically after the vehicle has had a collision. Used in EmergencyEvent.

    "},"Type Definitions.html#/c:SDLFuelType.h@T@SDLFuelType":{"name":"SDLFuelType","abstract":"

    Enumeration listing possible fuel types.

    "},"Type Definitions.html#/c:SDLGlobalProperty.h@T@SDLGlobalProperty":{"name":"SDLGlobalProperty","abstract":"

    Properties of a user-initiated VR interaction (i.e. interactions started by the user pressing the PTT button). Used in RPCs related to ResetGlobalProperties

    "},"Type Definitions.html#/c:SDLHMILevel.h@T@SDLHMILevel":{"name":"SDLHMILevel","abstract":"

    Specifies current level of the HMI. An HMI level indicates the degree of user interaction possible through the HMI (e.g. TTS only, display only, VR, etc.). The HMI level varies for an application based on the type of display (i.e. Nav or non-Nav) and the user directing focus to other applications (e.g. phone, other mobile applications, etc.). Used in OnHMIStatus

    "},"Type Definitions.html#/c:SDLHMIZoneCapabilities.h@T@SDLHMIZoneCapabilities":{"name":"SDLHMIZoneCapabilities","abstract":"

    Specifies HMI Zones in the vehicle. Used in RegisterAppInterfaceResponse

    "},"Type Definitions.html#/c:SDLHybridAppPreference.h@T@SDLHybridAppPreference":{"name":"SDLHybridAppPreference","abstract":"

    Enumeration for the user’s preference of which app type to use when both are available.

    "},"Type Definitions.html#/c:SDLIgnitionStableStatus.h@T@SDLIgnitionStableStatus":{"name":"SDLIgnitionStableStatus","abstract":"

    Reflects the ignition switch stability. Used in BodyInformation

    "},"Type Definitions.html#/c:SDLIgnitionStatus.h@T@SDLIgnitionStatus":{"name":"SDLIgnitionStatus","abstract":"

    Reflects the status of ignition. Used in BodyInformation.

    "},"Type Definitions.html#/c:SDLImageFieldName.h@T@SDLImageFieldName":{"name":"SDLImageFieldName","abstract":"

    The name that identifies the filed. Used in DisplayCapabilities.

    "},"Type Definitions.html#/c:SDLImageType.h@T@SDLImageType":{"name":"SDLImageType","abstract":"

    Contains information about the type of image. Used in Image.

    "},"Type Definitions.html#/c:SDLInteractionMode.h@T@SDLInteractionMode":{"name":"SDLInteractionMode","abstract":"

    For application-initiated interactions (SDLPerformInteraction), this specifies the mode by which the user is prompted and by which the user’s selection is indicated. Used in PerformInteraction.

    "},"Type Definitions.html#/c:SDLKeyboardDelegate.h@T@SDLKeyboardAutocompleteCompletionHandler":{"name":"SDLKeyboardAutocompleteCompletionHandler","abstract":"

    This handler is called when you wish to update your autocomplete text in response to the user’s input

    "},"Type Definitions.html#/c:SDLKeyboardDelegate.h@T@SDLKeyboardCharacterSetCompletionHandler":{"name":"SDLKeyboardCharacterSetCompletionHandler","abstract":"

    This handler is called when you wish to update your keyboard’s limitedCharacterSet in response to the user’s input

    "},"Type Definitions.html#/c:SDLKeyboardEvent.h@T@SDLKeyboardEvent":{"name":"SDLKeyboardEvent","abstract":"

    Enumeration listing possible keyboard events. Used in OnKeyboardInput.

    "},"Type Definitions.html#/c:SDLKeyboardLayout.h@T@SDLKeyboardLayout":{"name":"SDLKeyboardLayout","abstract":"

    Enumeration listing possible keyboard layouts. Used in KeyboardProperties.

    "},"Type Definitions.html#/c:SDLKeypressMode.h@T@SDLKeypressMode":{"name":"SDLKeypressMode","abstract":"

    Enumeration listing possible keyboard events.

    "},"Type Definitions.html#/c:SDLLanguage.h@T@SDLLanguage":{"name":"SDLLanguage","abstract":"

    Specifies the language to be used for TTS, VR, displayed messages/menus. Used in ChangeRegistration and RegisterAppInterface.

    "},"Type Definitions.html#/c:SDLLayoutMode.h@T@SDLLayoutMode":{"name":"SDLLayoutMode","abstract":"

    For touchscreen interactions, the mode of how the choices are presented. Used in PerformInteraction.

    "},"Type Definitions.html#/c:SDLLightName.h@T@SDLLightName":{"name":"SDLLightName","abstract":"

    The name that identifies the Light

    "},"Type Definitions.html#/c:SDLLightStatus.h@T@SDLLightStatus":{"name":"SDLLightStatus","abstract":"

    Reflects the status of Light.

    "},"Type Definitions.html#/c:SDLLockScreenStatus.h@T@SDLLockScreenStatus":{"name":"SDLLockScreenStatus","abstract":"

    Describes what the status of the lock screen should be

    "},"Type Definitions.html#/c:SDLLogConstants.h@T@SDLLogFilterBlock":{"name":"SDLLogFilterBlock","abstract":"

    A block that takes in a log model and returns whether or not the log passes the filter and should therefore be logged.

    "},"Type Definitions.html#/c:SDLMaintenanceModeStatus.h@T@SDLMaintenanceModeStatus":{"name":"SDLMaintenanceModeStatus","abstract":"

    Describes the maintenence mode. Used in nothing.

    "},"Type Definitions.html#/c:SDLManager.h@T@SDLManagerReadyBlock":{"name":"SDLManagerReadyBlock","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLMassageCushion.h@T@SDLMassageCushion":{"name":"SDLMassageCushion","abstract":"

    The List possible cushions of a multi-contour massage seat.

    "},"Type Definitions.html#/c:SDLMassageMode.h@T@SDLMassageMode":{"name":"SDLMassageMode","abstract":"

    The List possible modes of a massage zone.

    "},"Type Definitions.html#/c:SDLMassageZone.h@T@SDLMassageZone":{"name":"SDLMassageZone","abstract":"

    List possible zones of a multi-contour massage seat.

    "},"Type Definitions.html#/c:SDLMediaClockFormat.h@T@SDLMediaClockFormat":{"name":"SDLMediaClockFormat","abstract":"

    Indicates the format of the time displayed on the connected SDL unit.

    "},"Type Definitions.html#/c:SDLMediaType.h@T@SDLMediaType":{"name":"SDLMediaType","abstract":"

    Enumeration listing possible media types.

    "},"Type Definitions.html#/c:SDLMenuCell.h@T@SDLMenuCellSelectionHandler":{"name":"SDLMenuCellSelectionHandler","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLMetadataType.h@T@SDLMetadataType":{"name":"SDLMetadataType","abstract":"

    Text Field metadata types. Used in Show.

    "},"Type Definitions.html#/c:SDLModuleType.h@T@SDLModuleType":{"name":"SDLModuleType","abstract":"

    The type of remote control data. Used in ButtonPress, GetInteriorVehicleData, and ModuleData

    "},"Type Definitions.html#/c:SDLNavigationAction.h@T@SDLNavigationAction":{"name":"SDLNavigationAction","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLNavigationJunction.h@T@SDLNavigationJunction":{"name":"SDLNavigationJunction","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLNotificationName":{"name":"SDLNotificationName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLNotificationUserInfoKey":{"name":"SDLNotificationUserInfoKey","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLAudioPassThruHandler":{"name":"SDLAudioPassThruHandler","abstract":"

    A handler used on SDLPerformAudioPassThru.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLResponseHandler":{"name":"SDLResponseHandler","abstract":"

    A handler used on all RPC requests which fires when the response is received.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLMultipleRequestCompletionHandler":{"name":"SDLMultipleRequestCompletionHandler","abstract":"

    A completion handler called after a sequential or simultaneous set of requests have completed sending.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLMultipleSequentialRequestProgressHandler":{"name":"SDLMultipleSequentialRequestProgressHandler","abstract":"

    A handler called after each response to a request comes in in a multiple request send.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLMultipleAsyncRequestProgressHandler":{"name":"SDLMultipleAsyncRequestProgressHandler","abstract":"

    A handler called after each response to a request comes in in a multiple request send.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLRPCButtonNotificationHandler":{"name":"SDLRPCButtonNotificationHandler","abstract":"

    A handler that may optionally be run when an SDLSubscribeButton or SDLSoftButton has a corresponding notification occur.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLRPCCommandNotificationHandler":{"name":"SDLRPCCommandNotificationHandler","abstract":"

    A handler that may optionally be run when an SDLAddCommand has a corresponding notification occur.

    "},"Type Definitions.html#/c:SDLPRNDL.h@T@SDLPRNDL":{"name":"SDLPRNDL","abstract":"

    The selected gear the car is in. Used in retrieving vehicle data.

    "},"Type Definitions.html#/c:SDLPermissionConstants.h@T@SDLPermissionRPCName":{"name":"SDLPermissionRPCName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLPermissionConstants.h@T@SDLPermissionObserverIdentifier":{"name":"SDLPermissionObserverIdentifier","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLPermissionConstants.h@T@SDLPermissionsChangedHandler":{"name":"SDLPermissionsChangedHandler","abstract":"

    The PermissionObserver is a block that is passed in to some methods that will be stored and called when specified permissions change.

    "},"Type Definitions.html#/c:SDLPermissionStatus.h@T@SDLPermissionStatus":{"name":"SDLPermissionStatus","abstract":"

    Enumeration that describes possible permission states of a policy table entry. Used in nothing.

    "},"Type Definitions.html#/c:SDLPowerModeQualificationStatus.h@T@SDLPowerModeQualificationStatus":{"name":"SDLPowerModeQualificationStatus","abstract":"

    Describes the power mode qualification status. Used in ClusterModeStatus.

    "},"Type Definitions.html#/c:SDLPowerModeStatus.h@T@SDLPowerModeStatus":{"name":"SDLPowerModeStatus","abstract":"

    The status of the car’s power. Used in ClusterModeStatus.

    "},"Type Definitions.html#/c:SDLPredefinedLayout.h@T@SDLPredefinedLayout":{"name":"SDLPredefinedLayout","abstract":"

    A template layout an app uses to display information. The broad details of the layout are defined, but the details depend on the IVI system. Used in SetDisplayLayout.

    "},"Type Definitions.html#/c:SDLPrerecordedSpeech.h@T@SDLPrerecordedSpeech":{"name":"SDLPrerecordedSpeech","abstract":"

    Contains information about the speech capabilities on the SDL platform. Used in RegisterAppInterfaceResponse to indicate capability.

    "},"Type Definitions.html#/c:SDLPrimaryAudioSource.h@T@SDLPrimaryAudioSource":{"name":"SDLPrimaryAudioSource","abstract":"

    Reflects the current primary audio source of SDL (if selected). Used in DeviceStatus.

    "},"Type Definitions.html#/c:SDLRPCFunctionNames.h@T@SDLRPCFunctionName":{"name":"SDLRPCFunctionName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLRadioBand.h@T@SDLRadioBand":{"name":"SDLRadioBand","abstract":"

    Radio bands, such as AM and FM, used in RadioControlData

    "},"Type Definitions.html#/c:SDLRadioState.h@T@SDLRadioState":{"name":"SDLRadioState","abstract":"

    List possible states of a remote control radio module. Used in RadioControlData.

    "},"Type Definitions.html#/c:SDLRequestType.h@T@SDLRequestType":{"name":"SDLRequestType","abstract":"

    A type of system request. Used in SystemRequest.

    "},"Type Definitions.html#/c:SDLResult.h@T@SDLResult":{"name":"SDLResult","abstract":"

    Defines the possible result codes returned by SDL to the application in a response to a requested operation. Used in RPC responses

    "},"Type Definitions.html#/c:SDLSamplingRate.h@T@SDLSamplingRate":{"name":"SDLSamplingRate","abstract":"

    Describes different sampling rates for PerformAudioPassThru and AudioPassThruCapabilities

    "},"Type Definitions.html#/c:SDLScreenManager.h@T@SDLScreenManagerUpdateCompletionHandler":{"name":"SDLScreenManagerUpdateCompletionHandler","abstract":"

    The handler run when the update has completed

    "},"Type Definitions.html#/c:SDLScreenManager.h@T@SDLPreloadChoiceCompletionHandler":{"name":"SDLPreloadChoiceCompletionHandler","abstract":"

    Return an error with userinfo [key: SDLChoiceCell, value: NSError] if choices failed to upload

    "},"Type Definitions.html#/c:SDLSeatMemoryActionType.h@T@SDLSeatMemoryActionType":{"name":"SDLSeatMemoryActionType","abstract":"

    List of possible actions on Seat Meomry

    "},"Type Definitions.html#/c:SDLServiceUpdateReason.h@T@SDLServiceUpdateReason":{"name":"SDLServiceUpdateReason","abstract":"

    Enumeration listing possible service update reasons.

    "},"Type Definitions.html#/c:SDLSoftButtonType.h@T@SDLSoftButtonType":{"name":"SDLSoftButtonType","abstract":"

    SoftButtonType (TEXT / IMAGE / BOTH). Used by SoftButton.

    "},"Type Definitions.html#/c:SDLSpeechCapabilities.h@T@SDLSpeechCapabilities":{"name":"SDLSpeechCapabilities","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLStaticIconName.h@T@SDLStaticIconName":{"name":"SDLStaticIconName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLStreamingMediaManagerConstants.h@T@SDLVideoStreamManagerState":{"name":"SDLVideoStreamManagerState","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLStreamingMediaManagerConstants.h@T@SDLAudioStreamManagerState":{"name":"SDLAudioStreamManagerState","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLStreamingMediaManagerConstants.h@T@SDLAppState":{"name":"SDLAppState","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLSupportedSeat.h@T@SDLSupportedSeat":{"name":"SDLSupportedSeat","abstract":"

    List possible seats that is a remote controllable seat.

    "},"Type Definitions.html#/c:SDLSystemAction.h@T@SDLSystemAction":{"name":"SDLSystemAction","abstract":"

    Enumeration that describes system actions that can be triggered. Used in SoftButton.

    "},"Type Definitions.html#/c:SDLSystemCapabilityManager.h@T@SDLUpdateCapabilityHandler":{"name":"SDLUpdateCapabilityHandler","abstract":"

    A completion handler called after a request for the capability type is returned from the remote system.

    "},"Type Definitions.html#/c:SDLSystemCapabilityType.h@T@SDLSystemCapabilityType":{"name":"SDLSystemCapabilityType","abstract":"

    The type of system capability to get more information on. Used in GetSystemCapability.

    "},"Type Definitions.html#/c:SDLSystemContext.h@T@SDLSystemContext":{"name":"SDLSystemContext","abstract":"

    Indicates whether or not a user-initiated interaction is in progress, and if so, in what mode (i.e. MENU or VR). Used in OnHMIStatus

    "},"Type Definitions.html#/c:SDLTBTState.h@T@SDLTBTState":{"name":"SDLTBTState","abstract":"

    The turn-by-turn state, used in OnTBTClientState.

    "},"Type Definitions.html#/c:SDLTPMS.h@T@SDLTPMS":{"name":"SDLTPMS","abstract":"

    An enum representing values of the tire pressure monitoring system

    "},"Type Definitions.html#/c:SDLTemperatureUnit.h@T@SDLTemperatureUnit":{"name":"SDLTemperatureUnit","abstract":"

    The unit of temperature to display. Used in Temperature.

    "},"Type Definitions.html#/c:SDLTextAlignment.h@T@SDLTextAlignment":{"name":"SDLTextAlignment","abstract":"

    The list of possible alignments of text in a field. May only work on some display types. used in Show.

    "},"Type Definitions.html#/c:SDLTextFieldName.h@T@SDLTextFieldName":{"name":"SDLTextFieldName","abstract":"

    Names of the text fields that can appear on a SDL display. Used in TextFieldName.

    "},"Type Definitions.html#/c:SDLTimerMode.h@T@SDLTimerMode":{"name":"SDLTimerMode","abstract":"

    The direction of a timer. Used in nothing.

    "},"Type Definitions/SDLTouchIdentifier.html":{"name":"SDLTouchIdentifier","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLTouchManager.h@T@SDLTouchEventHandler":{"name":"SDLTouchEventHandler","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLTouchType.h@T@SDLTouchType":{"name":"SDLTouchType","abstract":"

    The type of a touch in a projection application. Used in OnTouchEvent.

    "},"Type Definitions.html#/c:SDLTriggerSource.h@T@SDLTriggerSource":{"name":"SDLTriggerSource","abstract":"

    Indicates whether choice/command was selected via VR or via a menu selection (using SEEKRIGHT/SEEKLEFT, TUNEUP, TUNEDOWN, OK buttons). Used in PerformInteractionResponse and OnCommand.

    "},"Type Definitions.html#/c:SDLTurnSignal.h@T@SDLTurnSignal":{"name":"SDLTurnSignal","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLUpdateMode.h@T@SDLUpdateMode":{"name":"SDLUpdateMode","abstract":"

    Specifies what function should be performed on the media clock/counter. Used in SetMediaClockTimer.

    "},"Type Definitions.html#/c:SDLVehicleDataActiveStatus.h@T@SDLVehicleDataActiveStatus":{"name":"SDLVehicleDataActiveStatus","abstract":"

    Vehicle Data Activity Status. Used in nothing.

    "},"Type Definitions.html#/c:SDLVehicleDataEventStatus.h@T@SDLVehicleDataEventStatus":{"name":"SDLVehicleDataEventStatus","abstract":"

    Reflects the status of a vehicle data event; e.g. a seat belt event status. Used in retrieving vehicle data.

    "},"Type Definitions.html#/c:SDLVehicleDataNotificationStatus.h@T@SDLVehicleDataNotificationStatus":{"name":"SDLVehicleDataNotificationStatus","abstract":"

    Reflects the status of a vehicle data notification. Used in ECallInfo

    "},"Type Definitions.html#/c:SDLVehicleDataResultCode.h@T@SDLVehicleDataResultCode":{"name":"SDLVehicleDataResultCode","abstract":"

    Vehicle Data Result Code. Used in DIDResult.

    "},"Type Definitions.html#/c:SDLVehicleDataStatus.h@T@SDLVehicleDataStatus":{"name":"SDLVehicleDataStatus","abstract":"

    Reflects the status of a binary vehicle data item. Used in MyKey.

    "},"Type Definitions.html#/c:SDLVehicleDataType.h@T@SDLVehicleDataType":{"name":"SDLVehicleDataType","abstract":"

    Defines the vehicle data types that can be published and/or subscribed to using SDLSubscribeVehicleData. Used in VehicleDataResult

    "},"Type Definitions.html#/c:SDLVentilationMode.h@T@SDLVentilationMode":{"name":"SDLVentilationMode","abstract":"

    The ventilation mode. Used in ClimateControlCapabilities

    "},"Type Definitions.html#/c:SDLVideoStreamingCodec.h@T@SDLVideoStreamingCodec":{"name":"SDLVideoStreamingCodec","abstract":"

    Enum for each type of video streaming codec. Used in VideoStreamingFormat.

    "},"Type Definitions.html#/c:SDLVideoStreamingProtocol.h@T@SDLVideoStreamingProtocol":{"name":"SDLVideoStreamingProtocol","abstract":"

    Enum for each type of video streaming protocol, used in VideoStreamingFormat

    "},"Type Definitions.html#/c:SDLVideoStreamingState.h@T@SDLVideoStreamingState":{"name":"SDLVideoStreamingState","abstract":"

    Enum for each type of video streaming protocol, used in VideoStreamingFormat

    "},"Type Definitions.html#/c:SDLVoiceCommand.h@T@SDLVoiceCommandSelectionHandler":{"name":"SDLVoiceCommandSelectionHandler","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLVrCapabilities.h@T@SDLVRCapabilities":{"name":"SDLVRCapabilities","abstract":"

    The VR capabilities of the connected SDL platform. Used in RegisterAppInterfaceResponse.

    "},"Type Definitions.html#/c:SDLWarningLightStatus.h@T@SDLWarningLightStatus":{"name":"SDLWarningLightStatus","abstract":"

    Reflects the status of a cluster instrument warning light. Used in TireStatus

    "},"Type Definitions.html#/c:SDLWayPointType.h@T@SDLWayPointType":{"name":"SDLWayPointType","abstract":"

    The type of a navigation waypoint. Used in GetWayPoints.

    "},"Type Definitions.html#/c:SDLWiperStatus.h@T@SDLWiperStatus":{"name":"SDLWiperStatus","abstract":"

    The status of the windshield wipers. Used in retrieving vehicle data.

    "},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceiveSingleTapForView:atPoint:":{"name":"-touchManager:didReceiveSingleTapForView:atPoint:","abstract":"

    A single tap was received

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceiveDoubleTapForView:atPoint:":{"name":"-touchManager:didReceiveDoubleTapForView:atPoint:","abstract":"

    A double tap was received

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:panningDidStartInView:atPoint:":{"name":"-touchManager:panningDidStartInView:atPoint:","abstract":"

    Panning started

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceivePanningFromPoint:toPoint:":{"name":"-touchManager:didReceivePanningFromPoint:toPoint:","abstract":"

    Panning moved between points

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:panningDidEndInView:atPoint:":{"name":"-touchManager:panningDidEndInView:atPoint:","abstract":"

    Panning ended

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:panningCanceledAtPoint:":{"name":"-touchManager:panningCanceledAtPoint:","abstract":"

    Panning canceled

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:pinchDidStartInView:atCenterPoint:":{"name":"-touchManager:pinchDidStartInView:atCenterPoint:","abstract":"

    Pinch did start

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceivePinchAtCenterPoint:withScale:":{"name":"-touchManager:didReceivePinchAtCenterPoint:withScale:","abstract":"

    @abstract","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceivePinchInView:atCenterPoint:withScale:":{"name":"-touchManager:didReceivePinchInView:atCenterPoint:withScale:","abstract":"

    Pinch moved and changed scale

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:pinchDidEndInView:atCenterPoint:":{"name":"-touchManager:pinchDidEndInView:atCenterPoint:","abstract":"

    Pinch did end

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:pinchCanceledAtCenterPoint:":{"name":"-touchManager:pinchCanceledAtCenterPoint:","abstract":"

    Pinch canceled

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLStreamingMediaManagerDataSource.html#/c:objc(pl)SDLStreamingMediaManagerDataSource(im)preferredVideoFormatOrderFromHeadUnitPreferredOrder:":{"name":"-preferredVideoFormatOrderFromHeadUnitPreferredOrder:","abstract":"

    Implement to return a different preferred order of attempted format usage than the head unit’s preferred order. In nearly all cases, it’s best to simply return the head unit’s preferred order, or not implement this method (which does the same thing).

    ","parent_name":"SDLStreamingMediaManagerDataSource"},"Protocols/SDLStreamingMediaManagerDataSource.html#/c:objc(pl)SDLStreamingMediaManagerDataSource(im)resolutionFromHeadUnitPreferredResolution:":{"name":"-resolutionFromHeadUnitPreferredResolution:","abstract":"

    Implement to return a different resolution to use for video streaming than the head unit’s requested resolution. If you return a resolution that the head unit does not like, the manager will fail to start up. In nearly all cases, it’s best to simply return the head unit’s preferred order, or not implement this method (which does the same thing), and adapt your UI to the head unit’s preferred resolution instead.

    ","parent_name":"SDLStreamingMediaManagerDataSource"},"Protocols/SDLStreamingAudioManagerType.html#/c:objc(pl)SDLStreamingAudioManagerType(py)audioConnected":{"name":"audioConnected","abstract":"

    Whether or not the audio byte stream is currently connected

    ","parent_name":"SDLStreamingAudioManagerType"},"Protocols/SDLStreamingAudioManagerType.html#/c:objc(pl)SDLStreamingAudioManagerType(im)sendAudioData:":{"name":"-sendAudioData:","abstract":"

    Send audio data bytes over the audio byte stream

    ","parent_name":"SDLStreamingAudioManagerType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(py)appId":{"name":"appId","abstract":"

    The app id of the app

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)initializeWithAppId:completionHandler:":{"name":"-initializeWithAppId:completionHandler:","abstract":"

    Initialize the SDL security library with the app’s id and a completion handler

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)stop":{"name":"-stop","abstract":"

    Stop the security library

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)runHandshakeWithClientData:error:":{"name":"-runHandshakeWithClientData:error:","abstract":"

    Run the SSL/TLS handshake

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)encryptData:withError:":{"name":"-encryptData:withError:","abstract":"

    Encrypt data using SSL/TLS

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)decryptData:withError:":{"name":"-decryptData:withError:","abstract":"

    Decrypt data using SSL/TLS

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(cm)availableMakes":{"name":"+availableMakes","abstract":"

    The vehicle makes this security library covers

    ","parent_name":"SDLSecurityType"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)managerDidDisconnect":{"name":"-managerDidDisconnect","abstract":"

    Called upon a disconnection from the remote system.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)hmiLevel:didChangeToLevel:":{"name":"-hmiLevel:didChangeToLevel:","abstract":"

    Called when the HMI level state of this application changes on the remote system. This is equivalent to the application’s state changes in iOS such as foreground, background, or closed.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)audioStreamingState:didChangeToState:":{"name":"-audioStreamingState:didChangeToState:","abstract":"

    Called when the audio streaming state of this application changes on the remote system. This refers to when streaming audio is audible to the user.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)systemContext:didChangeToContext:":{"name":"-systemContext:didChangeToContext:","abstract":"

    Called when the system context of this application changes on the remote system. This refers to whether or not a user-initiated interaction is in progress, and if so, what it is.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)managerShouldUpdateLifecycleToLanguage:":{"name":"-managerShouldUpdateLifecycleToLanguage:","abstract":"

    Called when the lifecycle manager detected a language mismatch. In case of a language mismatch the manager should change the apps registration by updating the lifecycle configuration to the specified language. If the app can support the specified language it should return an Object of SDLLifecycleConfigurationUpdate, otherwise it should return nil to indicate that the language is not supported.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLLogTarget.html#/c:objc(pl)SDLLogTarget(cm)logger":{"name":"+logger","abstract":"

    A simple convenience initializer to create the object. This should not start up the logger.

    ","parent_name":"SDLLogTarget"},"Protocols/SDLLogTarget.html#/c:objc(pl)SDLLogTarget(im)setupLogger":{"name":"-setupLogger","abstract":"

    A call to setup the logger in whatever manner it needs to do so.

    ","parent_name":"SDLLogTarget"},"Protocols/SDLLogTarget.html#/c:objc(pl)SDLLogTarget(im)logWithLog:formattedLog:":{"name":"-logWithLog:formattedLog:","abstract":"

    Log a particular log using the model and the formatted log message to the target.

    ","parent_name":"SDLLogTarget"},"Protocols/SDLLogTarget.html#/c:objc(pl)SDLLogTarget(im)teardownLogger":{"name":"-teardownLogger","abstract":"

    The log target should be torn down. e.g. file handles should be closed

    ","parent_name":"SDLLogTarget"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)userDidSubmitInput:withEvent:":{"name":"-userDidSubmitInput:withEvent:","abstract":"

    The keyboard session completed with some input.

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)keyboardDidAbortWithReason:":{"name":"-keyboardDidAbortWithReason:","abstract":"

    The keyboard session aborted.

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)customKeyboardConfiguration":{"name":"-customKeyboardConfiguration","abstract":"

    Implement this in order to provide a custom keyboard configuration to just this keyboard. To apply default settings to all keyboards, see SDLScreenManager.keyboardConfiguration

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)updateAutocompleteWithInput:completionHandler:":{"name":"-updateAutocompleteWithInput:completionHandler:","abstract":"

    Implement this if you wish to update the KeyboardProperties.autoCompleteText as the user updates their input. This is called upon a KEYPRESS event.

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)updateCharacterSetWithInput:completionHandler:":{"name":"-updateCharacterSetWithInput:completionHandler:","abstract":"

    Implement this if you wish to update the limitedCharacterSet as the user updates their input. This is called upon a KEYPRESS event.

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)keyboardDidSendEvent:text:":{"name":"-keyboardDidSendEvent:text:","abstract":"

    Implement this to be notified of all events occurring on the keyboard

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLChoiceSetDelegate.html#/c:objc(pl)SDLChoiceSetDelegate(im)choiceSet:didSelectChoice:withSource:atRowIndex:":{"name":"-choiceSet:didSelectChoice:withSource:atRowIndex:","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetDelegate"},"Protocols/SDLChoiceSetDelegate.html#/c:objc(pl)SDLChoiceSetDelegate(im)choiceSet:didReceiveError:":{"name":"-choiceSet:didReceiveError:","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetDelegate"},"Protocols/SDLAudioStreamManagerDelegate.html#/c:objc(pl)SDLAudioStreamManagerDelegate(im)audioStreamManager:fileDidFinishPlaying:successfully:":{"name":"-audioStreamManager:fileDidFinishPlaying:successfully:","abstract":"

    Called when a file from the SDLAudioStreamManager finishes playing

    ","parent_name":"SDLAudioStreamManagerDelegate"},"Protocols/SDLAudioStreamManagerDelegate.html#/c:objc(pl)SDLAudioStreamManagerDelegate(im)audioStreamManager:errorDidOccurForFile:error:":{"name":"-audioStreamManager:errorDidOccurForFile:error:","abstract":"

    Called when a file from the SDLAudioStreamManager could not play

    ","parent_name":"SDLAudioStreamManagerDelegate"},"Protocols.html#/c:objc(pl)SDLInt":{"name":"SDLInt","abstract":"

    A declaration that this NSNumber contains an NSInteger.

    "},"Protocols.html#/c:objc(pl)SDLUInt":{"name":"SDLUInt","abstract":"

    A declaration that this NSNumber contains an NSUInteger.

    "},"Protocols.html#/c:objc(pl)SDLBool":{"name":"SDLBool","abstract":"

    A declaration that this NSNumber contains a BOOL.

    "},"Protocols.html#/c:objc(pl)SDLFloat":{"name":"SDLFloat","abstract":"

    A declaration that this NSNumber contains a float.

    "},"Protocols/SDLAudioStreamManagerDelegate.html":{"name":"SDLAudioStreamManagerDelegate","abstract":"

    Undocumented

    "},"Protocols/SDLChoiceSetDelegate.html":{"name":"SDLChoiceSetDelegate","abstract":"

    Undocumented

    "},"Protocols/SDLKeyboardDelegate.html":{"name":"SDLKeyboardDelegate","abstract":"

    Undocumented

    "},"Protocols/SDLLogTarget.html":{"name":"SDLLogTarget","abstract":"

    A protocol describing a place logs from SDLLogManager are logged to

    "},"Protocols/SDLManagerDelegate.html":{"name":"SDLManagerDelegate","abstract":"

    Undocumented

    "},"Protocols/SDLSecurityType.html":{"name":"SDLSecurityType","abstract":"

    A protocol used by SDL Security libraries.

    "},"Protocols/SDLStreamingAudioManagerType.html":{"name":"SDLStreamingAudioManagerType","abstract":"

    Undocumented

    "},"Protocols/SDLStreamingMediaManagerDataSource.html":{"name":"SDLStreamingMediaManagerDataSource","abstract":"

    Undocumented

    "},"Protocols/SDLTouchManagerDelegate.html":{"name":"SDLTouchManagerDelegate","abstract":"

    Undocumented

    "},"Enums/SDLStreamingEncryptionFlag.html#/c:@E@SDLStreamingEncryptionFlag@SDLStreamingEncryptionFlagNone":{"name":"SDLStreamingEncryptionFlagNone","abstract":"

    Undocumented

    ","parent_name":"SDLStreamingEncryptionFlag"},"Enums/SDLStreamingEncryptionFlag.html#/c:@E@SDLStreamingEncryptionFlag@SDLStreamingEncryptionFlagAuthenticateOnly":{"name":"SDLStreamingEncryptionFlagAuthenticateOnly","abstract":"

    Undocumented

    ","parent_name":"SDLStreamingEncryptionFlag"},"Enums/SDLStreamingEncryptionFlag.html#/c:@E@SDLStreamingEncryptionFlag@SDLStreamingEncryptionFlagAuthenticateAndEncrypt":{"name":"SDLStreamingEncryptionFlagAuthenticateAndEncrypt","abstract":"

    Undocumented

    ","parent_name":"SDLStreamingEncryptionFlag"},"Enums/SDLCarWindowRenderingType.html#/c:@E@SDLCarWindowRenderingType@SDLCarWindowRenderingTypeLayer":{"name":"SDLCarWindowRenderingTypeLayer","abstract":"

    Undocumented

    ","parent_name":"SDLCarWindowRenderingType"},"Enums/SDLCarWindowRenderingType.html#/c:@E@SDLCarWindowRenderingType@SDLCarWindowRenderingTypeViewAfterScreenUpdates":{"name":"SDLCarWindowRenderingTypeViewAfterScreenUpdates","abstract":"

    Undocumented

    ","parent_name":"SDLCarWindowRenderingType"},"Enums/SDLCarWindowRenderingType.html#/c:@E@SDLCarWindowRenderingType@SDLCarWindowRenderingTypeViewBeforeScreenUpdates":{"name":"SDLCarWindowRenderingTypeViewBeforeScreenUpdates","abstract":"

    Undocumented

    ","parent_name":"SDLCarWindowRenderingType"},"Enums/SDLRPCMessageType.html#/c:@E@SDLRPCMessageType@SDLRPCMessageTypeRequest":{"name":"SDLRPCMessageTypeRequest","abstract":"

    Undocumented

    ","parent_name":"SDLRPCMessageType"},"Enums/SDLRPCMessageType.html#/c:@E@SDLRPCMessageType@SDLRPCMessageTypeResponse":{"name":"SDLRPCMessageTypeResponse","abstract":"

    Undocumented

    ","parent_name":"SDLRPCMessageType"},"Enums/SDLRPCMessageType.html#/c:@E@SDLRPCMessageType@SDLRPCMessageTypeNotification":{"name":"SDLRPCMessageTypeNotification","abstract":"

    Undocumented

    ","parent_name":"SDLRPCMessageType"},"Enums/SDLPermissionGroupStatus.html#/c:@E@SDLPermissionGroupStatus@SDLPermissionGroupStatusAllowed":{"name":"SDLPermissionGroupStatusAllowed","abstract":"

    Every RPC in the group is currently allowed.

    ","parent_name":"SDLPermissionGroupStatus"},"Enums/SDLPermissionGroupStatus.html#/c:@E@SDLPermissionGroupStatus@SDLPermissionGroupStatusDisallowed":{"name":"SDLPermissionGroupStatusDisallowed","abstract":"

    Every RPC in the group is currently disallowed.

    ","parent_name":"SDLPermissionGroupStatus"},"Enums/SDLPermissionGroupStatus.html#/c:@E@SDLPermissionGroupStatus@SDLPermissionGroupStatusMixed":{"name":"SDLPermissionGroupStatusMixed","abstract":"

    Some RPCs in the group are allowed and some disallowed.

    ","parent_name":"SDLPermissionGroupStatus"},"Enums/SDLPermissionGroupStatus.html#/c:@E@SDLPermissionGroupStatus@SDLPermissionGroupStatusUnknown":{"name":"SDLPermissionGroupStatusUnknown","abstract":"

    The current status of the group is unknown.

    ","parent_name":"SDLPermissionGroupStatus"},"Enums/SDLPermissionGroupType.html#/c:@E@SDLPermissionGroupType@SDLPermissionGroupTypeAllAllowed":{"name":"SDLPermissionGroupTypeAllAllowed","abstract":"

    Be notified when all of the RPC in the group are allowed, or, when they all stop being allowed in some sense, that is, when they were all allowed, and now they are not.

    ","parent_name":"SDLPermissionGroupType"},"Enums/SDLPermissionGroupType.html#/c:@E@SDLPermissionGroupType@SDLPermissionGroupTypeAny":{"name":"SDLPermissionGroupTypeAny","abstract":"

    Be notified when any change in availability occurs among the group.

    ","parent_name":"SDLPermissionGroupType"},"Enums/SDLLogFormatType.html#/c:@E@SDLLogFormatType@SDLLogFormatTypeSimple":{"name":"SDLLogFormatTypeSimple","abstract":"

    Undocumented

    ","parent_name":"SDLLogFormatType"},"Enums/SDLLogFormatType.html#/c:@E@SDLLogFormatType@SDLLogFormatTypeDefault":{"name":"SDLLogFormatTypeDefault","abstract":"

    Undocumented

    ","parent_name":"SDLLogFormatType"},"Enums/SDLLogFormatType.html#/c:@E@SDLLogFormatType@SDLLogFormatTypeDetailed":{"name":"SDLLogFormatTypeDetailed","abstract":"

    Undocumented

    ","parent_name":"SDLLogFormatType"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelDefault":{"name":"SDLLogLevelDefault","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelOff":{"name":"SDLLogLevelOff","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelError":{"name":"SDLLogLevelError","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelWarning":{"name":"SDLLogLevelWarning","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelDebug":{"name":"SDLLogLevelDebug","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelVerbose":{"name":"SDLLogLevelVerbose","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogFlag.html#/c:@E@SDLLogFlag@SDLLogFlagError":{"name":"SDLLogFlagError","abstract":"

    Undocumented

    ","parent_name":"SDLLogFlag"},"Enums/SDLLogFlag.html#/c:@E@SDLLogFlag@SDLLogFlagWarning":{"name":"SDLLogFlagWarning","abstract":"

    Undocumented

    ","parent_name":"SDLLogFlag"},"Enums/SDLLogFlag.html#/c:@E@SDLLogFlag@SDLLogFlagDebug":{"name":"SDLLogFlagDebug","abstract":"

    Undocumented

    ","parent_name":"SDLLogFlag"},"Enums/SDLLogFlag.html#/c:@E@SDLLogFlag@SDLLogFlagVerbose":{"name":"SDLLogFlagVerbose","abstract":"

    Undocumented

    ","parent_name":"SDLLogFlag"},"Enums/SDLLogBytesDirection.html#/c:@E@SDLLogBytesDirection@SDLLogBytesDirectionTransmit":{"name":"SDLLogBytesDirectionTransmit","abstract":"

    Undocumented

    ","parent_name":"SDLLogBytesDirection"},"Enums/SDLLogBytesDirection.html#/c:@E@SDLLogBytesDirection@SDLLogBytesDirectionReceive":{"name":"SDLLogBytesDirectionReceive","abstract":"

    Undocumented

    ","parent_name":"SDLLogBytesDirection"},"Enums/SDLRPCStoreError.html#/c:@E@SDLRPCStoreError@SDLRPCStoreErrorGetInvalidObject":{"name":"SDLRPCStoreErrorGetInvalidObject","abstract":"

    In dictionary stored value with unexpected type

    ","parent_name":"SDLRPCStoreError"},"Enums/SDLTransportError.html#/c:@E@SDLTransportError@SDLTransportErrorUnknown":{"name":"SDLTransportErrorUnknown","abstract":"

    Connection cannot be established due to a reason not listed here.

    ","parent_name":"SDLTransportError"},"Enums/SDLTransportError.html#/c:@E@SDLTransportError@SDLTransportErrorConnectionRefused":{"name":"SDLTransportErrorConnectionRefused","abstract":"

    TCP connection is refused.","parent_name":"SDLTransportError"},"Enums/SDLTransportError.html#/c:@E@SDLTransportError@SDLTransportErrorConnectionTimedOut":{"name":"SDLTransportErrorConnectionTimedOut","abstract":"

    TCP connection cannot be established within given time.","parent_name":"SDLTransportError"},"Enums/SDLTransportError.html#/c:@E@SDLTransportError@SDLTransportErrorNetworkDown":{"name":"SDLTransportErrorNetworkDown","abstract":"

    TCP connection cannot be established since network is down.","parent_name":"SDLTransportError"},"Enums/SDLChoiceSetManagerError.html#/c:@E@SDLChoiceSetManagerError@SDLChoiceSetManagerErrorPendingPresentationDeleted":{"name":"SDLChoiceSetManagerErrorPendingPresentationDeleted","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetManagerError"},"Enums/SDLChoiceSetManagerError.html#/c:@E@SDLChoiceSetManagerError@SDLChoiceSetManagerErrorDeletionFailed":{"name":"SDLChoiceSetManagerErrorDeletionFailed","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetManagerError"},"Enums/SDLChoiceSetManagerError.html#/c:@E@SDLChoiceSetManagerError@SDLChoiceSetManagerErrorUploadFailed":{"name":"SDLChoiceSetManagerErrorUploadFailed","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetManagerError"},"Enums/SDLChoiceSetManagerError.html#/c:@E@SDLChoiceSetManagerError@SDLChoiceSetManagerErrorFailedToCreateMenuItems":{"name":"SDLChoiceSetManagerErrorFailedToCreateMenuItems","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetManagerError"},"Enums/SDLMenuManagerError.html#/c:@E@SDLMenuManagerError@SDLMenuManagerErrorRPCsFailed":{"name":"SDLMenuManagerErrorRPCsFailed","abstract":"

    Undocumented

    ","parent_name":"SDLMenuManagerError"},"Enums/SDLSoftButtonManagerError.html#/c:@E@SDLSoftButtonManagerError@SDLSoftButtonManagerErrorPendingUpdateSuperseded":{"name":"SDLSoftButtonManagerErrorPendingUpdateSuperseded","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButtonManagerError"},"Enums/SDLTextAndGraphicManagerError.html#/c:@E@SDLTextAndGraphicManagerError@SDLTextAndGraphicManagerErrorPendingUpdateSuperseded":{"name":"SDLTextAndGraphicManagerErrorPendingUpdateSuperseded","abstract":"

    Undocumented

    ","parent_name":"SDLTextAndGraphicManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorCannotOverwrite":{"name":"SDLFileManagerErrorCannotOverwrite","abstract":"

    A file attempted to send, but a file with that name already exists on the remote head unit, and the file was not configured to overwrite.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorNoKnownFile":{"name":"SDLFileManagerErrorNoKnownFile","abstract":"

    A file was attempted to be accessed but it does not exist.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorUnableToStart":{"name":"SDLFileManagerErrorUnableToStart","abstract":"

    The file manager attempted to start but encountered an error.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorUnableToUpload":{"name":"SDLFileManagerErrorUnableToUpload","abstract":"

    The file manager was unable to send this file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorFileDoesNotExist":{"name":"SDLFileManagerErrorFileDoesNotExist","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerUploadCanceled":{"name":"SDLFileManagerUploadCanceled","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerMultipleFileUploadTasksFailed":{"name":"SDLFileManagerMultipleFileUploadTasksFailed","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerMultipleFileDeleteTasksFailed":{"name":"SDLFileManagerMultipleFileDeleteTasksFailed","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorFileDataMissing":{"name":"SDLFileManagerErrorFileDataMissing","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorStaticIcon":{"name":"SDLFileManagerErrorStaticIcon","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorRPCRequestFailed":{"name":"SDLManagerErrorRPCRequestFailed","abstract":"

    An RPC request failed to send.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorNotConnected":{"name":"SDLManagerErrorNotConnected","abstract":"

    Some action was attempted that requires a connection to the remote head unit.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorNotReady":{"name":"SDLManagerErrorNotReady","abstract":"

    Some action was attempted before the ready state was reached.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorUnknownRemoteError":{"name":"SDLManagerErrorUnknownRemoteError","abstract":"

    The remote system encountered an unknown error.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorManagersFailedToStart":{"name":"SDLManagerErrorManagersFailedToStart","abstract":"

    One or more of the sub-managers failed to start.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorRegistrationFailed":{"name":"SDLManagerErrorRegistrationFailed","abstract":"

    Registering with the remote system failed.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorRegistrationSuccessWithWarning":{"name":"SDLManagerErrorRegistrationSuccessWithWarning","abstract":"

    Registering with the remote system was successful, but had a warning.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorCancelled":{"name":"SDLManagerErrorCancelled","abstract":"

    Request operations were cancelled before they could be sent

    ","parent_name":"SDLManagerError"},"Enums/SDLChoiceSetLayout.html#/c:@E@SDLChoiceSetLayout@SDLChoiceSetLayoutList":{"name":"SDLChoiceSetLayoutList","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetLayout"},"Enums/SDLChoiceSetLayout.html#/c:@E@SDLChoiceSetLayout@SDLChoiceSetLayoutTiles":{"name":"SDLChoiceSetLayoutTiles","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetLayout"},"Enums/SDLAudioStreamManagerError.html#/c:@E@SDLAudioStreamManagerError@SDLAudioStreamManagerErrorNotConnected":{"name":"SDLAudioStreamManagerErrorNotConnected","abstract":"

    Undocumented

    ","parent_name":"SDLAudioStreamManagerError"},"Enums/SDLAudioStreamManagerError.html#/c:@E@SDLAudioStreamManagerError@SDLAudioStreamManagerErrorNoQueuedAudio":{"name":"SDLAudioStreamManagerErrorNoQueuedAudio","abstract":"

    Undocumented

    ","parent_name":"SDLAudioStreamManagerError"},"Enums/SDLArtworkImageFormat.html#/c:@E@SDLArtworkImageFormat@SDLArtworkImageFormatPNG":{"name":"SDLArtworkImageFormatPNG","abstract":"

    Undocumented

    ","parent_name":"SDLArtworkImageFormat"},"Enums/SDLArtworkImageFormat.html#/c:@E@SDLArtworkImageFormat@SDLArtworkImageFormatJPG":{"name":"SDLArtworkImageFormatJPG","abstract":"

    Undocumented

    ","parent_name":"SDLArtworkImageFormat"},"Enums/SDLArtworkImageFormat.html":{"name":"SDLArtworkImageFormat","abstract":"

    Undocumented

    "},"Enums/SDLAudioStreamManagerError.html":{"name":"SDLAudioStreamManagerError","abstract":"

    Undocumented

    "},"Enums/SDLChoiceSetLayout.html":{"name":"SDLChoiceSetLayout","abstract":"

    Undocumented

    "},"Enums/SDLManagerError.html":{"name":"SDLManagerError","abstract":"

    Errors associated with the SDLManager class.

    "},"Enums/SDLFileManagerError.html":{"name":"SDLFileManagerError","abstract":"

    Errors associated with the SDLFileManager class.

    "},"Enums/SDLTextAndGraphicManagerError.html":{"name":"SDLTextAndGraphicManagerError","abstract":"

    Errors associated with the ScreenManager class

    "},"Enums/SDLSoftButtonManagerError.html":{"name":"SDLSoftButtonManagerError","abstract":"

    Errors associated with the ScreenManager class

    "},"Enums/SDLMenuManagerError.html":{"name":"SDLMenuManagerError","abstract":"

    Errors associated with the ScreenManager class

    "},"Enums/SDLChoiceSetManagerError.html":{"name":"SDLChoiceSetManagerError","abstract":"

    Undocumented

    "},"Enums/SDLTransportError.html":{"name":"SDLTransportError","abstract":"

    Errors associated with transport.

    "},"Enums/SDLRPCStoreError.html":{"name":"SDLRPCStoreError","abstract":"

    Errors associated with store.

    "},"Enums/SDLLogBytesDirection.html":{"name":"SDLLogBytesDirection","abstract":"

    Undocumented

    "},"Enums/SDLLogFlag.html":{"name":"SDLLogFlag","abstract":"

    Flags used for SDLLogLevel to provide correct enum values. This is purely for internal use.

    "},"Enums/SDLLogLevel.html":{"name":"SDLLogLevel","abstract":"

    An enum describing a level of logging.

    "},"Enums/SDLLogFormatType.html":{"name":"SDLLogFormatType","abstract":"

    The output format of logs; how they will appear when printed out into a string.

    "},"Enums/SDLPermissionGroupType.html":{"name":"SDLPermissionGroupType","abstract":"

    A permission group type which will be used to tell the system what type of changes you want to be notified about for the group.

    "},"Enums/SDLPermissionGroupStatus.html":{"name":"SDLPermissionGroupStatus","abstract":"

    The status of the group of RPCs permissions.

    "},"Enums/SDLRPCMessageType.html":{"name":"SDLRPCMessageType","abstract":"

    The type of RPC message

    "},"Enums/SDLCarWindowRenderingType.html":{"name":"SDLCarWindowRenderingType","abstract":"

    The type of rendering that CarWindow will perform. Depending on your app, you may need to try different ones for best performance

    "},"Enums/SDLStreamingEncryptionFlag.html":{"name":"SDLStreamingEncryptionFlag","abstract":"

    A flag determining how video and audio streaming should be encrypted

    "},"Constants.html#/c:@SDLAmbientLightStatusNight":{"name":"SDLAmbientLightStatusNight","abstract":"

    Represents a night ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusTwilight1":{"name":"SDLAmbientLightStatusTwilight1","abstract":"

    Represents a twilight 1 ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusTwilight2":{"name":"SDLAmbientLightStatusTwilight2","abstract":"

    Represents a twilight 2 ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusTwilight3":{"name":"SDLAmbientLightStatusTwilight3","abstract":"

    Represents a twilight 3 ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusTwilight4":{"name":"SDLAmbientLightStatusTwilight4","abstract":"

    Represents a twilight 4 ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusDay":{"name":"SDLAmbientLightStatusDay","abstract":"

    Represents a day ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusUnknown":{"name":"SDLAmbientLightStatusUnknown","abstract":"

    Represents an unknown ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusInvalid":{"name":"SDLAmbientLightStatusInvalid","abstract":"

    Represents a invalid ambient light status

    "},"Constants.html#/c:@SDLAppHMITypeDefault":{"name":"SDLAppHMITypeDefault","abstract":"

    The App will have default rights.

    "},"Constants.html#/c:@SDLAppHMITypeCommunication":{"name":"SDLAppHMITypeCommunication","abstract":"

    Communication type of App

    "},"Constants.html#/c:@SDLAppHMITypeMedia":{"name":"SDLAppHMITypeMedia","abstract":"

    App dealing with Media

    "},"Constants.html#/c:@SDLAppHMITypeMessaging":{"name":"SDLAppHMITypeMessaging","abstract":"

    Messaging App

    "},"Constants.html#/c:@SDLAppHMITypeNavigation":{"name":"SDLAppHMITypeNavigation","abstract":"

    Navigation App

    "},"Constants.html#/c:@SDLAppHMITypeInformation":{"name":"SDLAppHMITypeInformation","abstract":"

    Information App

    "},"Constants.html#/c:@SDLAppHMITypeSocial":{"name":"SDLAppHMITypeSocial","abstract":"

    App dealing with social media

    "},"Constants.html#/c:@SDLAppHMITypeProjection":{"name":"SDLAppHMITypeProjection","abstract":"

    App dealing with Mobile Projection applications

    "},"Constants.html#/c:@SDLAppHMITypeBackgroundProcess":{"name":"SDLAppHMITypeBackgroundProcess","abstract":"

    App designed for use in the background

    "},"Constants.html#/c:@SDLAppHMITypeTesting":{"name":"SDLAppHMITypeTesting","abstract":"

    App only for Testing purposes

    "},"Constants.html#/c:@SDLAppHMITypeSystem":{"name":"SDLAppHMITypeSystem","abstract":"

    System App

    "},"Constants.html#/c:@SDLAppHMITypeRemoteControl":{"name":"SDLAppHMITypeRemoteControl","abstract":"

    Remote control

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonIgnitionOff":{"name":"SDLAppInterfaceUnregisteredReasonIgnitionOff","abstract":"

    Vehicle ignition turned off.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonBluetoothOff":{"name":"SDLAppInterfaceUnregisteredReasonBluetoothOff","abstract":"

    Bluetooth was turned off, causing termination of a necessary Bluetooth connection.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonUSBDisconnected":{"name":"SDLAppInterfaceUnregisteredReasonUSBDisconnected","abstract":"

    USB was disconnected, causing termination of a necessary iAP connection.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonRequestWhileInNoneHMILevel":{"name":"SDLAppInterfaceUnregisteredReasonRequestWhileInNoneHMILevel","abstract":"

    Application attempted SmartDeviceLink RPC request while HMILevel = NONE. App must have HMILevel other than NONE to issue RPC requests or get notifications or RPC responses.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonTooManyRequests":{"name":"SDLAppInterfaceUnregisteredReasonTooManyRequests","abstract":"

    Either too many – or too many per unit of time – requests were made by the application.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonDriverDistractionViolation":{"name":"SDLAppInterfaceUnregisteredReasonDriverDistractionViolation","abstract":"

    The application has issued requests which cause driver distraction rules to be violated.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonLanguageChange":{"name":"SDLAppInterfaceUnregisteredReasonLanguageChange","abstract":"

    The user performed a language change on the SDL platform, causing the application to need to be reregistered for the new language.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonMasterReset":{"name":"SDLAppInterfaceUnregisteredReasonMasterReset","abstract":"

    The user performed a MASTER RESET on the SDL platform, causing removal of a necessary Bluetooth pairing.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonFactoryDefaults":{"name":"SDLAppInterfaceUnregisteredReasonFactoryDefaults","abstract":"

    The user restored settings to FACTORY DEFAULTS on the SDL platform.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonAppUnauthorized":{"name":"SDLAppInterfaceUnregisteredReasonAppUnauthorized","abstract":"

    The app is not being authorized to be connected to SDL.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonProtocolViolation":{"name":"SDLAppInterfaceUnregisteredReasonProtocolViolation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonUnsupportedHMIResource":{"name":"SDLAppInterfaceUnregisteredReasonUnsupportedHMIResource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAppServiceTypeMedia":{"name":"SDLAppServiceTypeMedia","abstract":"

    The app will have a service type of media.

    "},"Constants.html#/c:@SDLAppServiceTypeWeather":{"name":"SDLAppServiceTypeWeather","abstract":"

    The app will have a service type of weather.

    "},"Constants.html#/c:@SDLAppServiceTypeNavigation":{"name":"SDLAppServiceTypeNavigation","abstract":"

    The app will have a service type of navigation.

    "},"Constants.html#/c:@SDLErrorDomainAudioStreamManager":{"name":"SDLErrorDomainAudioStreamManager","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamingIndicatorPlayPause":{"name":"SDLAudioStreamingIndicatorPlayPause","abstract":"

    Default playback indicator."},"Constants.html#/c:@SDLAudioStreamingIndicatorPlay":{"name":"SDLAudioStreamingIndicatorPlay","abstract":"

    Indicates that a button press of the Play/Pause button starts the audio playback.

    "},"Constants.html#/c:@SDLAudioStreamingIndicatorPause":{"name":"SDLAudioStreamingIndicatorPause","abstract":"

    Indicates that a button press of the Play/Pause button pauses the current audio playback.

    "},"Constants.html#/c:@SDLAudioStreamingIndicatorStop":{"name":"SDLAudioStreamingIndicatorStop","abstract":"

    Indicates that a button press of the Play/Pause button stops the current audio playback.

    "},"Constants.html#/c:@SDLAudioStreamingStateAudible":{"name":"SDLAudioStreamingStateAudible","abstract":"

    Currently streaming audio, if any, is audible to user.

    "},"Constants.html#/c:@SDLAudioStreamingStateAttenuated":{"name":"SDLAudioStreamingStateAttenuated","abstract":"

    Some kind of audio mixing is taking place. Currently streaming audio, if any, is audible to the user at a lowered volume.

    "},"Constants.html#/c:@SDLAudioStreamingStateNotAudible":{"name":"SDLAudioStreamingStateNotAudible","abstract":"

    Currently streaming audio, if any, is not audible to user. made via VR session.

    "},"Constants.html#/c:@SDLAudioTypePCM":{"name":"SDLAudioTypePCM","abstract":"

    PCM raw audio

    "},"Constants.html#/c:@SDLBitsPerSample8Bit":{"name":"SDLBitsPerSample8Bit","abstract":"

    8 bits per sample

    "},"Constants.html#/c:@SDLBitsPerSample16Bit":{"name":"SDLBitsPerSample16Bit","abstract":"

    16 bits per sample

    "},"Constants.html#/c:@SDLButtonEventModeButtonUp":{"name":"SDLButtonEventModeButtonUp","abstract":"

    The button was released

    "},"Constants.html#/c:@SDLButtonEventModeButtonDown":{"name":"SDLButtonEventModeButtonDown","abstract":"

    The button was depressed

    "},"Constants.html#/c:@SDLButtonNameOk":{"name":"SDLButtonNameOk","abstract":"

    Represents the button usually labeled OK. A typical use of this button is for the user to press it to make a selection. Prior to SDL Core 5.0 (iOS Proxy v.6.1), Ok was used for both OK buttons AND PlayPause. In 5.0, PlayPause was introduced to reduce confusion, and you should use the one you intend for your use case (usually PlayPause). Until the next proxy breaking change, however, subscribing to this button name will continue to subscribe you to PlayPause so that your code does not break. That means that if you subscribe to both Ok and PlayPause, you will receive duplicate notifications.

    "},"Constants.html#/c:@SDLButtonNamePlayPause":{"name":"SDLButtonNamePlayPause","abstract":"

    Represents the play/pause button for media apps. Replaces OK on sub-5.0 head units, compliments it on 5.0 head units and later.

    "},"Constants.html#/c:@SDLButtonNameSeekLeft":{"name":"SDLButtonNameSeekLeft","abstract":"

    Represents the seek-left button. A typical use of this button is for the user to scroll to the left through menu choices one menu item per press.

    "},"Constants.html#/c:@SDLButtonNameSeekRight":{"name":"SDLButtonNameSeekRight","abstract":"

    Represents the seek-right button. A typical use of this button is for the user to scroll to the right through menu choices one menu item per press.

    "},"Constants.html#/c:@SDLButtonNameTuneUp":{"name":"SDLButtonNameTuneUp","abstract":"

    Represents a turn of the tuner knob in the clockwise direction one tick.

    "},"Constants.html#/c:@SDLButtonNameTuneDown":{"name":"SDLButtonNameTuneDown","abstract":"

    Represents a turn of the tuner knob in the counter-clockwise direction one tick.

    "},"Constants.html#/c:@SDLButtonNamePreset0":{"name":"SDLButtonNamePreset0","abstract":"

    Represents the preset 0 button.

    "},"Constants.html#/c:@SDLButtonNamePreset1":{"name":"SDLButtonNamePreset1","abstract":"

    Represents the preset 1 button.

    "},"Constants.html#/c:@SDLButtonNamePreset2":{"name":"SDLButtonNamePreset2","abstract":"

    Represents the preset 2 button.

    "},"Constants.html#/c:@SDLButtonNamePreset3":{"name":"SDLButtonNamePreset3","abstract":"

    Represents the preset 3 button.

    "},"Constants.html#/c:@SDLButtonNamePreset4":{"name":"SDLButtonNamePreset4","abstract":"

    Represents the preset 4 button.

    "},"Constants.html#/c:@SDLButtonNamePreset5":{"name":"SDLButtonNamePreset5","abstract":"

    Represents the preset 5 button.

    "},"Constants.html#/c:@SDLButtonNamePreset6":{"name":"SDLButtonNamePreset6","abstract":"

    Represents the preset 6 button.

    "},"Constants.html#/c:@SDLButtonNamePreset7":{"name":"SDLButtonNamePreset7","abstract":"

    Represents the preset 7 button.

    "},"Constants.html#/c:@SDLButtonNamePreset8":{"name":"SDLButtonNamePreset8","abstract":"

    Represents the preset 8 button.

    "},"Constants.html#/c:@SDLButtonNamePreset9":{"name":"SDLButtonNamePreset9","abstract":"

    Represents the preset 9 button.

    "},"Constants.html#/c:@SDLButtonNameCustomButton":{"name":"SDLButtonNameCustomButton","abstract":"

    Represents the Custom button.

    "},"Constants.html#/c:@SDLButtonNameSearch":{"name":"SDLButtonNameSearch","abstract":"

    Represents the SEARCH button.

    "},"Constants.html#/c:@SDLButtonNameACMax":{"name":"SDLButtonNameACMax","abstract":"

    Represents AC max button *

    "},"Constants.html#/c:@SDLButtonNameAC":{"name":"SDLButtonNameAC","abstract":"

    Represents AC button *

    "},"Constants.html#/c:@SDLButtonNameRecirculate":{"name":"SDLButtonNameRecirculate","abstract":"

    Represents a Recirculate button

    "},"Constants.html#/c:@SDLButtonNameFanUp":{"name":"SDLButtonNameFanUp","abstract":"

    Represents a Fan up button

    "},"Constants.html#/c:@SDLButtonNameFanDown":{"name":"SDLButtonNameFanDown","abstract":"

    Represents a fan down button

    "},"Constants.html#/c:@SDLButtonNameTempUp":{"name":"SDLButtonNameTempUp","abstract":"

    Represents a temperature up button

    "},"Constants.html#/c:@SDLButtonNameTempDown":{"name":"SDLButtonNameTempDown","abstract":"

    Represents a temperature down button

    "},"Constants.html#/c:@SDLButtonNameDefrostMax":{"name":"SDLButtonNameDefrostMax","abstract":"

    Represents a Defrost max button.

    "},"Constants.html#/c:@SDLButtonNameDefrost":{"name":"SDLButtonNameDefrost","abstract":"

    Represents a Defrost button.

    "},"Constants.html#/c:@SDLButtonNameDefrostRear":{"name":"SDLButtonNameDefrostRear","abstract":"

    Represents a Defrost rear button.

    "},"Constants.html#/c:@SDLButtonNameUpperVent":{"name":"SDLButtonNameUpperVent","abstract":"

    Represents a Upper Vent button.

    "},"Constants.html#/c:@SDLButtonNameLowerVent":{"name":"SDLButtonNameLowerVent","abstract":"

    Represents a Lower vent button.

    "},"Constants.html#/c:@SDLButtonNameVolumeUp":{"name":"SDLButtonNameVolumeUp","abstract":"

    Represents a volume up button.

    "},"Constants.html#/c:@SDLButtonNameVolumeDown":{"name":"SDLButtonNameVolumeDown","abstract":"

    Represents a volume down button.

    "},"Constants.html#/c:@SDLButtonNameEject":{"name":"SDLButtonNameEject","abstract":"

    Represents a Eject Button.

    "},"Constants.html#/c:@SDLButtonNameSource":{"name":"SDLButtonNameSource","abstract":"

    Represents a Source button.

    "},"Constants.html#/c:@SDLButtonNameShuffle":{"name":"SDLButtonNameShuffle","abstract":"

    Represents a SHUFFLE button.

    "},"Constants.html#/c:@SDLButtonNameRepeat":{"name":"SDLButtonNameRepeat","abstract":"

    Represents a Repeat button.

    "},"Constants.html#/c:@SDLButtonPressModeLong":{"name":"SDLButtonPressModeLong","abstract":"

    A button was released, after it was pressed for a long time. Actual timing is defined by the head unit and may vary.

    "},"Constants.html#/c:@SDLButtonPressModeShort":{"name":"SDLButtonPressModeShort","abstract":"

    A button was released, after it was pressed for a short time. Actual timing is defined by the head unit and may vary.

    "},"Constants.html#/c:@SDLCarModeStatusNormal":{"name":"SDLCarModeStatusNormal","abstract":"

    Provides carmode NORMAL to each module.

    "},"Constants.html#/c:@SDLCarModeStatusFactory":{"name":"SDLCarModeStatusFactory","abstract":"

    Provides carmode FACTORY to each module.

    "},"Constants.html#/c:@SDLCarModeStatusTransport":{"name":"SDLCarModeStatusTransport","abstract":"

    Provides carmode TRANSPORT to each module.

    "},"Constants.html#/c:@SDLCarModeStatusCrash":{"name":"SDLCarModeStatusCrash","abstract":"

    Provides carmode CRASH to each module.

    "},"Constants.html#/c:@SDLCharacterSetType2":{"name":"SDLCharacterSetType2","abstract":"

    Character Set Type 2

    "},"Constants.html#/c:@SDLCharacterSetType5":{"name":"SDLCharacterSetType5","abstract":"

    Character Set Type 5

    "},"Constants.html#/c:@SDLCharacterSetCID1":{"name":"SDLCharacterSetCID1","abstract":"

    Character Set CID1

    "},"Constants.html#/c:@SDLCharacterSetCID2":{"name":"SDLCharacterSetCID2","abstract":"

    Character Set CID2

    "},"Constants.html#/c:@SDLCompassDirectionNorth":{"name":"SDLCompassDirectionNorth","abstract":"

    Direction North

    "},"Constants.html#/c:@SDLCompassDirectionNorthwest":{"name":"SDLCompassDirectionNorthwest","abstract":"

    Direction Northwest

    "},"Constants.html#/c:@SDLCompassDirectionWest":{"name":"SDLCompassDirectionWest","abstract":"

    Direction West

    "},"Constants.html#/c:@SDLCompassDirectionSouthwest":{"name":"SDLCompassDirectionSouthwest","abstract":"

    Direction Southwest

    "},"Constants.html#/c:@SDLCompassDirectionSouth":{"name":"SDLCompassDirectionSouth","abstract":"

    Direction South

    "},"Constants.html#/c:@SDLCompassDirectionSoutheast":{"name":"SDLCompassDirectionSoutheast","abstract":"

    Direction Southeast

    "},"Constants.html#/c:@SDLCompassDirectionEast":{"name":"SDLCompassDirectionEast","abstract":"

    Direction East

    "},"Constants.html#/c:@SDLCompassDirectionNortheast":{"name":"SDLCompassDirectionNortheast","abstract":"

    Direction Northeast

    "},"Constants.html#/c:@SDLComponentVolumeStatusUnknown":{"name":"SDLComponentVolumeStatusUnknown","abstract":"

    Unknown SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusNormal":{"name":"SDLComponentVolumeStatusNormal","abstract":"

    Normal SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusLow":{"name":"SDLComponentVolumeStatusLow","abstract":"

    Low SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusFault":{"name":"SDLComponentVolumeStatusFault","abstract":"

    Fault SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusAlert":{"name":"SDLComponentVolumeStatusAlert","abstract":"

    Alert SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusNotSupported":{"name":"SDLComponentVolumeStatusNotSupported","abstract":"

    Not supported SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLDefrostZoneFront":{"name":"SDLDefrostZoneFront","abstract":"

    A SDLDefrostZone with the value of FRONT

    "},"Constants.html#/c:@SDLDefrostZoneRear":{"name":"SDLDefrostZoneRear","abstract":"

    A SDLDefrostZone with the value of REAR

    "},"Constants.html#/c:@SDLDefrostZoneAll":{"name":"SDLDefrostZoneAll","abstract":"

    A SDLDefrostZone with the value of All

    "},"Constants.html#/c:@SDLDefrostZoneNone":{"name":"SDLDefrostZoneNone","abstract":"

    A SDLDefrostZone with the value of None

    "},"Constants.html#/c:@SDLDeliveryModePrompt":{"name":"SDLDeliveryModePrompt","abstract":"

    User is prompted on HMI

    "},"Constants.html#/c:@SDLDeliveryModeDestination":{"name":"SDLDeliveryModeDestination","abstract":"

    Set the location as destination without prompting the user

    "},"Constants.html#/c:@SDLDeliveryModeQueue":{"name":"SDLDeliveryModeQueue","abstract":"

    Adds the current location to navigation queue

    "},"Constants.html#/c:@SDLDeviceLevelStatusZeroBars":{"name":"SDLDeviceLevelStatusZeroBars","abstract":"

    Device battery level is zero bars

    "},"Constants.html#/c:@SDLDeviceLevelStatusOneBar":{"name":"SDLDeviceLevelStatusOneBar","abstract":"

    Device battery level is one bar

    "},"Constants.html#/c:@SDLDeviceLevelStatusTwoBars":{"name":"SDLDeviceLevelStatusTwoBars","abstract":"

    Device battery level is two bars

    "},"Constants.html#/c:@SDLDeviceLevelStatusThreeBars":{"name":"SDLDeviceLevelStatusThreeBars","abstract":"

    Device battery level is three bars

    "},"Constants.html#/c:@SDLDeviceLevelStatusFourBars":{"name":"SDLDeviceLevelStatusFourBars","abstract":"

    Device battery level is four bars

    "},"Constants.html#/c:@SDLDeviceLevelStatusNotProvided":{"name":"SDLDeviceLevelStatusNotProvided","abstract":"

    Device battery level is unknown

    "},"Constants.html#/c:@SDLDimensionNoFix":{"name":"SDLDimensionNoFix","abstract":"

    No GPS at all

    "},"Constants.html#/c:@SDLDimension2D":{"name":"SDLDimension2D","abstract":"

    Longitude and latitude of the GPS

    "},"Constants.html#/c:@SDLDimension3D":{"name":"SDLDimension3D","abstract":"

    Longitude and latitude and altitude of the GPS

    "},"Constants.html#/c:@SDLDirectionLeft":{"name":"SDLDirectionLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDirectionRight":{"name":"SDLDirectionRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDisplayModeDay":{"name":"SDLDisplayModeDay","abstract":"

    @abstract Display Mode : DAY

    "},"Constants.html#/c:@SDLDisplayModeNight":{"name":"SDLDisplayModeNight","abstract":"

    @abstract Display Mode : NIGHT.

    "},"Constants.html#/c:@SDLDisplayModeAuto":{"name":"SDLDisplayModeAuto","abstract":"

    @abstract Display Mode : AUTO.

    "},"Constants.html#/c:@SDLDisplayTypeCID":{"name":"SDLDisplayTypeCID","abstract":"

    This display type provides a 2-line x 20 character dot matrix display.

    "},"Constants.html#/c:@SDLDisplayTypeType2":{"name":"SDLDisplayTypeType2","abstract":"

    Display type 2

    "},"Constants.html#/c:@SDLDisplayTypeType5":{"name":"SDLDisplayTypeType5","abstract":"

    Display type 5

    "},"Constants.html#/c:@SDLDisplayTypeNGN":{"name":"SDLDisplayTypeNGN","abstract":"

    This display type provides an 8 inch touchscreen display.

    "},"Constants.html#/c:@SDLDisplayTypeGen28DMA":{"name":"SDLDisplayTypeGen28DMA","abstract":"

    Display type Gen 28 DMA

    "},"Constants.html#/c:@SDLDisplayTypeGen26DMA":{"name":"SDLDisplayTypeGen26DMA","abstract":"

    Display type Gen 26 DMA

    "},"Constants.html#/c:@SDLDisplayTypeMFD3":{"name":"SDLDisplayTypeMFD3","abstract":"

    Display type MFD3

    "},"Constants.html#/c:@SDLDisplayTypeMFD4":{"name":"SDLDisplayTypeMFD4","abstract":"

    Display type MFD4

    "},"Constants.html#/c:@SDLDisplayTypeMFD5":{"name":"SDLDisplayTypeMFD5","abstract":"

    Display type MFD5

    "},"Constants.html#/c:@SDLDisplayTypeGen38Inch":{"name":"SDLDisplayTypeGen38Inch","abstract":"

    Display type Gen 3 8-inch

    "},"Constants.html#/c:@SDLDisplayTypeGeneric":{"name":"SDLDisplayTypeGeneric","abstract":"

    Display type Generic

    "},"Constants.html#/c:@SDLDistanceUnitMiles":{"name":"SDLDistanceUnitMiles","abstract":"

    @abstract SDLDistanceUnit: MILES

    "},"Constants.html#/c:@SDLDistanceUnitKilometers":{"name":"SDLDistanceUnitKilometers","abstract":"

    @abstract SDLDistanceUnit: KILOMETERS

    "},"Constants.html#/c:@SDLDriverDistractionStateOn":{"name":"SDLDriverDistractionStateOn","abstract":"

    Driver distraction rules are in effect.

    "},"Constants.html#/c:@SDLDriverDistractionStateOff":{"name":"SDLDriverDistractionStateOff","abstract":"

    Driver distraction rules are NOT in effect.

    "},"Constants.html#/c:@SDLECallConfirmationStatusNormal":{"name":"SDLECallConfirmationStatusNormal","abstract":"

    No E-Call signal triggered.

    "},"Constants.html#/c:@SDLECallConfirmationStatusInProgress":{"name":"SDLECallConfirmationStatusInProgress","abstract":"

    An E-Call is being in progress.

    "},"Constants.html#/c:@SDLECallConfirmationStatusCancelled":{"name":"SDLECallConfirmationStatusCancelled","abstract":"

    An E-Call was cancelled by the user.

    "},"Constants.html#/c:@SDLECallConfirmationStatusCompleted":{"name":"SDLECallConfirmationStatusCompleted","abstract":"

    The E-Call sequence is completed.

    "},"Constants.html#/c:@SDLECallConfirmationStatusUnsuccessful":{"name":"SDLECallConfirmationStatusUnsuccessful","abstract":"

    An E-Call could not be connected.

    "},"Constants.html#/c:@SDLECallConfirmationStatusConfiguredOff":{"name":"SDLECallConfirmationStatusConfiguredOff","abstract":"

    E-Call is not configured on this vehicle.

    "},"Constants.html#/c:@SDLECallConfirmationStatusCompleteDTMFTimeout":{"name":"SDLECallConfirmationStatusCompleteDTMFTimeout","abstract":"

    E-Call is considered to be complete without Emergency Operator contact.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusClosed":{"name":"SDLElectronicParkBrakeStatusClosed","abstract":"

    Parking brake actuators have been fully applied.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusTransition":{"name":"SDLElectronicParkBrakeStatusTransition","abstract":"

    Parking brake actuators are transitioning to either Apply/Closed or Release/Open state.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusOpen":{"name":"SDLElectronicParkBrakeStatusOpen","abstract":"

    Parking brake actuators are released.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusDriveActive":{"name":"SDLElectronicParkBrakeStatusDriveActive","abstract":"

    When driver pulls the Electronic Parking Brake switch while driving at speed.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusFault":{"name":"SDLElectronicParkBrakeStatusFault","abstract":"

    When system has a fault or is under maintenance.

    "},"Constants.html#/c:@SDLEmergencyEventTypeNoEvent":{"name":"SDLEmergencyEventTypeNoEvent","abstract":"

    No emergency event has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeFrontal":{"name":"SDLEmergencyEventTypeFrontal","abstract":"

    Frontal collision has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeSide":{"name":"SDLEmergencyEventTypeSide","abstract":"

    Side collision has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeRear":{"name":"SDLEmergencyEventTypeRear","abstract":"

    Rear collision has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeRollover":{"name":"SDLEmergencyEventTypeRollover","abstract":"

    A rollover event has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeNotSupported":{"name":"SDLEmergencyEventTypeNotSupported","abstract":"

    The signal is not supported

    "},"Constants.html#/c:@SDLEmergencyEventTypeFault":{"name":"SDLEmergencyEventTypeFault","abstract":"

    Emergency status cannot be determined

    "},"Constants.html#/c:@SDLFileTypeBMP":{"name":"SDLFileTypeBMP","abstract":"

    file type: Bitmap (BMP)

    "},"Constants.html#/c:@SDLFileTypeJPEG":{"name":"SDLFileTypeJPEG","abstract":"

    file type: JPEG

    "},"Constants.html#/c:@SDLFileTypePNG":{"name":"SDLFileTypePNG","abstract":"

    file type: PNG

    "},"Constants.html#/c:@SDLFileTypeWAV":{"name":"SDLFileTypeWAV","abstract":"

    file type: WAVE (WAV)

    "},"Constants.html#/c:@SDLFileTypeMP3":{"name":"SDLFileTypeMP3","abstract":"

    file type: MP3

    "},"Constants.html#/c:@SDLFileTypeAAC":{"name":"SDLFileTypeAAC","abstract":"

    file type: AAC

    "},"Constants.html#/c:@SDLFileTypeBinary":{"name":"SDLFileTypeBinary","abstract":"

    file type: BINARY

    "},"Constants.html#/c:@SDLFileTypeJSON":{"name":"SDLFileTypeJSON","abstract":"

    file type: JSON

    "},"Constants.html#/c:@SDLFuelCutoffStatusTerminateFuel":{"name":"SDLFuelCutoffStatusTerminateFuel","abstract":"

    Fuel is cut off

    "},"Constants.html#/c:@SDLFuelCutoffStatusNormalOperation":{"name":"SDLFuelCutoffStatusNormalOperation","abstract":"

    Fuel is not cut off

    "},"Constants.html#/c:@SDLFuelCutoffStatusFault":{"name":"SDLFuelCutoffStatusFault","abstract":"

    Status of the fuel pump cannot be determined

    "},"Constants.html#/c:@SDLFuelTypeGasoline":{"name":"SDLFuelTypeGasoline","abstract":"

    Fuel type: Gasoline

    "},"Constants.html#/c:@SDLFuelTypeDiesel":{"name":"SDLFuelTypeDiesel","abstract":"

    Fuel type: Diesel

    "},"Constants.html#/c:@SDLFuelTypeCNG":{"name":"SDLFuelTypeCNG","abstract":"

    Fuel type: CNG

    "},"Constants.html#/c:@SDLFuelTypeLPG":{"name":"SDLFuelTypeLPG","abstract":"

    Fuel type: LPG

    "},"Constants.html#/c:@SDLFuelTypeHydrogen":{"name":"SDLFuelTypeHydrogen","abstract":"

    Fuel type: Hydrogen

    "},"Constants.html#/c:@SDLFuelTypeBattery":{"name":"SDLFuelTypeBattery","abstract":"

    Fuel type: Battery

    "},"Constants.html#/c:@SDLGlobalPropertyHelpPrompt":{"name":"SDLGlobalPropertyHelpPrompt","abstract":"

    The help prompt to be spoken if the user needs assistance during a user-initiated interaction.

    "},"Constants.html#/c:@SDLGlobalPropertyTimeoutPrompt":{"name":"SDLGlobalPropertyTimeoutPrompt","abstract":"

    The prompt to be spoken if the user-initiated interaction times out waiting for the user’s verbal input.

    "},"Constants.html#/c:@SDLGlobalPropertyVoiceRecognitionHelpTitle":{"name":"SDLGlobalPropertyVoiceRecognitionHelpTitle","abstract":"

    The title of the menu displayed when the user requests help via voice recognition.

    "},"Constants.html#/c:@SDLGlobalPropertyVoiceRecognitionHelpItems":{"name":"SDLGlobalPropertyVoiceRecognitionHelpItems","abstract":"

    Items of the menu displayed when the user requests help via voice recognition.

    "},"Constants.html#/c:@SDLGlobalPropertyMenuName":{"name":"SDLGlobalPropertyMenuName","abstract":"

    The name of the menu button displayed in templates

    "},"Constants.html#/c:@SDLGlobalPropertyMenuIcon":{"name":"SDLGlobalPropertyMenuIcon","abstract":"

    An icon on the menu button displayed in templates

    "},"Constants.html#/c:@SDLGlobalPropertyKeyboard":{"name":"SDLGlobalPropertyKeyboard","abstract":"

    Property related to the keyboard

    "},"Constants.html#/c:@SDLHMILevelFull":{"name":"SDLHMILevelFull","abstract":"

    The application has full use of the SDL HMI. The app may output via TTS, display, or streaming audio and may gather input via VR, Menu, and button presses

    "},"Constants.html#/c:@SDLHMILevelLimited":{"name":"SDLHMILevelLimited","abstract":"

    This HMI Level is only defined for a media application using an HMI with an 8 inch touchscreen (Nav) system. The application’s Show text is displayed and it receives button presses from media-oriented buttons (SEEKRIGHT, SEEKLEFT, TUNEUP, TUNEDOWN, PRESET_0-9)

    "},"Constants.html#/c:@SDLHMILevelBackground":{"name":"SDLHMILevelBackground","abstract":"

    App cannot interact with user via TTS, VR, Display or Button Presses. App can perform the following operations:

    "},"Constants.html#/c:@SDLHMILevelNone":{"name":"SDLHMILevelNone","abstract":"

    Application has been discovered by SDL, but it cannot send any requests or receive any notifications

    "},"Constants.html#/c:@SDLHMIZoneCapabilitiesFront":{"name":"SDLHMIZoneCapabilitiesFront","abstract":"

    Indicates HMI available for front seat passengers.

    "},"Constants.html#/c:@SDLHMIZoneCapabilitiesBack":{"name":"SDLHMIZoneCapabilitiesBack","abstract":"

    Indicates HMI available for rear seat passengers.

    "},"Constants.html#/c:@SDLHybridAppPreferenceMobile":{"name":"SDLHybridAppPreferenceMobile","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLHybridAppPreferenceCloud":{"name":"SDLHybridAppPreferenceCloud","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLHybridAppPreferenceBoth":{"name":"SDLHybridAppPreferenceBoth","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLIgnitionStableStatusNotStable":{"name":"SDLIgnitionStableStatusNotStable","abstract":"

    The current ignition switch status is considered not to be stable.

    "},"Constants.html#/c:@SDLIgnitionStableStatusStable":{"name":"SDLIgnitionStableStatusStable","abstract":"

    The current ignition switch status is considered to be stable.

    "},"Constants.html#/c:@SDLIgnitionStableStatusMissingFromTransmitter":{"name":"SDLIgnitionStableStatusMissingFromTransmitter","abstract":"

    The current ignition switch status is considered to be missing from the transmitter

    "},"Constants.html#/c:@SDLIgnitionStatusUnknown":{"name":"SDLIgnitionStatusUnknown","abstract":"

    Ignition status currently unknown

    "},"Constants.html#/c:@SDLIgnitionStatusOff":{"name":"SDLIgnitionStatusOff","abstract":"

    Ignition is off

    "},"Constants.html#/c:@SDLIgnitionStatusAccessory":{"name":"SDLIgnitionStatusAccessory","abstract":"

    Ignition is in mode accessory

    "},"Constants.html#/c:@SDLIgnitionStatusRun":{"name":"SDLIgnitionStatusRun","abstract":"

    Ignition is in mode run

    "},"Constants.html#/c:@SDLIgnitionStatusStart":{"name":"SDLIgnitionStatusStart","abstract":"

    Ignition is in mode start

    "},"Constants.html#/c:@SDLIgnitionStatusInvalid":{"name":"SDLIgnitionStatusInvalid","abstract":"

    Signal is invalid

    "},"Constants.html#/c:@SDLImageFieldNameSoftButtonImage":{"name":"SDLImageFieldNameSoftButtonImage","abstract":"

    The image field for SoftButton

    "},"Constants.html#/c:@SDLImageFieldNameChoiceImage":{"name":"SDLImageFieldNameChoiceImage","abstract":"

    The first image field for Choice.

    "},"Constants.html#/c:@SDLImageFieldNameChoiceSecondaryImage":{"name":"SDLImageFieldNameChoiceSecondaryImage","abstract":"

    The scondary image field for Choice.

    "},"Constants.html#/c:@SDLImageFieldNameVoiceRecognitionHelpItem":{"name":"SDLImageFieldNameVoiceRecognitionHelpItem","abstract":"

    The image field for vrHelpItem.

    "},"Constants.html#/c:@SDLImageFieldNameTurnIcon":{"name":"SDLImageFieldNameTurnIcon","abstract":"

    The image field for Turn.

    "},"Constants.html#/c:@SDLImageFieldNameMenuIcon":{"name":"SDLImageFieldNameMenuIcon","abstract":"

    The image field for the menu icon in SetGlobalProperties.

    "},"Constants.html#/c:@SDLImageFieldNameCommandIcon":{"name":"SDLImageFieldNameCommandIcon","abstract":"

    The image field for AddCommand."},"Constants.html#/c:@SDLImageFieldNameAppIcon":{"name":"SDLImageFieldNameAppIcon","abstract":"

    The image field for the app icon (set by setAppIcon).

    "},"Constants.html#/c:@SDLImageFieldNameGraphic":{"name":"SDLImageFieldNameGraphic","abstract":"

    The primary image field for Show."},"Constants.html#/c:@SDLImageFieldNameSecondaryGraphic":{"name":"SDLImageFieldNameSecondaryGraphic","abstract":"

    The secondary image field for Show."},"Constants.html#/c:@SDLImageFieldNameShowConstantTBTIcon":{"name":"SDLImageFieldNameShowConstantTBTIcon","abstract":"

    The primary image field for ShowConstant TBT."},"Constants.html#/c:@SDLImageFieldNameShowConstantTBTNextTurnIcon":{"name":"SDLImageFieldNameShowConstantTBTNextTurnIcon","abstract":"

    The secondary image field for ShowConstant TBT.

    "},"Constants.html#/c:@SDLImageFieldNameLocationImage":{"name":"SDLImageFieldNameLocationImage","abstract":"

    The optional image of a destination / location

    "},"Constants.html#/c:@SDLImageTypeStatic":{"name":"SDLImageTypeStatic","abstract":"

    Activate an icon that shipped with the IVI system by passing a hex value.

    "},"Constants.html#/c:@SDLImageTypeDynamic":{"name":"SDLImageTypeDynamic","abstract":"

    An icon referencing an image uploaded by the app (identifier to be sent by SDLPutFile)

    "},"Constants.html#/c:@SDLInteractionModeManualOnly":{"name":"SDLInteractionModeManualOnly","abstract":"

    Interaction Mode : Manual Only

    "},"Constants.html#/c:@SDLInteractionModeVoiceRecognitionOnly":{"name":"SDLInteractionModeVoiceRecognitionOnly","abstract":"

    Interaction Mode : VR Only

    "},"Constants.html#/c:@SDLInteractionModeBoth":{"name":"SDLInteractionModeBoth","abstract":"

    Interaction Mode : Manual & VR

    "},"Constants.html#/c:@SDLKeyboardEventKeypress":{"name":"SDLKeyboardEventKeypress","abstract":"

    The use has pressed the keyboard key (applies to both SINGLE_KEYPRESS and RESEND_CURRENT_ENTRY modes).

    "},"Constants.html#/c:@SDLKeyboardEventSubmitted":{"name":"SDLKeyboardEventSubmitted","abstract":"

    The User has finished entering text from the keyboard and submitted the entry.

    "},"Constants.html#/c:@SDLKeyboardEventCancelled":{"name":"SDLKeyboardEventCancelled","abstract":"

    The User has pressed the HMI-defined Cancel button.

    "},"Constants.html#/c:@SDLKeyboardEventAborted":{"name":"SDLKeyboardEventAborted","abstract":"

    The User has not finished entering text and the keyboard is aborted with the event of higher priority.

    "},"Constants.html#/c:@SDLKeyboardEventVoice":{"name":"SDLKeyboardEventVoice","abstract":"

    The user used voice as input for the keyboard

    "},"Constants.html#/c:@SDLKeyboardLayoutQWERTY":{"name":"SDLKeyboardLayoutQWERTY","abstract":"

    QWERTY layout (the name comes from the first six keys
    appearing on the top left letter row of the keyboard and read from left to right)

    "},"Constants.html#/c:@SDLKeyboardLayoutQWERTZ":{"name":"SDLKeyboardLayoutQWERTZ","abstract":"

    QWERTZ layout (the name comes from the first six keys
    appearing on the top left letter row of the keyboard and read from left to right)

    "},"Constants.html#/c:@SDLKeyboardLayoutAZERTY":{"name":"SDLKeyboardLayoutAZERTY","abstract":"

    AZERTY layout (the name comes from the first six keys
    appearing on the top left letter row of the keyboard and read from left to right)

    "},"Constants.html#/c:@SDLKeypressModeSingleKeypress":{"name":"SDLKeypressModeSingleKeypress","abstract":"

    SINGLE_KEYPRESS:
    Each and every User`s keypress must be reported (new notification for every newly entered single symbol).

    "},"Constants.html#/c:@SDLKeypressModeQueueKeypresses":{"name":"SDLKeypressModeQueueKeypresses","abstract":"

    QUEUE_KEYPRESSES:
    The whole entry is reported only after the User submits it (by ‘Search’ button click displayed on touchscreen keyboard)

    "},"Constants.html#/c:@SDLKeypressModeResendCurrentEntry":{"name":"SDLKeypressModeResendCurrentEntry","abstract":"

    RESEND_CURRENT_ENTRY:
    The whole entry must be reported each and every time the User makes a new keypress
    (new notification with all previously entered symbols and a newly entered one appended).

    "},"Constants.html#/c:@SDLLanguageEnSa":{"name":"SDLLanguageEnSa","abstract":"

    English_SA

    "},"Constants.html#/c:@SDLLanguageHeIl":{"name":"SDLLanguageHeIl","abstract":"

    Hebrew_IL

    "},"Constants.html#/c:@SDLLanguageRoRo":{"name":"SDLLanguageRoRo","abstract":"

    Romainian_RO

    "},"Constants.html#/c:@SDLLanguageUkUa":{"name":"SDLLanguageUkUa","abstract":"

    Ukrainian_UA

    "},"Constants.html#/c:@SDLLanguageIdId":{"name":"SDLLanguageIdId","abstract":"

    Indonesian_ID

    "},"Constants.html#/c:@SDLLanguageViVn":{"name":"SDLLanguageViVn","abstract":"

    Vietnamese_VN

    "},"Constants.html#/c:@SDLLanguageMsMy":{"name":"SDLLanguageMsMy","abstract":"

    Malay_MY

    "},"Constants.html#/c:@SDLLanguageHiIn":{"name":"SDLLanguageHiIn","abstract":"

    Hindi_IN

    "},"Constants.html#/c:@SDLLanguageNlBe":{"name":"SDLLanguageNlBe","abstract":"

    Dutch(Flemish)_BE

    "},"Constants.html#/c:@SDLLanguageElGr":{"name":"SDLLanguageElGr","abstract":"

    Greek_GR

    "},"Constants.html#/c:@SDLLanguageHuHu":{"name":"SDLLanguageHuHu","abstract":"

    Hungarian_HU

    "},"Constants.html#/c:@SDLLanguageFiFi":{"name":"SDLLanguageFiFi","abstract":"

    Finnish_FI

    "},"Constants.html#/c:@SDLLanguageSkSk":{"name":"SDLLanguageSkSk","abstract":"

    Slovak_SK

    "},"Constants.html#/c:@SDLLanguageEnUs":{"name":"SDLLanguageEnUs","abstract":"

    English_US

    "},"Constants.html#/c:@SDLLanguageEnIn":{"name":"SDLLanguageEnIn","abstract":"

    English - India

    "},"Constants.html#/c:@SDLLanguageThTh":{"name":"SDLLanguageThTh","abstract":"

    Thai - Thailand

    "},"Constants.html#/c:@SDLLanguageEsMx":{"name":"SDLLanguageEsMx","abstract":"

    Spanish - Mexico

    "},"Constants.html#/c:@SDLLanguageFrCa":{"name":"SDLLanguageFrCa","abstract":"

    French - Canada

    "},"Constants.html#/c:@SDLLanguageDeDe":{"name":"SDLLanguageDeDe","abstract":"

    German - Germany

    "},"Constants.html#/c:@SDLLanguageEsEs":{"name":"SDLLanguageEsEs","abstract":"

    Spanish - Spain

    "},"Constants.html#/c:@SDLLanguageEnGb":{"name":"SDLLanguageEnGb","abstract":"

    English - Great Britain

    "},"Constants.html#/c:@SDLLanguageRuRu":{"name":"SDLLanguageRuRu","abstract":"

    Russian - Russia

    "},"Constants.html#/c:@SDLLanguageTrTr":{"name":"SDLLanguageTrTr","abstract":"

    Turkish - Turkey

    "},"Constants.html#/c:@SDLLanguagePlPl":{"name":"SDLLanguagePlPl","abstract":"

    Polish - Poland

    "},"Constants.html#/c:@SDLLanguageFrFr":{"name":"SDLLanguageFrFr","abstract":"

    French - France

    "},"Constants.html#/c:@SDLLanguageItIt":{"name":"SDLLanguageItIt","abstract":"

    Italian - Italy

    "},"Constants.html#/c:@SDLLanguageSvSe":{"name":"SDLLanguageSvSe","abstract":"

    Swedish - Sweden

    "},"Constants.html#/c:@SDLLanguagePtPt":{"name":"SDLLanguagePtPt","abstract":"

    Portuguese - Portugal

    "},"Constants.html#/c:@SDLLanguageNlNl":{"name":"SDLLanguageNlNl","abstract":"

    Dutch (Standard) - Netherlands

    "},"Constants.html#/c:@SDLLanguageEnAu":{"name":"SDLLanguageEnAu","abstract":"

    English - Australia

    "},"Constants.html#/c:@SDLLanguageZhCn":{"name":"SDLLanguageZhCn","abstract":"

    Mandarin - China

    "},"Constants.html#/c:@SDLLanguageZhTw":{"name":"SDLLanguageZhTw","abstract":"

    Mandarin - Taiwan

    "},"Constants.html#/c:@SDLLanguageJaJp":{"name":"SDLLanguageJaJp","abstract":"

    Japanese - Japan

    "},"Constants.html#/c:@SDLLanguageArSa":{"name":"SDLLanguageArSa","abstract":"

    Arabic - Saudi Arabia

    "},"Constants.html#/c:@SDLLanguageKoKr":{"name":"SDLLanguageKoKr","abstract":"

    Korean - South Korea

    "},"Constants.html#/c:@SDLLanguagePtBr":{"name":"SDLLanguagePtBr","abstract":"

    Portuguese - Brazil

    "},"Constants.html#/c:@SDLLanguageCsCz":{"name":"SDLLanguageCsCz","abstract":"

    Czech - Czech Republic

    "},"Constants.html#/c:@SDLLanguageDaDk":{"name":"SDLLanguageDaDk","abstract":"

    Danish - Denmark

    "},"Constants.html#/c:@SDLLanguageNoNo":{"name":"SDLLanguageNoNo","abstract":"

    Norwegian - Norway

    "},"Constants.html#/c:@SDLLayoutModeIconOnly":{"name":"SDLLayoutModeIconOnly","abstract":"

    This mode causes the interaction to display the previous set of choices as icons.

    "},"Constants.html#/c:@SDLLayoutModeIconWithSearch":{"name":"SDLLayoutModeIconWithSearch","abstract":"

    This mode causes the interaction to display the previous set of choices as icons along with a search field in the HMI.

    "},"Constants.html#/c:@SDLLayoutModeListOnly":{"name":"SDLLayoutModeListOnly","abstract":"

    This mode causes the interaction to display the previous set of choices as a list.

    "},"Constants.html#/c:@SDLLayoutModeListWithSearch":{"name":"SDLLayoutModeListWithSearch","abstract":"

    This mode causes the interaction to display the previous set of choices as a list along with a search field in the HMI.

    "},"Constants.html#/c:@SDLLayoutModeKeyboard":{"name":"SDLLayoutModeKeyboard","abstract":"

    This mode causes the interaction to immediately display a keyboard entry through the HMI.

    "},"Constants.html#/c:@SDLLightNameFrontLeftHighBeam":{"name":"SDLLightNameFrontLeftHighBeam","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_HIGH_BEAM.

    "},"Constants.html#/c:@SDLLightNameFrontRightHighBeam":{"name":"SDLLightNameFrontRightHighBeam","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_HIGH_BEAM.

    "},"Constants.html#/c:@SDLLightNameFrontLeftLowBeam":{"name":"SDLLightNameFrontLeftLowBeam","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_LOW_BEAM.

    "},"Constants.html#/c:@SDLLightNameFrontRightLowBeam":{"name":"SDLLightNameFrontRightLowBeam","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_LOW_BEAM.

    "},"Constants.html#/c:@SDLLightNameFrontLeftParkingLight":{"name":"SDLLightNameFrontLeftParkingLight","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_PARKING_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontRightParkingLight":{"name":"SDLLightNameFrontRightParkingLight","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_PARKING_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontLeftFogLight":{"name":"SDLLightNameFrontLeftFogLight","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_FOG_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontRightFogLight":{"name":"SDLLightNameFrontRightFogLight","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_FOG_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontLeftDaytimeRunningLight":{"name":"SDLLightNameFrontLeftDaytimeRunningLight","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_DAYTIME_RUNNING_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontRightDaytimeRunningLight":{"name":"SDLLightNameFrontRightDaytimeRunningLight","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_DAYTIME_RUNNING_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontLeftTurnLight":{"name":"SDLLightNameFrontLeftTurnLight","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_TURN_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontRightTurnLight":{"name":"SDLLightNameFrontRightTurnLight","abstract":"

    @abstract Represents the Light with name FRONT_Right_TURN_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearLeftFogLight":{"name":"SDLLightNameRearLeftFogLight","abstract":"

    @abstract Represents the Light with name REAR_LEFT_FOG_LIGHT.

    "},"Constants.html#/c:@SDLLightNameRearRightFogLight":{"name":"SDLLightNameRearRightFogLight","abstract":"

    @abstract Represents the Light with name REAR_RIGHT_FOG_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearLeftTailLight":{"name":"SDLLightNameRearLeftTailLight","abstract":"

    @abstract Represents the Light with name REAR_LEFT_TAIL_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearRightTailLight":{"name":"SDLLightNameRearRightTailLight","abstract":"

    @abstract Represents the Light with name REAR_RIGHT_TAIL_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearLeftBrakeLight":{"name":"SDLLightNameRearLeftBrakeLight","abstract":"

    @abstract Represents the Light with name REAR_LEFT_BRAKE_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearRightBrakeLight":{"name":"SDLLightNameRearRightBrakeLight","abstract":"

    @abstract Represents the Light with name REAR_RIGHT_BRAKE_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearLeftTurnLight":{"name":"SDLLightNameRearLeftTurnLight","abstract":"

    @abstract Represents the Light with name REAR_LEFT_TURN_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearRightTurnLight":{"name":"SDLLightNameRearRightTurnLight","abstract":"

    @abstract Represents the Light with name REAR_RIGHT_TURN_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearRegistrationPlateLight":{"name":"SDLLightNameRearRegistrationPlateLight","abstract":"

    @abstract Represents the Light with name REAR_REGISTRATION_PLATE_LIGHT

    "},"Constants.html#/c:@SDLLightNameHighBeams":{"name":"SDLLightNameHighBeams","abstract":"

    @abstract Include all high beam lights: front_left and front_right.

    "},"Constants.html#/c:@SDLLightNameLowBeams":{"name":"SDLLightNameLowBeams","abstract":"

    @abstract Include all low beam lights: front_left and front_right.

    "},"Constants.html#/c:@SDLLightNameFogLights":{"name":"SDLLightNameFogLights","abstract":"

    @abstract Include all fog lights: front_left, front_right, rear_left and rear_right.

    "},"Constants.html#/c:@SDLLightNameRunningLights":{"name":"SDLLightNameRunningLights","abstract":"

    @abstract Include all daytime running lights: front_left and front_right.

    "},"Constants.html#/c:@SDLLightNameParkingLights":{"name":"SDLLightNameParkingLights","abstract":"

    @abstract Include all parking lights: front_left and front_right.

    "},"Constants.html#/c:@SDLLightNameBrakeLights":{"name":"SDLLightNameBrakeLights","abstract":"

    @abstract Include all brake lights: rear_left and rear_right.

    "},"Constants.html#/c:@SDLLightNameRearReversingLights":{"name":"SDLLightNameRearReversingLights","abstract":"

    @abstract Represents the Light with name REAR_REVERSING_LIGHTS

    "},"Constants.html#/c:@SDLLightNameSideMarkerLights":{"name":"SDLLightNameSideMarkerLights","abstract":"

    @abstract Represents the Light with name SIDE_MARKER_LIGHTS

    "},"Constants.html#/c:@SDLLightNameLeftTurnLights":{"name":"SDLLightNameLeftTurnLights","abstract":"

    @abstract Include all left turn signal lights: front_left, rear_left, left_side and mirror_mounted.

    "},"Constants.html#/c:@SDLLightNameRightTurnLights":{"name":"SDLLightNameRightTurnLights","abstract":"

    @abstract Include all right turn signal lights: front_right, rear_right, right_side and mirror_mounted.

    "},"Constants.html#/c:@SDLLightNameHazardLights":{"name":"SDLLightNameHazardLights","abstract":"

    @abstract Include all hazard lights: front_left, front_right, rear_left and rear_right.

    "},"Constants.html#/c:@SDLLightNameAmbientLights":{"name":"SDLLightNameAmbientLights","abstract":"

    @abstract Represents the Light with name AMBIENT_LIGHTS

    "},"Constants.html#/c:@SDLLightNameOverHeadLights":{"name":"SDLLightNameOverHeadLights","abstract":"

    @abstract Represents the Light with name OVERHEAD_LIGHTS

    "},"Constants.html#/c:@SDLLightNameReadingLights":{"name":"SDLLightNameReadingLights","abstract":"

    @abstract Represents the Light with name READING_LIGHTS

    "},"Constants.html#/c:@SDLLightNameTrunkLights":{"name":"SDLLightNameTrunkLights","abstract":"

    @abstract Represents the Light with name TRUNK_LIGHTS

    "},"Constants.html#/c:@SDLLightNameExteriorFrontLights":{"name":"SDLLightNameExteriorFrontLights","abstract":"

    @abstract Include exterior lights located in front of the vehicle. For example, fog lights and low beams.

    "},"Constants.html#/c:@SDLLightNameExteriorRearLights":{"name":"SDLLightNameExteriorRearLights","abstract":"

    @abstract Include exterior lights located at the back of the vehicle."},"Constants.html#/c:@SDLLightNameExteriorLeftLights":{"name":"SDLLightNameExteriorLeftLights","abstract":"

    @abstract Include exterior lights located at the left side of the vehicle."},"Constants.html#/c:@SDLLightNameExteriorRightLights":{"name":"SDLLightNameExteriorRightLights","abstract":"

    @abstract Include exterior lights located at the right side of the vehicle."},"Constants.html#/c:@SDLLightNameExteriorRearCargoLights":{"name":"SDLLightNameExteriorRearCargoLights","abstract":"

    @abstract Cargo lamps illuminate the cargo area.

    "},"Constants.html#/c:@SDLLightNameExteriorRearTruckBedLights":{"name":"SDLLightNameExteriorRearTruckBedLights","abstract":"

    @abstract Truck bed lamps light up the bed of the truck.

    "},"Constants.html#/c:@SDLLightNameExteriorRearTrailerLights":{"name":"SDLLightNameExteriorRearTrailerLights","abstract":"

    @abstract Trailer lights are lamps mounted on a trailer hitch.

    "},"Constants.html#/c:@SDLLightNameExteriorLeftSpotLights":{"name":"SDLLightNameExteriorLeftSpotLights","abstract":"

    @abstract It is the spotlights mounted on the left side of a vehicle.

    "},"Constants.html#/c:@SDLLightNameExteriorRightSpotLights":{"name":"SDLLightNameExteriorRightSpotLights","abstract":"

    @abstract It is the spotlights mounted on the right side of a vehicle.

    "},"Constants.html#/c:@SDLLightNameExteriorLeftPuddleLights":{"name":"SDLLightNameExteriorLeftPuddleLights","abstract":"

    @abstract Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.

    "},"Constants.html#/c:@SDLLightNameExteriorRightPuddleLights":{"name":"SDLLightNameExteriorRightPuddleLights","abstract":"

    @abstract Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.

    "},"Constants.html#/c:@SDLLightNameExteriorAllLights":{"name":"SDLLightNameExteriorAllLights","abstract":"

    @abstract Include all exterior lights around the vehicle.

    "},"Constants.html#/c:@SDLLightStatusOn":{"name":"SDLLightStatusOn","abstract":"

    @abstract Light status currently on.

    "},"Constants.html#/c:@SDLLightStatusOFF":{"name":"SDLLightStatusOFF","abstract":"

    @abstract Light status currently Off.

    "},"Constants.html#/c:@SDLLightStatusRampUp":{"name":"SDLLightStatusRampUp","abstract":"

    @abstract Light status currently RAMP_UP.

    "},"Constants.html#/c:@SDLLightStatusRampDown":{"name":"SDLLightStatusRampDown","abstract":"

    @abstract Light status currently RAMP_DOWN.

    "},"Constants.html#/c:@SDLLightStatusUnknown":{"name":"SDLLightStatusUnknown","abstract":"

    @abstract Light status currently UNKNOWN.

    "},"Constants.html#/c:@SDLLightStatusInvalid":{"name":"SDLLightStatusInvalid","abstract":"

    @abstract Light status currently INVALID.

    "},"Constants.html#/c:@SDLLockScreenStatusOff":{"name":"SDLLockScreenStatusOff","abstract":"

    LockScreen is Not Required

    "},"Constants.html#/c:@SDLLockScreenStatusOptional":{"name":"SDLLockScreenStatusOptional","abstract":"

    LockScreen is Optional

    "},"Constants.html#/c:@SDLLockScreenStatusRequired":{"name":"SDLLockScreenStatusRequired","abstract":"

    LockScreen is Not Required

    "},"Constants.html#/c:@SDLMaintenanceModeStatusNormal":{"name":"SDLMaintenanceModeStatusNormal","abstract":"

    Maintenance Mode Status : Normal

    "},"Constants.html#/c:@SDLMaintenanceModeStatusNear":{"name":"SDLMaintenanceModeStatusNear","abstract":"

    Maintenance Mode Status : Near

    "},"Constants.html#/c:@SDLMaintenanceModeStatusActive":{"name":"SDLMaintenanceModeStatusActive","abstract":"

    Maintenance Mode Status : Active

    "},"Constants.html#/c:@SDLMaintenanceModeStatusFeatureNotPresent":{"name":"SDLMaintenanceModeStatusFeatureNotPresent","abstract":"

    Maintenance Mode Status : Feature not present

    "},"Constants.html#/c:@SDLMassageCushionTopLumbar":{"name":"SDLMassageCushionTopLumbar","abstract":"

    @abstract TOP LUMBAR cushions of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageCushionMiddleLumbar":{"name":"SDLMassageCushionMiddleLumbar","abstract":"

    @abstract MIDDLE LUMBAR cushion of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageCushionBottomLumbar":{"name":"SDLMassageCushionBottomLumbar","abstract":"

    @abstract BOTTOM LUMBAR cushion of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageCushionBackBolsters":{"name":"SDLMassageCushionBackBolsters","abstract":"

    @abstract BACK BOLSTERS cushion of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageCushionSeatBolsters":{"name":"SDLMassageCushionSeatBolsters","abstract":"

    @abstract SEAT BOLSTERS cushion of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageModeOff":{"name":"SDLMassageModeOff","abstract":"

    @abstract Massage Mode Status : OFF

    "},"Constants.html#/c:@SDLMassageModeLow":{"name":"SDLMassageModeLow","abstract":"

    @abstract Massage Mode Status : LOW

    "},"Constants.html#/c:@SDLMassageModeHigh":{"name":"SDLMassageModeHigh","abstract":"

    @abstract Massage Mode Status : HIGH

    "},"Constants.html#/c:@SDLMassageZoneLumbar":{"name":"SDLMassageZoneLumbar","abstract":"

    @abstract The back of a multi-contour massage seat. or SEAT_BACK

    "},"Constants.html#/c:@SDLMassageZoneSeatCushion":{"name":"SDLMassageZoneSeatCushion","abstract":"

    @abstract The bottom a multi-contour massage seat. or SEAT_BOTTOM

    "},"Constants.html#/c:@SDLMediaClockFormatClock1":{"name":"SDLMediaClockFormatClock1","abstract":"

    Media clock format: Clock1

    "},"Constants.html#/c:@SDLMediaClockFormatClock2":{"name":"SDLMediaClockFormatClock2","abstract":"

    Media clock format: Clock2

    "},"Constants.html#/c:@SDLMediaClockFormatClock3":{"name":"SDLMediaClockFormatClock3","abstract":"

    Media clock format: Clock3

    "},"Constants.html#/c:@SDLMediaClockFormatClockText1":{"name":"SDLMediaClockFormatClockText1","abstract":"

    Media clock format: ClockText1

    "},"Constants.html#/c:@SDLMediaClockFormatClockText2":{"name":"SDLMediaClockFormatClockText2","abstract":"

    Media clock format: ClockText2

    "},"Constants.html#/c:@SDLMediaClockFormatClockText3":{"name":"SDLMediaClockFormatClockText3","abstract":"

    Media clock format: ClockText3

    "},"Constants.html#/c:@SDLMediaClockFormatClockText4":{"name":"SDLMediaClockFormatClockText4","abstract":"

    Media clock format: ClockText4

    "},"Constants.html#/c:@SDLMediaTypeMusic":{"name":"SDLMediaTypeMusic","abstract":"

    The app will have a media type of music.

    "},"Constants.html#/c:@SDLMediaTypePodcast":{"name":"SDLMediaTypePodcast","abstract":"

    The app will have a media type of podcast.

    "},"Constants.html#/c:@SDLMediaTypeAudiobook":{"name":"SDLMediaTypeAudiobook","abstract":"

    The app will have a media type of audiobook.

    "},"Constants.html#/c:@SDLMediaTypeOther":{"name":"SDLMediaTypeOther","abstract":"

    The app will have a media type of other.

    "},"Constants.html#/c:@SDLMetadataTypeMediaTitle":{"name":"SDLMetadataTypeMediaTitle","abstract":"

    The song / media title name

    "},"Constants.html#/c:@SDLMetadataTypeMediaArtist":{"name":"SDLMetadataTypeMediaArtist","abstract":"

    The artist of the media

    "},"Constants.html#/c:@SDLMetadataTypeMediaAlbum":{"name":"SDLMetadataTypeMediaAlbum","abstract":"

    The album of the media"

    "},"Constants.html#/c:@SDLMetadataTypeMediaYear":{"name":"SDLMetadataTypeMediaYear","abstract":"

    The year that the media was created

    "},"Constants.html#/c:@SDLMetadataTypeMediaGenre":{"name":"SDLMetadataTypeMediaGenre","abstract":"

    The genre of the media

    "},"Constants.html#/c:@SDLMetadataTypeMediaStation":{"name":"SDLMetadataTypeMediaStation","abstract":"

    The station that the media is playing on

    "},"Constants.html#/c:@SDLMetadataTypeRating":{"name":"SDLMetadataTypeRating","abstract":"

    The rating given to the media

    "},"Constants.html#/c:@SDLMetadataTypeCurrentTemperature":{"name":"SDLMetadataTypeCurrentTemperature","abstract":"

    The current temperature of the weather information

    "},"Constants.html#/c:@SDLMetadataTypeMaximumTemperature":{"name":"SDLMetadataTypeMaximumTemperature","abstract":"

    The high / maximum temperature of the weather information for the current period

    "},"Constants.html#/c:@SDLMetadataTypeMinimumTemperature":{"name":"SDLMetadataTypeMinimumTemperature","abstract":"

    The low / minimum temperature of the weather information for the current period

    "},"Constants.html#/c:@SDLMetadataTypeWeatherTerm":{"name":"SDLMetadataTypeWeatherTerm","abstract":"

    A description of the weather for the current period

    "},"Constants.html#/c:@SDLMetadataTypeHumidity":{"name":"SDLMetadataTypeHumidity","abstract":"

    The humidity of the weather information for the current period

    "},"Constants.html#/c:@SDLModuleTypeClimate":{"name":"SDLModuleTypeClimate","abstract":"

    A SDLModuleType with the value of CLIMATE

    "},"Constants.html#/c:@SDLModuleTypeRadio":{"name":"SDLModuleTypeRadio","abstract":"

    A SDLModuleType with the value of RADIO

    "},"Constants.html#/c:@SDLModuleTypeSeat":{"name":"SDLModuleTypeSeat","abstract":"

    A SDLModuleType with the value of SEAT

    "},"Constants.html#/c:@SDLModuleTypeAudio":{"name":"SDLModuleTypeAudio","abstract":"

    A SDLModuleType with the value of AUDIO

    "},"Constants.html#/c:@SDLModuleTypeLight":{"name":"SDLModuleTypeLight","abstract":"

    A SDLModuleType with the value of LIGHT

    "},"Constants.html#/c:@SDLModuleTypeHMISettings":{"name":"SDLModuleTypeHMISettings","abstract":"

    A SDLModuleType with the value of HMI_SETTINGS

    "},"Constants.html#/c:@SDLNavigationActionTurn":{"name":"SDLNavigationActionTurn","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionExit":{"name":"SDLNavigationActionExit","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionStay":{"name":"SDLNavigationActionStay","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionMerge":{"name":"SDLNavigationActionMerge","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionFerry":{"name":"SDLNavigationActionFerry","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionCarShuttleTrain":{"name":"SDLNavigationActionCarShuttleTrain","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionWaypoint":{"name":"SDLNavigationActionWaypoint","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionRegular":{"name":"SDLNavigationJunctionRegular","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionBifurcation":{"name":"SDLNavigationJunctionBifurcation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionMultiCarriageway":{"name":"SDLNavigationJunctionMultiCarriageway","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionRoundabout":{"name":"SDLNavigationJunctionRoundabout","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionTraversableRoundabout":{"name":"SDLNavigationJunctionTraversableRoundabout","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionJughandle":{"name":"SDLNavigationJunctionJughandle","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionAllWayYield":{"name":"SDLNavigationJunctionAllWayYield","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionTurnAround":{"name":"SDLNavigationJunctionTurnAround","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNotificationUserInfoObject":{"name":"SDLNotificationUserInfoObject","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTransportDidDisconnect":{"name":"SDLTransportDidDisconnect","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTransportDidConnect":{"name":"SDLTransportDidConnect","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTransportConnectError":{"name":"SDLTransportConnectError","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveError":{"name":"SDLDidReceiveError","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveLockScreenIcon":{"name":"SDLDidReceiveLockScreenIcon","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidBecomeReady":{"name":"SDLDidBecomeReady","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidUpdateProjectionView":{"name":"SDLDidUpdateProjectionView","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAddCommandResponse":{"name":"SDLDidReceiveAddCommandResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAddSubMenuResponse":{"name":"SDLDidReceiveAddSubMenuResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAlertResponse":{"name":"SDLDidReceiveAlertResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAlertManeuverResponse":{"name":"SDLDidReceiveAlertManeuverResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveButtonPressResponse":{"name":"SDLDidReceiveButtonPressResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveChangeRegistrationResponse":{"name":"SDLDidReceiveChangeRegistrationResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveCreateInteractionChoiceSetResponse":{"name":"SDLDidReceiveCreateInteractionChoiceSetResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteCommandResponse":{"name":"SDLDidReceiveDeleteCommandResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteFileResponse":{"name":"SDLDidReceiveDeleteFileResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteInteractionChoiceSetResponse":{"name":"SDLDidReceiveDeleteInteractionChoiceSetResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteSubmenuResponse":{"name":"SDLDidReceiveDeleteSubmenuResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDiagnosticMessageResponse":{"name":"SDLDidReceiveDiagnosticMessageResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDialNumberResponse":{"name":"SDLDidReceiveDialNumberResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEncodedSyncPDataResponse":{"name":"SDLDidReceiveEncodedSyncPDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEndAudioPassThruResponse":{"name":"SDLDidReceiveEndAudioPassThruResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGenericResponse":{"name":"SDLDidReceiveGenericResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetCloudAppPropertiesResponse":{"name":"SDLDidReceiveGetCloudAppPropertiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetAppServiceDataResponse":{"name":"SDLDidReceiveGetAppServiceDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetDTCsResponse":{"name":"SDLDidReceiveGetDTCsResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetFileResponse":{"name":"SDLDidReceiveGetFileResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetInteriorVehicleDataResponse":{"name":"SDLDidReceiveGetInteriorVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetSystemCapabilitiesResponse":{"name":"SDLDidReceiveGetSystemCapabilitiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetVehicleDataResponse":{"name":"SDLDidReceiveGetVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetWaypointsResponse":{"name":"SDLDidReceiveGetWaypointsResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveListFilesResponse":{"name":"SDLDidReceiveListFilesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformAppServiceInteractionResponse":{"name":"SDLDidReceivePerformAppServiceInteractionResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformAudioPassThruResponse":{"name":"SDLDidReceivePerformAudioPassThruResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformInteractionResponse":{"name":"SDLDidReceivePerformInteractionResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePublishAppServiceResponse":{"name":"SDLDidReceivePublishAppServiceResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePutFileResponse":{"name":"SDLDidReceivePutFileResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveReadDIDResponse":{"name":"SDLDidReceiveReadDIDResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveRegisterAppInterfaceResponse":{"name":"SDLDidReceiveRegisterAppInterfaceResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveResetGlobalPropertiesResponse":{"name":"SDLDidReceiveResetGlobalPropertiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveScrollableMessageResponse":{"name":"SDLDidReceiveScrollableMessageResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSendHapticDataResponse":{"name":"SDLDidReceiveSendHapticDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSendLocationResponse":{"name":"SDLDidReceiveSendLocationResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetAppIconResponse":{"name":"SDLDidReceiveSetAppIconResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetCloudAppPropertiesResponse":{"name":"SDLDidReceiveSetCloudAppPropertiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetDisplayLayoutResponse":{"name":"SDLDidReceiveSetDisplayLayoutResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetGlobalPropertiesResponse":{"name":"SDLDidReceiveSetGlobalPropertiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetInteriorVehicleDataResponse":{"name":"SDLDidReceiveSetInteriorVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetMediaClockTimerResponse":{"name":"SDLDidReceiveSetMediaClockTimerResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveShowConstantTBTResponse":{"name":"SDLDidReceiveShowConstantTBTResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveShowResponse":{"name":"SDLDidReceiveShowResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSliderResponse":{"name":"SDLDidReceiveSliderResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSpeakResponse":{"name":"SDLDidReceiveSpeakResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeButtonResponse":{"name":"SDLDidReceiveSubscribeButtonResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeVehicleDataResponse":{"name":"SDLDidReceiveSubscribeVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeWaypointsResponse":{"name":"SDLDidReceiveSubscribeWaypointsResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSyncPDataResponse":{"name":"SDLDidReceiveSyncPDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUpdateTurnListResponse":{"name":"SDLDidReceiveUpdateTurnListResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnregisterAppInterfaceResponse":{"name":"SDLDidReceiveUnregisterAppInterfaceResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeButtonResponse":{"name":"SDLDidReceiveUnsubscribeButtonResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeVehicleDataResponse":{"name":"SDLDidReceiveUnsubscribeVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeWaypointsResponse":{"name":"SDLDidReceiveUnsubscribeWaypointsResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAddCommandRequest":{"name":"SDLDidReceiveAddCommandRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAddSubMenuRequest":{"name":"SDLDidReceiveAddSubMenuRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAlertRequest":{"name":"SDLDidReceiveAlertRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAlertManeuverRequest":{"name":"SDLDidReceiveAlertManeuverRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveButtonPressRequest":{"name":"SDLDidReceiveButtonPressRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveChangeRegistrationRequest":{"name":"SDLDidReceiveChangeRegistrationRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveCreateInteractionChoiceSetRequest":{"name":"SDLDidReceiveCreateInteractionChoiceSetRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteCommandRequest":{"name":"SDLDidReceiveDeleteCommandRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteFileRequest":{"name":"SDLDidReceiveDeleteFileRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteInteractionChoiceSetRequest":{"name":"SDLDidReceiveDeleteInteractionChoiceSetRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteSubMenuRequest":{"name":"SDLDidReceiveDeleteSubMenuRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDiagnosticMessageRequest":{"name":"SDLDidReceiveDiagnosticMessageRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDialNumberRequest":{"name":"SDLDidReceiveDialNumberRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEncodedSyncPDataRequest":{"name":"SDLDidReceiveEncodedSyncPDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEndAudioPassThruRequest":{"name":"SDLDidReceiveEndAudioPassThruRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetAppServiceDataRequest":{"name":"SDLDidReceiveGetAppServiceDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetCloudAppPropertiesRequest":{"name":"SDLDidReceiveGetCloudAppPropertiesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetDTCsRequest":{"name":"SDLDidReceiveGetDTCsRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetFileRequest":{"name":"SDLDidReceiveGetFileRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetInteriorVehicleDataRequest":{"name":"SDLDidReceiveGetInteriorVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetSystemCapabilityRequest":{"name":"SDLDidReceiveGetSystemCapabilityRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetVehicleDataRequest":{"name":"SDLDidReceiveGetVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetWayPointsRequest":{"name":"SDLDidReceiveGetWayPointsRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveListFilesRequest":{"name":"SDLDidReceiveListFilesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformAppServiceInteractionRequest":{"name":"SDLDidReceivePerformAppServiceInteractionRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformAudioPassThruRequest":{"name":"SDLDidReceivePerformAudioPassThruRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformInteractionRequest":{"name":"SDLDidReceivePerformInteractionRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePublishAppServiceRequest":{"name":"SDLDidReceivePublishAppServiceRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePutFileRequest":{"name":"SDLDidReceivePutFileRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveReadDIDRequest":{"name":"SDLDidReceiveReadDIDRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveRegisterAppInterfaceRequest":{"name":"SDLDidReceiveRegisterAppInterfaceRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveResetGlobalPropertiesRequest":{"name":"SDLDidReceiveResetGlobalPropertiesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveScrollableMessageRequest":{"name":"SDLDidReceiveScrollableMessageRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSendHapticDataRequest":{"name":"SDLDidReceiveSendHapticDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSendLocationRequest":{"name":"SDLDidReceiveSendLocationRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetAppIconRequest":{"name":"SDLDidReceiveSetAppIconRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetCloudAppPropertiesRequest":{"name":"SDLDidReceiveSetCloudAppPropertiesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetDisplayLayoutRequest":{"name":"SDLDidReceiveSetDisplayLayoutRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetGlobalPropertiesRequest":{"name":"SDLDidReceiveSetGlobalPropertiesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetInteriorVehicleDataRequest":{"name":"SDLDidReceiveSetInteriorVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetMediaClockTimerRequest":{"name":"SDLDidReceiveSetMediaClockTimerRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveShowRequest":{"name":"SDLDidReceiveShowRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveShowConstantTBTRequest":{"name":"SDLDidReceiveShowConstantTBTRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSliderRequest":{"name":"SDLDidReceiveSliderRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSpeakRequest":{"name":"SDLDidReceiveSpeakRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeButtonRequest":{"name":"SDLDidReceiveSubscribeButtonRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeVehicleDataRequest":{"name":"SDLDidReceiveSubscribeVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeWayPointsRequest":{"name":"SDLDidReceiveSubscribeWayPointsRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSyncPDataRequest":{"name":"SDLDidReceiveSyncPDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSystemRequestRequest":{"name":"SDLDidReceiveSystemRequestRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnregisterAppInterfaceRequest":{"name":"SDLDidReceiveUnregisterAppInterfaceRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeButtonRequest":{"name":"SDLDidReceiveUnsubscribeButtonRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeVehicleDataRequest":{"name":"SDLDidReceiveUnsubscribeVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeWayPointsRequest":{"name":"SDLDidReceiveUnsubscribeWayPointsRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUpdateTurnListRequest":{"name":"SDLDidReceiveUpdateTurnListRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeDriverDistractionStateNotification":{"name":"SDLDidChangeDriverDistractionStateNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeHMIStatusNotification":{"name":"SDLDidChangeHMIStatusNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAppServiceDataNotification":{"name":"SDLDidReceiveAppServiceDataNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAppUnregisteredNotification":{"name":"SDLDidReceiveAppUnregisteredNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAudioPassThruNotification":{"name":"SDLDidReceiveAudioPassThruNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveButtonEventNotification":{"name":"SDLDidReceiveButtonEventNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveButtonPressNotification":{"name":"SDLDidReceiveButtonPressNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveCommandNotification":{"name":"SDLDidReceiveCommandNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEncodedDataNotification":{"name":"SDLDidReceiveEncodedDataNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveInteriorVehicleDataNotification":{"name":"SDLDidReceiveInteriorVehicleDataNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveKeyboardInputNotification":{"name":"SDLDidReceiveKeyboardInputNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeLanguageNotification":{"name":"SDLDidChangeLanguageNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeLockScreenStatusNotification":{"name":"SDLDidChangeLockScreenStatusNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveNewHashNotification":{"name":"SDLDidReceiveNewHashNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveVehicleIconNotification":{"name":"SDLDidReceiveVehicleIconNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangePermissionsNotification":{"name":"SDLDidChangePermissionsNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveRemoteControlStatusNotification":{"name":"SDLDidReceiveRemoteControlStatusNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSystemCapabilityUpdatedNotification":{"name":"SDLDidReceiveSystemCapabilityUpdatedNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSystemRequestNotification":{"name":"SDLDidReceiveSystemRequestNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeTurnByTurnStateNotification":{"name":"SDLDidChangeTurnByTurnStateNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveTouchEventNotification":{"name":"SDLDidReceiveTouchEventNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveVehicleDataNotification":{"name":"SDLDidReceiveVehicleDataNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveWaypointNotification":{"name":"SDLDidReceiveWaypointNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLPRNDLPark":{"name":"SDLPRNDLPark","abstract":"

    Park

    "},"Constants.html#/c:@SDLPRNDLReverse":{"name":"SDLPRNDLReverse","abstract":"

    Reverse gear

    "},"Constants.html#/c:@SDLPRNDLNeutral":{"name":"SDLPRNDLNeutral","abstract":"

    No gear

    "},"Constants.html#/c:@SDLPRNDLDrive":{"name":"SDLPRNDLDrive","abstract":"

    @abstract: Drive gear

    "},"Constants.html#/c:@SDLPRNDLSport":{"name":"SDLPRNDLSport","abstract":"

    Drive Sport mode

    "},"Constants.html#/c:@SDLPRNDLLowGear":{"name":"SDLPRNDLLowGear","abstract":"

    1st gear hold

    "},"Constants.html#/c:@SDLPRNDLFirst":{"name":"SDLPRNDLFirst","abstract":"

    First gear

    "},"Constants.html#/c:@SDLPRNDLSecond":{"name":"SDLPRNDLSecond","abstract":"

    Second gear

    "},"Constants.html#/c:@SDLPRNDLThird":{"name":"SDLPRNDLThird","abstract":"

    Third gear

    "},"Constants.html#/c:@SDLPRNDLFourth":{"name":"SDLPRNDLFourth","abstract":"

    Fourth gear

    "},"Constants.html#/c:@SDLPRNDLFifth":{"name":"SDLPRNDLFifth","abstract":"

    Fifth gear

    "},"Constants.html#/c:@SDLPRNDLSixth":{"name":"SDLPRNDLSixth","abstract":"

    Sixth gear

    "},"Constants.html#/c:@SDLPRNDLSeventh":{"name":"SDLPRNDLSeventh","abstract":"

    Seventh gear

    "},"Constants.html#/c:@SDLPRNDLEighth":{"name":"SDLPRNDLEighth","abstract":"

    Eighth gear

    "},"Constants.html#/c:@SDLPRNDLUnknown":{"name":"SDLPRNDLUnknown","abstract":"

    Unknown

    "},"Constants.html#/c:@SDLPRNDLFault":{"name":"SDLPRNDLFault","abstract":"

    Fault

    "},"Constants.html#/c:@SDLPermissionStatusAllowed":{"name":"SDLPermissionStatusAllowed","abstract":"

    permission: allowed

    "},"Constants.html#/c:@SDLPermissionStatusDisallowed":{"name":"SDLPermissionStatusDisallowed","abstract":"

    permission: disallowed

    "},"Constants.html#/c:@SDLPermissionStatusUserDisallowed":{"name":"SDLPermissionStatusUserDisallowed","abstract":"

    permission: user disallowed

    "},"Constants.html#/c:@SDLPermissionStatusUserConsentPending":{"name":"SDLPermissionStatusUserConsentPending","abstract":"

    permission: user consent pending

    "},"Constants.html#/c:@SDLPowerModeQualificationStatusUndefined":{"name":"SDLPowerModeQualificationStatusUndefined","abstract":"

    An undefined status

    "},"Constants.html#/c:@SDLPowerModeQualificationStatusEvaluationInProgress":{"name":"SDLPowerModeQualificationStatusEvaluationInProgress","abstract":"

    An evaluation in progress status

    "},"Constants.html#/c:@SDLPowerModeQualificationStatusNotDefined":{"name":"SDLPowerModeQualificationStatusNotDefined","abstract":"

    A not defined status

    "},"Constants.html#/c:@SDLPowerModeQualificationStatusOk":{"name":"SDLPowerModeQualificationStatusOk","abstract":"

    An ok status

    "},"Constants.html#/c:@SDLPowerModeStatusKeyOut":{"name":"SDLPowerModeStatusKeyOut","abstract":"

    The key is not in the ignition, and the power is off

    "},"Constants.html#/c:@SDLPowerModeStatusKeyRecentlyOut":{"name":"SDLPowerModeStatusKeyRecentlyOut","abstract":"

    The key is not in the ignition and it was just recently removed

    "},"Constants.html#/c:@SDLPowerModeStatusKeyApproved":{"name":"SDLPowerModeStatusKeyApproved","abstract":"

    The key is not in the ignition, but an approved key is available

    "},"Constants.html#/c:@SDLPowerModeStatusPostAccessory":{"name":"SDLPowerModeStatusPostAccessory","abstract":"

    We are in a post-accessory power situation

    "},"Constants.html#/c:@SDLPowerModeStatusAccessory":{"name":"SDLPowerModeStatusAccessory","abstract":"

    The car is in accessory power mode

    "},"Constants.html#/c:@SDLPowerModeStatusPostIgnition":{"name":"SDLPowerModeStatusPostIgnition","abstract":"

    We are in a post-ignition power situation

    "},"Constants.html#/c:@SDLPowerModeStatusIgnitionOn":{"name":"SDLPowerModeStatusIgnitionOn","abstract":"

    The ignition is on but the car is not yet running

    "},"Constants.html#/c:@SDLPowerModeStatusRunning":{"name":"SDLPowerModeStatusRunning","abstract":"

    The ignition is on and the car is running

    "},"Constants.html#/c:@SDLPowerModeStatusCrank":{"name":"SDLPowerModeStatusCrank","abstract":"

    We are in a crank power situation

    "},"Constants.html#/c:@SDLPredefinedLayoutDefault":{"name":"SDLPredefinedLayoutDefault","abstract":"

    A default layout

    "},"Constants.html#/c:@SDLPredefinedLayoutMedia":{"name":"SDLPredefinedLayoutMedia","abstract":"

    The default media layout

    "},"Constants.html#/c:@SDLPredefinedLayoutNonMedia":{"name":"SDLPredefinedLayoutNonMedia","abstract":"

    The default non-media layout

    "},"Constants.html#/c:@SDLPredefinedLayoutOnscreenPresets":{"name":"SDLPredefinedLayoutOnscreenPresets","abstract":"

    A media layout containing preset buttons

    "},"Constants.html#/c:@SDLPredefinedLayoutNavigationFullscreenMap":{"name":"SDLPredefinedLayoutNavigationFullscreenMap","abstract":"

    The default navigation layout with a fullscreen map

    "},"Constants.html#/c:@SDLPredefinedLayoutNavigationList":{"name":"SDLPredefinedLayoutNavigationList","abstract":"

    A list layout used for navigation apps

    "},"Constants.html#/c:@SDLPredefinedLayoutNavigationKeyboard":{"name":"SDLPredefinedLayoutNavigationKeyboard","abstract":"

    A keyboard layout used for navigation apps

    "},"Constants.html#/c:@SDLPredefinedLayoutGraphicWithText":{"name":"SDLPredefinedLayoutGraphicWithText","abstract":"

    A layout with a single graphic on the left and text on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTextWithGraphic":{"name":"SDLPredefinedLayoutTextWithGraphic","abstract":"

    A layout with text on the left and a single graphic on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTilesOnly":{"name":"SDLPredefinedLayoutTilesOnly","abstract":"

    A layout with only softbuttons placed in a tile layout

    "},"Constants.html#/c:@SDLPredefinedLayoutTextButtonsOnly":{"name":"SDLPredefinedLayoutTextButtonsOnly","abstract":"

    A layout with only soft buttons that only accept text

    "},"Constants.html#/c:@SDLPredefinedLayoutGraphicWithTiles":{"name":"SDLPredefinedLayoutGraphicWithTiles","abstract":"

    A layout with a single graphic on the left and soft buttons in a tile layout on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTilesWithGraphic":{"name":"SDLPredefinedLayoutTilesWithGraphic","abstract":"

    A layout with soft buttons in a tile layout on the left and a single graphic on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutGraphicWithTextAndSoftButtons":{"name":"SDLPredefinedLayoutGraphicWithTextAndSoftButtons","abstract":"

    A layout with a single graphic on the left and both text and soft buttons on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTextAndSoftButtonsWithGraphic":{"name":"SDLPredefinedLayoutTextAndSoftButtonsWithGraphic","abstract":"

    A layout with both text and soft buttons on the left and a single graphic on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutGraphicWithTextButtons":{"name":"SDLPredefinedLayoutGraphicWithTextButtons","abstract":"

    A layout with a single graphic on the left and text-only soft buttons on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTextButtonsWithGraphic":{"name":"SDLPredefinedLayoutTextButtonsWithGraphic","abstract":"

    A layout with text-only soft buttons on the left and a single graphic on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutLargeGraphicWithSoftButtons":{"name":"SDLPredefinedLayoutLargeGraphicWithSoftButtons","abstract":"

    A layout with a single large graphic and soft buttons

    "},"Constants.html#/c:@SDLPredefinedLayoutDoubleGraphicWithSoftButtons":{"name":"SDLPredefinedLayoutDoubleGraphicWithSoftButtons","abstract":"

    A layout with two graphics and soft buttons

    "},"Constants.html#/c:@SDLPredefinedLayoutLargeGraphicOnly":{"name":"SDLPredefinedLayoutLargeGraphicOnly","abstract":"

    A layout with only a single large graphic

    "},"Constants.html#/c:@SDLPrerecordedSpeechHelp":{"name":"SDLPrerecordedSpeechHelp","abstract":"

    A prerecorded help prompt

    "},"Constants.html#/c:@SDLPrerecordedSpeechInitial":{"name":"SDLPrerecordedSpeechInitial","abstract":"

    A prerecorded initial prompt

    "},"Constants.html#/c:@SDLPrerecordedSpeechListen":{"name":"SDLPrerecordedSpeechListen","abstract":"

    A prerecorded listen prompt is available

    "},"Constants.html#/c:@SDLPrerecordedSpeechPositive":{"name":"SDLPrerecordedSpeechPositive","abstract":"

    A prerecorded positive indicator noise is available

    "},"Constants.html#/c:@SDLPrerecordedSpeechNegative":{"name":"SDLPrerecordedSpeechNegative","abstract":"

    A prerecorded negative indicator noise is available

    "},"Constants.html#/c:@SDLPrimaryAudioSourceNoSourceSelected":{"name":"SDLPrimaryAudioSourceNoSourceSelected","abstract":"

    Currently no source selected

    "},"Constants.html#/c:@SDLPrimaryAudioSourceUSB":{"name":"SDLPrimaryAudioSourceUSB","abstract":"

    USB is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceUSB2":{"name":"SDLPrimaryAudioSourceUSB2","abstract":"

    USB2 is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceBluetoothStereo":{"name":"SDLPrimaryAudioSourceBluetoothStereo","abstract":"

    Bluetooth Stereo is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceLineIn":{"name":"SDLPrimaryAudioSourceLineIn","abstract":"

    Line in is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceIpod":{"name":"SDLPrimaryAudioSourceIpod","abstract":"

    iPod is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceMobileApp":{"name":"SDLPrimaryAudioSourceMobileApp","abstract":"

    Mobile app is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceCD":{"name":"SDLPrimaryAudioSourceCD","abstract":"

    @abstract CD is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceAM":{"name":"SDLPrimaryAudioSourceAM","abstract":"

    @abstract Radio frequency AM is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceFM":{"name":"SDLPrimaryAudioSourceFM","abstract":"

    @abstract Radio frequency FM is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceXM":{"name":"SDLPrimaryAudioSourceXM","abstract":"

    @abstract Radio frequency XM is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceDAB":{"name":"SDLPrimaryAudioSourceDAB","abstract":"

    @abstract Radio frequency DAB is current source

    "},"Constants.html#/c:@SDLRPCFunctionNameAddCommand":{"name":"SDLRPCFunctionNameAddCommand","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameAddSubMenu":{"name":"SDLRPCFunctionNameAddSubMenu","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameAlert":{"name":"SDLRPCFunctionNameAlert","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameAlertManeuver":{"name":"SDLRPCFunctionNameAlertManeuver","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameButtonPress":{"name":"SDLRPCFunctionNameButtonPress","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameChangeRegistration":{"name":"SDLRPCFunctionNameChangeRegistration","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameCreateInteractionChoiceSet":{"name":"SDLRPCFunctionNameCreateInteractionChoiceSet","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDeleteCommand":{"name":"SDLRPCFunctionNameDeleteCommand","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDeleteFile":{"name":"SDLRPCFunctionNameDeleteFile","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDeleteInteractionChoiceSet":{"name":"SDLRPCFunctionNameDeleteInteractionChoiceSet","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDeleteSubMenu":{"name":"SDLRPCFunctionNameDeleteSubMenu","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDiagnosticMessage":{"name":"SDLRPCFunctionNameDiagnosticMessage","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDialNumber":{"name":"SDLRPCFunctionNameDialNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameEncodedSyncPData":{"name":"SDLRPCFunctionNameEncodedSyncPData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameEndAudioPassThru":{"name":"SDLRPCFunctionNameEndAudioPassThru","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGenericResponse":{"name":"SDLRPCFunctionNameGenericResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetAppServiceData":{"name":"SDLRPCFunctionNameGetAppServiceData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetDTCs":{"name":"SDLRPCFunctionNameGetDTCs","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetFile":{"name":"SDLRPCFunctionNameGetFile","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetCloudAppProperties":{"name":"SDLRPCFunctionNameGetCloudAppProperties","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetInteriorVehicleData":{"name":"SDLRPCFunctionNameGetInteriorVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetSystemCapability":{"name":"SDLRPCFunctionNameGetSystemCapability","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetVehicleData":{"name":"SDLRPCFunctionNameGetVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetWayPoints":{"name":"SDLRPCFunctionNameGetWayPoints","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameListFiles":{"name":"SDLRPCFunctionNameListFiles","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnAppInterfaceUnregistered":{"name":"SDLRPCFunctionNameOnAppInterfaceUnregistered","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnAppServiceData":{"name":"SDLRPCFunctionNameOnAppServiceData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnAudioPassThru":{"name":"SDLRPCFunctionNameOnAudioPassThru","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnButtonEvent":{"name":"SDLRPCFunctionNameOnButtonEvent","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnButtonPress":{"name":"SDLRPCFunctionNameOnButtonPress","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnCommand":{"name":"SDLRPCFunctionNameOnCommand","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnDriverDistraction":{"name":"SDLRPCFunctionNameOnDriverDistraction","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnEncodedSyncPData":{"name":"SDLRPCFunctionNameOnEncodedSyncPData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnHashChange":{"name":"SDLRPCFunctionNameOnHashChange","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnHMIStatus":{"name":"SDLRPCFunctionNameOnHMIStatus","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnInteriorVehicleData":{"name":"SDLRPCFunctionNameOnInteriorVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnKeyboardInput":{"name":"SDLRPCFunctionNameOnKeyboardInput","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnLanguageChange":{"name":"SDLRPCFunctionNameOnLanguageChange","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnLockScreenStatus":{"name":"SDLRPCFunctionNameOnLockScreenStatus","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnPermissionsChange":{"name":"SDLRPCFunctionNameOnPermissionsChange","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnRCStatus":{"name":"SDLRPCFunctionNameOnRCStatus","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnSyncPData":{"name":"SDLRPCFunctionNameOnSyncPData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnSystemCapabilityUpdated":{"name":"SDLRPCFunctionNameOnSystemCapabilityUpdated","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnSystemRequest":{"name":"SDLRPCFunctionNameOnSystemRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnTBTClientState":{"name":"SDLRPCFunctionNameOnTBTClientState","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnTouchEvent":{"name":"SDLRPCFunctionNameOnTouchEvent","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnVehicleData":{"name":"SDLRPCFunctionNameOnVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnWayPointChange":{"name":"SDLRPCFunctionNameOnWayPointChange","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePerformAppServiceInteraction":{"name":"SDLRPCFunctionNamePerformAppServiceInteraction","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePerformAudioPassThru":{"name":"SDLRPCFunctionNamePerformAudioPassThru","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePerformInteraction":{"name":"SDLRPCFunctionNamePerformInteraction","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePublishAppService":{"name":"SDLRPCFunctionNamePublishAppService","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePutFile":{"name":"SDLRPCFunctionNamePutFile","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameReadDID":{"name":"SDLRPCFunctionNameReadDID","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameRegisterAppInterface":{"name":"SDLRPCFunctionNameRegisterAppInterface","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameReserved":{"name":"SDLRPCFunctionNameReserved","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameResetGlobalProperties":{"name":"SDLRPCFunctionNameResetGlobalProperties","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameScrollableMessage":{"name":"SDLRPCFunctionNameScrollableMessage","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSendHapticData":{"name":"SDLRPCFunctionNameSendHapticData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSendLocation":{"name":"SDLRPCFunctionNameSendLocation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetAppIcon":{"name":"SDLRPCFunctionNameSetAppIcon","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetCloudAppProperties":{"name":"SDLRPCFunctionNameSetCloudAppProperties","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetDisplayLayout":{"name":"SDLRPCFunctionNameSetDisplayLayout","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetGlobalProperties":{"name":"SDLRPCFunctionNameSetGlobalProperties","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetInteriorVehicleData":{"name":"SDLRPCFunctionNameSetInteriorVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetMediaClockTimer":{"name":"SDLRPCFunctionNameSetMediaClockTimer","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameShow":{"name":"SDLRPCFunctionNameShow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameShowConstantTBT":{"name":"SDLRPCFunctionNameShowConstantTBT","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSlider":{"name":"SDLRPCFunctionNameSlider","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSpeak":{"name":"SDLRPCFunctionNameSpeak","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSubscribeButton":{"name":"SDLRPCFunctionNameSubscribeButton","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSubscribeVehicleData":{"name":"SDLRPCFunctionNameSubscribeVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSubscribeWayPoints":{"name":"SDLRPCFunctionNameSubscribeWayPoints","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSyncPData":{"name":"SDLRPCFunctionNameSyncPData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSystemRequest":{"name":"SDLRPCFunctionNameSystemRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUnregisterAppInterface":{"name":"SDLRPCFunctionNameUnregisterAppInterface","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUnsubscribeButton":{"name":"SDLRPCFunctionNameUnsubscribeButton","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUnsubscribeVehicleData":{"name":"SDLRPCFunctionNameUnsubscribeVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUnsubscribeWayPoints":{"name":"SDLRPCFunctionNameUnsubscribeWayPoints","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUpdateTurnList":{"name":"SDLRPCFunctionNameUpdateTurnList","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRadioBandAM":{"name":"SDLRadioBandAM","abstract":"

    Represents AM radio band

    "},"Constants.html#/c:@SDLRadioBandFM":{"name":"SDLRadioBandFM","abstract":"

    Represents FM radio band

    "},"Constants.html#/c:@SDLRadioBandXM":{"name":"SDLRadioBandXM","abstract":"

    Represents XM radio band

    "},"Constants.html#/c:@SDLRadioStateAcquiring":{"name":"SDLRadioStateAcquiring","abstract":"

    Represents Radio state as ACQUIRING

    "},"Constants.html#/c:@SDLRadioStateAcquired":{"name":"SDLRadioStateAcquired","abstract":"

    Represents Radio state as ACQUIRED

    "},"Constants.html#/c:@SDLRadioStateMulticast":{"name":"SDLRadioStateMulticast","abstract":"

    Represents Radio state as MULTICAST

    "},"Constants.html#/c:@SDLRadioStateNotFound":{"name":"SDLRadioStateNotFound","abstract":"

    Represents Radio state as NOT_FOUND

    "},"Constants.html#/c:@SDLRequestTypeHTTP":{"name":"SDLRequestTypeHTTP","abstract":"

    An HTTP request

    "},"Constants.html#/c:@SDLRequestTypeFileResume":{"name":"SDLRequestTypeFileResume","abstract":"

    A file resumption request

    "},"Constants.html#/c:@SDLRequestTypeAuthenticationRequest":{"name":"SDLRequestTypeAuthenticationRequest","abstract":"

    An authentication request

    "},"Constants.html#/c:@SDLRequestTypeAuthenticationChallenge":{"name":"SDLRequestTypeAuthenticationChallenge","abstract":"

    An authentication challenge

    "},"Constants.html#/c:@SDLRequestTypeAuthenticationAck":{"name":"SDLRequestTypeAuthenticationAck","abstract":"

    An authentication acknowledgment

    "},"Constants.html#/c:@SDLRequestTypeProprietary":{"name":"SDLRequestTypeProprietary","abstract":"

    An proprietary formatted request

    "},"Constants.html#/c:@SDLRequestTypeQueryApps":{"name":"SDLRequestTypeQueryApps","abstract":"

    An Query Apps request

    "},"Constants.html#/c:@SDLRequestTypeLaunchApp":{"name":"SDLRequestTypeLaunchApp","abstract":"

    A Launch Apps request

    "},"Constants.html#/c:@SDLRequestTypeLockScreenIconURL":{"name":"SDLRequestTypeLockScreenIconURL","abstract":"

    The URL for a lock screen icon

    "},"Constants.html#/c:@SDLRequestTypeTrafficMessageChannel":{"name":"SDLRequestTypeTrafficMessageChannel","abstract":"

    A traffic message channel request

    "},"Constants.html#/c:@SDLRequestTypeDriverProfile":{"name":"SDLRequestTypeDriverProfile","abstract":"

    A driver profile request

    "},"Constants.html#/c:@SDLRequestTypeVoiceSearch":{"name":"SDLRequestTypeVoiceSearch","abstract":"

    A voice search request

    "},"Constants.html#/c:@SDLRequestTypeNavigation":{"name":"SDLRequestTypeNavigation","abstract":"

    A navigation request

    "},"Constants.html#/c:@SDLRequestTypePhone":{"name":"SDLRequestTypePhone","abstract":"

    A phone request

    "},"Constants.html#/c:@SDLRequestTypeClimate":{"name":"SDLRequestTypeClimate","abstract":"

    A climate request

    "},"Constants.html#/c:@SDLRequestTypeSettings":{"name":"SDLRequestTypeSettings","abstract":"

    A settings request

    "},"Constants.html#/c:@SDLRequestTypeVehicleDiagnostics":{"name":"SDLRequestTypeVehicleDiagnostics","abstract":"

    A vehicle diagnostics request

    "},"Constants.html#/c:@SDLRequestTypeEmergency":{"name":"SDLRequestTypeEmergency","abstract":"

    An emergency request

    "},"Constants.html#/c:@SDLRequestTypeMedia":{"name":"SDLRequestTypeMedia","abstract":"

    A media request

    "},"Constants.html#/c:@SDLRequestTypeFOTA":{"name":"SDLRequestTypeFOTA","abstract":"

    A firmware over-the-air request

    "},"Constants.html#/c:@SDLRequestTypeOEMSpecific":{"name":"SDLRequestTypeOEMSpecific","abstract":"

    A request that is OEM specific using the RequestSubType in SystemRequest

    "},"Constants.html#/c:@SDLRequestTypeIconURL":{"name":"SDLRequestTypeIconURL","abstract":"

    A request for an icon url

    "},"Constants.html#/c:@SDLResultSuccess":{"name":"SDLResultSuccess","abstract":"

    The request succeeded

    "},"Constants.html#/c:@SDLResultInvalidData":{"name":"SDLResultInvalidData","abstract":"

    The request contained invalid data

    "},"Constants.html#/c:@SDLResultCharacterLimitExceeded":{"name":"SDLResultCharacterLimitExceeded","abstract":"

    The request had a string containing too many characters

    "},"Constants.html#/c:@SDLResultUnsupportedRequest":{"name":"SDLResultUnsupportedRequest","abstract":"

    The request is not supported by the IVI unit implementing SDL

    "},"Constants.html#/c:@SDLResultOutOfMemory":{"name":"SDLResultOutOfMemory","abstract":"

    The system could not process the request because the necessary memory couldn’t be allocated

    "},"Constants.html#/c:@SDLResultTooManyPendingRequests":{"name":"SDLResultTooManyPendingRequests","abstract":"

    There are too many requests pending (means that the response has not been delivered yet).

    "},"Constants.html#/c:@SDLResultInvalidId":{"name":"SDLResultInvalidId","abstract":"

    One of the provided IDs is not valid.

    "},"Constants.html#/c:@SDLResultDuplicateName":{"name":"SDLResultDuplicateName","abstract":"

    The provided name or synonym is a duplicate of some already-defined name or synonym.

    "},"Constants.html#/c:@SDLResultTooManyApplications":{"name":"SDLResultTooManyApplications","abstract":"

    There are already too many registered applications.

    "},"Constants.html#/c:@SDLResultApplicationRegisteredAlready":{"name":"SDLResultApplicationRegisteredAlready","abstract":"

    RegisterAppInterface has been called, but this app is already registered

    "},"Constants.html#/c:@SDLResultUnsupportedVersion":{"name":"SDLResultUnsupportedVersion","abstract":"

    The Head Unit doesn’t support the SDL version that is requested by the mobile application.

    "},"Constants.html#/c:@SDLResultWrongLanguage":{"name":"SDLResultWrongLanguage","abstract":"

    The requested language is currently not supported. This might be because of a mismatch of the currently active language on the head unit and the requested language.

    "},"Constants.html#/c:@SDLResultApplicationNotRegistered":{"name":"SDLResultApplicationNotRegistered","abstract":"

    A command can not be executed because no application has been registered with RegisterApplication.

    "},"Constants.html#/c:@SDLResultInUse":{"name":"SDLResultInUse","abstract":"

    The data may not be changed, because it is currently in use. For example when trying to delete a choice set that is currently involved in an interaction.

    "},"Constants.html#/c:@SDLResultVehicleDataNotAllowed":{"name":"SDLResultVehicleDataNotAllowed","abstract":"

    The user has turned off access to vehicle data, and it is globally unavailable to mobile applications.

    "},"Constants.html#/c:@SDLResultVehicleDataNotAvailable":{"name":"SDLResultVehicleDataNotAvailable","abstract":"

    The requested vehicle data is not available on this vehicle or is not published.

    "},"Constants.html#/c:@SDLResultRejected":{"name":"SDLResultRejected","abstract":"

    The requested command was rejected, e.g. because the mobile app is in background and cannot perform any HMI commands, or an HMI command (e.g. Speak) is rejected because a higher priority HMI command (e.g. Alert) is playing.

    "},"Constants.html#/c:@SDLResultAborted":{"name":"SDLResultAborted","abstract":"

    A command was aborted, e.g. due to user interaction (user pressed button), or an HMI command (e.g. Speak) is aborted because a higher priority HMI command (e.g. Alert) was requested.

    "},"Constants.html#/c:@SDLResultIgnored":{"name":"SDLResultIgnored","abstract":"

    A command was ignored, because the intended result is already in effect. For example, SetMediaClockTimer was used to pause the media clock although the clock is paused already.

    "},"Constants.html#/c:@SDLResultUnsupportedResource":{"name":"SDLResultUnsupportedResource","abstract":"

    A button that was requested for subscription is not supported under the current system.

    "},"Constants.html#/c:@SDLResultFileNotFound":{"name":"SDLResultFileNotFound","abstract":"

    A specified file could not be found on the head unit.

    "},"Constants.html#/c:@SDLResultGenericError":{"name":"SDLResultGenericError","abstract":"

    Provided data is valid but something went wrong in the lower layers.

    "},"Constants.html#/c:@SDLResultDisallowed":{"name":"SDLResultDisallowed","abstract":"

    RPC is not authorized in local policy table.

    "},"Constants.html#/c:@SDLResultUserDisallowed":{"name":"SDLResultUserDisallowed","abstract":"

    RPC is included in a functional group explicitly blocked by the user.

    "},"Constants.html#/c:@SDLResultTimedOut":{"name":"SDLResultTimedOut","abstract":"

    Overlay reached the maximum timeout and closed.

    "},"Constants.html#/c:@SDLResultCancelRoute":{"name":"SDLResultCancelRoute","abstract":"

    User selected to Cancel Route.

    "},"Constants.html#/c:@SDLResultCorruptedData":{"name":"SDLResultCorruptedData","abstract":"

    The data sent failed to pass CRC check in receiver end.

    "},"Constants.html#/c:@SDLResultTruncatedData":{"name":"SDLResultTruncatedData","abstract":"

    The RPC (e.g. ReadDID) executed successfully but the data exceeded the platform maximum threshold and thus, only part of the data is available.

    "},"Constants.html#/c:@SDLResultRetry":{"name":"SDLResultRetry","abstract":"

    The user interrupted the RPC (e.g. PerformAudioPassThru) and indicated to start over. Note, the app must issue the new RPC.

    "},"Constants.html#/c:@SDLResultWarnings":{"name":"SDLResultWarnings","abstract":"

    The RPC (e.g. SubscribeVehicleData) executed successfully but one or more items have a warning or failure.

    "},"Constants.html#/c:@SDLResultSaved":{"name":"SDLResultSaved","abstract":"

    The RPC (e.g. Slider) executed successfully and the user elected to save the current position / value.

    "},"Constants.html#/c:@SDLResultInvalidCertificate":{"name":"SDLResultInvalidCertificate","abstract":"

    The certificate provided during authentication is invalid.

    "},"Constants.html#/c:@SDLResultExpiredCertificate":{"name":"SDLResultExpiredCertificate","abstract":"

    The certificate provided during authentication is expired.

    "},"Constants.html#/c:@SDLResultResumeFailed":{"name":"SDLResultResumeFailed","abstract":"

    The provided hash ID does not match the hash of the current set of registered data or the core could not resume the previous data.

    "},"Constants.html#/c:@SDLResultDataNotAvailable":{"name":"SDLResultDataNotAvailable","abstract":"

    The requested data is not available on this vehicle or is not published for the connected app.

    "},"Constants.html#/c:@SDLResultReadOnly":{"name":"SDLResultReadOnly","abstract":"

    The requested data is read only thus cannot be change via remote control .

    "},"Constants.html#/c:@SDLSamplingRate8KHZ":{"name":"SDLSamplingRate8KHZ","abstract":"

    Sampling rate of 8 kHz

    "},"Constants.html#/c:@SDLSamplingRate16KHZ":{"name":"SDLSamplingRate16KHZ","abstract":"

    Sampling rate of 16 kHz

    "},"Constants.html#/c:@SDLSamplingRate22KHZ":{"name":"SDLSamplingRate22KHZ","abstract":"

    Sampling rate of 22 kHz

    "},"Constants.html#/c:@SDLSamplingRate44KHZ":{"name":"SDLSamplingRate44KHZ","abstract":"

    Sampling rate of 44 kHz

    "},"Constants.html#/c:@SDLSeatMemoryActionTypeSave":{"name":"SDLSeatMemoryActionTypeSave","abstract":"

    @abstract Save current seat postions and settings to seat memory.

    "},"Constants.html#/c:@SDLSeatMemoryActionTypeRestore":{"name":"SDLSeatMemoryActionTypeRestore","abstract":"

    @abstract Restore / apply the seat memory settings to the current seat.

    "},"Constants.html#/c:@SDLSeatMemoryActionTypeNone":{"name":"SDLSeatMemoryActionTypeNone","abstract":"

    @abstract No action to be performed.

    "},"Constants.html#/c:@SDLServiceUpdatePublished":{"name":"SDLServiceUpdatePublished","abstract":"

    The service has just been published with the module and once activated to the primary service of its type, it will be ready for possible consumption.

    "},"Constants.html#/c:@SDLServiceUpdateRemoved":{"name":"SDLServiceUpdateRemoved","abstract":"

    The service has just been unpublished with the module and is no longer accessible.

    "},"Constants.html#/c:@SDLServiceUpdateActivated":{"name":"SDLServiceUpdateActivated","abstract":"

    The service is activated as the primary service of this type. All requests dealing with this service type will be handled by this service.

    "},"Constants.html#/c:@SDLServiceUpdateDeactivated":{"name":"SDLServiceUpdateDeactivated","abstract":"

    The service has been deactivated as the primary service of its type.

    "},"Constants.html#/c:@SDLServiceUpdateManifestUpdate":{"name":"SDLServiceUpdateManifestUpdate","abstract":"

    The service has updated its manifest. This could imply updated capabilities.

    "},"Constants.html#/c:@SDLSoftButtonTypeText":{"name":"SDLSoftButtonTypeText","abstract":"

    Text kind Softbutton

    "},"Constants.html#/c:@SDLSoftButtonTypeImage":{"name":"SDLSoftButtonTypeImage","abstract":"

    Image kind Softbutton

    "},"Constants.html#/c:@SDLSoftButtonTypeBoth":{"name":"SDLSoftButtonTypeBoth","abstract":"

    Both (Text & Image) kind Softbutton

    "},"Constants.html#/c:@SDLSpeechCapabilitiesText":{"name":"SDLSpeechCapabilitiesText","abstract":"

    The SDL platform can speak text phrases.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesSAPIPhonemes":{"name":"SDLSpeechCapabilitiesSAPIPhonemes","abstract":"

    The SDL platform can speak SAPI Phonemes.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesLHPlusPhonemes":{"name":"SDLSpeechCapabilitiesLHPlusPhonemes","abstract":"

    The SDL platform can speak LHPlus Phonemes.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesPrerecorded":{"name":"SDLSpeechCapabilitiesPrerecorded","abstract":"

    The SDL platform can speak Prerecorded indicators and prompts.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesSilence":{"name":"SDLSpeechCapabilitiesSilence","abstract":"

    The SDL platform can speak Silence.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesFile":{"name":"SDLSpeechCapabilitiesFile","abstract":"

    The SDL platform can play a file

    "},"Constants.html#/c:@SDLStaticIconNameAcceptCall":{"name":"SDLStaticIconNameAcceptCall","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAddWaypoint":{"name":"SDLStaticIconNameAddWaypoint","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAlbum":{"name":"SDLStaticIconNameAlbum","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAmbientLighting":{"name":"SDLStaticIconNameAmbientLighting","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameArrowNorth":{"name":"SDLStaticIconNameArrowNorth","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAudioMute":{"name":"SDLStaticIconNameAudioMute","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAudiobookEpisode":{"name":"SDLStaticIconNameAudiobookEpisode","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAudiobookNarrator":{"name":"SDLStaticIconNameAudiobookNarrator","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAuxillaryAudio":{"name":"SDLStaticIconNameAuxillaryAudio","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBack":{"name":"SDLStaticIconNameBack","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity0Of5":{"name":"SDLStaticIconNameBatteryCapacity0Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity1Of5":{"name":"SDLStaticIconNameBatteryCapacity1Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity2Of5":{"name":"SDLStaticIconNameBatteryCapacity2Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity3Of5":{"name":"SDLStaticIconNameBatteryCapacity3Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity4Of5":{"name":"SDLStaticIconNameBatteryCapacity4Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity5Of5":{"name":"SDLStaticIconNameBatteryCapacity5Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBluetoothAudioSource":{"name":"SDLStaticIconNameBluetoothAudioSource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBluetooth1":{"name":"SDLStaticIconNameBluetooth1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBluetooth2":{"name":"SDLStaticIconNameBluetooth2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBrowse":{"name":"SDLStaticIconNameBrowse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellPhoneInRoamingMode":{"name":"SDLStaticIconNameCellPhoneInRoamingMode","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength0Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength0Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength1Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength1Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength2Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength2Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength3Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength3Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength4Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength4Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength5Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength5Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameChangeLaneLeft":{"name":"SDLStaticIconNameChangeLaneLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameChangeLaneRight":{"name":"SDLStaticIconNameChangeLaneRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCheckBoxChecked":{"name":"SDLStaticIconNameCheckBoxChecked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCheckBoxUnchecked":{"name":"SDLStaticIconNameCheckBoxUnchecked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameClimate":{"name":"SDLStaticIconNameClimate","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameClock":{"name":"SDLStaticIconNameClock","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCompose":{"name":"SDLStaticIconNameCompose","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameContact":{"name":"SDLStaticIconNameContact","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameContinue":{"name":"SDLStaticIconNameContinue","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDash":{"name":"SDLStaticIconNameDash","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDate":{"name":"SDLStaticIconNameDate","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDelete":{"name":"SDLStaticIconNameDelete","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDestination":{"name":"SDLStaticIconNameDestination","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDestinationFerryAhead":{"name":"SDLStaticIconNameDestinationFerryAhead","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameEbookmark":{"name":"SDLStaticIconNameEbookmark","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameEmpty":{"name":"SDLStaticIconNameEmpty","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameEndCall":{"name":"SDLStaticIconNameEndCall","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFail":{"name":"SDLStaticIconNameFail","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFastForward30Secs":{"name":"SDLStaticIconNameFastForward30Secs","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFavoriteHeart":{"name":"SDLStaticIconNameFavoriteHeart","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFavoriteStar":{"name":"SDLStaticIconNameFavoriteStar","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFaxNumber":{"name":"SDLStaticIconNameFaxNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFilename":{"name":"SDLStaticIconNameFilename","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFilter":{"name":"SDLStaticIconNameFilter","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFolder":{"name":"SDLStaticIconNameFolder","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFuelPrices":{"name":"SDLStaticIconNameFuelPrices","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFullMap":{"name":"SDLStaticIconNameFullMap","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameGenericPhoneNumber":{"name":"SDLStaticIconNameGenericPhoneNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameGenre":{"name":"SDLStaticIconNameGenre","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameGlobalKeyboard":{"name":"SDLStaticIconNameGlobalKeyboard","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameHighwayExitInformation":{"name":"SDLStaticIconNameHighwayExitInformation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameHomePhoneNumber":{"name":"SDLStaticIconNameHomePhoneNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameHyperlink":{"name":"SDLStaticIconNameHyperlink","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameID3TagUnknown":{"name":"SDLStaticIconNameID3TagUnknown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameIncomingCalls":{"name":"SDLStaticIconNameIncomingCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameInformation":{"name":"SDLStaticIconNameInformation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameIPodMediaSource":{"name":"SDLStaticIconNameIPodMediaSource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameJoinCalls":{"name":"SDLStaticIconNameJoinCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameKeepLeft":{"name":"SDLStaticIconNameKeepLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameKeepRight":{"name":"SDLStaticIconNameKeepRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameKey":{"name":"SDLStaticIconNameKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLeft":{"name":"SDLStaticIconNameLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLeftArrow":{"name":"SDLStaticIconNameLeftArrow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLeftExit":{"name":"SDLStaticIconNameLeftExit","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLineInAudioSource":{"name":"SDLStaticIconNameLineInAudioSource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLocked":{"name":"SDLStaticIconNameLocked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMediaControlLeftArrow":{"name":"SDLStaticIconNameMediaControlLeftArrow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMediaControlRecording":{"name":"SDLStaticIconNameMediaControlRecording","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMediaControlRightArrow":{"name":"SDLStaticIconNameMediaControlRightArrow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMediaControlStop":{"name":"SDLStaticIconNameMediaControlStop","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMicrophone":{"name":"SDLStaticIconNameMicrophone","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMissedCalls":{"name":"SDLStaticIconNameMissedCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMobilePhoneNumber":{"name":"SDLStaticIconNameMobilePhoneNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMoveDown":{"name":"SDLStaticIconNameMoveDown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMoveUp":{"name":"SDLStaticIconNameMoveUp","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMP3TagArtist":{"name":"SDLStaticIconNameMP3TagArtist","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameNavigation":{"name":"SDLStaticIconNameNavigation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameNavigationCurrentDirection":{"name":"SDLStaticIconNameNavigationCurrentDirection","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameNegativeRatingThumbsDown":{"name":"SDLStaticIconNameNegativeRatingThumbsDown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameNew":{"name":"SDLStaticIconNameNew","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameOfficePhoneNumber":{"name":"SDLStaticIconNameOfficePhoneNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameOpened":{"name":"SDLStaticIconNameOpened","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameOrigin":{"name":"SDLStaticIconNameOrigin","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameOutgoingCalls":{"name":"SDLStaticIconNameOutgoingCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePause":{"name":"SDLStaticIconNamePause","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhoneCall1":{"name":"SDLStaticIconNamePhoneCall1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhoneCall2":{"name":"SDLStaticIconNamePhoneCall2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhoneDevice":{"name":"SDLStaticIconNamePhoneDevice","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhonebook":{"name":"SDLStaticIconNamePhonebook","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhoto":{"name":"SDLStaticIconNamePhoto","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePlay":{"name":"SDLStaticIconNamePlay","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePlaylist":{"name":"SDLStaticIconNamePlaylist","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePopUp":{"name":"SDLStaticIconNamePopUp","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePositiveRatingThumbsUp":{"name":"SDLStaticIconNamePositiveRatingThumbsUp","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePower":{"name":"SDLStaticIconNamePower","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePrimaryPhone":{"name":"SDLStaticIconNamePrimaryPhone","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRadioButtonChecked":{"name":"SDLStaticIconNameRadioButtonChecked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRadioButtonUnchecked":{"name":"SDLStaticIconNameRadioButtonUnchecked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRecentCalls":{"name":"SDLStaticIconNameRecentCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRecentDestinations":{"name":"SDLStaticIconNameRecentDestinations","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRedo":{"name":"SDLStaticIconNameRedo","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRefresh":{"name":"SDLStaticIconNameRefresh","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRemoteDiagnosticsCheckEngine":{"name":"SDLStaticIconNameRemoteDiagnosticsCheckEngine","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRendered911Assist":{"name":"SDLStaticIconNameRendered911Assist","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRepeat":{"name":"SDLStaticIconNameRepeat","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRepeatPlay":{"name":"SDLStaticIconNameRepeatPlay","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameReply":{"name":"SDLStaticIconNameReply","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRewind30Secs":{"name":"SDLStaticIconNameRewind30Secs","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRight":{"name":"SDLStaticIconNameRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRightExit":{"name":"SDLStaticIconNameRightExit","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRingtones":{"name":"SDLStaticIconNameRingtones","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand1":{"name":"SDLStaticIconNameRoundaboutLeftHand1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand2":{"name":"SDLStaticIconNameRoundaboutLeftHand2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand3":{"name":"SDLStaticIconNameRoundaboutLeftHand3","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand4":{"name":"SDLStaticIconNameRoundaboutLeftHand4","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand5":{"name":"SDLStaticIconNameRoundaboutLeftHand5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand6":{"name":"SDLStaticIconNameRoundaboutLeftHand6","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand7":{"name":"SDLStaticIconNameRoundaboutLeftHand7","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand1":{"name":"SDLStaticIconNameRoundaboutRightHand1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand2":{"name":"SDLStaticIconNameRoundaboutRightHand2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand3":{"name":"SDLStaticIconNameRoundaboutRightHand3","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand4":{"name":"SDLStaticIconNameRoundaboutRightHand4","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand5":{"name":"SDLStaticIconNameRoundaboutRightHand5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand6":{"name":"SDLStaticIconNameRoundaboutRightHand6","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand7":{"name":"SDLStaticIconNameRoundaboutRightHand7","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRSS":{"name":"SDLStaticIconNameRSS","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSettings":{"name":"SDLStaticIconNameSettings","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSharpLeft":{"name":"SDLStaticIconNameSharpLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSharpRight":{"name":"SDLStaticIconNameSharpRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameShow":{"name":"SDLStaticIconNameShow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameShufflePlay":{"name":"SDLStaticIconNameShufflePlay","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSkiPlaces":{"name":"SDLStaticIconNameSkiPlaces","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSlightLeft":{"name":"SDLStaticIconNameSlightLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSlightRight":{"name":"SDLStaticIconNameSlightRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSmartphone":{"name":"SDLStaticIconNameSmartphone","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSortList":{"name":"SDLStaticIconNameSortList","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber0":{"name":"SDLStaticIconNameSpeedDialNumbersNumber0","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber1":{"name":"SDLStaticIconNameSpeedDialNumbersNumber1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber2":{"name":"SDLStaticIconNameSpeedDialNumbersNumber2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber3":{"name":"SDLStaticIconNameSpeedDialNumbersNumber3","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber4":{"name":"SDLStaticIconNameSpeedDialNumbersNumber4","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber5":{"name":"SDLStaticIconNameSpeedDialNumbersNumber5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber6":{"name":"SDLStaticIconNameSpeedDialNumbersNumber6","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber7":{"name":"SDLStaticIconNameSpeedDialNumbersNumber7","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber8":{"name":"SDLStaticIconNameSpeedDialNumbersNumber8","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber9":{"name":"SDLStaticIconNameSpeedDialNumbersNumber9","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSuccess":{"name":"SDLStaticIconNameSuccess","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameTrackTitle":{"name":"SDLStaticIconNameTrackTitle","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameTrafficReport":{"name":"SDLStaticIconNameTrafficReport","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameTurnList":{"name":"SDLStaticIconNameTurnList","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUTurnLeftTraffic":{"name":"SDLStaticIconNameUTurnLeftTraffic","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUTurnRightTraffic":{"name":"SDLStaticIconNameUTurnRightTraffic","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUndo":{"name":"SDLStaticIconNameUndo","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUnlocked":{"name":"SDLStaticIconNameUnlocked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUSBMediaAudioSource":{"name":"SDLStaticIconNameUSBMediaAudioSource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceControlScrollbarListItemNo1":{"name":"SDLStaticIconNameVoiceControlScrollbarListItemNo1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceControlScrollbarListItemNo2":{"name":"SDLStaticIconNameVoiceControlScrollbarListItemNo2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceControlScrollbarListItemNo3":{"name":"SDLStaticIconNameVoiceControlScrollbarListItemNo3","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceControlScrollbarListItemNo4":{"name":"SDLStaticIconNameVoiceControlScrollbarListItemNo4","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionFailed":{"name":"SDLStaticIconNameVoiceRecognitionFailed","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionPause":{"name":"SDLStaticIconNameVoiceRecognitionPause","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionSuccessful":{"name":"SDLStaticIconNameVoiceRecognitionSuccessful","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionSystemActive":{"name":"SDLStaticIconNameVoiceRecognitionSystemActive","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionSystemListening":{"name":"SDLStaticIconNameVoiceRecognitionSystemListening","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionTryAgain":{"name":"SDLStaticIconNameVoiceRecognitionTryAgain","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameWarning":{"name":"SDLStaticIconNameWarning","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameWeather":{"name":"SDLStaticIconNameWeather","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameWifiFull":{"name":"SDLStaticIconNameWifiFull","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameZoomIn":{"name":"SDLStaticIconNameZoomIn","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameZoomOut":{"name":"SDLStaticIconNameZoomOut","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDefaultScreenSize":{"name":"SDLDefaultScreenSize","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamDidStartNotification":{"name":"SDLVideoStreamDidStartNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamDidStopNotification":{"name":"SDLVideoStreamDidStopNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamSuspendedNotification":{"name":"SDLVideoStreamSuspendedNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamDidStartNotification":{"name":"SDLAudioStreamDidStartNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamDidStopNotification":{"name":"SDLAudioStreamDidStopNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLLockScreenManagerWillPresentLockScreenViewController":{"name":"SDLLockScreenManagerWillPresentLockScreenViewController","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLLockScreenManagerDidPresentLockScreenViewController":{"name":"SDLLockScreenManagerDidPresentLockScreenViewController","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLLockScreenManagerWillDismissLockScreenViewController":{"name":"SDLLockScreenManagerWillDismissLockScreenViewController","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLLockScreenManagerDidDismissLockScreenViewController":{"name":"SDLLockScreenManagerDidDismissLockScreenViewController","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateStopped":{"name":"SDLVideoStreamManagerStateStopped","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateStarting":{"name":"SDLVideoStreamManagerStateStarting","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateReady":{"name":"SDLVideoStreamManagerStateReady","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateSuspended":{"name":"SDLVideoStreamManagerStateSuspended","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateShuttingDown":{"name":"SDLVideoStreamManagerStateShuttingDown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamManagerStateStopped":{"name":"SDLAudioStreamManagerStateStopped","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamManagerStateStarting":{"name":"SDLAudioStreamManagerStateStarting","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamManagerStateReady":{"name":"SDLAudioStreamManagerStateReady","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamManagerStateShuttingDown":{"name":"SDLAudioStreamManagerStateShuttingDown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAppStateInactive":{"name":"SDLAppStateInactive","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAppStateActive":{"name":"SDLAppStateActive","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLSupportedSeatDriver":{"name":"SDLSupportedSeatDriver","abstract":"

    @abstract Save current seat postions and settings to seat memory.

    "},"Constants.html#/c:@SDLSupportedSeatFrontPassenger":{"name":"SDLSupportedSeatFrontPassenger","abstract":"

    @abstract Restore / apply the seat memory settings to the current seat.

    "},"Constants.html#/c:@SDLSystemActionDefaultAction":{"name":"SDLSystemActionDefaultAction","abstract":"

    A default soft button action

    "},"Constants.html#/c:@SDLSystemActionStealFocus":{"name":"SDLSystemActionStealFocus","abstract":"

    An action causing your app to steal HMI focus

    "},"Constants.html#/c:@SDLSystemActionKeepContext":{"name":"SDLSystemActionKeepContext","abstract":"

    An action causing you to keep context

    "},"Constants.html#/c:@SDLSystemCapabilityTypeAppServices":{"name":"SDLSystemCapabilityTypeAppServices","abstract":"

    The app services capability

    "},"Constants.html#/c:@SDLSystemCapabilityTypeNavigation":{"name":"SDLSystemCapabilityTypeNavigation","abstract":"

    The navigation capability

    "},"Constants.html#/c:@SDLSystemCapabilityTypePhoneCall":{"name":"SDLSystemCapabilityTypePhoneCall","abstract":"

    The phone call capability

    "},"Constants.html#/c:@SDLSystemCapabilityTypeVideoStreaming":{"name":"SDLSystemCapabilityTypeVideoStreaming","abstract":"

    The video streaming capability

    "},"Constants.html#/c:@SDLSystemCapabilityTypeRemoteControl":{"name":"SDLSystemCapabilityTypeRemoteControl","abstract":"

    The remote control capability

    "},"Constants.html#/c:@SDLSystemContextMain":{"name":"SDLSystemContextMain","abstract":"

    No user interaction (user-initiated or app-initiated) is in progress.

    "},"Constants.html#/c:@SDLSystemContextVoiceRecognitionSession":{"name":"SDLSystemContextVoiceRecognitionSession","abstract":"

    VR-oriented, user-initiated or app-initiated interaction is in-progress.

    "},"Constants.html#/c:@SDLSystemContextMenu":{"name":"SDLSystemContextMenu","abstract":"

    Menu-oriented, user-initiated or app-initiated interaction is in-progress.

    "},"Constants.html#/c:@SDLSystemContextHMIObscured":{"name":"SDLSystemContextHMIObscured","abstract":"

    The app’s display HMI is currently being obscured by either a system or other app’s overlay.

    "},"Constants.html#/c:@SDLSystemContextAlert":{"name":"SDLSystemContextAlert","abstract":"

    Broadcast only to whichever app has an alert currently being displayed.

    "},"Constants.html#/c:@SDLTBTStateRouteUpdateRequest":{"name":"SDLTBTStateRouteUpdateRequest","abstract":"

    The route should be updated

    "},"Constants.html#/c:@SDLTBTStateRouteAccepted":{"name":"SDLTBTStateRouteAccepted","abstract":"

    The route is accepted

    "},"Constants.html#/c:@SDLTBTStateRouteRefused":{"name":"SDLTBTStateRouteRefused","abstract":"

    The route is refused

    "},"Constants.html#/c:@SDLTBTStateRouteCancelled":{"name":"SDLTBTStateRouteCancelled","abstract":"

    The route is cancelled

    "},"Constants.html#/c:@SDLTBTStateETARequest":{"name":"SDLTBTStateETARequest","abstract":"

    The route should update its Estimated Time of Arrival

    "},"Constants.html#/c:@SDLTBTStateNextTurnRequest":{"name":"SDLTBTStateNextTurnRequest","abstract":"

    The route should update its next turn

    "},"Constants.html#/c:@SDLTBTStateRouteStatusRequest":{"name":"SDLTBTStateRouteStatusRequest","abstract":"

    The route should update its status

    "},"Constants.html#/c:@SDLTBTStateRouteSummaryRequest":{"name":"SDLTBTStateRouteSummaryRequest","abstract":"

    The route update its summary

    "},"Constants.html#/c:@SDLTBTStateTripStatusRequest":{"name":"SDLTBTStateTripStatusRequest","abstract":"

    The route should update the trip’s status

    "},"Constants.html#/c:@SDLTBTStateRouteUpdateRequestTimeout":{"name":"SDLTBTStateRouteUpdateRequestTimeout","abstract":"

    The route update timed out

    "},"Constants.html#/c:@SDLTPMSUnknown":{"name":"SDLTPMSUnknown","abstract":"

    If set the status of the tire is not known.

    "},"Constants.html#/c:@SDLTPMSSystemFault":{"name":"SDLTPMSSystemFault","abstract":"

    TPMS does not function.

    "},"Constants.html#/c:@SDLTPMSSensorFault":{"name":"SDLTPMSSensorFault","abstract":"

    The sensor of the tire does not function.

    "},"Constants.html#/c:@SDLTPMSLow":{"name":"SDLTPMSLow","abstract":"

    TPMS is reporting a low tire pressure for the tire.

    "},"Constants.html#/c:@SDLTPMSSystemActive":{"name":"SDLTPMSSystemActive","abstract":"

    TPMS is active and the tire pressure is monitored.

    "},"Constants.html#/c:@SDLTPMSTrain":{"name":"SDLTPMSTrain","abstract":"

    TPMS is reporting that the tire must be trained.

    "},"Constants.html#/c:@SDLTPMSTrainingComplete":{"name":"SDLTPMSTrainingComplete","abstract":"

    TPMS reports the training for the tire is completed.

    "},"Constants.html#/c:@SDLTPMSNotTrained":{"name":"SDLTPMSNotTrained","abstract":"

    TPMS reports the tire is not trained.

    "},"Constants.html#/c:@SDLTemperatureUnitCelsius":{"name":"SDLTemperatureUnitCelsius","abstract":"

    Reflects the current HMI setting for temperature unit in Celsius

    "},"Constants.html#/c:@SDLTemperatureUnitFahrenheit":{"name":"SDLTemperatureUnitFahrenheit","abstract":"

    Reflects the current HMI setting for temperature unit in Fahrenheit

    "},"Constants.html#/c:@SDLTextAlignmentLeft":{"name":"SDLTextAlignmentLeft","abstract":"

    Text aligned left.

    "},"Constants.html#/c:@SDLTextAlignmentRight":{"name":"SDLTextAlignmentRight","abstract":"

    Text aligned right.

    "},"Constants.html#/c:@SDLTextAlignmentCenter":{"name":"SDLTextAlignmentCenter","abstract":"

    Text aligned centered.

    "},"Constants.html#/c:@SDLTextFieldNameMainField1":{"name":"SDLTextFieldNameMainField1","abstract":"

    The first line of the first set of main fields of the persistent display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMainField2":{"name":"SDLTextFieldNameMainField2","abstract":"

    The second line of the first set of main fields of the persistent display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMainField3":{"name":"SDLTextFieldNameMainField3","abstract":"

    The first line of the second set of main fields of the persistent display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMainField4":{"name":"SDLTextFieldNameMainField4"},"Constants.html#/c:@SDLTextFieldNameStatusBar":{"name":"SDLTextFieldNameStatusBar","abstract":"

    The status bar on the NGN display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMediaClock":{"name":"SDLTextFieldNameMediaClock","abstract":"

    Text value for MediaClock field. Must be properly formatted according to MediaClockFormat. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMediaTrack":{"name":"SDLTextFieldNameMediaTrack","abstract":"

    The track field of NGN type ACMs. This field is only available for media applications on a NGN display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameAlertText1":{"name":"SDLTextFieldNameAlertText1","abstract":"

    The first line of the alert text field. Applies to SDLAlert.

    "},"Constants.html#/c:@SDLTextFieldNameAlertText2":{"name":"SDLTextFieldNameAlertText2","abstract":"

    The second line of the alert text field. Applies to SDLAlert.

    "},"Constants.html#/c:@SDLTextFieldNameAlertText3":{"name":"SDLTextFieldNameAlertText3","abstract":"

    The third line of the alert text field. Applies to SDLAlert.

    "},"Constants.html#/c:@SDLTextFieldNameScrollableMessageBody":{"name":"SDLTextFieldNameScrollableMessageBody","abstract":"

    Long form body of text that can include newlines and tabs. Applies to SDLScrollableMessage.

    "},"Constants.html#/c:@SDLTextFieldNameInitialInteractionText":{"name":"SDLTextFieldNameInitialInteractionText","abstract":"

    First line suggestion for a user response (in the case of VR enabled interaction).

    "},"Constants.html#/c:@SDLTextFieldNameNavigationText1":{"name":"SDLTextFieldNameNavigationText1","abstract":"

    First line of navigation text.

    "},"Constants.html#/c:@SDLTextFieldNameNavigationText2":{"name":"SDLTextFieldNameNavigationText2","abstract":"

    Second line of navigation text.

    "},"Constants.html#/c:@SDLTextFieldNameETA":{"name":"SDLTextFieldNameETA","abstract":"

    Estimated Time of Arrival time for navigation.

    "},"Constants.html#/c:@SDLTextFieldNameTotalDistance":{"name":"SDLTextFieldNameTotalDistance","abstract":"

    Total distance to destination for navigation.

    "},"Constants.html#/c:@SDLTextFieldNameAudioPassThruDisplayText1":{"name":"SDLTextFieldNameAudioPassThruDisplayText1","abstract":"

    First line of text for audio pass thru.

    "},"Constants.html#/c:@SDLTextFieldNameAudioPassThruDisplayText2":{"name":"SDLTextFieldNameAudioPassThruDisplayText2","abstract":"

    Second line of text for audio pass thru.

    "},"Constants.html#/c:@SDLTextFieldNameSliderHeader":{"name":"SDLTextFieldNameSliderHeader","abstract":"

    Header text for slider.

    "},"Constants.html#/c:@SDLTextFieldNameSliderFooter":{"name":"SDLTextFieldNameSliderFooter","abstract":"

    Footer text for slider

    "},"Constants.html#/c:@SDLTextFieldNameMenuName":{"name":"SDLTextFieldNameMenuName","abstract":"

    Primary text for SDLChoice

    "},"Constants.html#/c:@SDLTextFieldNameSecondaryText":{"name":"SDLTextFieldNameSecondaryText","abstract":"

    Secondary text for SDLChoice

    "},"Constants.html#/c:@SDLTextFieldNameTertiaryText":{"name":"SDLTextFieldNameTertiaryText","abstract":"

    Tertiary text for SDLChoice

    "},"Constants.html#/c:@SDLTextFieldNameMenuTitle":{"name":"SDLTextFieldNameMenuTitle","abstract":"

    Optional text to label an app menu button (for certain touchscreen platforms)

    "},"Constants.html#/c:@SDLTextFieldNameLocationName":{"name":"SDLTextFieldNameLocationName","abstract":"

    Optional name / title of intended location for SDLSendLocation

    "},"Constants.html#/c:@SDLTextFieldNameLocationDescription":{"name":"SDLTextFieldNameLocationDescription","abstract":"

    Optional description of intended location / establishment (if applicable) for SDLSendLocation

    "},"Constants.html#/c:@SDLTextFieldNameAddressLines":{"name":"SDLTextFieldNameAddressLines","abstract":"

    Optional location address (if applicable) for SDLSendLocation

    "},"Constants.html#/c:@SDLTextFieldNamePhoneNumber":{"name":"SDLTextFieldNamePhoneNumber","abstract":"

    Optional hone number of intended location / establishment (if applicable) for SDLSendLocation

    "},"Constants.html#/c:@SDLTimerModeUp":{"name":"SDLTimerModeUp","abstract":"

    The timer should count up.

    "},"Constants.html#/c:@SDLTimerModeDown":{"name":"SDLTimerModeDown","abstract":"

    The timer should count down.

    "},"Constants.html#/c:@SDLTimerModeNone":{"name":"SDLTimerModeNone","abstract":"

    The timer should not count.

    "},"Constants.html#/c:@SDLTouchTypeBegin":{"name":"SDLTouchTypeBegin","abstract":"

    The touch is the beginning of a finger pressed on the display.

    "},"Constants.html#/c:@SDLTouchTypeMove":{"name":"SDLTouchTypeMove","abstract":"

    The touch is the movement of a finger pressed on the display.

    "},"Constants.html#/c:@SDLTouchTypeEnd":{"name":"SDLTouchTypeEnd","abstract":"

    The touch is the ending of a finger pressed on the display.

    "},"Constants.html#/c:@SDLTouchTypeCancel":{"name":"SDLTouchTypeCancel","abstract":"

    The touch is the cancellation of a finger pressed on the display.

    "},"Constants.html#/c:@SDLTriggerSourceMenu":{"name":"SDLTriggerSourceMenu","abstract":"

    Selection made via menu

    "},"Constants.html#/c:@SDLTriggerSourceVoiceRecognition":{"name":"SDLTriggerSourceVoiceRecognition","abstract":"

    Selection made via Voice session

    "},"Constants.html#/c:@SDLTriggerSourceKeyboard":{"name":"SDLTriggerSourceKeyboard","abstract":"

    Selection made via Keyboard

    "},"Constants.html#/c:@SDLTurnSignalOff":{"name":"SDLTurnSignalOff","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTurnSignalLeft":{"name":"SDLTurnSignalLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTurnSignalRight":{"name":"SDLTurnSignalRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTurnSignalBoth":{"name":"SDLTurnSignalBoth","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLUpdateModeCountUp":{"name":"SDLUpdateModeCountUp","abstract":"

    Starts the media clock timer counting upward, in increments of 1 second.

    "},"Constants.html#/c:@SDLUpdateModeCountDown":{"name":"SDLUpdateModeCountDown","abstract":"

    Starts the media clock timer counting downward, in increments of 1 second.

    "},"Constants.html#/c:@SDLUpdateModePause":{"name":"SDLUpdateModePause","abstract":"

    Pauses the media clock timer.

    "},"Constants.html#/c:@SDLUpdateModeResume":{"name":"SDLUpdateModeResume","abstract":"

    Resumes the media clock timer. The timer resumes counting in whatever mode was in effect before pausing (i.e. COUNTUP or COUNTDOWN).

    "},"Constants.html#/c:@SDLUpdateModeClear":{"name":"SDLUpdateModeClear","abstract":"

    Clear the media clock timer.

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusInactiveNotConfirmed":{"name":"SDLVehicleDataActiveStatusInactiveNotConfirmed","abstract":"

    Inactive not confirmed

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusInactiveConfirmed":{"name":"SDLVehicleDataActiveStatusInactiveConfirmed","abstract":"

    Inactive confirmed

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusActiveNotConfirmed":{"name":"SDLVehicleDataActiveStatusActiveNotConfirmed","abstract":"

    Active not confirmed

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusActiveConfirmed":{"name":"SDLVehicleDataActiveStatusActiveConfirmed","abstract":"

    Active confirmed

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusFault":{"name":"SDLVehicleDataActiveStatusFault","abstract":"

    Fault

    "},"Constants.html#/c:@SDLVehicleDataEventStatusNoEvent":{"name":"SDLVehicleDataEventStatusNoEvent","abstract":"

    No event

    "},"Constants.html#/c:@SDLVehicleDataEventStatusNo":{"name":"SDLVehicleDataEventStatusNo","abstract":"

    The event is a No status

    "},"Constants.html#/c:@SDLVehicleDataEventStatusYes":{"name":"SDLVehicleDataEventStatusYes","abstract":"

    The event is a Yes status

    "},"Constants.html#/c:@SDLVehicleDataEventStatusNotSupported":{"name":"SDLVehicleDataEventStatusNotSupported","abstract":"

    Vehicle data event is not supported

    "},"Constants.html#/c:@SDLVehicleDataEventStatusFault":{"name":"SDLVehicleDataEventStatusFault","abstract":"

    The event is a Fault status

    "},"Constants.html#/c:@SDLVehicleDataNotificationStatusNotSupported":{"name":"SDLVehicleDataNotificationStatusNotSupported","abstract":"

    The vehicle data notification status is not supported

    "},"Constants.html#/c:@SDLVehicleDataNotificationStatusNormal":{"name":"SDLVehicleDataNotificationStatusNormal","abstract":"

    The vehicle data notification status is normal

    "},"Constants.html#/c:@SDLVehicleDataNotificationStatusActive":{"name":"SDLVehicleDataNotificationStatusActive","abstract":"

    The vehicle data notification status is active

    "},"Constants.html#/c:@SDLVehicleDataNotificationStatusNotUsed":{"name":"SDLVehicleDataNotificationStatusNotUsed","abstract":"

    The vehicle data notification status is not used

    "},"Constants.html#/c:@SDLVehicleDataResultCodeSuccess":{"name":"SDLVehicleDataResultCodeSuccess","abstract":"

    Individual vehicle data item / DTC / DID request or subscription successful

    "},"Constants.html#/c:@SDLVehicleDataResultCodeTruncatedData":{"name":"SDLVehicleDataResultCodeTruncatedData","abstract":"

    DTC / DID request successful, however, not all active DTCs or full contents of DID location available

    "},"Constants.html#/c:@SDLVehicleDataResultCodeDisallowed":{"name":"SDLVehicleDataResultCodeDisallowed","abstract":"

    This vehicle data item is not allowed for this app by SDL

    "},"Constants.html#/c:@SDLVehicleDataResultCodeUserDisallowed":{"name":"SDLVehicleDataResultCodeUserDisallowed","abstract":"

    The user has not granted access to this type of vehicle data item at this time

    "},"Constants.html#/c:@SDLVehicleDataResultCodeInvalidId":{"name":"SDLVehicleDataResultCodeInvalidId","abstract":"

    The ECU ID referenced is not a valid ID on the bus / system

    "},"Constants.html#/c:@SDLVehicleDataResultCodeVehicleDataNotAvailable":{"name":"SDLVehicleDataResultCodeVehicleDataNotAvailable","abstract":"

    The requested vehicle data item / DTC / DID is not currently available or responding on the bus / system

    "},"Constants.html#/c:@SDLVehicleDataResultCodeDataAlreadySubscribed":{"name":"SDLVehicleDataResultCodeDataAlreadySubscribed","abstract":"

    The vehicle data item is already subscribed

    "},"Constants.html#/c:@SDLVehicleDataResultCodeDataNotSubscribed":{"name":"SDLVehicleDataResultCodeDataNotSubscribed","abstract":"

    The vehicle data item cannot be unsubscribed because it is not currently subscribed

    "},"Constants.html#/c:@SDLVehicleDataResultCodeIgnored":{"name":"SDLVehicleDataResultCodeIgnored","abstract":"

    The request for this item is ignored because it is already in progress

    "},"Constants.html#/c:@SDLVehicleDataStatusNoDataExists":{"name":"SDLVehicleDataStatusNoDataExists","abstract":"

    No data avaliable

    "},"Constants.html#/c:@SDLVehicleDataStatusOff":{"name":"SDLVehicleDataStatusOff","abstract":"

    The status is Off

    "},"Constants.html#/c:@SDLVehicleDataStatusOn":{"name":"SDLVehicleDataStatusOn","abstract":"

    The status is On

    "},"Constants.html#/c:@SDLVehicleDataTypeGPS":{"name":"SDLVehicleDataTypeGPS","abstract":"

    GPS vehicle data

    "},"Constants.html#/c:@SDLVehicleDataTypeSpeed":{"name":"SDLVehicleDataTypeSpeed","abstract":"

    Vehicle speed data

    "},"Constants.html#/c:@SDLVehicleDataTypeRPM":{"name":"SDLVehicleDataTypeRPM","abstract":"

    Vehicle RPM data

    "},"Constants.html#/c:@SDLVehicleDataTypeFuelLevel":{"name":"SDLVehicleDataTypeFuelLevel","abstract":"

    Vehicle fuel level data

    "},"Constants.html#/c:@SDLVehicleDataTypeFuelLevelState":{"name":"SDLVehicleDataTypeFuelLevelState","abstract":"

    Vehicle fuel level state data

    "},"Constants.html#/c:@SDLVehicleDataTypeFuelConsumption":{"name":"SDLVehicleDataTypeFuelConsumption","abstract":"

    Vehicle fuel consumption data

    "},"Constants.html#/c:@SDLVehicleDataTypeExternalTemperature":{"name":"SDLVehicleDataTypeExternalTemperature","abstract":"

    Vehicle external temperature data

    "},"Constants.html#/c:@SDLVehicleDataTypeVIN":{"name":"SDLVehicleDataTypeVIN","abstract":"

    Vehicle VIN data

    "},"Constants.html#/c:@SDLVehicleDataTypePRNDL":{"name":"SDLVehicleDataTypePRNDL","abstract":"

    Vehicle PRNDL data

    "},"Constants.html#/c:@SDLVehicleDataTypeTirePressure":{"name":"SDLVehicleDataTypeTirePressure","abstract":"

    Vehicle tire pressure data

    "},"Constants.html#/c:@SDLVehicleDataTypeOdometer":{"name":"SDLVehicleDataTypeOdometer","abstract":"

    Vehicle odometer data

    "},"Constants.html#/c:@SDLVehicleDataTypeBeltStatus":{"name":"SDLVehicleDataTypeBeltStatus","abstract":"

    Vehicle belt status data

    "},"Constants.html#/c:@SDLVehicleDataTypeBodyInfo":{"name":"SDLVehicleDataTypeBodyInfo","abstract":"

    Vehicle body info data

    "},"Constants.html#/c:@SDLVehicleDataTypeDeviceStatus":{"name":"SDLVehicleDataTypeDeviceStatus","abstract":"

    Vehicle device status data

    "},"Constants.html#/c:@SDLVehicleDataTypeECallInfo":{"name":"SDLVehicleDataTypeECallInfo","abstract":"

    Vehicle emergency call info data

    "},"Constants.html#/c:@SDLVehicleDataTypeFuelRange":{"name":"SDLVehicleDataTypeFuelRange","abstract":"

    Vehicle fuel range data

    "},"Constants.html#/c:@SDLVehicleDataTypeAirbagStatus":{"name":"SDLVehicleDataTypeAirbagStatus","abstract":"

    Vehicle airbag status data

    "},"Constants.html#/c:@SDLVehicleDataTypeEmergencyEvent":{"name":"SDLVehicleDataTypeEmergencyEvent","abstract":"

    Vehicle emergency event info

    "},"Constants.html#/c:@SDLVehicleDataTypeClusterModeStatus":{"name":"SDLVehicleDataTypeClusterModeStatus","abstract":"

    Vehicle cluster mode status data

    "},"Constants.html#/c:@SDLVehicleDataTypeMyKey":{"name":"SDLVehicleDataTypeMyKey","abstract":"

    Vehicle MyKey data

    "},"Constants.html#/c:@SDLVehicleDataTypeBraking":{"name":"SDLVehicleDataTypeBraking","abstract":"

    Vehicle braking data

    "},"Constants.html#/c:@SDLVehicleDataTypeWiperStatus":{"name":"SDLVehicleDataTypeWiperStatus","abstract":"

    Vehicle wiper status data

    "},"Constants.html#/c:@SDLVehicleDataTypeHeadlampStatus":{"name":"SDLVehicleDataTypeHeadlampStatus","abstract":"

    Vehicle headlamp status

    "},"Constants.html#/c:@SDLVehicleDataTypeBatteryVoltage":{"name":"SDLVehicleDataTypeBatteryVoltage","abstract":"

    Vehicle battery voltage data

    "},"Constants.html#/c:@SDLVehicleDataTypeEngineOilLife":{"name":"SDLVehicleDataTypeEngineOilLife","abstract":"

    Vehicle engine oil life data

    "},"Constants.html#/c:@SDLVehicleDataTypeEngineTorque":{"name":"SDLVehicleDataTypeEngineTorque","abstract":"

    Vehicle engine torque data

    "},"Constants.html#/c:@SDLVehicleDataTypeAccelerationPedal":{"name":"SDLVehicleDataTypeAccelerationPedal","abstract":"

    Vehicle accleration pedal data

    "},"Constants.html#/c:@SDLVehicleDataTypeSteeringWheel":{"name":"SDLVehicleDataTypeSteeringWheel","abstract":"

    Vehicle steering wheel data

    "},"Constants.html#/c:@SDLVehicleDataTypeElectronicParkBrakeStatus":{"name":"SDLVehicleDataTypeElectronicParkBrakeStatus","abstract":"

    Vehicle electronic parking brake status data

    "},"Constants.html#/c:@SDLVehicleDataTypeTurnSignal":{"name":"SDLVehicleDataTypeTurnSignal","abstract":"

    Vehicle turn signal data

    "},"Constants.html#/c:@SDLVehicleDataTypeCloudAppVehicleID":{"name":"SDLVehicleDataTypeCloudAppVehicleID","abstract":"

    The cloud application vehicle id. Used by cloud apps to identify a head unit

    "},"Constants.html#/c:@SDLVentilationModeUpper":{"name":"SDLVentilationModeUpper","abstract":"

    The upper ventilation mode

    "},"Constants.html#/c:@SDLVentilationModeLower":{"name":"SDLVentilationModeLower","abstract":"

    The lower ventilation mode

    "},"Constants.html#/c:@SDLVentilationModeBoth":{"name":"SDLVentilationModeBoth","abstract":"

    The both ventilation mode

    "},"Constants.html#/c:@SDLVentilationModeNone":{"name":"SDLVentilationModeNone","abstract":"

    No ventilation mode

    "},"Constants.html#/c:@SDLVideoStreamingCodecH264":{"name":"SDLVideoStreamingCodecH264","abstract":"

    H264

    "},"Constants.html#/c:@SDLVideoStreamingCodecH265":{"name":"SDLVideoStreamingCodecH265","abstract":"

    H265

    "},"Constants.html#/c:@SDLVideoStreamingCodecTheora":{"name":"SDLVideoStreamingCodecTheora","abstract":"

    Theora

    "},"Constants.html#/c:@SDLVideoStreamingCodecVP8":{"name":"SDLVideoStreamingCodecVP8","abstract":"

    VP8

    "},"Constants.html#/c:@SDLVideoStreamingCodecVP9":{"name":"SDLVideoStreamingCodecVP9","abstract":"

    VP9

    "},"Constants.html#/c:@SDLVideoStreamingProtocolRAW":{"name":"SDLVideoStreamingProtocolRAW","abstract":"

    RAW

    "},"Constants.html#/c:@SDLVideoStreamingProtocolRTP":{"name":"SDLVideoStreamingProtocolRTP","abstract":"

    RTP

    "},"Constants.html#/c:@SDLVideoStreamingProtocolRTSP":{"name":"SDLVideoStreamingProtocolRTSP","abstract":"

    RTSP

    "},"Constants.html#/c:@SDLVideoStreamingProtocolRTMP":{"name":"SDLVideoStreamingProtocolRTMP","abstract":"

    RTMP

    "},"Constants.html#/c:@SDLVideoStreamingProtocolWebM":{"name":"SDLVideoStreamingProtocolWebM","abstract":"

    WebM

    "},"Constants.html#/c:@SDLVideoStreamingStateStreamable":{"name":"SDLVideoStreamingStateStreamable","abstract":"

    STREAMABLE, the current app is allowed to stream video

    "},"Constants.html#/c:@SDLVideoStreamingStateNotStreamable":{"name":"SDLVideoStreamingStateNotStreamable","abstract":"

    NOT_STREAMABLE, the current app is not allowed to stream video

    "},"Constants.html#/c:@SDLVRCapabilitiesText":{"name":"SDLVRCapabilitiesText","abstract":"

    The SDL platform is capable of recognizing spoken text in the current language.

    "},"Constants.html#/c:@SDLWarningLightStatusOff":{"name":"SDLWarningLightStatusOff","abstract":"

    The warning light is off

    "},"Constants.html#/c:@SDLWarningLightStatusOn":{"name":"SDLWarningLightStatusOn","abstract":"

    The warning light is off

    "},"Constants.html#/c:@SDLWarningLightStatusFlash":{"name":"SDLWarningLightStatusFlash","abstract":"

    The warning light is flashing

    "},"Constants.html#/c:@SDLWarningLightStatusNotUsed":{"name":"SDLWarningLightStatusNotUsed","abstract":"

    The warning light is unused

    "},"Constants.html#/c:@SDLWayPointTypeAll":{"name":"SDLWayPointTypeAll","abstract":"

    All other waypoint types

    "},"Constants.html#/c:@SDLWayPointTypeDestination":{"name":"SDLWayPointTypeDestination","abstract":"

    The destination waypoint

    "},"Constants.html#/c:@SDLWiperStatusOff":{"name":"SDLWiperStatusOff","abstract":"

    Wiper is off

    "},"Constants.html#/c:@SDLWiperStatusAutomaticOff":{"name":"SDLWiperStatusAutomaticOff","abstract":"

    Wiper is off automatically

    "},"Constants.html#/c:@SDLWiperStatusOffMoving":{"name":"SDLWiperStatusOffMoving","abstract":"

    Wiper is moving but off

    "},"Constants.html#/c:@SDLWiperStatusManualIntervalOff":{"name":"SDLWiperStatusManualIntervalOff","abstract":"

    Wiper is off due to a manual interval

    "},"Constants.html#/c:@SDLWiperStatusManualIntervalOn":{"name":"SDLWiperStatusManualIntervalOn","abstract":"

    Wiper is on due to a manual interval

    "},"Constants.html#/c:@SDLWiperStatusManualLow":{"name":"SDLWiperStatusManualLow","abstract":"

    Wiper is on low manually

    "},"Constants.html#/c:@SDLWiperStatusManualHigh":{"name":"SDLWiperStatusManualHigh","abstract":"

    Wiper is on high manually

    "},"Constants.html#/c:@SDLWiperStatusManualFlick":{"name":"SDLWiperStatusManualFlick","abstract":"

    Wiper is on for a single wipe manually

    "},"Constants.html#/c:@SDLWiperStatusWash":{"name":"SDLWiperStatusWash","abstract":"

    Wiper is in wash mode

    "},"Constants.html#/c:@SDLWiperStatusAutomaticLow":{"name":"SDLWiperStatusAutomaticLow","abstract":"

    Wiper is on low automatically

    "},"Constants.html#/c:@SDLWiperStatusAutomaticHigh":{"name":"SDLWiperStatusAutomaticHigh","abstract":"

    Wiper is on high automatically

    "},"Constants.html#/c:@SDLWiperStatusCourtesyWipe":{"name":"SDLWiperStatusCourtesyWipe","abstract":"

    Wiper is performing a courtesy wipe

    "},"Constants.html#/c:@SDLWiperStatusAutomaticAdjust":{"name":"SDLWiperStatusAutomaticAdjust","abstract":"

    Wiper is on automatic adjust

    "},"Constants.html#/c:@SDLWiperStatusStalled":{"name":"SDLWiperStatusStalled","abstract":"

    Wiper is stalled

    "},"Constants.html#/c:@SDLWiperStatusNoDataExists":{"name":"SDLWiperStatusNoDataExists","abstract":"

    Wiper data is not available

    "},"Constants.html#/c:@SmartDeviceLinkVersionNumber":{"name":"SmartDeviceLinkVersionNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SmartDeviceLinkVersionString":{"name":"SmartDeviceLinkVersionString","abstract":"

    Undocumented

    "},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(im)initWithCurrentForecastSupported:maxMultidayForecastAmount:maxHourlyForecastAmount:maxMinutelyForecastAmount:weatherForLocationSupported:":{"name":"-initWithCurrentForecastSupported:maxMultidayForecastAmount:maxHourlyForecastAmount:maxMinutelyForecastAmount:weatherForLocationSupported:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)currentForecastSupported":{"name":"currentForecastSupported","abstract":"

    Whether or not the current forcast is supported.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)maxMultidayForecastAmount":{"name":"maxMultidayForecastAmount","abstract":"

    The maximum number of day-by-day forecasts.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)maxHourlyForecastAmount":{"name":"maxHourlyForecastAmount","abstract":"

    The maximum number of hour-by-hour forecasts.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)maxMinutelyForecastAmount":{"name":"maxMinutelyForecastAmount","abstract":"

    The maximum number of minute-by-minute forecasts.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)weatherForLocationSupported":{"name":"weatherForLocationSupported","abstract":"

    Whether or not the weather for location is supported.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(im)initWithLocation:":{"name":"-initWithLocation:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(im)initWithLocation:currentForecast:minuteForecast:hourlyForecast:multidayForecast:alerts:":{"name":"-initWithLocation:currentForecast:minuteForecast:hourlyForecast:multidayForecast:alerts:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)location":{"name":"location","abstract":"

    The location.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)currentForecast":{"name":"currentForecast","abstract":"

    The current forecast.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)minuteForecast":{"name":"minuteForecast","abstract":"

    A minute-by-minute array of forecasts.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)hourlyForecast":{"name":"hourlyForecast","abstract":"

    An hour-by-hour array of forecasts.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)multidayForecast":{"name":"multidayForecast","abstract":"

    A day-by-day array of forecasts.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)alerts":{"name":"alerts","abstract":"

    An array of weather alerts. This array should be ordered with the first object being the current day.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(im)initWithCurrentTemperature:temperatureHigh:temperatureLow:apparentTemperature:apparentTemperatureHigh:apparentTemperatureLow:weatherSummary:time:humidity:cloudCover:moonPhase:windBearing:windGust:windSpeed:nearestStormBearing:nearestStormDistance:precipAccumulation:precipIntensity:precipProbability:precipType:visibility:weatherIcon:":{"name":"-initWithCurrentTemperature:temperatureHigh:temperatureLow:apparentTemperature:apparentTemperatureHigh:apparentTemperatureLow:weatherSummary:time:humidity:cloudCover:moonPhase:windBearing:windGust:windSpeed:nearestStormBearing:nearestStormDistance:precipAccumulation:precipIntensity:precipProbability:precipType:visibility:weatherIcon:","abstract":"

    Convenience init for all parameters

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)currentTemperature":{"name":"currentTemperature","abstract":"

    The current temperature.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)temperatureHigh":{"name":"temperatureHigh","abstract":"

    The predicted high temperature for the day.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)temperatureLow":{"name":"temperatureLow","abstract":"

    The predicted low temperature for the day.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)apparentTemperature":{"name":"apparentTemperature","abstract":"

    The apparent temperature.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)apparentTemperatureHigh":{"name":"apparentTemperatureHigh","abstract":"

    The predicted high apparent temperature for the day.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)apparentTemperatureLow":{"name":"apparentTemperatureLow","abstract":"

    The predicted low apparent temperature for the day.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)weatherSummary":{"name":"weatherSummary","abstract":"

    A summary of the weather.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)time":{"name":"time","abstract":"

    The time this data refers to.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)humidity":{"name":"humidity","abstract":"

    From 0 to 1, percentage humidity.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)cloudCover":{"name":"cloudCover","abstract":"

    From 0 to 1, percentage cloud cover.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)moonPhase":{"name":"moonPhase","abstract":"

    From 0 to 1, percentage of the moon seen, e.g. 0 = no moon, 0.25 = quarter moon

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)windBearing":{"name":"windBearing","abstract":"

    In degrees, true north at 0 degrees.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)windGust":{"name":"windGust","abstract":"

    In km/hr

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)windSpeed":{"name":"windSpeed","abstract":"

    In km/hr

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)nearestStormBearing":{"name":"nearestStormBearing","abstract":"

    In degrees, true north at 0 degrees.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)nearestStormDistance":{"name":"nearestStormDistance","abstract":"

    In km

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)precipAccumulation":{"name":"precipAccumulation","abstract":"

    In cm

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)precipIntensity":{"name":"precipIntensity","abstract":"

    In cm of water per hour.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)precipProbability":{"name":"precipProbability","abstract":"

    From 0 to 1, percentage chance.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)precipType":{"name":"precipType","abstract":"

    A description of the precipitation type (e.g. rain, snow, sleet, hail)

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)visibility":{"name":"visibility","abstract":"

    In km

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)weatherIcon":{"name":"weatherIcon","abstract":"

    The weather icon image.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(im)initWithTitle:summary:expires:regions:severity:timeIssued:":{"name":"-initWithTitle:summary:expires:regions:severity:timeIssued:","abstract":"

    Convenience init for all parameters

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)title":{"name":"title","abstract":"

    The title of the alert.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)summary":{"name":"summary","abstract":"

    A summary for the alert.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)expires":{"name":"expires","abstract":"

    The date the alert expires.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)regions":{"name":"regions","abstract":"

    Regions affected.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)severity":{"name":"severity","abstract":"

    Severity of the weather alert.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)timeIssued":{"name":"timeIssued","abstract":"

    The date the alert was issued.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(im)initWithText:image:":{"name":"-initWithText:image:","abstract":"

    Undocumented

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(im)initWithText:image:position:":{"name":"-initWithText:image:position:","abstract":"

    Undocumented

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(py)text":{"name":"text","abstract":"

    Text to display for VR Help item

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(py)image":{"name":"image","abstract":"

    Image for VR Help item

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(py)position":{"name":"position","abstract":"

    Position to display item in VR Help list

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVoiceCommand.html#/c:objc(cs)SDLVoiceCommand(py)voiceCommands":{"name":"voiceCommands","abstract":"

    The strings the user can say to activate this voice command

    ","parent_name":"SDLVoiceCommand"},"Classes/SDLVoiceCommand.html#/c:objc(cs)SDLVoiceCommand(py)handler":{"name":"handler","abstract":"

    The handler that will be called when the command is activated

    ","parent_name":"SDLVoiceCommand"},"Classes/SDLVoiceCommand.html#/c:objc(cs)SDLVoiceCommand(im)initWithVoiceCommands:handler:":{"name":"-initWithVoiceCommands:handler:","abstract":"

    Undocumented

    ","parent_name":"SDLVoiceCommand"},"Classes/SDLVideoStreamingFormat.html#/c:objc(cs)SDLVideoStreamingFormat(py)protocol":{"name":"protocol","abstract":"

    Protocol type, see VideoStreamingProtocol

    ","parent_name":"SDLVideoStreamingFormat"},"Classes/SDLVideoStreamingFormat.html#/c:objc(cs)SDLVideoStreamingFormat(py)codec":{"name":"codec","abstract":"

    Codec type, see VideoStreamingCodec

    ","parent_name":"SDLVideoStreamingFormat"},"Classes/SDLVideoStreamingFormat.html#/c:objc(cs)SDLVideoStreamingFormat(im)initWithCodec:protocol:":{"name":"-initWithCodec:protocol:","abstract":"

    Undocumented

    ","parent_name":"SDLVideoStreamingFormat"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(im)initWithPreferredResolution:maxBitrate:supportedFormats:hapticDataSupported:":{"name":"-initWithPreferredResolution:maxBitrate:supportedFormats:hapticDataSupported:","abstract":"

    Undocumented

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(py)preferredResolution":{"name":"preferredResolution","abstract":"

    The preferred resolution of a video stream for decoding and rendering on HMI

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(py)maxBitrate":{"name":"maxBitrate","abstract":"

    The maximum bitrate of video stream that is supported, in kbps, optional

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(py)supportedFormats":{"name":"supportedFormats","abstract":"

    Detailed information on each format supported by this system, in its preferred order

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(py)hapticSpatialDataSupported":{"name":"hapticSpatialDataSupported","abstract":"

    True if the system can utilize the haptic spatial data from the source being streamed.

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(py)major":{"name":"major","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(py)minor":{"name":"minor","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(py)patch":{"name":"patch","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(py)stringVersion":{"name":"stringVersion","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)initWithMajor:minor:patch:":{"name":"-initWithMajor:minor:patch:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(cm)versionWithMajor:minor:patch:":{"name":"+versionWithMajor:minor:patch:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)initWithString:":{"name":"-initWithString:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(cm)versionWithString:":{"name":"+versionWithString:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)initWithSyncMsgVersion:":{"name":"-initWithSyncMsgVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(cm)versionWithSyncMsgVersion:":{"name":"+versionWithSyncMsgVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)compare:":{"name":"-compare:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isLessThanVersion:":{"name":"-isLessThanVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isEqualToVersion:":{"name":"-isEqualToVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isGreaterThanVersion:":{"name":"-isGreaterThanVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isGreaterThanOrEqualToVersion:":{"name":"-isGreaterThanOrEqualToVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isLessThanOrEqualToVersion:":{"name":"-isLessThanOrEqualToVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVehicleType.html#/c:objc(cs)SDLVehicleType(py)make":{"name":"make","abstract":"

    The make of the vehicle

    ","parent_name":"SDLVehicleType"},"Classes/SDLVehicleType.html#/c:objc(cs)SDLVehicleType(py)model":{"name":"model","abstract":"

    The model of the vehicle

    ","parent_name":"SDLVehicleType"},"Classes/SDLVehicleType.html#/c:objc(cs)SDLVehicleType(py)modelYear":{"name":"modelYear","abstract":"

    The model year of the vehicle

    ","parent_name":"SDLVehicleType"},"Classes/SDLVehicleType.html#/c:objc(cs)SDLVehicleType(py)trim":{"name":"trim","abstract":"

    The trim of the vehicle

    ","parent_name":"SDLVehicleType"},"Classes/SDLVehicleDataResult.html#/c:objc(cs)SDLVehicleDataResult(py)dataType":{"name":"dataType","abstract":"

    Defined published data element type

    ","parent_name":"SDLVehicleDataResult"},"Classes/SDLVehicleDataResult.html#/c:objc(cs)SDLVehicleDataResult(py)resultCode":{"name":"resultCode","abstract":"

    Published data result code

    ","parent_name":"SDLVehicleDataResult"},"Classes/SDLUpdateTurnList.html#/c:objc(cs)SDLUpdateTurnList(im)initWithTurnList:softButtons:":{"name":"-initWithTurnList:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLUpdateTurnList"},"Classes/SDLUpdateTurnList.html#/c:objc(cs)SDLUpdateTurnList(py)turnList":{"name":"turnList","abstract":"

    Optional, SDLTurn, 1 - 100 entries

    ","parent_name":"SDLUpdateTurnList"},"Classes/SDLUpdateTurnList.html#/c:objc(cs)SDLUpdateTurnList(py)softButtons":{"name":"softButtons","abstract":"

    Required, SDLSoftButton, 0 - 1 Entries

    ","parent_name":"SDLUpdateTurnList"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)gps":{"name":"gps","abstract":"

    The result of requesting to unsubscribe to the GPSData.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)speed":{"name":"speed","abstract":"

    The result of requesting to unsubscribe to the vehicle speed in kilometers per hour.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)rpm":{"name":"rpm","abstract":"

    The result of requesting to unsubscribe to the number of revolutions per minute of the engine.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)fuelLevel":{"name":"fuelLevel","abstract":"

    The result of requesting to unsubscribe to the fuel level in the tank (percentage)

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    The result of requesting to unsubscribe to the fuel level state.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)fuelRange":{"name":"fuelRange","abstract":"

    The result of requesting to unsubscribe to the fuel range.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    The result of requesting to unsubscribe to the instantaneous fuel consumption in microlitres.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)externalTemperature":{"name":"externalTemperature","abstract":"

    The result of requesting to unsubscribe to the external temperature in degrees celsius.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)prndl":{"name":"prndl","abstract":"

    The result of requesting to unsubscribe to the PRNDL status.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)tirePressure":{"name":"tirePressure","abstract":"

    The result of requesting to unsubscribe to the tireStatus.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)odometer":{"name":"odometer","abstract":"

    The result of requesting to unsubscribe to the odometer in km.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)beltStatus":{"name":"beltStatus","abstract":"

    The result of requesting to unsubscribe to the status of the seat belts.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)bodyInformation":{"name":"bodyInformation","abstract":"

    The result of requesting to unsubscribe to the body information including power modes.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)deviceStatus":{"name":"deviceStatus","abstract":"

    The result of requesting to unsubscribe to the device status including signal and battery strength.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)driverBraking":{"name":"driverBraking","abstract":"

    The result of requesting to unsubscribe to the status of the brake pedal.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)wiperStatus":{"name":"wiperStatus","abstract":"

    The result of requesting to unsubscribe to the status of the wipers.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)headLampStatus":{"name":"headLampStatus","abstract":"

    The result of requesting to unsubscribe to the status of the head lamps.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)engineOilLife":{"name":"engineOilLife","abstract":"

    The result of requesting to unsubscribe to the estimated percentage of remaining oil life of the engine.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)engineTorque":{"name":"engineTorque","abstract":"

    The result of requesting to unsubscribe to the torque value for engine (in Nm) on non-diesel variants.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    The result of requesting to unsubscribe to the accelerator pedal position (percentage depressed)

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    The result of requesting to unsubscribe to the current angle of the steering wheel (in deg)

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)eCallInfo":{"name":"eCallInfo","abstract":"

    The result of requesting to unsubscribe to the emergency call info

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)airbagStatus":{"name":"airbagStatus","abstract":"

    The result of requesting to unsubscribe to the airbag status

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    The result of requesting to unsubscribe to the emergency event

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)clusterModes":{"name":"clusterModes","abstract":"

    The result of requesting to unsubscribe to the cluster modes

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)myKey":{"name":"myKey","abstract":"

    The result of requesting to unsubscribe to the myKey status

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    The result of requesting to unsubscribe to the electronic parking brake status

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)turnSignal":{"name":"turnSignal","abstract":"

    The result of requesting to unsubscribe to the turn signal

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    The result of requesting to unsubscribe to the cloud app vehicle id

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:","abstract":"

    Convenience init for unsubscribing to all possible vehicle data items.

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:","abstract":"

    Convenience init for unsubscribing to all possible vehicle data items.

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:","abstract":"

    Convenience init for unsubscribing to all possible vehicle data items.

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)gps":{"name":"gps","abstract":"

    If true, unsubscribes from GPS

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)speed":{"name":"speed","abstract":"

    If true, unsubscribes from Speed

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)rpm":{"name":"rpm","abstract":"

    If true, unsubscribes from RPM

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)fuelLevel":{"name":"fuelLevel","abstract":"

    If true, unsubscribes from Fuel Level

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    If true, unsubscribes from Fuel Level State

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)fuelRange":{"name":"fuelRange","abstract":"

    If true, unsubscribes from Fuel Range

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    If true, unsubscribes from Instant Fuel Consumption

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)externalTemperature":{"name":"externalTemperature","abstract":"

    If true, unsubscribes from External Temperature

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)prndl":{"name":"prndl","abstract":"

    If true, unsubscribes from PRNDL

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)tirePressure":{"name":"tirePressure","abstract":"

    If true, unsubscribes from Tire Pressure

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)odometer":{"name":"odometer","abstract":"

    If true, unsubscribes from Odometer

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)beltStatus":{"name":"beltStatus","abstract":"

    If true, unsubscribes from Belt Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)bodyInformation":{"name":"bodyInformation","abstract":"

    If true, unsubscribes from Body Information

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)deviceStatus":{"name":"deviceStatus","abstract":"

    If true, unsubscribes from Device Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)driverBraking":{"name":"driverBraking","abstract":"

    If true, unsubscribes from Driver Braking

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)wiperStatus":{"name":"wiperStatus","abstract":"

    If true, unsubscribes from Wiper Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)headLampStatus":{"name":"headLampStatus","abstract":"

    If true, unsubscribes from Head Lamp Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)engineOilLife":{"name":"engineOilLife","abstract":"

    If true, unsubscribes from Engine Oil Life

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)engineTorque":{"name":"engineTorque","abstract":"

    If true, unsubscribes from Engine Torque

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    If true, unsubscribes from Acc Pedal Position

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    If true, unsubscribes from Steering Wheel Angle data

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)eCallInfo":{"name":"eCallInfo","abstract":"

    If true, unsubscribes from eCallInfo

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)airbagStatus":{"name":"airbagStatus","abstract":"

    If true, unsubscribes from Airbag Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    If true, unsubscribes from Emergency Event

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    If true, unsubscribes from Cluster Mode Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)myKey":{"name":"myKey","abstract":"

    If true, unsubscribes from My Key

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    A boolean value. If true, unsubscribes to the Electronic Parking Brake Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)turnSignal":{"name":"turnSignal","abstract":"

    A boolean value. If true, unsubscribes to the Turn Signal

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    A boolean value. If true, unsubscribes to the Cloud App Vehicle ID

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeButton.html#/c:objc(cs)SDLUnsubscribeButton(im)initWithButtonName:":{"name":"-initWithButtonName:","abstract":"

    Undocumented

    ","parent_name":"SDLUnsubscribeButton"},"Classes/SDLUnsubscribeButton.html#/c:objc(cs)SDLUnsubscribeButton(py)buttonName":{"name":"buttonName","abstract":"

    A name of the button to unsubscribe from","parent_name":"SDLUnsubscribeButton"},"Classes/SDLTurn.html#/c:objc(cs)SDLTurn(im)initWithNavigationText:turnIcon:":{"name":"-initWithNavigationText:turnIcon:","abstract":"

    Undocumented

    ","parent_name":"SDLTurn"},"Classes/SDLTurn.html#/c:objc(cs)SDLTurn(py)navigationText":{"name":"navigationText","abstract":"

    Individual turn text. Must provide at least text or icon for a given turn

    ","parent_name":"SDLTurn"},"Classes/SDLTurn.html#/c:objc(cs)SDLTurn(py)turnIcon":{"name":"turnIcon","abstract":"

    Individual turn icon. Must provide at least text or icon for a given turn

    ","parent_name":"SDLTurn"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)touchEventDelegate":{"name":"touchEventDelegate","abstract":"

    Notified of processed touches such as pinches, pans, and taps

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)touchEventHandler":{"name":"touchEventHandler","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)tapDistanceThreshold":{"name":"tapDistanceThreshold","abstract":"

    Distance between two taps on the screen, in the head unit’s coordinate system, used for registering double-tap callbacks.

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)panDistanceThreshold":{"name":"panDistanceThreshold","abstract":"

    Minimum distance for a pan gesture in the head unit’s coordinate system, used for registering pan callbacks.

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)tapTimeThreshold":{"name":"tapTimeThreshold","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)movementTimeThreshold":{"name":"movementTimeThreshold","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)enableSyncedPanning":{"name":"enableSyncedPanning","abstract":"

    If set to NO, the display link syncing will be ignored and movementTimeThreshold will be used. Defaults to YES.

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)touchEnabled":{"name":"touchEnabled","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(im)cancelPendingTouches":{"name":"-cancelPendingTouches","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(im)initWithHitTester:":{"name":"-initWithHitTester:","abstract":"

    Initialize a touch manager with a hit tester if available

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(im)syncFrame":{"name":"-syncFrame","abstract":"

    Called by SDLStreamingMediaManager in sync with the streaming framerate. This helps to moderate panning gestures by allowing the UI to be modified in time with the framerate.

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchEventCapabilities.html#/c:objc(cs)SDLTouchEventCapabilities(py)pressAvailable":{"name":"pressAvailable","abstract":"

    Whether or not long presses are available

    ","parent_name":"SDLTouchEventCapabilities"},"Classes/SDLTouchEventCapabilities.html#/c:objc(cs)SDLTouchEventCapabilities(py)multiTouchAvailable":{"name":"multiTouchAvailable","abstract":"

    Whether or not multi-touch (e.g. a pinch gesture) is available

    ","parent_name":"SDLTouchEventCapabilities"},"Classes/SDLTouchEventCapabilities.html#/c:objc(cs)SDLTouchEventCapabilities(py)doublePressAvailable":{"name":"doublePressAvailable","abstract":"

    Whether or not a double tap is available

    ","parent_name":"SDLTouchEventCapabilities"},"Classes/SDLTouchEvent.html#/c:objc(cs)SDLTouchEvent(py)touchEventId":{"name":"touchEventId","abstract":"

    A touch’s unique identifier. The application can track the current touch events by id.

    ","parent_name":"SDLTouchEvent"},"Classes/SDLTouchEvent.html#/c:objc(cs)SDLTouchEvent(py)timeStamp":{"name":"timeStamp","abstract":"

    The time that the touch was recorded. This number can the time since the beginning of the session or something else as long as the units are in milliseconds.

    ","parent_name":"SDLTouchEvent"},"Classes/SDLTouchEvent.html#/c:objc(cs)SDLTouchEvent(py)coord":{"name":"coord","abstract":"

    The touch’s coordinate

    ","parent_name":"SDLTouchEvent"},"Classes/SDLTouchCoord.html#/c:objc(cs)SDLTouchCoord(py)x":{"name":"x","abstract":"

    The x value of the touch coordinate

    ","parent_name":"SDLTouchCoord"},"Classes/SDLTouchCoord.html#/c:objc(cs)SDLTouchCoord(py)y":{"name":"y","abstract":"

    The y value of the touch coordinate

    ","parent_name":"SDLTouchCoord"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(im)initWithTouchEvent:":{"name":"-initWithTouchEvent:","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)identifier":{"name":"identifier","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)location":{"name":"location","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)timeStamp":{"name":"timeStamp","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)isFirstFinger":{"name":"isFirstFinger","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)isSecondFinger":{"name":"isSecondFinger","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)pressureTelltale":{"name":"pressureTelltale","abstract":"

    Status of the Tire Pressure Telltale. See WarningLightStatus.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)leftFront":{"name":"leftFront","abstract":"

    The status of the left front tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)rightFront":{"name":"rightFront","abstract":"

    The status of the right front tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)leftRear":{"name":"leftRear","abstract":"

    The status of the left rear tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)rightRear":{"name":"rightRear","abstract":"

    The status of the right rear tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)innerLeftRear":{"name":"innerLeftRear","abstract":"

    The status of the inner left rear tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)innerRightRear":{"name":"innerRightRear","abstract":"

    The status of the innter right rear tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTextField.html#/c:objc(cs)SDLTextField(py)name":{"name":"name","abstract":"

    The enumeration identifying the field.

    ","parent_name":"SDLTextField"},"Classes/SDLTextField.html#/c:objc(cs)SDLTextField(py)characterSet":{"name":"characterSet","abstract":"

    The character set that is supported in this field.

    ","parent_name":"SDLTextField"},"Classes/SDLTextField.html#/c:objc(cs)SDLTextField(py)width":{"name":"width","abstract":"

    The number of characters in one row of this field.

    ","parent_name":"SDLTextField"},"Classes/SDLTextField.html#/c:objc(cs)SDLTextField(py)rows":{"name":"rows","abstract":"

    The number of rows for this text field.

    ","parent_name":"SDLTextField"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(im)initWithPrimaryRGBColor:secondaryRGBColor:backgroundRGBColor:":{"name":"-initWithPrimaryRGBColor:secondaryRGBColor:backgroundRGBColor:","abstract":"

    Undocumented

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(im)initWithPrimaryColor:secondaryColor:backgroundColor:":{"name":"-initWithPrimaryColor:secondaryColor:backgroundColor:","abstract":"

    Undocumented

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(py)primaryColor":{"name":"primaryColor","abstract":"

    The primary color. This must always be your primary brand color. If the OEM only uses one color, this will be the color. It is recommended to the OEMs that the primaryColor should change the mediaClockTimer bar and the highlight color of soft buttons.

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(py)secondaryColor":{"name":"secondaryColor","abstract":"

    The secondary color. This may be an accent or complimentary color to your primary brand color. If the OEM uses this color, they must also use the primary color. It is recommended to the OEMs that the secondaryColor should change the background color of buttons, such as soft buttons.

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(py)backgroundColor":{"name":"backgroundColor","abstract":"

    The background color to be used on the template. If the OEM does not support this parameter, assume on dayColorScheme that this will be a light color, and on nightColorScheme a dark color. You should do the same for your custom schemes.

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(im)initWithFahrenheitValue:":{"name":"-initWithFahrenheitValue:","abstract":"

    Convenience init for a fahrenheit temperature value.

    ","parent_name":"SDLTemperature"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(im)initWithCelsiusValue:":{"name":"-initWithCelsiusValue:","abstract":"

    Convenience init for a celsius temperature value.

    ","parent_name":"SDLTemperature"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(im)initWithUnit:value:":{"name":"-initWithUnit:value:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLTemperature"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(py)unit":{"name":"unit","abstract":"

    Temperature unit

    ","parent_name":"SDLTemperature"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(py)value":{"name":"value","abstract":"

    Temperature value in specified unit. Range depends on OEM and is not checked by SDL.

    ","parent_name":"SDLTemperature"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(im)initWithText:type:":{"name":"-initWithText:type:","abstract":"

    Initialize with text and a type

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)textChunksFromString:":{"name":"+textChunksFromString:","abstract":"

    Create TTS using text

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)sapiChunksFromString:":{"name":"+sapiChunksFromString:","abstract":"

    Create TTS using SAPI

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)lhPlusChunksFromString:":{"name":"+lhPlusChunksFromString:","abstract":"

    Create TTS using LH Plus

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)prerecordedChunksFromString:":{"name":"+prerecordedChunksFromString:","abstract":"

    Create TTS using prerecorded chunks

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)silenceChunks":{"name":"+silenceChunks","abstract":"

    Create TTS using silence

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)fileChunksWithName:":{"name":"+fileChunksWithName:","abstract":"

    Create TTS to play an audio file previously uploaded to the system.

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(py)text":{"name":"text","abstract":"

    Text to be spoken, a phoneme specification, or the name of a pre-recorded / pre-uploaded sound. The contents of this field are indicated by the type field.

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(py)type":{"name":"type","abstract":"

    The type of information in the text field (e.g. phrase to be spoken, phoneme specification, name of pre-recorded sound).

    ","parent_name":"SDLTTSChunk"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(im)initWithType:fileName:":{"name":"-initWithType:fileName:","abstract":"

    Create a generic system request with a file name

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(im)initWithProprietaryType:fileName:":{"name":"-initWithProprietaryType:fileName:","abstract":"

    Create an OEM_PROPRIETARY system request with a subtype and file name

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(py)requestType":{"name":"requestType","abstract":"

    The type of system request. Note that Proprietary requests should forward the binary data to the known proprietary module on the system.

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(py)requestSubType":{"name":"requestSubType","abstract":"

    A request subType used when the requestType is OEM_SPECIFIC.

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(py)fileName":{"name":"fileName","abstract":"

    Filename of HTTP data to store in predefined system staging area.

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)displayCapabilities":{"name":"displayCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)hmiCapabilities":{"name":"hmiCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)softButtonCapabilities":{"name":"softButtonCapabilities","abstract":"

    If returned, the platform supports on-screen SoftButtons

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)buttonCapabilities":{"name":"buttonCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)presetBankCapabilities":{"name":"presetBankCapabilities","abstract":"

    If returned, the platform supports custom on-screen Presets

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)hmiZoneCapabilities":{"name":"hmiZoneCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)speechCapabilities":{"name":"speechCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)prerecordedSpeechCapabilities":{"name":"prerecordedSpeechCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)vrCapability":{"name":"vrCapability","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)audioPassThruCapabilities":{"name":"audioPassThruCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)pcmStreamCapability":{"name":"pcmStreamCapability","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)appServicesCapabilities":{"name":"appServicesCapabilities","abstract":"

    If returned, the platform supports app services

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)navigationCapability":{"name":"navigationCapability","abstract":"

    If returned, the platform supports navigation

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)phoneCapability":{"name":"phoneCapability","abstract":"

    If returned, the platform supports making phone calls

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)videoStreamingCapability":{"name":"videoStreamingCapability","abstract":"

    If returned, the platform supports video streaming

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)remoteControlCapability":{"name":"remoteControlCapability","abstract":"

    If returned, the platform supports remote control capabilities

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)init":{"name":"-init","abstract":"

    Init is unavailable. Dependencies must be injected using initWithConnectionManager:

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)initWithConnectionManager:":{"name":"-initWithConnectionManager:","abstract":"

    Creates a new system capability manager with a specified connection manager

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)stop":{"name":"-stop","abstract":"

    Stops the manager. This method is used internally.

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)updateCapabilityType:completionHandler:":{"name":"-updateCapabilityType:completionHandler:","abstract":"

    Retrieves a capability type from the remote system. This function must be called in order to retrieve the values for navigationCapability, phoneCapability, videoStreamingCapability, remoteControlCapability, and appServicesCapabilities. If you do not call this method first, those values will be nil. After calling this method, assuming there is no error in the handler, you may retrieve the capability you requested from the manager within the handler.

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithAppServicesCapabilities:":{"name":"-initWithAppServicesCapabilities:","abstract":"

    Convenience init for an App Service Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithNavigationCapability:":{"name":"-initWithNavigationCapability:","abstract":"

    Convenience init for a Navigation Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithPhoneCapability:":{"name":"-initWithPhoneCapability:","abstract":"

    Convenience init for a Phone Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithVideoStreamingCapability:":{"name":"-initWithVideoStreamingCapability:","abstract":"

    Convenience init for a Video Streaming Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithRemoteControlCapability:":{"name":"-initWithRemoteControlCapability:","abstract":"

    Convenience init for a Remote Control Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)systemCapabilityType":{"name":"systemCapabilityType","abstract":"

    Used as a descriptor of what data to expect in this struct. The corresponding param to this enum should be included and the only other parameter included.

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)appServicesCapabilities":{"name":"appServicesCapabilities","abstract":"

    Describes the capabilities of app services including what service types are supported and the current state of services.

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)navigationCapability":{"name":"navigationCapability","abstract":"

    Describes the extended capabilities of the onboard navigation system

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)phoneCapability":{"name":"phoneCapability","abstract":"

    Describes the extended capabilities of the module’s phone feature

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)videoStreamingCapability":{"name":"videoStreamingCapability","abstract":"

    Describes the capabilities of the module’s video streaming feature

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)remoteControlCapability":{"name":"remoteControlCapability","abstract":"

    Describes the extended capabilities of the module’s remote control feature

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSyncMsgVersion.html#/c:objc(cs)SDLSyncMsgVersion(im)initWithMajorVersion:minorVersion:patchVersion:":{"name":"-initWithMajorVersion:minorVersion:patchVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLSyncMsgVersion"},"Classes/SDLSyncMsgVersion.html#/c:objc(cs)SDLSyncMsgVersion(py)majorVersion":{"name":"majorVersion","abstract":"

    The major version indicates versions that is not-compatible to previous versions

    ","parent_name":"SDLSyncMsgVersion"},"Classes/SDLSyncMsgVersion.html#/c:objc(cs)SDLSyncMsgVersion(py)minorVersion":{"name":"minorVersion","abstract":"

    The minor version indicates a change to a previous version that should still allow to be run on an older version (with limited functionality)

    ","parent_name":"SDLSyncMsgVersion"},"Classes/SDLSyncMsgVersion.html#/c:objc(cs)SDLSyncMsgVersion(py)patchVersion":{"name":"patchVersion","abstract":"

    Allows backward-compatible fixes to the API without increasing the minor version of the interface

    ","parent_name":"SDLSyncMsgVersion"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)gps":{"name":"gps","abstract":"

    The result of requesting to subscribe to the GPSData.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)speed":{"name":"speed","abstract":"

    The result of requesting to subscribe to the vehicle speed in kilometers per hour.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)rpm":{"name":"rpm","abstract":"

    The result of requesting to subscribe to the number of revolutions per minute of the engine.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)fuelLevel":{"name":"fuelLevel","abstract":"

    The result of requesting to subscribe to the fuel level in the tank (percentage)

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    The result of requesting to subscribe to the fuel level state.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)fuelRange":{"name":"fuelRange","abstract":"

    The result of requesting to subscribe to the fuel range.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    The result of requesting to subscribe to the instantaneous fuel consumption in microlitres.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)externalTemperature":{"name":"externalTemperature","abstract":"

    The result of requesting to subscribe to the external temperature in degrees celsius.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)prndl":{"name":"prndl","abstract":"

    The result of requesting to subscribe to the PRNDL status.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)tirePressure":{"name":"tirePressure","abstract":"

    The result of requesting to subscribe to the tireStatus.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)odometer":{"name":"odometer","abstract":"

    The result of requesting to subscribe to the odometer in km.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)beltStatus":{"name":"beltStatus","abstract":"

    The result of requesting to subscribe to the status of the seat belts.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)bodyInformation":{"name":"bodyInformation","abstract":"

    The result of requesting to subscribe to the body information including power modes.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)deviceStatus":{"name":"deviceStatus","abstract":"

    The result of requesting to subscribe to the device status including signal and battery strength.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)driverBraking":{"name":"driverBraking","abstract":"

    The result of requesting to subscribe to the status of the brake pedal.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)wiperStatus":{"name":"wiperStatus","abstract":"

    The result of requesting to subscribe to the status of the wipers.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)headLampStatus":{"name":"headLampStatus","abstract":"

    The result of requesting to subscribe to the status of the head lamps.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)engineOilLife":{"name":"engineOilLife","abstract":"

    The result of requesting to subscribe to the estimated percentage of remaining oil life of the engine.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)engineTorque":{"name":"engineTorque","abstract":"

    The result of requesting to subscribe to the torque value for engine (in Nm) on non-diesel variants.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    The result of requesting to subscribe to the accelerator pedal position (percentage depressed)

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    The result of requesting to subscribe to the current angle of the steering wheel (in deg)

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)eCallInfo":{"name":"eCallInfo","abstract":"

    The result of requesting to subscribe to the emergency call info

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)airbagStatus":{"name":"airbagStatus","abstract":"

    The result of requesting to subscribe to the airbag status

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    The result of requesting to subscribe to the emergency event

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)clusterModes":{"name":"clusterModes","abstract":"

    The result of requesting to subscribe to the cluster modes

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)myKey":{"name":"myKey","abstract":"

    The result of requesting to subscribe to the myKey status

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    The result of requesting to subscribe to the electronic parking brake status

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)turnSignal":{"name":"turnSignal","abstract":"

    The result of requesting to subscribe to the turn signal

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    The result of requesting to subscribe to the cloud app vehicle ID

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:","abstract":"

    Convenience init for subscribing to all possible vehicle data items.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:","abstract":"

    Convenience init for subscribing to all possible vehicle data items.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:","abstract":"

    Convenience init for subscribing to all possible vehicle data items.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)gps":{"name":"gps","abstract":"

    A boolean value. If true, subscribes GPS data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)speed":{"name":"speed","abstract":"

    A boolean value. If true, subscribes Speed data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)rpm":{"name":"rpm","abstract":"

    A boolean value. If true, subscribes RPM data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)fuelLevel":{"name":"fuelLevel","abstract":"

    A boolean value. If true, subscribes Fuel Level data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    A boolean value. If true, subscribes Fuel Level State data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)fuelRange":{"name":"fuelRange","abstract":"

    A boolean value. If true, subscribes Fuel Range data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    A boolean value. If true, subscribes Instant Fuel Consumption data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)externalTemperature":{"name":"externalTemperature","abstract":"

    A boolean value. If true, subscribes External Temperature data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)prndl":{"name":"prndl","abstract":"

    A boolean value. If true, subscribes PRNDL data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)tirePressure":{"name":"tirePressure","abstract":"

    A boolean value. If true, subscribes Tire Pressure status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)odometer":{"name":"odometer","abstract":"

    A boolean value. If true, subscribes Odometer data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)beltStatus":{"name":"beltStatus","abstract":"

    A boolean value. If true, subscribes Belt Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)bodyInformation":{"name":"bodyInformation","abstract":"

    A boolean value. If true, subscribes Body Information data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)deviceStatus":{"name":"deviceStatus","abstract":"

    A boolean value. If true, subscribes Device Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)driverBraking":{"name":"driverBraking","abstract":"

    A boolean value. If true, subscribes Driver Braking data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)wiperStatus":{"name":"wiperStatus","abstract":"

    A boolean value. If true, subscribes Wiper Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)headLampStatus":{"name":"headLampStatus","abstract":"

    A boolean value. If true, subscribes Head Lamp Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)engineOilLife":{"name":"engineOilLife","abstract":"

    A boolean value. If true, subscribes to Engine Oil Life data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)engineTorque":{"name":"engineTorque","abstract":"

    A boolean value. If true, subscribes Engine Torque data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    A boolean value. If true, subscribes Acc Pedal Position data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    A boolean value. If true, subscribes Steering Wheel Angle data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)eCallInfo":{"name":"eCallInfo","abstract":"

    A boolean value. If true, subscribes eCall Info data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)airbagStatus":{"name":"airbagStatus","abstract":"

    A boolean value. If true, subscribes Airbag Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    A boolean value. If true, subscribes Emergency Event data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    A boolean value. If true, subscribes Cluster Mode Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)myKey":{"name":"myKey","abstract":"

    A boolean value. If true, subscribes myKey data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    A boolean value. If true, subscribes to the electronic parking brake status.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)turnSignal":{"name":"turnSignal","abstract":"

    A boolean value. If true, subscribes to the turn signal status.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    A boolean value. If true, subscribes to the cloud app vehicle ID.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeButton.html#/c:objc(cs)SDLSubscribeButton(im)initWithHandler:":{"name":"-initWithHandler:","abstract":"

    Construct a SDLSubscribeButton with a handler callback when an event occurs.

    ","parent_name":"SDLSubscribeButton"},"Classes/SDLSubscribeButton.html#/c:objc(cs)SDLSubscribeButton(im)initWithButtonName:handler:":{"name":"-initWithButtonName:handler:","abstract":"

    Undocumented

    ","parent_name":"SDLSubscribeButton"},"Classes/SDLSubscribeButton.html#/c:objc(cs)SDLSubscribeButton(py)handler":{"name":"handler","abstract":"

    A handler that will let you know when the button you subscribed to is selected.

    ","parent_name":"SDLSubscribeButton"},"Classes/SDLSubscribeButton.html#/c:objc(cs)SDLSubscribeButton(py)buttonName":{"name":"buttonName","abstract":"

    The name of the button to subscribe to","parent_name":"SDLSubscribeButton"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)touchManager":{"name":"touchManager","abstract":"

    Touch Manager responsible for providing touch event notifications.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)audioManager":{"name":"audioManager","abstract":"

    Audio Manager responsible for managing streaming audio.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)rootViewController":{"name":"rootViewController","abstract":"

    This property is used for SDLCarWindow, the ability to stream any view controller. To start, you must set an initial view controller on SDLStreamingMediaConfiguration rootViewController. After streaming begins, you can replace that view controller with a new root by placing the new view controller into this property.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)focusableItemManager":{"name":"focusableItemManager","abstract":"

    A haptic interface that can be updated to reparse views within the window you’ve provided. Send a SDLDidUpdateProjectionView notification or call the updateInterfaceLayout method to reparse. The output of this haptic interface occurs in the touchManager property where it will call the delegate.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)streamingSupported":{"name":"streamingSupported","abstract":"

    Whether or not video streaming is supported

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)videoConnected":{"name":"videoConnected","abstract":"

    Whether or not the video session is connected.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)videoEncrypted":{"name":"videoEncrypted","abstract":"

    Whether or not the video session is encrypted. This may be different than the requestedEncryptionType.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)audioConnected":{"name":"audioConnected","abstract":"

    Whether or not the audio session is connected.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)audioEncrypted":{"name":"audioEncrypted","abstract":"

    Whether or not the audio session is encrypted. This may be different than the requestedEncryptionType.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)videoStreamingPaused":{"name":"videoStreamingPaused","abstract":"

    Whether or not the video stream is paused due to either the application being backgrounded, the HMI state being either NONE or BACKGROUND, or the video stream not being ready.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)screenSize":{"name":"screenSize","abstract":"

    This is the current screen size of a connected display. This will be the size the video encoder uses to encode the raw image data.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)videoFormat":{"name":"videoFormat","abstract":"

    This is the agreed upon format of video encoder that is in use, or nil if not currently connected.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)supportedFormats":{"name":"supportedFormats","abstract":"

    A list of all supported video formats by this manager

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)pixelBufferPool":{"name":"pixelBufferPool","abstract":"

    The pixel buffer pool reference returned back from an active VTCompressionSessionRef encoder.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)requestedEncryptionType":{"name":"requestedEncryptionType","abstract":"

    The requested encryption type when a session attempts to connect. This setting applies to both video and audio sessions.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)initWithConnectionManager:configuration:":{"name":"-initWithConnectionManager:configuration:","abstract":"

    Create a new streaming media manager for navigation and VPM apps with a specified configuration

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)startWithProtocol:":{"name":"-startWithProtocol:","abstract":"

    Start the manager with a completion block that will be called when startup completes. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on SDLManager.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)startAudioWithProtocol:":{"name":"-startAudioWithProtocol:","abstract":"

    Start the audio feature of the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on SDLManager.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)startVideoWithProtocol:":{"name":"-startVideoWithProtocol:","abstract":"

    Start the video feature of the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on SDLManager.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)stop":{"name":"-stop","abstract":"

    Stop the manager. This method is used internally.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)stopAudio":{"name":"-stopAudio","abstract":"

    Stop the audio feature of the manager. This method is used internally.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)stopVideo":{"name":"-stopVideo","abstract":"

    Stop the video feature of the manager. This method is used internally.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)sendVideoData:":{"name":"-sendVideoData:","abstract":"

    This method receives raw image data and will run iOS8+‘s hardware video encoder to turn the data into a video stream, which will then be passed to the connected head unit.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)sendVideoData:presentationTimestamp:":{"name":"-sendVideoData:presentationTimestamp:","abstract":"

    This method receives raw image data and will run iOS8+‘s hardware video encoder to turn the data into a video stream, which will then be passed to the connected head unit.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)sendAudioData:":{"name":"-sendAudioData:","abstract":"

    This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)securityManagers":{"name":"securityManagers","abstract":"

    Set security managers which could be used. This is primarily used with video streaming applications to authenticate and perhaps encrypt traffic data.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)maximumDesiredEncryption":{"name":"maximumDesiredEncryption","abstract":"

    What encryption level video/audio streaming should be. The default is SDLStreamingEncryptionFlagAuthenticateAndEncrypt.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)customVideoEncoderSettings":{"name":"customVideoEncoderSettings","abstract":"

    Properties to use for applications that utilize the video encoder for streaming. See VTCompressionProperties.h for more details. For example, you can set kVTCompressionPropertyKey_ExpectedFrameRate to set your framerate. Setting the framerate this way will also set the framerate if you use CarWindow automatic streaming.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)dataSource":{"name":"dataSource","abstract":"

    Usable to change run time video stream setup behavior. Only use this and modify the results if you really know what you’re doing. The head unit defaults are generally good.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)rootViewController":{"name":"rootViewController","abstract":"

    Set the initial view controller your video streaming content is within.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)carWindowRenderingType":{"name":"carWindowRenderingType","abstract":"

    Declares if CarWindow will use layer rendering or view rendering. Defaults to layer rendering.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)enableForcedFramerateSync":{"name":"enableForcedFramerateSync","abstract":"

    When YES, the StreamingMediaManager will run a CADisplayLink with the framerate set to the video encoder settings kVTCompressionPropertyKey_ExpectedFrameRate. This then forces TouchManager (and CarWindow, if used) to sync their callbacks to the framerate. If using CarWindow, this must be YES. If NO, enableSyncedPanning on SDLTouchManager will be set to NO. Defaults to YES.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)allowMultipleViewControllerOrientations":{"name":"allowMultipleViewControllerOrientations","abstract":"

    When YES, the StreamingMediaManager will disable its internal checks that the rootViewController only has one supportedOrientation. Having multiple orientations can cause streaming issues. If you wish to disable this check, set it to YES. Defaults to NO.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(im)init":{"name":"-init","abstract":"

    Create an insecure video streaming configuration. No security managers will be provided and the encryption flag will be set to None. If you’d like custom video encoder settings, you can set the property manually.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(im)initWithSecurityManagers:encryptionFlag:videoSettings:dataSource:rootViewController:":{"name":"-initWithSecurityManagers:encryptionFlag:videoSettings:dataSource:rootViewController:","abstract":"

    Manually set all the properties to the streaming media configuration

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(im)initWithSecurityManagers:":{"name":"-initWithSecurityManagers:","abstract":"

    Create a secure configuration for each of the security managers provided.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(cm)secureConfigurationWithSecurityManagers:":{"name":"+secureConfigurationWithSecurityManagers:","abstract":"

    Create a secure configuration for each of the security managers provided.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(cm)insecureConfiguration":{"name":"+insecureConfiguration","abstract":"

    Create an insecure video streaming configuration. No security managers will be provided and the encryption flag will be set to None. If you’d like custom video encoder settings, you can set the property manually. This is equivalent to init.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(cm)autostreamingInsecureConfigurationWithInitialViewController:":{"name":"+autostreamingInsecureConfigurationWithInitialViewController:","abstract":"

    Create a CarWindow insecure configuration with a view controller

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(cm)autostreamingSecureConfigurationWithSecurityManagers:initialViewController:":{"name":"+autostreamingSecureConfigurationWithSecurityManagers:initialViewController:","abstract":"

    Create a CarWindow secure configuration with a view controller and security managers

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStationIDNumber.html#/c:objc(cs)SDLStationIDNumber(im)initWithCountryCode:fccFacilityId:":{"name":"-initWithCountryCode:fccFacilityId:","abstract":"

    Undocumented

    ","parent_name":"SDLStationIDNumber"},"Classes/SDLStationIDNumber.html#/c:objc(cs)SDLStationIDNumber(py)countryCode":{"name":"countryCode","abstract":"

    @abstract Binary Representation of ITU Country Code. USA Code is 001.

    ","parent_name":"SDLStationIDNumber"},"Classes/SDLStationIDNumber.html#/c:objc(cs)SDLStationIDNumber(py)fccFacilityId":{"name":"fccFacilityId","abstract":"

    @abstract Binary representation of unique facility ID assigned by the FCC","parent_name":"SDLStationIDNumber"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(im)initWithTimeInterval:":{"name":"-initWithTimeInterval:","abstract":"

    Create a time struct with a time interval (time in seconds). Fractions of the second will be eliminated and rounded down.

    ","parent_name":"SDLStartTime"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(im)initWithHours:minutes:seconds:":{"name":"-initWithHours:minutes:seconds:","abstract":"

    Create a time struct with hours, minutes, and seconds

    ","parent_name":"SDLStartTime"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(py)hours":{"name":"hours","abstract":"

    The hour of the media clock

    ","parent_name":"SDLStartTime"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(py)minutes":{"name":"minutes","abstract":"

    The minute of the media clock

    ","parent_name":"SDLStartTime"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(py)seconds":{"name":"seconds","abstract":"

    The second of the media clock

    ","parent_name":"SDLStartTime"},"Classes/SDLSpeak.html#/c:objc(cs)SDLSpeak(im)initWithTTS:":{"name":"-initWithTTS:","abstract":"

    Undocumented

    ","parent_name":"SDLSpeak"},"Classes/SDLSpeak.html#/c:objc(cs)SDLSpeak(im)initWithTTSChunks:":{"name":"-initWithTTSChunks:","abstract":"

    Undocumented

    ","parent_name":"SDLSpeak"},"Classes/SDLSpeak.html#/c:objc(cs)SDLSpeak(py)ttsChunks":{"name":"ttsChunks","abstract":"

    An array of TTSChunk structs which, taken together, specify the phrase to be spoken

    ","parent_name":"SDLSpeak"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)name":{"name":"name","abstract":"

    The name of this soft button state

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)artwork":{"name":"artwork","abstract":"

    The artwork to be used with this button or nil if it is text-only

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)text":{"name":"text","abstract":"

    The text to be used with this button or nil if it is image-only

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)highlighted":{"name":"highlighted","abstract":"

    Whether or not the button should be highlighted on the UI

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)systemAction":{"name":"systemAction","abstract":"

    A special system action

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)softButton":{"name":"softButton","abstract":"

    An SDLSoftButton describing this state

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(im)initWithStateName:text:image:":{"name":"-initWithStateName:text:image:","abstract":"

    Create the soft button state. Either the text or artwork or both may be set.

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(im)initWithStateName:text:artwork:":{"name":"-initWithStateName:text:artwork:","abstract":"

    Create the soft button state. Either the text or artwork or both may be set.

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)name":{"name":"name","abstract":"

    The name of this button

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)states":{"name":"states","abstract":"

    All states available to this button

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)currentState":{"name":"currentState","abstract":"

    The name of the current state of this soft button

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)currentStateSoftButton":{"name":"currentStateSoftButton","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)eventHandler":{"name":"eventHandler","abstract":"

    The handler to be called when the button is in the current state and is pressed

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)initWithName:states:initialStateName:handler:":{"name":"-initWithName:states:initialStateName:handler:","abstract":"

    Create a multi-state (or single-state, but you should use initWithName:state: instead for that case) soft button. For example, a button that changes its image or text, such as a repeat or shuffle button.

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)initWithName:state:handler:":{"name":"-initWithName:state:handler:","abstract":"

    Create a single-state soft button. For example, a button that brings up a Perform Interaction menu.

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)transitionToStateNamed:":{"name":"-transitionToStateNamed:","abstract":"

    Transition the soft button to another state in the states property. The wrapper considers all transitions valid (assuming a state with that name exists).

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)transitionToNextState":{"name":"-transitionToNextState","abstract":"

    Transition the soft button to the next state of the array set when in the states property

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)stateWithName:":{"name":"-stateWithName:","abstract":"

    Return a state from the state array with a specific name.

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonCapabilities.html#/c:objc(cs)SDLSoftButtonCapabilities(py)shortPressAvailable":{"name":"shortPressAvailable","abstract":"

    The button supports a short press.

    ","parent_name":"SDLSoftButtonCapabilities"},"Classes/SDLSoftButtonCapabilities.html#/c:objc(cs)SDLSoftButtonCapabilities(py)longPressAvailable":{"name":"longPressAvailable","abstract":"

    The button supports a LONG press.

    ","parent_name":"SDLSoftButtonCapabilities"},"Classes/SDLSoftButtonCapabilities.html#/c:objc(cs)SDLSoftButtonCapabilities(py)upDownAvailable":{"name":"upDownAvailable","abstract":"

    The button supports button down and button up.

    ","parent_name":"SDLSoftButtonCapabilities"},"Classes/SDLSoftButtonCapabilities.html#/c:objc(cs)SDLSoftButtonCapabilities(py)imageSupported":{"name":"imageSupported","abstract":"

    The button supports referencing a static or dynamic image.

    ","parent_name":"SDLSoftButtonCapabilities"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(im)initWithHandler:":{"name":"-initWithHandler:","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(im)initWithType:text:image:highlighted:buttonId:systemAction:handler:":{"name":"-initWithType:text:image:highlighted:buttonId:systemAction:handler:","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)handler":{"name":"handler","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)type":{"name":"type","abstract":"

    Describes whether this soft button displays only text, only an image, or both

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)text":{"name":"text","abstract":"

    Optional text to display (if defined as TEXT or BOTH type)

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)image":{"name":"image","abstract":"

    Optional image struct for SoftButton (if defined as IMAGE or BOTH type)

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)isHighlighted":{"name":"isHighlighted","abstract":"

    Displays in an alternate mode, e.g. with a colored background or foreground. Depends on the IVI system.

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)softButtonID":{"name":"softButtonID","abstract":"

    Value which is returned via OnButtonPress / OnButtonEvent

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)systemAction":{"name":"systemAction","abstract":"

    Parameter indicating whether selecting a SoftButton shall call a specific system action. This is intended to allow Notifications to bring the callee into full / focus; or in the case of persistent overlays, the overlay can persist when a SoftButton is pressed.

    ","parent_name":"SDLSoftButton"},"Classes/SDLSliderResponse.html#/c:objc(cs)SDLSliderResponse(py)sliderPosition":{"name":"sliderPosition","abstract":"

    The selected position of the slider.

    ","parent_name":"SDLSliderResponse"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(im)initWithNumTicks:position:":{"name":"-initWithNumTicks:position:","abstract":"

    Create an SDLSlider with only the number of ticks and position. Note that this is not enough to get a SUCCESS response. You must supply additional data. See below for required parameters.

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(im)initWithNumTicks:position:sliderHeader:sliderFooter:timeout:":{"name":"-initWithNumTicks:position:sliderHeader:sliderFooter:timeout:","abstract":"

    Create an SDLSlider with all required data and a static footer (or no footer).

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(im)initWithNumTicks:position:sliderHeader:sliderFooters:timeout:":{"name":"-initWithNumTicks:position:sliderHeader:sliderFooters:timeout:","abstract":"

    Create an SDLSlider with all required data and a dynamic footer (or no footer).

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)numTicks":{"name":"numTicks","abstract":"

    Represents a number of selectable items on a horizontal axis

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)position":{"name":"position","abstract":"

    An Initial position of slider control

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)sliderHeader":{"name":"sliderHeader","abstract":"

    A text header to display

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)sliderFooter":{"name":"sliderFooter","abstract":"

    A text footer to display

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)timeout":{"name":"timeout","abstract":"

    An App defined timeout in milliseconds

    ","parent_name":"SDLSlider"},"Classes/SDLSingleTireStatus.html#/c:objc(cs)SDLSingleTireStatus(py)status":{"name":"status","parent_name":"SDLSingleTireStatus"},"Classes/SDLSingleTireStatus.html#/c:objc(cs)SDLSingleTireStatus(py)monitoringSystemStatus":{"name":"monitoringSystemStatus","abstract":"

    The status of TPMS for this particular tire

    ","parent_name":"SDLSingleTireStatus"},"Classes/SDLSingleTireStatus.html#/c:objc(cs)SDLSingleTireStatus(py)pressure":{"name":"pressure","abstract":"

    The pressure value of this particular tire in kPa (kilopascals)

    ","parent_name":"SDLSingleTireStatus"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(im)initWithNavigationText1:navigationText2:eta:timeToDestination:totalDistance:turnIcon:nextTurnIcon:distanceToManeuver:distanceToManeuverScale:maneuverComplete:softButtons:":{"name":"-initWithNavigationText1:navigationText2:eta:timeToDestination:totalDistance:turnIcon:nextTurnIcon:distanceToManeuver:distanceToManeuverScale:maneuverComplete:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)navigationText1":{"name":"navigationText1","abstract":"

    The first line of text in a multi-line overlay screen.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)navigationText2":{"name":"navigationText2","abstract":"

    The second line of text in a multi-line overlay screen.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)eta":{"name":"eta","abstract":"

    Estimated Time of Arrival time at final destination

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)timeToDestination":{"name":"timeToDestination","abstract":"

    The amount of time needed to reach the final destination

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)totalDistance":{"name":"totalDistance","abstract":"

    The distance to the final destination

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)turnIcon":{"name":"turnIcon","abstract":"

    An icon to show with the turn description

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)nextTurnIcon":{"name":"nextTurnIcon","abstract":"

    An icon to show with the next turn description

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)distanceToManeuver":{"name":"distanceToManeuver","abstract":"

    Fraction of distance till next maneuver (starting from when AlertManeuver is triggered). Used to calculate progress bar.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)distanceToManeuverScale":{"name":"distanceToManeuverScale","abstract":"

    Distance till next maneuver (starting from) from previous maneuver. Used to calculate progress bar.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)maneuverComplete":{"name":"maneuverComplete","abstract":"

    If and when a maneuver has completed while an AlertManeuver is active, the app must send this value set to TRUE in order to clear the AlertManeuver overlay. If omitted the value will be assumed as FALSE.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)softButtons":{"name":"softButtons","abstract":"

    Three dynamic SoftButtons available (first SoftButton is fixed to Turns). If omitted on supported displays, the currently displayed SoftButton values will not change.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField2:alignment:":{"name":"-initWithMainField1:mainField2:alignment:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField1Type:mainField2:mainField2Type:alignment:":{"name":"-initWithMainField1:mainField1Type:mainField2:mainField2Type:alignment:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField2:mainField3:mainField4:alignment:":{"name":"-initWithMainField1:mainField2:mainField3:mainField4:alignment:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField1Type:mainField2:mainField2Type:mainField3:mainField3Type:mainField4:mainField4Type:alignment:":{"name":"-initWithMainField1:mainField1Type:mainField2:mainField2Type:mainField3:mainField3Type:mainField4:mainField4Type:alignment:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField2:alignment:statusBar:mediaClock:mediaTrack:":{"name":"-initWithMainField1:mainField2:alignment:statusBar:mediaClock:mediaTrack:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaClock:mediaTrack:graphic:softButtons:customPresets:textFieldMetadata:":{"name":"-initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaClock:mediaTrack:graphic:softButtons:customPresets:textFieldMetadata:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mainField1":{"name":"mainField1","abstract":"

    The text displayed in a single-line display, or in the upper display","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mainField2":{"name":"mainField2","abstract":"

    The text displayed on the second display line of a two-line display

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mainField3":{"name":"mainField3","abstract":"

    The text displayed on the first display line of the second page

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mainField4":{"name":"mainField4","abstract":"

    The text displayed on the second display line of the second page

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)alignment":{"name":"alignment","abstract":"

    The alignment that Specifies how mainField1 and mainField2 text","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)statusBar":{"name":"statusBar","abstract":"

    Text in the Status Bar

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mediaClock":{"name":"mediaClock","abstract":"

    This property is deprecated use SetMediaClockTimer instead.","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mediaTrack":{"name":"mediaTrack","abstract":"

    The text in the track field

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)graphic":{"name":"graphic","abstract":"

    An image to be shown on supported displays

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)secondaryGraphic":{"name":"secondaryGraphic","abstract":"

    An image to be shown on supported displays

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)softButtons":{"name":"softButtons","abstract":"

    The the Soft buttons defined by the App

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)customPresets":{"name":"customPresets","abstract":"

    The Custom Presets defined by the App

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)metadataTags":{"name":"metadataTags","abstract":"

    Text Field Metadata

    ","parent_name":"SDLShow"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)countUpFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:":{"name":"+countUpFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:","abstract":"

    Create a media clock timer that counts up, e.g from 0:00 to 4:18.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)countUpFromStartTime:toEndTime:playPauseIndicator:":{"name":"+countUpFromStartTime:toEndTime:playPauseIndicator:","abstract":"

    Create a media clock timer that counts up, e.g from 0:00 to 4:18.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)countDownFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:":{"name":"+countDownFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:","abstract":"

    Create a media clock timer that counts down, e.g. from 4:18 to 0:00

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)countDownFromStartTime:toEndTime:playPauseIndicator:":{"name":"+countDownFromStartTime:toEndTime:playPauseIndicator:","abstract":"

    Create a media clock timer that counts down, e.g. from 4:18 to 0:00

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)pauseWithPlayPauseIndicator:":{"name":"+pauseWithPlayPauseIndicator:","abstract":"

    Pause an existing (counting up / down) media clock timer

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)updatePauseWithNewStartTimeInterval:endTimeInterval:playPauseIndicator:":{"name":"+updatePauseWithNewStartTimeInterval:endTimeInterval:playPauseIndicator:","abstract":"

    Update a pause time (or pause and update the time) on a media clock timer

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)updatePauseWithNewStartTime:endTime:playPauseIndicator:":{"name":"+updatePauseWithNewStartTime:endTime:playPauseIndicator:","abstract":"

    Update a pause time (or pause and update the time) on a media clock timer

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)resumeWithPlayPauseIndicator:":{"name":"+resumeWithPlayPauseIndicator:","abstract":"

    Resume a paused media clock timer. It resumes at the same time at which it was paused.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)clearWithPlayPauseIndicator:":{"name":"+clearWithPlayPauseIndicator:","abstract":"

    Remove a media clock timer from the screen

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(im)initWithUpdateMode:hours:minutes:seconds:audioStreamingIndicator:":{"name":"-initWithUpdateMode:hours:minutes:seconds:audioStreamingIndicator:","abstract":"

    Undocumented

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(im)initWithUpdateMode:hours:minutes:seconds:":{"name":"-initWithUpdateMode:hours:minutes:seconds:","abstract":"

    Undocumented

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(im)initWithUpdateMode:":{"name":"-initWithUpdateMode:","abstract":"

    Undocumented

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(im)initWithUpdateMode:startTime:endTime:playPauseIndicator:":{"name":"-initWithUpdateMode:startTime:endTime:playPauseIndicator:","abstract":"

    Create a SetMediaClockTimer RPC with all available parameters. It’s recommended to use the specific initializers above.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(py)startTime":{"name":"startTime","abstract":"

    A Start Time with specifying hour, minute, second values

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(py)endTime":{"name":"endTime","abstract":"

    An END time of type SDLStartTime, specifying hour, minute, second values

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(py)updateMode":{"name":"updateMode","abstract":"

    The media clock/timer update mode (COUNTUP/COUNTDOWN/PAUSE/RESUME)

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(py)audioStreamingIndicator":{"name":"audioStreamingIndicator","abstract":"

    The audio streaming indicator used for a play/pause button.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetInteriorVehicleDataResponse.html#/c:objc(cs)SDLSetInteriorVehicleDataResponse(py)moduleData":{"name":"moduleData","abstract":"

    The new module data for the requested module

    ","parent_name":"SDLSetInteriorVehicleDataResponse"},"Classes/SDLSetInteriorVehicleData.html#/c:objc(cs)SDLSetInteriorVehicleData(im)initWithModuleData:":{"name":"-initWithModuleData:","abstract":"

    Undocumented

    ","parent_name":"SDLSetInteriorVehicleData"},"Classes/SDLSetInteriorVehicleData.html#/c:objc(cs)SDLSetInteriorVehicleData(py)moduleData":{"name":"moduleData","abstract":"

    The module data to set for the requested RC module.

    ","parent_name":"SDLSetInteriorVehicleData"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(im)initWithHelpText:timeoutText:":{"name":"-initWithHelpText:timeoutText:","abstract":"

    Initialize SetGlobalProperties with help text and timeout text

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(im)initWithHelpText:timeoutText:vrHelpTitle:vrHelp:":{"name":"-initWithHelpText:timeoutText:vrHelpTitle:vrHelp:","abstract":"

    Initialize SetGlobalProperties with help text, timeout text, help title, and help items

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(im)initWithHelpText:timeoutText:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:":{"name":"-initWithHelpText:timeoutText:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:","abstract":"

    Initialize SetGlobalProperties with all possible items

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)helpPrompt":{"name":"helpPrompt","abstract":"

    Help prompt for when the user asks for help with an interface prompt

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)timeoutPrompt":{"name":"timeoutPrompt","abstract":"

    Help prompt for when an interface prompt times out

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)vrHelpTitle":{"name":"vrHelpTitle","abstract":"

    Sets a voice recognition Help Title

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)vrHelp":{"name":"vrHelp","abstract":"

    Sets the items listed in the VR help screen used in an interaction started by Push to Talk

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)menuTitle":{"name":"menuTitle","abstract":"

    Text for the menu button label

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)menuIcon":{"name":"menuIcon","abstract":"

    Icon for the menu button

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)keyboardProperties":{"name":"keyboardProperties","abstract":"

    On-screen keyboard (perform interaction) configuration

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetDisplayLayoutResponse.html#/c:objc(cs)SDLSetDisplayLayoutResponse(py)displayCapabilities":{"name":"displayCapabilities","abstract":"

    The display capabilities of the new template layout

    ","parent_name":"SDLSetDisplayLayoutResponse"},"Classes/SDLSetDisplayLayoutResponse.html#/c:objc(cs)SDLSetDisplayLayoutResponse(py)buttonCapabilities":{"name":"buttonCapabilities","abstract":"

    The button capabilities of the new template layout

    ","parent_name":"SDLSetDisplayLayoutResponse"},"Classes/SDLSetDisplayLayoutResponse.html#/c:objc(cs)SDLSetDisplayLayoutResponse(py)softButtonCapabilities":{"name":"softButtonCapabilities","abstract":"

    The soft button capabilities of the new template layout

    ","parent_name":"SDLSetDisplayLayoutResponse"},"Classes/SDLSetDisplayLayoutResponse.html#/c:objc(cs)SDLSetDisplayLayoutResponse(py)presetBankCapabilities":{"name":"presetBankCapabilities","abstract":"

    The preset bank capabilities of the new template layout

    ","parent_name":"SDLSetDisplayLayoutResponse"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(im)initWithPredefinedLayout:":{"name":"-initWithPredefinedLayout:","abstract":"

    Undocumented

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(im)initWithLayout:":{"name":"-initWithLayout:","abstract":"

    Undocumented

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(im)initWithPredefinedLayout:dayColorScheme:nightColorScheme:":{"name":"-initWithPredefinedLayout:dayColorScheme:nightColorScheme:","abstract":"

    Undocumented

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(py)displayLayout":{"name":"displayLayout","abstract":"

    A display layout. Predefined or dynamically created screen layout.","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(py)dayColorScheme":{"name":"dayColorScheme","abstract":"

    The color scheme to be used on a head unit using a light or day color scheme. The OEM may only support this theme if their head unit only has a light color scheme.

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(py)nightColorScheme":{"name":"nightColorScheme","abstract":"

    The color scheme to be used on a head unit using a dark or night color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetCloudAppProperties.html#/c:objc(cs)SDLSetCloudAppProperties(im)initWithProperties:":{"name":"-initWithProperties:","abstract":"

    Convenience init.

    ","parent_name":"SDLSetCloudAppProperties"},"Classes/SDLSetCloudAppProperties.html#/c:objc(cs)SDLSetCloudAppProperties(py)properties":{"name":"properties","abstract":"

    The new cloud application properties.

    ","parent_name":"SDLSetCloudAppProperties"},"Classes/SDLSetAppIcon.html#/c:objc(cs)SDLSetAppIcon(im)initWithFileName:":{"name":"-initWithFileName:","abstract":"

    Undocumented

    ","parent_name":"SDLSetAppIcon"},"Classes/SDLSetAppIcon.html#/c:objc(cs)SDLSetAppIcon(py)syncFileName":{"name":"syncFileName","abstract":"

    A file reference name","parent_name":"SDLSetAppIcon"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(im)initWithAddress:addressLines:locationName:locationDescription:phoneNumber:image:deliveryMode:timeStamp:":{"name":"-initWithAddress:addressLines:locationName:locationDescription:phoneNumber:image:deliveryMode:timeStamp:","abstract":"

    Create a SendLocation request with an address object, without Lat/Long coordinates.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(im)initWithLongitude:latitude:locationName:locationDescription:address:phoneNumber:image:":{"name":"-initWithLongitude:latitude:locationName:locationDescription:address:phoneNumber:image:","abstract":"

    Create a SendLocation request with Lat/Long coordinate, not an address object

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(im)initWithLongitude:latitude:locationName:locationDescription:displayAddressLines:phoneNumber:image:deliveryMode:timeStamp:address:":{"name":"-initWithLongitude:latitude:locationName:locationDescription:displayAddressLines:phoneNumber:image:deliveryMode:timeStamp:address:","abstract":"

    Create a SendLocation request with Lat/Long coordinate and an address object and let the nav system decide how to parse it

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)longitudeDegrees":{"name":"longitudeDegrees","abstract":"

    The longitudinal coordinate of the location. Either the latitude / longitude OR the address must be provided.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)latitudeDegrees":{"name":"latitudeDegrees","abstract":"

    The latitudinal coordinate of the location. Either the latitude / longitude OR the address must be provided.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)locationName":{"name":"locationName","abstract":"

    Name / title of intended location

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)locationDescription":{"name":"locationDescription","abstract":"

    Description of the intended location / establishment

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)addressLines":{"name":"addressLines","abstract":"

    Location address for display purposes only.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)phoneNumber":{"name":"phoneNumber","abstract":"

    Phone number of intended location / establishment

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)locationImage":{"name":"locationImage","abstract":"

    Image / icon of intended location

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)deliveryMode":{"name":"deliveryMode","abstract":"

    Mode in which the sendLocation request is sent

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)timeStamp":{"name":"timeStamp","abstract":"

    Arrival time of Location. If multiple SendLocations are sent, this will be used for sorting as well.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)address":{"name":"address","abstract":"

    Address to be used for setting destination. Either the latitude / longitude OR the address must be provided.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendHapticData.html#/c:objc(cs)SDLSendHapticData(im)initWithHapticRectData:":{"name":"-initWithHapticRectData:","abstract":"

    Constructs a new SDLSendHapticData object indicated by the hapticSpatialData parameter

    ","parent_name":"SDLSendHapticData"},"Classes/SDLSendHapticData.html#/c:objc(cs)SDLSendHapticData(py)hapticRectData":{"name":"hapticRectData","abstract":"

    Array of spatial data structures that represent the locations of all user controls present on the HMI. This data should be updated if/when the application presents a new screen. When a request is sent, if successful, it will replace all spatial data previously sent through RPC. If an empty array is sent, the existing spatial data will be cleared

    ","parent_name":"SDLSendHapticData"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(im)initWithId:action:":{"name":"-initWithId:action:","abstract":"

    @abstract Constructs a newly allocated SDLSeatMemoryAction object with id, label (max length 100 chars) and action type

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(im)initWithId:label:action:":{"name":"-initWithId:label:action:","abstract":"

    @abstract Constructs a newly allocated SDLSeatMemoryAction object with id, label (max length 100 chars) and action type

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(py)id":{"name":"id","abstract":"

    @abstract id of the action to be performed.

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(py)label":{"name":"label","abstract":"

    @abstract label of the action to be performed.

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(py)action":{"name":"action","abstract":"

    @abstract type of action to be performed

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(im)initWithId:":{"name":"-initWithId:","abstract":"

    Constructs a newly allocated SDLSeatControlData object with cushion and firmness

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(im)initWithId:heatingEnabled:coolingEnable:heatingLevel:coolingLevel:horizontalPostion:verticalPostion:frontVerticalPostion:backVerticalPostion:backTiltAngle:headSupportedHorizontalPostion:headSupportedVerticalPostion:massageEnabled:massageMode:massageCussionFirmness:memory:":{"name":"-initWithId:heatingEnabled:coolingEnable:heatingLevel:coolingLevel:horizontalPostion:verticalPostion:frontVerticalPostion:backVerticalPostion:backTiltAngle:headSupportedHorizontalPostion:headSupportedVerticalPostion:massageEnabled:massageMode:massageCussionFirmness:memory:","abstract":"

    Constructs a newly allocated SDLSeatControlData object with cushion and firmness

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)id":{"name":"id","abstract":"

    @abstract id of seat that is a remote controllable seat.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)heatingEnabled":{"name":"heatingEnabled","abstract":"

    @abstract Whether or not heating is enabled.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)coolingEnabled":{"name":"coolingEnabled","abstract":"

    @abstract Whether or not cooling is enabled.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)heatingLevel":{"name":"heatingLevel","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)coolingLevel":{"name":"coolingLevel","abstract":"

    @abstract cooling level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)horizontalPosition":{"name":"horizontalPosition","abstract":"

    @abstract horizontal Position in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)verticalPosition":{"name":"verticalPosition","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)frontVerticalPosition":{"name":"frontVerticalPosition","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)backVerticalPosition":{"name":"backVerticalPosition","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)backTiltAngle":{"name":"backTiltAngle","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)headSupportHorizontalPosition":{"name":"headSupportHorizontalPosition","abstract":"

    @abstract head Support Horizontal Position in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)headSupportVerticalPosition":{"name":"headSupportVerticalPosition","abstract":"

    @abstract head Support Vertical Position in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)massageEnabled":{"name":"massageEnabled","abstract":"

    @abstract Whether or not massage is enabled.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)massageMode":{"name":"massageMode","abstract":"

    @abstract Array of massage mode data.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)massageCushionFirmness":{"name":"massageCushionFirmness","abstract":"

    @abstract Array of firmness of a cushion.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)memory":{"name":"memory","abstract":"

    @abstract type of action to be performed

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(im)initWithName:":{"name":"-initWithName:","abstract":"

    Undocumented

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(im)initWithName:heatingEnabledAvailable:coolingEnabledAvailable:heatingLevelAvailable:coolingLevelAvailable:horizontalPositionAvailable:verticalPositionAvailable:frontVerticalPositionAvailable:backVerticalPositionAvailable:backTiltAngleAvailable:headSupportHorizontalPositionAvailable:headSupportVerticalPositionAvailable:massageEnabledAvailable:massageModeAvailable:massageCushionFirmnessAvailable:memoryAvailable:":{"name":"-initWithName:heatingEnabledAvailable:coolingEnabledAvailable:heatingLevelAvailable:coolingLevelAvailable:horizontalPositionAvailable:verticalPositionAvailable:frontVerticalPositionAvailable:backVerticalPositionAvailable:backTiltAngleAvailable:headSupportHorizontalPositionAvailable:headSupportVerticalPositionAvailable:massageEnabledAvailable:massageModeAvailable:massageCushionFirmnessAvailable:memoryAvailable:","abstract":"

    Undocumented

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    @abstract The short friendly name of the light control module.","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)heatingEnabledAvailable":{"name":"heatingEnabledAvailable","abstract":"

    @abstract Whether or not heating is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)coolingEnabledAvailable":{"name":"coolingEnabledAvailable","abstract":"

    @abstract Whether or not cooling is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)heatingLevelAvailable":{"name":"heatingLevelAvailable","abstract":"

    @abstract Whether or not heating level is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)coolingLevelAvailable":{"name":"coolingLevelAvailable","abstract":"

    @abstract Whether or not cooling level is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)horizontalPositionAvailable":{"name":"horizontalPositionAvailable","abstract":"

    @abstract Whether or not horizontal Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)verticalPositionAvailable":{"name":"verticalPositionAvailable","abstract":"

    @abstract Whether or not vertical Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)frontVerticalPositionAvailable":{"name":"frontVerticalPositionAvailable","abstract":"

    @abstract Whether or not front Vertical Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)backVerticalPositionAvailable":{"name":"backVerticalPositionAvailable","abstract":"

    @abstract Whether or not back Vertical Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)backTiltAngleAvailable":{"name":"backTiltAngleAvailable","abstract":"

    @abstract Whether or not backTilt Angle Available is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)headSupportHorizontalPositionAvailable":{"name":"headSupportHorizontalPositionAvailable","abstract":"

    @abstract Whether or not head Supports for Horizontal Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)headSupportVerticalPositionAvailable":{"name":"headSupportVerticalPositionAvailable","abstract":"

    @abstract Whether or not head Supports for Vertical Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)massageEnabledAvailable":{"name":"massageEnabledAvailable","abstract":"

    @abstract Whether or not massage Enabled is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)massageModeAvailable":{"name":"massageModeAvailable","abstract":"

    @abstract Whether or not massage Mode is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)massageCushionFirmnessAvailable":{"name":"massageCushionFirmnessAvailable","abstract":"

    @abstract Whether or not massage Cushion Firmness is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)memoryAvailable":{"name":"memoryAvailable","abstract":"

    @abstract Whether or not memory is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(im)initWithMessage:":{"name":"-initWithMessage:","abstract":"

    Undocumented

    ","parent_name":"SDLScrollableMessage"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(im)initWithMessage:timeout:softButtons:":{"name":"-initWithMessage:timeout:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLScrollableMessage"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(py)scrollableMessageBody":{"name":"scrollableMessageBody","abstract":"

    A Body of text that can include newlines and tabs","parent_name":"SDLScrollableMessage"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(py)timeout":{"name":"timeout","abstract":"

    Gets/Sets an App defined timeout. Indicates how long of a timeout in milliseconds from the","parent_name":"SDLScrollableMessage"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(py)softButtons":{"name":"softButtons","abstract":"

    Gets/Sets App defined SoftButtons.If omitted on supported displays, only the","parent_name":"SDLScrollableMessage"},"Classes/SDLScreenParams.html#/c:objc(cs)SDLScreenParams(py)resolution":{"name":"resolution","abstract":"

    The resolution of the prescribed screen area

    ","parent_name":"SDLScreenParams"},"Classes/SDLScreenParams.html#/c:objc(cs)SDLScreenParams(py)touchEventAvailable":{"name":"touchEventAvailable","abstract":"

    Types of screen touch events available in screen area

    ","parent_name":"SDLScreenParams"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField1":{"name":"textField1","abstract":"

    The top text field within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField2":{"name":"textField2","abstract":"

    The second text field within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField3":{"name":"textField3","abstract":"

    The third text field within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField4":{"name":"textField4","abstract":"

    The fourth text field within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)mediaTrackTextField":{"name":"mediaTrackTextField","abstract":"

    The media text field available within the media layout. Often less emphasized than textField(1-4)

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)primaryGraphic":{"name":"primaryGraphic","abstract":"

    The primary graphic within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)secondaryGraphic":{"name":"secondaryGraphic","abstract":"

    A secondary graphic used in some template layouts

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textAlignment":{"name":"textAlignment","abstract":"

    What alignment textField(1-4) should use

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField1Type":{"name":"textField1Type","abstract":"

    The type of data textField1 describes

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField2Type":{"name":"textField2Type","abstract":"

    The type of data textField2 describes

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField3Type":{"name":"textField3Type","abstract":"

    The type of data textField3 describes

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField4Type":{"name":"textField4Type","abstract":"

    The type of data textField4 describes

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)softButtonObjects":{"name":"softButtonObjects","abstract":"

    The current list of soft buttons within a template layout. Set this array to change the displayed soft buttons.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)menu":{"name":"menu","abstract":"

    The current list of menu cells displayed in the app’s menu.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)voiceCommands":{"name":"voiceCommands","abstract":"

    The current list of voice commands available for the user to speak and be recognized by the IVI’s voice recognition engine.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)keyboardConfiguration":{"name":"keyboardConfiguration","abstract":"

    The default keyboard configuration, this can be additionally customized by each SDLKeyboardDelegate.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)preloadedChoices":{"name":"preloadedChoices","abstract":"

    Cells will be hashed by their text, image names, and VR command text. When assembling an SDLChoiceSet, you can pull objects from here, or recreate them. The preloaded versions will be used so long as their text, image names, and VR commands are the same.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)initWithConnectionManager:fileManager:":{"name":"-initWithConnectionManager:fileManager:","abstract":"

    Initialize a screen manager

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)startWithCompletionHandler:":{"name":"-startWithCompletionHandler:","abstract":"

    Starts the manager and all sub-managers

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)stop":{"name":"-stop","abstract":"

    Stops the manager.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)beginUpdates":{"name":"-beginUpdates","abstract":"

    Delays all screen updates until endUpdatesWithCompletionHandler: is called.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)endUpdates":{"name":"-endUpdates","abstract":"

    Update text fields with new text set into the text field properties. Pass an empty string \\@"" to clear the text field.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)endUpdatesWithCompletionHandler:":{"name":"-endUpdatesWithCompletionHandler:","abstract":"

    Update text fields with new text set into the text field properties. Pass an empty string \\@"" to clear the text field.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)softButtonObjectNamed:":{"name":"-softButtonObjectNamed:","abstract":"

    Undocumented

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)preloadChoices:withCompletionHandler:":{"name":"-preloadChoices:withCompletionHandler:","abstract":"

    Preload cells to the head unit. This will greatly reduce the time taken to present a choice set. Any already matching a choice already on the head unit will be ignored. You do not need to wait until the completion handler is called to present a choice set containing choices being loaded. The choice set will wait until the preload completes and then immediately present.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)deleteChoices:":{"name":"-deleteChoices:","abstract":"

    Delete loaded cells from the head unit. If the cells don’t exist on the head unit they will be ignored.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)presentChoiceSet:mode:":{"name":"-presentChoiceSet:mode:","abstract":"

    Present a choice set on the head unit with a certain interaction mode. You should present in VR only if the user reached this choice set by using their voice, in Manual only if the user used touch to reach this choice set. Use Both if you’re lazy…for real though, it’s kind of confusing to the user and isn’t recommended.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)presentSearchableChoiceSet:mode:withKeyboardDelegate:":{"name":"-presentSearchableChoiceSet:mode:withKeyboardDelegate:","abstract":"

    Present a choice set on the head unit with a certain interaction mode. You should present in VR only if the user reached this choice set by using their voice, in Manual only if the user used touch to reach this choice set. Use Both if you’re lazy…for real though, it’s kind of confusing to the user and isn’t recommended.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)presentKeyboardWithInitialText:delegate:":{"name":"-presentKeyboardWithInitialText:delegate:","abstract":"

    Present a keyboard-only interface to the user and receive input. The user will be able to input text in the keyboard when in a non-driver distraction situation.

    ","parent_name":"SDLScreenManager"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(im)initWithStationShortName:stationIDNumber:stationLongName:stationLocation:stationMessage:":{"name":"-initWithStationShortName:stationIDNumber:stationLongName:stationLocation:stationMessage:","abstract":"

    Undocumented

    ","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationShortName":{"name":"stationShortName","abstract":"

    @abstract Identifies the 4-alpha-character station call sign","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationIDNumber":{"name":"stationIDNumber","abstract":"

    @abstract Used for network Application.","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationLongName":{"name":"stationLongName","abstract":"

    @abstract Identifies the station call sign or other identifying","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationLocation":{"name":"stationLocation","abstract":"

    @abstract Provides the 3-dimensional geographic station location

    ","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationMessage":{"name":"stationMessage","abstract":"

    @abstract May be used to convey textual information of general interest","parent_name":"SDLSISData"},"Classes/SDLResetGlobalProperties.html#/c:objc(cs)SDLResetGlobalProperties(im)initWithProperties:":{"name":"-initWithProperties:","abstract":"

    Undocumented

    ","parent_name":"SDLResetGlobalProperties"},"Classes/SDLResetGlobalProperties.html#/c:objc(cs)SDLResetGlobalProperties(py)properties":{"name":"properties","abstract":"

    An array of one or more GlobalProperty enumeration elements","parent_name":"SDLResetGlobalProperties"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(im)initWithClimateControlCapabilities:radioControlCapabilities:buttonCapabilities:":{"name":"-initWithClimateControlCapabilities:radioControlCapabilities:buttonCapabilities:","abstract":"

    Undocumented

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(im)initWithClimateControlCapabilities:radioControlCapabilities:buttonCapabilities:seatControlCapabilities:audioControlCapabilities:hmiSettingsControlCapabilities:lightControlCapabilities:":{"name":"-initWithClimateControlCapabilities:radioControlCapabilities:buttonCapabilities:seatControlCapabilities:audioControlCapabilities:hmiSettingsControlCapabilities:lightControlCapabilities:","abstract":"

    Constructs a newly allocated SDLRemoteControlCapabilities object with given parameters

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)climateControlCapabilities":{"name":"climateControlCapabilities","abstract":"

    If included, the platform supports RC climate controls.","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)radioControlCapabilities":{"name":"radioControlCapabilities","abstract":"

    If included, the platform supports RC radio controls.","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)buttonCapabilities":{"name":"buttonCapabilities","abstract":"

    If included, the platform supports RC button controls with the included button names.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)seatControlCapabilities":{"name":"seatControlCapabilities","abstract":"

    If included, the platform supports seat controls.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)audioControlCapabilities":{"name":"audioControlCapabilities","abstract":"

    If included, the platform supports audio controls.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)hmiSettingsControlCapabilities":{"name":"hmiSettingsControlCapabilities","abstract":"

    If included, the platform supports hmi setting controls.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)lightControlCapabilities":{"name":"lightControlCapabilities","abstract":"

    If included, the platform supports light controls.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)syncMsgVersion":{"name":"syncMsgVersion","abstract":"

    The RPC spec version supported by the connected IVI system.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)language":{"name":"language","abstract":"

    The currently active VR+TTS language on the module. See Language for options.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)hmiDisplayLanguage":{"name":"hmiDisplayLanguage","abstract":"

    The currently active display language on the module. See Language for options.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)displayCapabilities":{"name":"displayCapabilities","abstract":"

    Contains information about the display for the SDL system to which the application is currently connected.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)buttonCapabilities":{"name":"buttonCapabilities","abstract":"

    Provides information about the capabilities of a SDL HMI button.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)softButtonCapabilities":{"name":"softButtonCapabilities","abstract":"

    Contains information about a SoftButton’s capabilities.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)presetBankCapabilities":{"name":"presetBankCapabilities","abstract":"

    If returned, the platform supports custom on-screen Presets

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)hmiZoneCapabilities":{"name":"hmiZoneCapabilities","abstract":"

    Specifies HMI Zones in the vehicle.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)speechCapabilities":{"name":"speechCapabilities","abstract":"

    Contains information about TTS capabilities on the SDL platform.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)prerecordedSpeech":{"name":"prerecordedSpeech","abstract":"

    Contains information about the speech capabilities on the SDL platform","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)vrCapabilities":{"name":"vrCapabilities","abstract":"

    The VR capabilities of the connected SDL platform.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)audioPassThruCapabilities":{"name":"audioPassThruCapabilities","abstract":"

    Describes different audio type configurations for SDLPerformAudioPassThru, e.g. {8kHz,8-bit,PCM}

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)pcmStreamCapabilities":{"name":"pcmStreamCapabilities","abstract":"

    Describes different audio type configurations for the audio PCM stream service, e.g. {8kHz,8-bit,PCM}

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)vehicleType":{"name":"vehicleType","abstract":"

    Specifies the connected vehicle’s type

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)supportedDiagModes":{"name":"supportedDiagModes","abstract":"

    Specifies the white-list of supported diagnostic modes (0x00-0xFF) capable for DiagnosticMessage requests. If a mode outside this list is requested, it will be rejected.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)hmiCapabilities":{"name":"hmiCapabilities","abstract":"

    Specifies the availability of various SDL features.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)sdlVersion":{"name":"sdlVersion","abstract":"

    The SmartDeviceLink Core version

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)systemSoftwareVersion":{"name":"systemSoftwareVersion","abstract":"

    The software version of the system that implements SmartDeviceLink Core

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)iconResumed":{"name":"iconResumed","abstract":"

    Whether or not the app’s icon already existed on the system and was resumed. That means that the icon does not need to be sent by the app.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithLifecycleConfiguration:":{"name":"-initWithLifecycleConfiguration:","abstract":"

    Convenience init for registering the application with a lifecycle configuration.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithAppName:appId:languageDesired:":{"name":"-initWithAppName:appId:languageDesired:","abstract":"

    Convenience init for registering the application.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:":{"name":"-initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:","abstract":"

    Convenience init for registering the application.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:":{"name":"-initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:","abstract":"

    Convenience init for registering the application.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme:":{"name":"-initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme:","abstract":"

    Convenience init for registering the application with all possible options.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)syncMsgVersion":{"name":"syncMsgVersion","abstract":"

    The version of the SDL interface

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)appName":{"name":"appName","abstract":"

    The mobile application’s name. This name is displayed in the SDL Mobile Applications menu. It also serves as the unique identifier of the application for SmartDeviceLink.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)ttsName":{"name":"ttsName","abstract":"

    TTS string for VR recognition of the mobile application name.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)ngnMediaScreenAppName":{"name":"ngnMediaScreenAppName","abstract":"

    A String representing an abbreviated version of the mobile application’s name (if necessary) that will be displayed on the media screen.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)vrSynonyms":{"name":"vrSynonyms","abstract":"

    Defines additional voice recognition commands

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)isMediaApplication":{"name":"isMediaApplication","abstract":"

    Indicates if the application is a media or a non-media application.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)languageDesired":{"name":"languageDesired","abstract":"

    A Language enumeration indicating what language the application intends to use for user interaction (TTS and VR).

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)hmiDisplayLanguageDesired":{"name":"hmiDisplayLanguageDesired","abstract":"

    An enumeration indicating what language the application intends to use for user interaction (Display).

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)appHMIType":{"name":"appHMIType","abstract":"

    A list of all applicable app types stating which classifications to be given to the app.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)hashID":{"name":"hashID","abstract":"

    ID used to uniquely identify current state of all app data that can persist through connection cycles (e.g. ignition cycles).

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)deviceInfo":{"name":"deviceInfo","abstract":"

    Information about the connecting device

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)appID":{"name":"appID","abstract":"

    ID used to validate app with policy table entries

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)fullAppID":{"name":"fullAppID","abstract":"

    A full UUID appID used to validate app with policy table entries.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)appInfo":{"name":"appInfo","abstract":"

    Information about the application running

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)dayColorScheme":{"name":"dayColorScheme","abstract":"

    The color scheme to be used on a head unit using a light or day color scheme. The OEM may only support this theme if their head unit only has a light color scheme.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)nightColorScheme":{"name":"nightColorScheme","abstract":"

    The color scheme to be used on a head unit using a dark or night color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(im)initWithX:y:width:height:":{"name":"-initWithX:y:width:height:","abstract":"

    Create a Rectangle

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(im)initWithCGRect:":{"name":"-initWithCGRect:","abstract":"

    Create a Rectangle from a CGRect

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(py)x":{"name":"x","abstract":"

    The X-coordinate of the user control

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(py)y":{"name":"y","abstract":"

    The Y-coordinate of the user control

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(py)width":{"name":"width","abstract":"

    The width of the user control’s bounding rectangle

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(py)height":{"name":"height","abstract":"

    The height of the user control’s bounding rectangle

    ","parent_name":"SDLRectangle"},"Classes/SDLReadDIDResponse.html#/c:objc(cs)SDLReadDIDResponse(py)didResult":{"name":"didResult","abstract":"

    Array of requested DID results (with data if available).

    ","parent_name":"SDLReadDIDResponse"},"Classes/SDLReadDID.html#/c:objc(cs)SDLReadDID(im)initWithECUName:didLocation:":{"name":"-initWithECUName:didLocation:","abstract":"

    Undocumented

    ","parent_name":"SDLReadDID"},"Classes/SDLReadDID.html#/c:objc(cs)SDLReadDID(py)ecuName":{"name":"ecuName","abstract":"

    An ID of the vehicle module","parent_name":"SDLReadDID"},"Classes/SDLReadDID.html#/c:objc(cs)SDLReadDID(py)didLocation":{"name":"didLocation","abstract":"

    Raw data from vehicle data DID location(s)","parent_name":"SDLReadDID"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(im)initWithFrequencyInteger:frequencyFraction:band:hdChannel:radioEnable:":{"name":"-initWithFrequencyInteger:frequencyFraction:band:hdChannel:radioEnable:","abstract":"

    Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(im)initWithFrequencyInteger:frequencyFraction:band:hdChannel:radioEnable:hdRadioEnable:":{"name":"-initWithFrequencyInteger:frequencyFraction:band:hdChannel:radioEnable:hdRadioEnable:","abstract":"

    Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)frequencyInteger":{"name":"frequencyInteger","abstract":"

    The integer part of the frequency ie for 101.7 this value should be 101

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)frequencyFraction":{"name":"frequencyFraction","abstract":"

    The fractional part of the frequency for 101.7 is 7

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)band":{"name":"band","abstract":"

    Radio band value

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)rdsData":{"name":"rdsData","abstract":"

    Read only parameter. See RDSData data type for details.

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)availableHDs":{"name":"availableHDs","abstract":"

    number of HD sub-channels if available

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)hdChannel":{"name":"hdChannel","abstract":"

    Current HD sub-channel if available

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)signalStrength":{"name":"signalStrength","abstract":"

    Signal Strength Value

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)signalChangeThreshold":{"name":"signalChangeThreshold","abstract":"

    If the signal strength falls below the set value for this parameter, the radio will tune to an alternative frequency

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)radioEnable":{"name":"radioEnable","abstract":"

    True if the radio is on, false is the radio is off. When the radio is disabled, no data other than radioEnable is included in a GetInteriorVehicleData response

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)state":{"name":"state","abstract":"

    Read only parameter. See RadioState data type for details.

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)hdRadioEnable":{"name":"hdRadioEnable","abstract":"

    True if the hd radio is on, false is the radio is off

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)sisData":{"name":"sisData","abstract":"

    Read Read-only Station Information Service (SIS) data provides basic information","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(im)initWithModuleName:radioEnableAvailable:radioBandAvailable:radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:":{"name":"-initWithModuleName:radioEnableAvailable:radioBandAvailable:radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:","abstract":"

    Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(im)initWithModuleName:radioEnableAvailable:radioBandAvailable:radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:hdRadioEnableAvailable:siriusXMRadioAvailable:sisDataAvailable:":{"name":"-initWithModuleName:radioEnableAvailable:radioBandAvailable:radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:hdRadioEnableAvailable:siriusXMRadioAvailable:sisDataAvailable:","abstract":"

    Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    The short friendly name of the radio control module.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)radioEnableAvailable":{"name":"radioEnableAvailable","abstract":"

    Availability of the control of enable/disable radio.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)radioBandAvailable":{"name":"radioBandAvailable","abstract":"

    Availability of the control of radio band.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)radioFrequencyAvailable":{"name":"radioFrequencyAvailable","abstract":"

    Availability of the control of radio frequency.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)hdChannelAvailable":{"name":"hdChannelAvailable","abstract":"

    Availability of the control of HD radio channel.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)rdsDataAvailable":{"name":"rdsDataAvailable","abstract":"

    Availability of the getting Radio Data System (RDS) data.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)availableHDsAvailable":{"name":"availableHDsAvailable","abstract":"

    Availability of the getting the number of available HD channels.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)stateAvailable":{"name":"stateAvailable","abstract":"

    Availability of the getting the Radio state.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)signalStrengthAvailable":{"name":"signalStrengthAvailable","abstract":"

    Availability of the getting the signal strength.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)signalChangeThresholdAvailable":{"name":"signalChangeThresholdAvailable","abstract":"

    Availability of the getting the signal Change Threshold

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)hdRadioEnableAvailable":{"name":"hdRadioEnableAvailable","abstract":"

    Availability of the control of enable/disable HD radio.","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)siriusXMRadioAvailable":{"name":"siriusXMRadioAvailable","abstract":"

    Availability of sirius XM radio.","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)sisDataAvailable":{"name":"sisDataAvailable","abstract":"

    Availability of the getting HD radio Station Information Service (SIS) data.","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRPCStruct.html#/c:objc(cs)SDLRPCStruct@store":{"name":"store","abstract":"

    Undocumented

    ","parent_name":"SDLRPCStruct"},"Classes/SDLRPCStruct.html#/c:objc(cs)SDLRPCStruct(im)initWithDictionary:":{"name":"-initWithDictionary:","abstract":"

    Convenience init

    ","parent_name":"SDLRPCStruct"},"Classes/SDLRPCStruct.html#/c:objc(cs)SDLRPCStruct(im)init":{"name":"-init","abstract":"

    Init

    ","parent_name":"SDLRPCStruct"},"Classes/SDLRPCStruct.html#/c:objc(cs)SDLRPCStruct(im)serializeAsDictionary:":{"name":"-serializeAsDictionary:","abstract":"

    Converts struct to JSON formatted data

    ","parent_name":"SDLRPCStruct"},"Classes/SDLRPCResponseNotification.html#/c:objc(cs)SDLRPCResponseNotification(py)response":{"name":"response","abstract":"

    The response to be included within the userinfo dictionary

    ","parent_name":"SDLRPCResponseNotification"},"Classes/SDLRPCResponseNotification.html#/c:objc(cs)SDLRPCResponseNotification(im)initWithName:object:rpcResponse:":{"name":"-initWithName:object:rpcResponse:","abstract":"

    Create an NSNotification object containing an SDLRPCResponse

    ","parent_name":"SDLRPCResponseNotification"},"Classes/SDLRPCResponseNotification.html#/c:objc(cs)SDLRPCResponseNotification(im)isResponseMemberOfClass:":{"name":"-isResponseMemberOfClass:","abstract":"

    Returns whether or not the containing response is equal to a class, not including subclasses.

    ","parent_name":"SDLRPCResponseNotification"},"Classes/SDLRPCResponseNotification.html#/c:objc(cs)SDLRPCResponseNotification(im)isResponseKindOfClass:":{"name":"-isResponseKindOfClass:","abstract":"

    Returns whether or not the containing response is a kind of class, including subclasses.

    ","parent_name":"SDLRPCResponseNotification"},"Classes/SDLRPCResponse.html#/c:objc(cs)SDLRPCResponse(py)correlationID":{"name":"correlationID","abstract":"

    The correlation id of the corresponding SDLRPCRequest.

    ","parent_name":"SDLRPCResponse"},"Classes/SDLRPCResponse.html#/c:objc(cs)SDLRPCResponse(py)success":{"name":"success","abstract":"

    Whether or not the SDLRPCRequest was successful.

    ","parent_name":"SDLRPCResponse"},"Classes/SDLRPCResponse.html#/c:objc(cs)SDLRPCResponse(py)resultCode":{"name":"resultCode","abstract":"

    The result of the SDLRPCRequest. If the request failed, the result code contains the failure reason.

    ","parent_name":"SDLRPCResponse"},"Classes/SDLRPCResponse.html#/c:objc(cs)SDLRPCResponse(py)info":{"name":"info","abstract":"

    More detailed success or error message.

    ","parent_name":"SDLRPCResponse"},"Classes/SDLRPCRequestNotification.html#/c:objc(cs)SDLRPCRequestNotification(py)request":{"name":"request","abstract":"

    The request to be included in the userinfo dictionary

    ","parent_name":"SDLRPCRequestNotification"},"Classes/SDLRPCRequestNotification.html#/c:objc(cs)SDLRPCRequestNotification(im)initWithName:object:rpcRequest:":{"name":"-initWithName:object:rpcRequest:","abstract":"

    Create an NSNotification object containing an SDLRPCRequest

    ","parent_name":"SDLRPCRequestNotification"},"Classes/SDLRPCRequestNotification.html#/c:objc(cs)SDLRPCRequestNotification(im)isRequestMemberOfClass:":{"name":"-isRequestMemberOfClass:","abstract":"

    Returns whether or not the containing request is equal to a class, not including subclasses.

    ","parent_name":"SDLRPCRequestNotification"},"Classes/SDLRPCRequestNotification.html#/c:objc(cs)SDLRPCRequestNotification(im)isRequestKindOfClass:":{"name":"-isRequestKindOfClass:","abstract":"

    Returns whether or not the containing request is a kind of class, including subclasses.

    ","parent_name":"SDLRPCRequestNotification"},"Classes/SDLRPCRequest.html#/c:objc(cs)SDLRPCRequest(py)correlationID":{"name":"correlationID","abstract":"

    A unique id assigned to message sent to Core. The Correlation ID is used to map a request to its response.

    ","parent_name":"SDLRPCRequest"},"Classes/SDLRPCNotificationNotification.html#/c:objc(cs)SDLRPCNotificationNotification(py)notification":{"name":"notification","abstract":"

    The notification within the userinfo dictionary

    ","parent_name":"SDLRPCNotificationNotification"},"Classes/SDLRPCNotificationNotification.html#/c:objc(cs)SDLRPCNotificationNotification(im)initWithName:object:rpcNotification:":{"name":"-initWithName:object:rpcNotification:","abstract":"

    Create an NSNotification object caontaining an SDLRPCNotification

    ","parent_name":"SDLRPCNotificationNotification"},"Classes/SDLRPCNotificationNotification.html#/c:objc(cs)SDLRPCNotificationNotification(im)isNotificationMemberOfClass:":{"name":"-isNotificationMemberOfClass:","abstract":"

    Returns whether or not the containing notification is equal to a class, not including subclasses.

    ","parent_name":"SDLRPCNotificationNotification"},"Classes/SDLRPCNotificationNotification.html#/c:objc(cs)SDLRPCNotificationNotification(im)isNotificationKindOfClass:":{"name":"-isNotificationKindOfClass:","abstract":"

    Returns whether or not the containing notification is a kind of class, including subclasses.

    ","parent_name":"SDLRPCNotificationNotification"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage@function":{"name":"function","abstract":"

    Undocumented

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage@parameters":{"name":"parameters","abstract":"

    Undocumented

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage@messageType":{"name":"messageType","abstract":"

    Undocumented

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)initWithName:":{"name":"-initWithName:","abstract":"

    Convenience init

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)initWithDictionary:":{"name":"-initWithDictionary:","abstract":"

    Convenience init

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)getFunctionName":{"name":"-getFunctionName","abstract":"

    Returns the function name.

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)setFunctionName:":{"name":"-setFunctionName:","abstract":"

    Sets the function name.

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)getParameters:":{"name":"-getParameters:","abstract":"

    Returns the value associated with the provided key. If the key does not exist, null is returned.

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)setParameters:value:":{"name":"-setParameters:value:","abstract":"

    Sets a key-value pair using the function name as the key.

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(py)bulkData":{"name":"bulkData","abstract":"

    The data in the message

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(py)name":{"name":"name","abstract":"

    The name of the message

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(py)messageType":{"name":"messageType","abstract":"

    The type of data in the message

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(im)initWithRed:green:blue:":{"name":"-initWithRed:green:blue:","abstract":"

    Create an SDL color object with red / green / blue values between 0-255

    ","parent_name":"SDLRGBColor"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(im)initWithColor:":{"name":"-initWithColor:","abstract":"

    Create an SDL color object with a UIColor object.

    ","parent_name":"SDLRGBColor"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(py)red":{"name":"red","abstract":"

    The red value of the RGB color","parent_name":"SDLRGBColor"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(py)green":{"name":"green","abstract":"

    The green value of the RGB color","parent_name":"SDLRGBColor"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(py)blue":{"name":"blue","abstract":"

    The blue value of the RGB color","parent_name":"SDLRGBColor"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(im)initWithProgramService:radioText:clockText:programIdentification:programType:trafficProgramIdentification:trafficAnnouncementIdentification:region:":{"name":"-initWithProgramService:radioText:clockText:programIdentification:programType:trafficProgramIdentification:trafficAnnouncementIdentification:region:","abstract":"

    Undocumented

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)programService":{"name":"programService","abstract":"

    Program Service Name

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)radioText":{"name":"radioText","abstract":"

    Radio Text

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)clockText":{"name":"clockText","abstract":"

    The clock text in UTC format as YYYY-MM-DDThh:mm:ss.sTZD

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)programIdentification":{"name":"programIdentification","abstract":"

    Program Identification - the call sign for the radio station

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)programType":{"name":"programType","abstract":"

    The program type - The region should be used to differentiate between EU","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)trafficProgramIdentification":{"name":"trafficProgramIdentification","abstract":"

    Traffic Program Identification - Identifies a station that offers traffic

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)trafficAnnouncementIdentification":{"name":"trafficAnnouncementIdentification","abstract":"

    Traffic Announcement Identification - Indicates an ongoing traffic announcement

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)region":{"name":"region","abstract":"

    Region

    ","parent_name":"SDLRDSData"},"Classes/SDLPutFileResponse.html#/c:objc(cs)SDLPutFileResponse(py)spaceAvailable":{"name":"spaceAvailable","abstract":"

    Provides the total local space available in SDL Core for the registered app. If the transfer has systemFile enabled, then the value will be set to 0 automatically.

    ","parent_name":"SDLPutFileResponse"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)init":{"name":"-init","abstract":"

    Init

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:":{"name":"-initWithFileName:fileType:","abstract":"

    Convenience init for creating a putfile with a name and file format.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:persistentFile:":{"name":"-initWithFileName:fileType:persistentFile:","abstract":"

    Convenience init for creating a putfile with a name, file format, and persistance.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:persistentFile:systemFile:offset:length:":{"name":"-initWithFileName:fileType:persistentFile:systemFile:offset:length:","abstract":"

    Convenience init for creating a putfile that is part of a multiple frame payload.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:persistentFile:systemFile:offset:length:crc:":{"name":"-initWithFileName:fileType:persistentFile:systemFile:offset:length:crc:","abstract":"

    Convenience init for creating a putfile that is part of a multiple frame payload.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:persistentFile:systemFile:offset:length:bulkData:":{"name":"-initWithFileName:fileType:persistentFile:systemFile:offset:length:bulkData:","abstract":"

    Convenience init for creating a putfile that is part of a multiple frame payload. A CRC checksum is calculated for the bulk data.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)syncFileName":{"name":"syncFileName","abstract":"

    File reference name

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)fileType":{"name":"fileType","abstract":"

    A FileType value representing a selected file type

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)persistentFile":{"name":"persistentFile","abstract":"

    A value to indicates if the file is meant to persist between sessions / ignition cycles. If set to TRUE, then the system will aim to persist this file through session / cycles. While files with this designation will have priority over others, they are subject to deletion by the system at any time. In the event of automatic deletion by the system, the app will receive a rejection and have to resend the file. If omitted, the value will be set to false.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)systemFile":{"name":"systemFile","abstract":"

    Indicates if the file is meant to be passed through core to elsewhere on the system. If set to TRUE, then the system will instead pass the data thru as it arrives to a predetermined area outside of core.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)offset":{"name":"offset","abstract":"

    Offset in bytes for resuming partial data chunks.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)length":{"name":"length","abstract":"

    Length in bytes for resuming partial data chunks. If offset is set to 0, then length is the total length of the file to be downloaded

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)crc":{"name":"crc","abstract":"

    Additional CRC32 checksum to protect data integrity up to 512 Mbits.

    ","parent_name":"SDLPutFile"},"Classes/SDLPublishAppServiceResponse.html#/c:objc(cs)SDLPublishAppServiceResponse(im)initWithAppServiceRecord:":{"name":"-initWithAppServiceRecord:","abstract":"

    Convenience init.

    ","parent_name":"SDLPublishAppServiceResponse"},"Classes/SDLPublishAppServiceResponse.html#/c:objc(cs)SDLPublishAppServiceResponse(py)appServiceRecord":{"name":"appServiceRecord","abstract":"

    If the request was successful, this object will be the current status of the service record for the published service. This will include the Core supplied service ID.

    ","parent_name":"SDLPublishAppServiceResponse"},"Classes/SDLPublishAppService.html#/c:objc(cs)SDLPublishAppService(im)initWithAppServiceManifest:":{"name":"-initWithAppServiceManifest:","abstract":"

    Convenience init.

    ","parent_name":"SDLPublishAppService"},"Classes/SDLPublishAppService.html#/c:objc(cs)SDLPublishAppService(py)appServiceManifest":{"name":"appServiceManifest","abstract":"

    The manifest of the service that wishes to be published.

    ","parent_name":"SDLPublishAppService"},"Classes/SDLPresetBankCapabilities.html#/c:objc(cs)SDLPresetBankCapabilities(py)onScreenPresetsAvailable":{"name":"onScreenPresetsAvailable","abstract":"

    If Onscreen custom presets are available.

    ","parent_name":"SDLPresetBankCapabilities"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(im)initWithFirstTouch:secondTouch:":{"name":"-initWithFirstTouch:secondTouch:","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)firstTouch":{"name":"firstTouch","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)secondTouch":{"name":"secondTouch","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)distance":{"name":"distance","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)center":{"name":"center","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)isValid":{"name":"isValid","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPhoneCapability.html#/c:objc(cs)SDLPhoneCapability(im)initWithDialNumber:":{"name":"-initWithDialNumber:","abstract":"

    Undocumented

    ","parent_name":"SDLPhoneCapability"},"Classes/SDLPhoneCapability.html#/c:objc(cs)SDLPhoneCapability(py)dialNumberEnabled":{"name":"dialNumberEnabled","abstract":"

    Whether or not the DialNumber RPC is enabled.

    ","parent_name":"SDLPhoneCapability"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)startWithCompletionHandler:":{"name":"-startWithCompletionHandler:","abstract":"

    Start the manager with a completion block that will be called when startup completes. This is used internally. To use an SDLPermissionManager, you should use the manager found on SDLManager.

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)stop":{"name":"-stop","abstract":"

    Stop the manager. This method is used internally.

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)isRPCAllowed:":{"name":"-isRPCAllowed:","abstract":"

    Determine if an individual RPC is allowed for the current HMI level

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)groupStatusOfRPCs:":{"name":"-groupStatusOfRPCs:","abstract":"

    Determine if all RPCs are allowed for the current HMI level

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)statusOfRPCs:":{"name":"-statusOfRPCs:","abstract":"

    Retrieve a dictionary with keys that are the passed in RPC names, and objects of an NSNumber specifying if that RPC is currently allowed

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)addObserverForRPCs:groupType:withHandler:":{"name":"-addObserverForRPCs:groupType:withHandler:","abstract":"

    Add an observer for specified RPC names, with a callback that will be called whenever the value changes, as well as immediately with the current status.

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)removeAllObservers":{"name":"-removeAllObservers","abstract":"

    Remove every current observer

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)removeObserverForIdentifier:":{"name":"-removeObserverForIdentifier:","abstract":"

    Remove block observers for the specified RPC

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionItem.html#/c:objc(cs)SDLPermissionItem(py)rpcName":{"name":"rpcName","abstract":"

    Name of the individual RPC in the policy table.

    ","parent_name":"SDLPermissionItem"},"Classes/SDLPermissionItem.html#/c:objc(cs)SDLPermissionItem(py)hmiPermissions":{"name":"hmiPermissions","abstract":"

    HMI Permissions for the individual RPC; i.e. which HMI levels may it be used in

    ","parent_name":"SDLPermissionItem"},"Classes/SDLPermissionItem.html#/c:objc(cs)SDLPermissionItem(py)parameterPermissions":{"name":"parameterPermissions","abstract":"

    RPC parameters for the individual RPC

    ","parent_name":"SDLPermissionItem"},"Classes/SDLPerformInteractionResponse.html#/c:objc(cs)SDLPerformInteractionResponse(py)choiceID":{"name":"choiceID","abstract":"

    ID of the choice that was selected in response to PerformInteraction. Only is valid if general result is success:true.

    ","parent_name":"SDLPerformInteractionResponse"},"Classes/SDLPerformInteractionResponse.html#/c:objc(cs)SDLPerformInteractionResponse(py)manualTextEntry":{"name":"manualTextEntry","abstract":"

    Manually entered text selection, e.g. through keyboard. Can be returned in lieu of choiceID, depending on the trigger source.

    ","parent_name":"SDLPerformInteractionResponse"},"Classes/SDLPerformInteractionResponse.html#/c:objc(cs)SDLPerformInteractionResponse(py)triggerSource":{"name":"triggerSource","abstract":"

    A SDLTriggerSource object which will be shown in the HMI. Only is valid if resultCode is SUCCESS.

    ","parent_name":"SDLPerformInteractionResponse"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInteractionChoiceSetId:":{"name":"-initWithInteractionChoiceSetId:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInteractionChoiceSetIdList:":{"name":"-initWithInteractionChoiceSetIdList:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialPrompt:initialText:interactionChoiceSetID:":{"name":"-initWithInitialPrompt:initialText:interactionChoiceSetID:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialPrompt:initialText:interactionChoiceSetID:vrHelp:":{"name":"-initWithInitialPrompt:initialText:interactionChoiceSetID:vrHelp:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:":{"name":"-initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:vrHelp:":{"name":"-initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:vrHelp:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:":{"name":"-initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:interactionLayout:":{"name":"-initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:interactionLayout:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)initialText":{"name":"initialText","abstract":"

    The Text that Displayed when the interaction begins. This text may","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)initialPrompt":{"name":"initialPrompt","abstract":"

    An array of one or more TTSChunks that, taken together, specify","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)interactionMode":{"name":"interactionMode","abstract":"

    The Indicates mode that indicate how user selects interaction","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)interactionChoiceSetIDList":{"name":"interactionChoiceSetIDList","abstract":"

    A Vector value representing an Array of one or more Choice","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)helpPrompt":{"name":"helpPrompt","abstract":"

    A Vector which taken together, specify the help phrase to","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)timeoutPrompt":{"name":"timeoutPrompt","abstract":"

    An array of TTSChunks which, taken together, specify the phrase to","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)timeout":{"name":"timeout","abstract":"

    An Integer value representing the amount of time, in milliseconds,","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)vrHelp":{"name":"vrHelp","abstract":"

    A Voice recognition Help, which is a suggested VR Help Items to","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)interactionLayout":{"name":"interactionLayout","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(im)initWithSamplingRate:bitsPerSample:audioType:maxDuration:":{"name":"-initWithSamplingRate:bitsPerSample:audioType:maxDuration:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(im)initWithInitialPrompt:audioPassThruDisplayText1:audioPassThruDisplayText2:samplingRate:bitsPerSample:audioType:maxDuration:muteAudio:":{"name":"-initWithInitialPrompt:audioPassThruDisplayText1:audioPassThruDisplayText2:samplingRate:bitsPerSample:audioType:maxDuration:muteAudio:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(im)initWithSamplingRate:bitsPerSample:audioType:maxDuration:audioDataHandler:":{"name":"-initWithSamplingRate:bitsPerSample:audioType:maxDuration:audioDataHandler:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(im)initWithInitialPrompt:audioPassThruDisplayText1:audioPassThruDisplayText2:samplingRate:bitsPerSample:audioType:maxDuration:muteAudio:audioDataHandler:":{"name":"-initWithInitialPrompt:audioPassThruDisplayText1:audioPassThruDisplayText2:samplingRate:bitsPerSample:audioType:maxDuration:muteAudio:audioDataHandler:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)initialPrompt":{"name":"initialPrompt","abstract":"

    initial prompt which will be spoken before opening the audio pass","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)audioPassThruDisplayText1":{"name":"audioPassThruDisplayText1","abstract":"

    a line of text displayed during audio capture","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)audioPassThruDisplayText2":{"name":"audioPassThruDisplayText2","abstract":"

    A line of text displayed during audio capture","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)samplingRate":{"name":"samplingRate","abstract":"

    A samplingRate

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)maxDuration":{"name":"maxDuration","abstract":"

    the maximum duration of audio recording in milliseconds

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)bitsPerSample":{"name":"bitsPerSample","abstract":"

    the quality the audio is recorded - 8 bit or 16 bit

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)audioType":{"name":"audioType","abstract":"

    an audioType

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)muteAudio":{"name":"muteAudio","abstract":"

    a Boolean value representing if the current audio source should be","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)audioDataHandler":{"name":"audioDataHandler","abstract":"

    A handler that will be called whenever an onAudioPassThru notification is received.

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAppServiceInteractionResponse.html#/c:objc(cs)SDLPerformAppServiceInteractionResponse(im)initWithServiceSpecificResult:":{"name":"-initWithServiceSpecificResult:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLPerformAppServiceInteractionResponse"},"Classes/SDLPerformAppServiceInteractionResponse.html#/c:objc(cs)SDLPerformAppServiceInteractionResponse(py)serviceSpecificResult":{"name":"serviceSpecificResult","abstract":"

    The service can provide specific result strings to the consumer through this param.

    ","parent_name":"SDLPerformAppServiceInteractionResponse"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(im)initWithServiceUri:serviceID:originApp:":{"name":"-initWithServiceUri:serviceID:originApp:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(im)initWithServiceUri:serviceID:originApp:requestServiceActive:":{"name":"-initWithServiceUri:serviceID:originApp:requestServiceActive:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(py)serviceUri":{"name":"serviceUri","abstract":"

    Fully qualified URI based on a predetermined scheme provided by the app service. SDL makes no guarantee that this URI is correct.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(py)serviceID":{"name":"serviceID","abstract":"

    The service ID that the app consumer wishes to send this URI.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(py)originApp":{"name":"originApp","abstract":"

    This string is the appID of the app requesting the app service provider take the specific action.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(py)requestServiceActive":{"name":"requestServiceActive","abstract":"

    This flag signals the requesting consumer would like this service to become the active primary service of the destination’s type.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLParameterPermissions.html#/c:objc(cs)SDLParameterPermissions(py)allowed":{"name":"allowed","abstract":"

    A set of all parameters that are permitted for this given RPC.

    ","parent_name":"SDLParameterPermissions"},"Classes/SDLParameterPermissions.html#/c:objc(cs)SDLParameterPermissions(py)userDisallowed":{"name":"userDisallowed","abstract":"

    A set of all parameters that are prohibited for this given RPC.

    ","parent_name":"SDLParameterPermissions"},"Classes/SDLOnWayPointChange.html#/c:objc(cs)SDLOnWayPointChange(py)waypoints":{"name":"waypoints","abstract":"

    Location address for display purposes only

    ","parent_name":"SDLOnWayPointChange"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)gps":{"name":"gps","abstract":"

    The car current GPS coordinates

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)speed":{"name":"speed","abstract":"

    The vehicle speed in kilometers per hour

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)rpm":{"name":"rpm","abstract":"

    The number of revolutions per minute of the engine.

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)fuelLevel":{"name":"fuelLevel","abstract":"

    The fuel level in the tank (percentage)

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    The fuel level state

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)fuelRange":{"name":"fuelRange","abstract":"

    The estimate range in KM the vehicle can travel based on fuel level and consumption

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    The instantaneous fuel consumption in microlitres

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)externalTemperature":{"name":"externalTemperature","abstract":"

    The external temperature in degrees celsius.

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)vin":{"name":"vin","abstract":"

    The Vehicle Identification Number

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)prndl":{"name":"prndl","abstract":"

    The current gear shift state of the user’s vehicle

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)tirePressure":{"name":"tirePressure","abstract":"

    The current pressure warnings for the user’s vehicle

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)odometer":{"name":"odometer","abstract":"

    Odometer reading in km

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)beltStatus":{"name":"beltStatus","abstract":"

    The status of the seat belts

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)bodyInformation":{"name":"bodyInformation","abstract":"

    The body information including power modes

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)deviceStatus":{"name":"deviceStatus","abstract":"

    The IVI system status including signal and battery strength

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)driverBraking":{"name":"driverBraking","abstract":"

    The status of the brake pedal

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)wiperStatus":{"name":"wiperStatus","abstract":"

    The status of the wipers

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)headLampStatus":{"name":"headLampStatus","abstract":"

    Status of the head lamps

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)engineOilLife":{"name":"engineOilLife","abstract":"

    The estimated percentage (0% - 100%) of remaining oil life of the engine

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)engineTorque":{"name":"engineTorque","abstract":"

    Torque value for engine (in Nm) on non-diesel variants

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    Accelerator pedal position (percentage depressed)

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    Current angle of the steering wheel (in deg)

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)eCallInfo":{"name":"eCallInfo","abstract":"

    Emergency Call notification and confirmation data

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)airbagStatus":{"name":"airbagStatus","abstract":"

    The status of the air bags

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    Information related to an emergency event (and if it occurred)

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    The status modes of the cluster

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)myKey":{"name":"myKey","abstract":"

    Information related to the MyKey feature

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    The status of the electronic parking brake

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)turnSignal":{"name":"turnSignal","abstract":"

    The status of the turn signal

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    The cloud app vehicle ID

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnTouchEvent.html#/c:objc(cs)SDLOnTouchEvent(py)type":{"name":"type","abstract":"

    The type of touch event.

    ","parent_name":"SDLOnTouchEvent"},"Classes/SDLOnTouchEvent.html#/c:objc(cs)SDLOnTouchEvent(py)event":{"name":"event","abstract":"

    List of all individual touches involved in this event.

    ","parent_name":"SDLOnTouchEvent"},"Classes/SDLOnTBTClientState.html#/c:objc(cs)SDLOnTBTClientState(py)state":{"name":"state","abstract":"

    Current State of TBT client

    ","parent_name":"SDLOnTBTClientState"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)requestType":{"name":"requestType","abstract":"

    The type of system request.

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)requestSubType":{"name":"requestSubType","abstract":"

    A request subType used when the requestType is OEM_SPECIFIC.

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)url":{"name":"url","abstract":"

    Optional URL for HTTP requests. If blank, the binary data shall be forwarded to the app. If not blank, the binary data shall be forwarded to the url with a provided timeout in seconds.

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)timeout":{"name":"timeout","abstract":"

    Optional timeout for HTTP requests Required if a URL is provided

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)fileType":{"name":"fileType","abstract":"

    Optional file type (meant for HTTP file requests).

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)offset":{"name":"offset","abstract":"

    Optional offset in bytes for resuming partial data chunks

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)length":{"name":"length","abstract":"

    Optional length in bytes for resuming partial data chunks

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemCapabilityUpdated.html#/c:objc(cs)SDLOnSystemCapabilityUpdated(im)initWithSystemCapability:":{"name":"-initWithSystemCapability:","abstract":"

    Convenience init for required parameters

    ","parent_name":"SDLOnSystemCapabilityUpdated"},"Classes/SDLOnSystemCapabilityUpdated.html#/c:objc(cs)SDLOnSystemCapabilityUpdated(py)systemCapability":{"name":"systemCapability","abstract":"

    The system capability that has been updated.

    ","parent_name":"SDLOnSystemCapabilityUpdated"},"Classes/SDLOnSyncPData.html#/c:objc(cs)SDLOnSyncPData(py)URL":{"name":"URL","abstract":"

    Undocumented

    ","parent_name":"SDLOnSyncPData"},"Classes/SDLOnSyncPData.html#/c:objc(cs)SDLOnSyncPData(py)Timeout":{"name":"Timeout","abstract":"

    Undocumented

    ","parent_name":"SDLOnSyncPData"},"Classes/SDLOnRCStatus.html#/c:objc(cs)SDLOnRCStatus(py)allocatedModules":{"name":"allocatedModules","abstract":"

    @abstract Contains a list (zero or more) of module types that","parent_name":"SDLOnRCStatus"},"Classes/SDLOnRCStatus.html#/c:objc(cs)SDLOnRCStatus(py)freeModules":{"name":"freeModules","abstract":"

    @abstract Contains a list (zero or more) of module types that are free to access for the application.

    ","parent_name":"SDLOnRCStatus"},"Classes/SDLOnRCStatus.html#/c:objc(cs)SDLOnRCStatus(py)allowed":{"name":"allowed","abstract":"

    Issued by SDL to notify the application about remote control status change on SDL","parent_name":"SDLOnRCStatus"},"Classes/SDLOnPermissionsChange.html#/c:objc(cs)SDLOnPermissionsChange(py)permissionItem":{"name":"permissionItem","abstract":"

    Describes change in permissions for a given set of RPCs

    ","parent_name":"SDLOnPermissionsChange"},"Classes/SDLOnLockScreenStatus.html#/c:objc(cs)SDLOnLockScreenStatus(py)driverDistractionStatus":{"name":"driverDistractionStatus","abstract":"

    Get the current driver distraction status(i.e. whether driver distraction rules are in effect, or not)

    ","parent_name":"SDLOnLockScreenStatus"},"Classes/SDLOnLockScreenStatus.html#/c:objc(cs)SDLOnLockScreenStatus(py)userSelected":{"name":"userSelected","abstract":"

    Get user selection status for the application (has the app been selected via hmi or voice command)

    ","parent_name":"SDLOnLockScreenStatus"},"Classes/SDLOnLockScreenStatus.html#/c:objc(cs)SDLOnLockScreenStatus(py)lockScreenStatus":{"name":"lockScreenStatus","abstract":"

    Indicates if the lockscreen should be required, optional or off

    ","parent_name":"SDLOnLockScreenStatus"},"Classes/SDLOnLockScreenStatus.html#/c:objc(cs)SDLOnLockScreenStatus(py)hmiLevel":{"name":"hmiLevel","abstract":"

    Get HMILevel in effect for the application

    ","parent_name":"SDLOnLockScreenStatus"},"Classes/SDLOnLanguageChange.html#/c:objc(cs)SDLOnLanguageChange(py)language":{"name":"language","abstract":"

    Current SDL voice engine (VR+TTS) language

    ","parent_name":"SDLOnLanguageChange"},"Classes/SDLOnLanguageChange.html#/c:objc(cs)SDLOnLanguageChange(py)hmiDisplayLanguage":{"name":"hmiDisplayLanguage","abstract":"

    Current display language

    ","parent_name":"SDLOnLanguageChange"},"Classes/SDLOnKeyboardInput.html#/c:objc(cs)SDLOnKeyboardInput(py)event":{"name":"event","abstract":"

    The type of keyboard input

    ","parent_name":"SDLOnKeyboardInput"},"Classes/SDLOnKeyboardInput.html#/c:objc(cs)SDLOnKeyboardInput(py)data":{"name":"data","abstract":"

    The current keyboard string input from the user

    ","parent_name":"SDLOnKeyboardInput"},"Classes/SDLOnInteriorVehicleData.html#/c:objc(cs)SDLOnInteriorVehicleData(py)moduleData":{"name":"moduleData","abstract":"

    The subscribed module data that changed

    ","parent_name":"SDLOnInteriorVehicleData"},"Classes/SDLOnHashChange.html#/c:objc(cs)SDLOnHashChange(py)hashID":{"name":"hashID","abstract":"

    Calculated hash ID to be referenced during RegisterAppInterface request.

    ","parent_name":"SDLOnHashChange"},"Classes/SDLOnHMIStatus.html#/c:objc(cs)SDLOnHMIStatus(py)hmiLevel":{"name":"hmiLevel","abstract":"

    SDLHMILevel in effect for the application

    ","parent_name":"SDLOnHMIStatus"},"Classes/SDLOnHMIStatus.html#/c:objc(cs)SDLOnHMIStatus(py)audioStreamingState":{"name":"audioStreamingState","abstract":"

    Current state of audio streaming for the application. When this parameter has a value of NOT_AUDIBLE, the application must stop streaming audio to SDL.

    ","parent_name":"SDLOnHMIStatus"},"Classes/SDLOnHMIStatus.html#/c:objc(cs)SDLOnHMIStatus(py)videoStreamingState":{"name":"videoStreamingState","abstract":"

    Current availablility of video streaming for the application. When this parameter is NOT_STREAMABLE, the application must stop video streaming to SDL.

    ","parent_name":"SDLOnHMIStatus"},"Classes/SDLOnHMIStatus.html#/c:objc(cs)SDLOnHMIStatus(py)systemContext":{"name":"systemContext","abstract":"

    Whether a user-initiated interaction is in-progress (VRSESSION or MENU), or not (MAIN)

    ","parent_name":"SDLOnHMIStatus"},"Classes/SDLOnEncodedSyncPData.html#/c:objc(cs)SDLOnEncodedSyncPData(py)data":{"name":"data","abstract":"

    Contains base64 encoded string of SyncP packets.

    ","parent_name":"SDLOnEncodedSyncPData"},"Classes/SDLOnEncodedSyncPData.html#/c:objc(cs)SDLOnEncodedSyncPData(py)URL":{"name":"URL","abstract":"

    If blank, the SyncP data shall be forwarded to the app. If not blank, the SyncP data shall be forwarded to the provided URL.

    ","parent_name":"SDLOnEncodedSyncPData"},"Classes/SDLOnEncodedSyncPData.html#/c:objc(cs)SDLOnEncodedSyncPData(py)Timeout":{"name":"Timeout","abstract":"

    If blank, the SyncP data shall be forwarded to the app. If not blank, the SyncP data shall be forwarded with the provided timeout in seconds.

    ","parent_name":"SDLOnEncodedSyncPData"},"Classes/SDLOnDriverDistraction.html#/c:objc(cs)SDLOnDriverDistraction(py)state":{"name":"state","abstract":"

    The driver distraction state (i.e. whether driver distraction rules are in effect, or not)

    ","parent_name":"SDLOnDriverDistraction"},"Classes/SDLOnCommand.html#/c:objc(cs)SDLOnCommand(py)cmdID":{"name":"cmdID","abstract":"

    The command ID of the command the user selected. This is the command ID value provided by the application in the SDLAddCommand operation that created the command.

    ","parent_name":"SDLOnCommand"},"Classes/SDLOnCommand.html#/c:objc(cs)SDLOnCommand(py)triggerSource":{"name":"triggerSource","abstract":"

    Indicates whether command was selected via voice or via a menu selection (using the OK button).

    ","parent_name":"SDLOnCommand"},"Classes/SDLOnButtonPress.html#/c:objc(cs)SDLOnButtonPress(py)buttonName":{"name":"buttonName","abstract":"

    The button’s name

    ","parent_name":"SDLOnButtonPress"},"Classes/SDLOnButtonPress.html#/c:objc(cs)SDLOnButtonPress(py)buttonPressMode":{"name":"buttonPressMode","abstract":"

    Indicates whether this is a LONG or SHORT button press event

    ","parent_name":"SDLOnButtonPress"},"Classes/SDLOnButtonPress.html#/c:objc(cs)SDLOnButtonPress(py)customButtonID":{"name":"customButtonID","abstract":"

    If ButtonName is CUSTOM_BUTTON, this references the integer ID passed by a custom button. (e.g. softButton ID)

    ","parent_name":"SDLOnButtonPress"},"Classes/SDLOnButtonEvent.html#/c:objc(cs)SDLOnButtonEvent(py)buttonName":{"name":"buttonName","abstract":"

    The name of the button

    ","parent_name":"SDLOnButtonEvent"},"Classes/SDLOnButtonEvent.html#/c:objc(cs)SDLOnButtonEvent(py)buttonEventMode":{"name":"buttonEventMode","abstract":"

    Indicates whether this is an UP or DOWN event

    ","parent_name":"SDLOnButtonEvent"},"Classes/SDLOnButtonEvent.html#/c:objc(cs)SDLOnButtonEvent(py)customButtonID":{"name":"customButtonID","abstract":"

    If ButtonName is CUSTOM_BUTTON, this references the integer ID passed by a custom button. (e.g. softButton ID)

    ","parent_name":"SDLOnButtonEvent"},"Classes/SDLOnAppServiceData.html#/c:objc(cs)SDLOnAppServiceData(im)initWithServiceData:":{"name":"-initWithServiceData:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLOnAppServiceData"},"Classes/SDLOnAppServiceData.html#/c:objc(cs)SDLOnAppServiceData(py)serviceData":{"name":"serviceData","abstract":"

    The updated app service data.

    ","parent_name":"SDLOnAppServiceData"},"Classes/SDLOnAppInterfaceUnregistered.html#/c:objc(cs)SDLOnAppInterfaceUnregistered(py)reason":{"name":"reason","abstract":"

    The reason application’s interface was terminated

    ","parent_name":"SDLOnAppInterfaceUnregistered"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(im)initWithSubThoroughfare:thoroughfare:locality:administrativeArea:postalCode:countryCode:":{"name":"-initWithSubThoroughfare:thoroughfare:locality:administrativeArea:postalCode:countryCode:","abstract":"

    Undocumented

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(im)initWithSubThoroughfare:thoroughfare:locality:administrativeArea:postalCode:countryCode:countryName:subAdministrativeArea:subLocality:":{"name":"-initWithSubThoroughfare:thoroughfare:locality:administrativeArea:postalCode:countryCode:countryName:subAdministrativeArea:subLocality:","abstract":"

    Undocumented

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)countryName":{"name":"countryName","abstract":"

    Name of the country (localized)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)countryCode":{"name":"countryCode","abstract":"

    countryCode of the country(ISO 3166-2)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)postalCode":{"name":"postalCode","abstract":"

    postalCode of location (PLZ, ZIP, PIN, CAP etc.)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)administrativeArea":{"name":"administrativeArea","abstract":"

    Portion of country (e.g. state)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)subAdministrativeArea":{"name":"subAdministrativeArea","abstract":"

    Portion of administrativeArea (e.g. county)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)locality":{"name":"locality","abstract":"

    Hypernym for city/village

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)subLocality":{"name":"subLocality","abstract":"

    Hypernym for district

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)thoroughfare":{"name":"thoroughfare","abstract":"

    Hypernym for street, road etc.

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)subThoroughfare":{"name":"subThoroughfare","abstract":"

    Portion of thoroughfare (e.g. house number)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLNotificationConstants.html#/c:objc(cs)SDLNotificationConstants(cm)allResponseNames":{"name":"+allResponseNames","abstract":"

    All of the possible SDL RPC Response notification names

    ","parent_name":"SDLNotificationConstants"},"Classes/SDLNotificationConstants.html#/c:objc(cs)SDLNotificationConstants(cm)allButtonEventNotifications":{"name":"+allButtonEventNotifications","abstract":"

    All of the possible SDL Button event notification names

    ","parent_name":"SDLNotificationConstants"},"Classes/SDLNavigationServiceManifest.html#/c:objc(cs)SDLNavigationServiceManifest(im)initWithAcceptsWayPoints:":{"name":"-initWithAcceptsWayPoints:","abstract":"

    Convenience init.

    ","parent_name":"SDLNavigationServiceManifest"},"Classes/SDLNavigationServiceManifest.html#/c:objc(cs)SDLNavigationServiceManifest(py)acceptsWayPoints":{"name":"acceptsWayPoints","abstract":"

    Informs the subscriber if this service can actually accept way points.

    ","parent_name":"SDLNavigationServiceManifest"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(im)initWithTimestamp:":{"name":"-initWithTimestamp:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(im)initWithTimestamp:origin:destination:destinationETA:instructions:nextInstructionETA:nextInstructionDistance:nextInstructionDistanceScale:prompt:":{"name":"-initWithTimestamp:origin:destination:destinationETA:instructions:nextInstructionETA:nextInstructionDistance:nextInstructionDistanceScale:prompt:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)timestamp":{"name":"timestamp","abstract":"

    This is the timestamp of when the data was generated. This is to ensure any time or distance given in the data can accurately be adjusted if necessary.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)origin":{"name":"origin","abstract":"

    The start location.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)destination":{"name":"destination","abstract":"

    The final destination location.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)destinationETA":{"name":"destinationETA","abstract":"

    The estimated time of arrival at the final destination location.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)instructions":{"name":"instructions","abstract":"

    This array should be ordered with all remaining instructions. The start of this array should always contain the next instruction.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)nextInstructionETA":{"name":"nextInstructionETA","abstract":"

    The estimated time of arrival at the next destination.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)nextInstructionDistance":{"name":"nextInstructionDistance","abstract":"

    The distance to this instruction from current location. This should only be updated ever .1 unit of distance. For more accuracy the consumer can use the GPS location of itself and the next instruction.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)nextInstructionDistanceScale":{"name":"nextInstructionDistanceScale","abstract":"

    Distance till next maneuver (starting from) from previous maneuver.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)prompt":{"name":"prompt","abstract":"

    This is a prompt message that should be conveyed to the user through either display or voice (TTS). This param will change often as it should represent the following: approaching instruction, post instruction, alerts that affect the current navigation session, etc.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(im)initWithLocationDetails:action:":{"name":"-initWithLocationDetails:action:","abstract":"

    Convenience init for required parameters

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(im)initWithLocationDetails:action:eta:bearing:junctionType:drivingSide:details:image:":{"name":"-initWithLocationDetails:action:eta:bearing:junctionType:drivingSide:details:image:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)locationDetails":{"name":"locationDetails","abstract":"

    The location details.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)action":{"name":"action","abstract":"

    The navigation action.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)eta":{"name":"eta","abstract":"

    The estimated time of arrival.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)bearing":{"name":"bearing","abstract":"

    The angle at which this instruction takes place. For example, 0 would mean straight, <=45 is bearing right, >= 135 is sharp right, between 45 and 135 is a regular right, and 180 is a U-Turn, etc.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)junctionType":{"name":"junctionType","abstract":"

    The navigation junction type.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)drivingSide":{"name":"drivingSide","abstract":"

    Used to infer which side of the road this instruction takes place. For a U-Turn (action=TURN, bearing=180) this will determine which direction the turn should take place.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)details":{"name":"details","abstract":"

    This is a string representation of this instruction, used to display instructions to the users. This is not intended to be read aloud to the users, see the param prompt in NavigationServiceData for that.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)image":{"name":"image","abstract":"

    An image representation of this instruction.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationCapability.html#/c:objc(cs)SDLNavigationCapability(im)initWithSendLocation:waypoints:":{"name":"-initWithSendLocation:waypoints:","abstract":"

    Undocumented

    ","parent_name":"SDLNavigationCapability"},"Classes/SDLNavigationCapability.html#/c:objc(cs)SDLNavigationCapability(py)sendLocationEnabled":{"name":"sendLocationEnabled","abstract":"

    Whether or not the SendLocation RPC is enabled.

    ","parent_name":"SDLNavigationCapability"},"Classes/SDLNavigationCapability.html#/c:objc(cs)SDLNavigationCapability(py)getWayPointsEnabled":{"name":"getWayPointsEnabled","abstract":"

    Whether or not Waypoint related RPCs are enabled.

    ","parent_name":"SDLNavigationCapability"},"Classes/SDLMyKey.html#/c:objc(cs)SDLMyKey(py)e911Override":{"name":"e911Override","abstract":"

    Indicates whether e911 override is on. References signal MyKey_e911Override_St. See VehicleDataStatus.

    ","parent_name":"SDLMyKey"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithRadioControlData:":{"name":"-initWithRadioControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with radio control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithClimateControlData:":{"name":"-initWithClimateControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with climate control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithAudioControlData:":{"name":"-initWithAudioControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with audio control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithLightControlData:":{"name":"-initWithLightControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with light control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithHMISettingsControlData:":{"name":"-initWithHMISettingsControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with hmi settings data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithSeatControlData:":{"name":"-initWithSeatControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with seat control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)moduleType":{"name":"moduleType","abstract":"

    The moduleType indicates which type of data should be changed and identifies which data object exists in this struct.

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)radioControlData":{"name":"radioControlData","abstract":"

    The radio control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)climateControlData":{"name":"climateControlData","abstract":"

    The climate control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)seatControlData":{"name":"seatControlData","abstract":"

    The seat control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)audioControlData":{"name":"audioControlData","abstract":"

    The audio control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)lightControlData":{"name":"lightControlData","abstract":"

    The light control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)hmiSettingsControlData":{"name":"hmiSettingsControlData","abstract":"

    The hmi control data

    ","parent_name":"SDLModuleData"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(im)initWithTextFieldTypes:mainField2:":{"name":"-initWithTextFieldTypes:mainField2:","abstract":"

    Constructs a newly allocated SDLMetadataType object with NSArrays

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(im)initWithTextFieldTypes:mainField2:mainField3:mainField4:":{"name":"-initWithTextFieldTypes:mainField2:mainField3:mainField4:","abstract":"

    Undocumented

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(py)mainField1":{"name":"mainField1","abstract":"

    The type of data contained in the mainField1 text field.

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(py)mainField2":{"name":"mainField2","abstract":"

    The type of data contained in the mainField2 text field.

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(py)mainField3":{"name":"mainField3","abstract":"

    The type of data contained in the mainField3 text field.

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(py)mainField4":{"name":"mainField4","abstract":"

    The type of data contained in the mainField4 text field.

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(im)initWithMenuName:":{"name":"-initWithMenuName:","abstract":"

    Undocumented

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(im)initWithMenuName:parentId:position:":{"name":"-initWithMenuName:parentId:position:","abstract":"

    Undocumented

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(py)parentID":{"name":"parentID","abstract":"

    The unique ID of an existing submenu to which a command will be added

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(py)position":{"name":"position","abstract":"

    The position within the items of the parent Command Menu

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(py)menuName":{"name":"menuName","abstract":"

    The menu name which appears in menu, representing this command

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)title":{"name":"title","abstract":"

    The cell’s text to be displayed

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)icon":{"name":"icon","abstract":"

    The cell’s icon to be displayed

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)voiceCommands":{"name":"voiceCommands","abstract":"

    The strings the user can say to activate this voice command

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)handler":{"name":"handler","abstract":"

    The handler that will be called when the command is activated

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)subCells":{"name":"subCells","abstract":"

    If this is non-nil, this cell will be a sub-menu button, displaying the subcells in a menu when pressed.

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(im)initWithTitle:icon:voiceCommands:handler:":{"name":"-initWithTitle:icon:voiceCommands:handler:","abstract":"

    Create a menu cell that has no subcells.

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(im)initWithTitle:subCells:":{"name":"-initWithTitle:subCells:","abstract":"

    Create a menu cell that has subcells and when selected will go into a deeper part of the menu

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(im)initWithTitle:icon:subCells:":{"name":"-initWithTitle:icon:subCells:","abstract":"

    Create a menu cell that has subcells and when selected will go into a deeper part of the menu

    ","parent_name":"SDLMenuCell"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(im)initWithMediaType:mediaTitle:mediaArtist:mediaAlbum:playlistName:isExplicit:trackPlaybackProgress:trackPlaybackDuration:queuePlaybackProgress:queuePlaybackDuration:queueCurrentTrackNumber:queueTotalTrackCount:":{"name":"-initWithMediaType:mediaTitle:mediaArtist:mediaAlbum:playlistName:isExplicit:trackPlaybackProgress:trackPlaybackDuration:queuePlaybackProgress:queuePlaybackDuration:queueCurrentTrackNumber:queueTotalTrackCount:","abstract":"

    Convenience init

    ","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)mediaType":{"name":"mediaType","abstract":"

    The type of the currently playing or paused track.

    ","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)mediaTitle":{"name":"mediaTitle","abstract":"

    Music: The name of the current track","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)mediaArtist":{"name":"mediaArtist","abstract":"

    Music: The name of the current album artist","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)mediaAlbum":{"name":"mediaAlbum","abstract":"

    Music: The name of the current album","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)playlistName":{"name":"playlistName","abstract":"

    Music: The name of the playlist or radio station, if the user is playing from a playlist, otherwise, Null","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)isExplicit":{"name":"isExplicit","abstract":"

    Whether or not the content currently playing (e.g. the track, episode, or book) contains explicit content.

    ","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)trackPlaybackProgress":{"name":"trackPlaybackProgress","abstract":"

    Music: The current progress of the track in seconds","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)trackPlaybackDuration":{"name":"trackPlaybackDuration","abstract":"

    Music: The total duration of the track in seconds","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)queuePlaybackProgress":{"name":"queuePlaybackProgress","abstract":"

    Music: The current progress of the playback queue in seconds","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)queuePlaybackDuration":{"name":"queuePlaybackDuration","abstract":"

    Music: The total duration of the playback queue in seconds","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)queueCurrentTrackNumber":{"name":"queueCurrentTrackNumber","abstract":"

    Music: The current number (1 based) of the track in the playback queue","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)queueTotalTrackCount":{"name":"queueTotalTrackCount","abstract":"

    Music: The total number of tracks in the playback queue","parent_name":"SDLMediaServiceData"},"Classes/SDLMassageModeData.html#/c:objc(cs)SDLMassageModeData(im)initWithMassageMode:massageZone:":{"name":"-initWithMassageMode:massageZone:","abstract":"

    @abstract Constructs a newly allocated SDLMassageModeData object with massageMode and massageZone

    ","parent_name":"SDLMassageModeData"},"Classes/SDLMassageModeData.html#/c:objc(cs)SDLMassageModeData(py)massageMode":{"name":"massageMode","abstract":"

    @abstract mode of a massage zone

    ","parent_name":"SDLMassageModeData"},"Classes/SDLMassageModeData.html#/c:objc(cs)SDLMassageModeData(py)massageZone":{"name":"massageZone","abstract":"

    @abstract zone of a multi-contour massage seat.

    ","parent_name":"SDLMassageModeData"},"Classes/SDLMassageCushionFirmness.html#/c:objc(cs)SDLMassageCushionFirmness(im)initWithMassageCushion:firmness:":{"name":"-initWithMassageCushion:firmness:","abstract":"

    Constructs a newly allocated SDLMassageCushionFirmness object with cushion and firmness

    ","parent_name":"SDLMassageCushionFirmness"},"Classes/SDLMassageCushionFirmness.html#/c:objc(cs)SDLMassageCushionFirmness(py)cushion":{"name":"cushion","abstract":"

    @abstract cushion of a multi-contour massage seat.

    ","parent_name":"SDLMassageCushionFirmness"},"Classes/SDLMassageCushionFirmness.html#/c:objc(cs)SDLMassageCushionFirmness(py)firmness":{"name":"firmness","abstract":"

    @abstract zone of a multi-contour massage seat.

    ","parent_name":"SDLMassageCushionFirmness"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)configuration":{"name":"configuration","abstract":"

    The configuration the manager was set up with.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)hmiLevel":{"name":"hmiLevel","abstract":"

    The current HMI level of the running app.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)audioStreamingState":{"name":"audioStreamingState","abstract":"

    The current audio streaming state of the running app.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)systemContext":{"name":"systemContext","abstract":"

    The current system context of the running app.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)fileManager":{"name":"fileManager","abstract":"

    The file manager to be used by the running app.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)permissionManager":{"name":"permissionManager","abstract":"

    The permission manager monitoring RPC permissions.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)streamManager":{"name":"streamManager","abstract":"

    The streaming media manager to be used for starting video sessions.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)screenManager":{"name":"screenManager","abstract":"

    The screen manager for sending UI related RPCs.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)systemCapabilityManager":{"name":"systemCapabilityManager","abstract":"

    Centralized manager for retrieving all system capabilities.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)registerResponse":{"name":"registerResponse","abstract":"

    The response of a register call after it has been received.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)authToken":{"name":"authToken","abstract":"

    The auth token, if received. This should be used to log into a user account. Primarily used for cloud apps with companion app stores.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)delegate":{"name":"delegate","abstract":"

    The manager’s delegate.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)pendingRPCTransactions":{"name":"pendingRPCTransactions","abstract":"

    The currently pending RPC request send transactions

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)proxy":{"name":"proxy","abstract":"

    Undocumented

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)initWithConfiguration:delegate:":{"name":"-initWithConfiguration:delegate:","abstract":"

    Initialize the manager with a configuration. Call startWithHandler to begin waiting for a connection.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)startWithReadyHandler:":{"name":"-startWithReadyHandler:","abstract":"

    Start the manager, which will tell it to start looking for a connection. Once one does, it will automatically run the setup process and call the readyBlock when done.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)stop":{"name":"-stop","abstract":"

    Stop the manager, it will disconnect if needed and no longer look for a connection. You probably don’t need to call this method ever.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendRPC:":{"name":"-sendRPC:","abstract":"

    Send an RPC of type Response, Notification or Request. Responses and notifications sent to Core do not a response back from Core. Each request sent to Core does get a response, so if you need the response and/or error, call sendRequest:withResponseHandler: instead.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendRequest:":{"name":"-sendRequest:","abstract":"

    Send an RPC request and don’t bother with the response or error. If you need the response or error, call sendRequest:withCompletionHandler: instead.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendRequest:withResponseHandler:":{"name":"-sendRequest:withResponseHandler:","abstract":"

    Send an RPC request and set a completion handler that will be called with the response when the response returns.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendRequests:progressHandler:completionHandler:":{"name":"-sendRequests:progressHandler:completionHandler:","abstract":"

    Send all of the requests given as quickly as possible, but in order. Call the completionHandler after all requests have either failed or given a response.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendSequentialRequests:progressHandler:completionHandler:":{"name":"-sendSequentialRequests:progressHandler:completionHandler:","abstract":"

    Send all of the requests one at a time, with the next one going out only after the previous one has received a response. Call the completionHandler after all requests have either failed or given a response.

    ","parent_name":"SDLManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)modules":{"name":"modules","abstract":"

    Active log modules

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)targets":{"name":"targets","abstract":"

    Active log targets

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)filters":{"name":"filters","abstract":"

    Active log filters

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)globalLogLevel":{"name":"globalLogLevel","abstract":"

    Any modules that do not have an explicitly specified level will by default use this log level

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)formatType":{"name":"formatType","abstract":"

    Active log format

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)asynchronous":{"name":"asynchronous","abstract":"

    Whether or not verbose, debug, and warning logs are logged asynchronously. If logs are performed async, then some may be missed in the event of a terminating signal such as an exception, but performance is improved and your code will not be slowed by logging.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)errorsAsynchronous":{"name":"errorsAsynchronous","abstract":"

    Whether or not error logs are logged asynchronously. If logs are performed async, then some may be missed in the event of a terminating signal such as an exception, but performance is improved and your code will not be slowed by logging.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)disableAssertions":{"name":"disableAssertions","abstract":"

    Whether or not assert logs will fire assertions in DEBUG mode. Assertions are always disabled in RELEASE builds. If assertions are disabled, only an error log will fire instead. Defaults to NO.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cpy)dateFormatter":{"name":"dateFormatter","abstract":"

    Active date formatter

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cpy)logQueue":{"name":"logQueue","abstract":"

    The queue asynchronously logged logs are logged on. Say that 10 times fast.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)sharedManager":{"name":"+sharedManager","abstract":"

    The singleton object

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)setConfiguration:":{"name":"+setConfiguration:","abstract":"

    Sets a configuration to be used by the log manager’s sharedManager. This is generally for internal use and you should set your configuration using SDLManager’s startWithConfiguration: method.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)setConfiguration:":{"name":"-setConfiguration:","abstract":"

    Sets a configuration to be used by the log manager. This is generally for internal use and you should set your configuration using SDLManager’s startWithConfiguration: method.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)logWithLevel:timestamp:file:functionName:line:queue:formatMessage:":{"name":"+logWithLevel:timestamp:file:functionName:line:queue:formatMessage:","abstract":"

    Log to the sharedManager’s active log targets. This is used internally to log. If you want to create a log, you should use macros such as SDLLogD.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)logWithLevel:timestamp:file:functionName:line:queue:formatMessage:":{"name":"-logWithLevel:timestamp:file:functionName:line:queue:formatMessage:","abstract":"

    Log to this log manager’s active log targets. This is used internally to log. If you want to create a log, you should use macros such as SDLLogD.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)logWithLevel:timestamp:file:functionName:line:queue:message:":{"name":"+logWithLevel:timestamp:file:functionName:line:queue:message:","abstract":"

    Log to this sharedManager’s active log targets. This is used internally to log. If you want to create a log, you should use macros such as SDLLogD.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)logWithLevel:timestamp:file:functionName:line:queue:message:":{"name":"-logWithLevel:timestamp:file:functionName:line:queue:message:","abstract":"

    Log to this log manager’s active log targets. This is used internally to log. If you want to create a log, you should use macros such as SDLLogD.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)logBytes:direction:timestamp:file:functionName:line:queue:":{"name":"+logBytes:direction:timestamp:file:functionName:line:queue:","abstract":"

    Log to this sharedManager’s active log targets. This is used internally to log.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)logBytes:direction:timestamp:file:functionName:line:queue:":{"name":"-logBytes:direction:timestamp:file:functionName:line:queue:","abstract":"

    Log to this manager’s active log targets. This is used internally to log.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)logAssertWithTimestamp:file:functionName:line:queue:formatMessage:":{"name":"+logAssertWithTimestamp:file:functionName:line:queue:formatMessage:","abstract":"

    Log an error to the sharedManager’s active log targets and assert. This is used internally to log.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)logAssertWithTimestamp:file:functionName:line:queue:formatMessage:":{"name":"-logAssertWithTimestamp:file:functionName:line:queue:formatMessage:","abstract":"

    Log an error to this manager’s active log targets and assert. This is used internally to log.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(py)filter":{"name":"filter","abstract":"

    Undocumented

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(im)initWithCustomFilter:":{"name":"-initWithCustomFilter:","abstract":"

    Create a new filter with a custom filter block. The filter block will take a log model and return a BOOL of pass / fail.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByDisallowingString:caseSensitive:":{"name":"+filterByDisallowingString:caseSensitive:","abstract":"

    Returns a filter that only allows logs not containing the passed string within their message.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByAllowingString:caseSensitive:":{"name":"+filterByAllowingString:caseSensitive:","abstract":"

    Returns a filter that only allows logs containing the passed string within their message.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByDisallowingRegex:":{"name":"+filterByDisallowingRegex:","abstract":"

    Returns a filter that only allows logs not passing the passed regex against their message.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByAllowingRegex:":{"name":"+filterByAllowingRegex:","abstract":"

    Returns a filter that only allows logs passing the passed regex against their message.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByDisallowingModules:":{"name":"+filterByDisallowingModules:","abstract":"

    Returns a filter that only allows logs not within the specified file modules to be logged.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByAllowingModules:":{"name":"+filterByAllowingModules:","abstract":"

    Returns a filter that only allows logs of the specified file modules to be logged.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByDisallowingFileNames:":{"name":"+filterByDisallowingFileNames:","abstract":"

    Returns a filter that only allows logs not within the specified files to be logged.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByAllowingFileNames:":{"name":"+filterByAllowingFileNames:","abstract":"

    Returns a filter that only allows logs within the specified files to be logged.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(py)name":{"name":"name","abstract":"

    The name of the this module, e.g. Transport

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(py)files":{"name":"files","abstract":"

    All of the files contained within this module. When a log is logged, the __FILE__ (in Obj-C) or #file (in Swift) is automatically captured and checked to see if any module has a file in this set that matches. If it does, it will be logged using the module’s log level and the module’s name will be printed in the formatted log.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(py)logLevel":{"name":"logLevel","abstract":"

    The custom level of the log. This is SDLLogLevelDefault (whatever the current global log level is) by default.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(im)init":{"name":"-init","abstract":"

    This method is unavailable and may not be used.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(im)initWithName:files:level:":{"name":"-initWithName:files:level:","abstract":"

    Returns an initialized SDLLogFileModule that contains a custom name, set of files, and associated log level.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(im)initWithName:files:":{"name":"-initWithName:files:","abstract":"

    Returns an initialized SDLLogFileModule that contains a custom name and set of files. The logging level is the same as the current global logging file by using SDLLogLevelDefault.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(cm)moduleWithName:files:":{"name":"+moduleWithName:files:","abstract":"

    Returns an initialized SDLLogFileModule that contains a custom name and set of files. The logging level is the same as the current global logging file by using SDLLogLevelDefault.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(im)containsFile:":{"name":"-containsFile:","abstract":"

    Returns whether or not this module contains a given file.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)modules":{"name":"modules","abstract":"

    Any custom logging modules used by the developer’s code. Defaults to none.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)targets":{"name":"targets","abstract":"

    Where the logs will attempt to output. Defaults to Console.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)filters":{"name":"filters","abstract":"

    What log filters will run over this session. Defaults to none.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)formatType":{"name":"formatType","abstract":"

    How detailed of logs will be output. Defaults to Default.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)asynchronous":{"name":"asynchronous","abstract":"

    Whether or not logs will be run on a separate queue, asynchronously, allowing the following code to run before the log completes. Or if it will occur synchronously, which will prevent logs from being missed, but will slow down surrounding code. Defaults to YES.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)errorsAsynchronous":{"name":"errorsAsynchronous","abstract":"

    Whether or not error logs will be dispatched to loggers asynchronously. Defaults to NO.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)disableAssertions":{"name":"disableAssertions","abstract":"

    Whether or not assert logs will fire assertions in DEBUG mode. Assertions are always disabled in RELEASE builds. If assertions are disabled, only an error log will fire instead. Defaults to NO.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)globalLogLevel":{"name":"globalLogLevel","abstract":"

    Any modules that do not have an explicitly specified level will by default use the global log level. Defaults to Error.","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(cm)defaultConfiguration":{"name":"+defaultConfiguration","abstract":"

    A default logger for production. This sets the format type to Default, the log level to Error, and only enables the ASL logger.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(cm)debugConfiguration":{"name":"+debugConfiguration","abstract":"

    A debug logger for use in development. This sets the format type to Detailed, the log level to Debug, and enables the Console and ASL loggers.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLockScreenViewController.html#/c:objc(cs)SDLLockScreenViewController(py)appIcon":{"name":"appIcon","abstract":"

    The app’s icon. This will be set by the lock screen configuration.

    ","parent_name":"SDLLockScreenViewController"},"Classes/SDLLockScreenViewController.html#/c:objc(cs)SDLLockScreenViewController(py)vehicleIcon":{"name":"vehicleIcon","abstract":"

    The vehicle’s designated icon. This will be set by the lock screen manager when it is notified that a lock screen icon has been downloaded.

    ","parent_name":"SDLLockScreenViewController"},"Classes/SDLLockScreenViewController.html#/c:objc(cs)SDLLockScreenViewController(py)backgroundColor":{"name":"backgroundColor","abstract":"

    The designated background color set in the lock screen configuration, or the default SDL gray-blue.

    ","parent_name":"SDLLockScreenViewController"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)showInOptionalState":{"name":"showInOptionalState","abstract":"

    Whether or not the lock screen should be shown in the lock screen optional state. Defaults to false.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)enableAutomaticLockScreen":{"name":"enableAutomaticLockScreen","abstract":"

    If YES, the lock screen should be managed by SDL and automatically engage when necessary. If NO, then the lock screen will never be engaged.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)backgroundColor":{"name":"backgroundColor","abstract":"

    The background color of the lock screen. This could be a branding color, or leave at the default for a dark blue-gray.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)appIcon":{"name":"appIcon","abstract":"

    Your app icon as it will appear on the lock screen.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)customViewController":{"name":"customViewController","abstract":"

    A custom view controller that the lock screen will manage the presentation of.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(cm)disabledConfiguration":{"name":"+disabledConfiguration","abstract":"

    Use this configuration if you wish to manage a lock screen yourself. This may be useful if the automatic presentation feature of SDLLockScreenManager is failing for some reason.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(cm)enabledConfiguration":{"name":"+enabledConfiguration","abstract":"

    Use this configuration for the basic default lock screen. A custom app icon will not be used.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(cm)enabledConfigurationWithAppIcon:backgroundColor:":{"name":"+enabledConfigurationWithAppIcon:backgroundColor:","abstract":"

    Use this configuration to provide a custom lock screen icon and a custom background color, or nil if you wish to use the default background color. This will use the default lock screen layout.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(cm)enabledConfigurationWithViewController:":{"name":"+enabledConfigurationWithViewController:","abstract":"

    Use this configuration if you wish to provide your own view controller for the lock screen. This view controller’s presentation and dismissal will still be managed by the lock screen manager. Note that you may subclass SDLLockScreenViewController and pass it here to continue to have the vehicle icon set to your view controller by the manager.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(im)initWithCoordinate:":{"name":"-initWithCoordinate:","abstract":"

    Convenience init for location coordinate.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(im)initWithCoordinate:locationName:addressLines:locationDescription:phoneNumber:locationImage:searchAddress:":{"name":"-initWithCoordinate:locationName:addressLines:locationDescription:phoneNumber:locationImage:searchAddress:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)coordinate":{"name":"coordinate","abstract":"

    Latitude/Longitude of the location

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)locationName":{"name":"locationName","abstract":"

    Name of location.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)addressLines":{"name":"addressLines","abstract":"

    Location address for display purposes only.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)locationDescription":{"name":"locationDescription","abstract":"

    Description intended location / establishment.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)phoneNumber":{"name":"phoneNumber","abstract":"

    Phone number of location / establishment.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)locationImage":{"name":"locationImage","abstract":"

    Image / icon of intended location.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)searchAddress":{"name":"searchAddress","abstract":"

    Address to be used by navigation engines for search.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationCoordinate.html#/c:objc(cs)SDLLocationCoordinate(im)initWithLatitudeDegrees:longitudeDegrees:":{"name":"-initWithLatitudeDegrees:longitudeDegrees:","abstract":"

    Convenience init for location coordinates

    ","parent_name":"SDLLocationCoordinate"},"Classes/SDLLocationCoordinate.html#/c:objc(cs)SDLLocationCoordinate(py)latitudeDegrees":{"name":"latitudeDegrees","abstract":"

    Latitude of the location

    ","parent_name":"SDLLocationCoordinate"},"Classes/SDLLocationCoordinate.html#/c:objc(cs)SDLLocationCoordinate(py)longitudeDegrees":{"name":"longitudeDegrees","abstract":"

    Latitude of the location

    ","parent_name":"SDLLocationCoordinate"},"Classes/SDLListFilesResponse.html#/c:objc(cs)SDLListFilesResponse(py)filenames":{"name":"filenames","abstract":"

    An array of all filenames resident on the module for the given registered app. If omitted, then no files currently reside on the system.

    ","parent_name":"SDLListFilesResponse"},"Classes/SDLListFilesResponse.html#/c:objc(cs)SDLListFilesResponse(py)spaceAvailable":{"name":"spaceAvailable","abstract":"

    Provides the total local space available on the module for the registered app.

    ","parent_name":"SDLListFilesResponse"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(im)initWithId:status:":{"name":"-initWithId:status:","abstract":"

    Constructs a newly allocated SDLLightState object with given parameters

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(im)initWithId:status:density:color:":{"name":"-initWithId:status:density:color:","abstract":"

    Constructs a newly allocated SDLLightState object with given parameters

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(im)initWithId:lightStatus:lightDensity:lightColor:":{"name":"-initWithId:lightStatus:lightDensity:lightColor:","abstract":"

    Constructs a newly allocated SDLLightState object with given parameters

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(py)id":{"name":"id","abstract":"

    @abstract The name of a light or a group of lights

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(py)status":{"name":"status","abstract":"

    @abstract Reflects the status of Light.

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(py)density":{"name":"density","abstract":"

    @abstract Reflects the density of Light.

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(py)color":{"name":"color","abstract":"

    @abstract Reflects the color of Light.

    ","parent_name":"SDLLightState"},"Classes/SDLLightControlData.html#/c:objc(cs)SDLLightControlData(im)initWithLightStates:":{"name":"-initWithLightStates:","abstract":"

    Constructs a newly allocated SDLLightControlData object with lightState

    ","parent_name":"SDLLightControlData"},"Classes/SDLLightControlData.html#/c:objc(cs)SDLLightControlData(py)lightState":{"name":"lightState","abstract":"

    @abstract An array of LightNames and their current or desired status.","parent_name":"SDLLightControlData"},"Classes/SDLLightControlCapabilities.html#/c:objc(cs)SDLLightControlCapabilities(im)initWithModuleName:supportedLights:":{"name":"-initWithModuleName:supportedLights:","abstract":"

    Constructs a newly allocated SDLLightControlCapabilities object with given parameters

    ","parent_name":"SDLLightControlCapabilities"},"Classes/SDLLightControlCapabilities.html#/c:objc(cs)SDLLightControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    @abstract The short friendly name of the light control module.","parent_name":"SDLLightControlCapabilities"},"Classes/SDLLightControlCapabilities.html#/c:objc(cs)SDLLightControlCapabilities(py)supportedLights":{"name":"supportedLights","abstract":"

    @abstract An array of available LightCapabilities that are controllable.

    ","parent_name":"SDLLightControlCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(im)initWithName:":{"name":"-initWithName:","abstract":"

    Constructs a newly allocated SDLLightCapabilities object with the name of the light or group of lights

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(im)initWithName:densityAvailable:colorAvailable:statusAvailable:":{"name":"-initWithName:densityAvailable:colorAvailable:statusAvailable:","abstract":"

    Constructs a newly allocated SDLLightCapabilities object with given parameters

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(py)name":{"name":"name","abstract":"

    @abstract The name of a light or a group of lights

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(py)densityAvailable":{"name":"densityAvailable","abstract":"

    @abstract Indicates if the light’s density can be set remotely (similar to a dimmer).

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(py)colorAvailable":{"name":"colorAvailable","abstract":"

    @abstract Indicates if the light’s color can be set remotely by using the RGB color space.

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(py)statusAvailable":{"name":"statusAvailable","abstract":"

    @abstract Indicates if the status (ON/OFF) can be set remotely.","parent_name":"SDLLightCapabilities"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(py)appName":{"name":"appName","abstract":"

    The full name of the app to that the configuration should be updated to.

    ","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(py)shortAppName":{"name":"shortAppName","abstract":"

    An abbrevited application name that will be used on the app launching screen if the full one would be truncated.

    ","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(py)ttsName":{"name":"ttsName","abstract":"

    A Text to Speech String for voice recognition of the mobile application name.

    ","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(py)voiceRecognitionCommandNames":{"name":"voiceRecognitionCommandNames","abstract":"

    Additional voice recognition commands. May not interfere with any other app name or global commands.

    ","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(im)initWithAppName:shortAppName:ttsName:voiceRecognitionCommandNames:":{"name":"-initWithAppName:shortAppName:ttsName:voiceRecognitionCommandNames:","abstract":"

    Initializes and returns a newly allocated lifecycle configuration update object with the specified app data.","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(cm)defaultConfigurationWithAppName:appId:":{"name":"+defaultConfigurationWithAppName:appId:","abstract":"

    A production configuration that runs using IAP. Additional functionality should be customized on the properties.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(cm)defaultConfigurationWithAppName:fullAppId:":{"name":"+defaultConfigurationWithAppName:fullAppId:","abstract":"

    A production configuration that runs using IAP. Additional functionality should be customized on the properties.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(cm)debugConfigurationWithAppName:appId:ipAddress:port:":{"name":"+debugConfigurationWithAppName:appId:ipAddress:port:","abstract":"

    A debug configuration that runs using TCP. Additional functionality should be customized on the properties.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(cm)debugConfigurationWithAppName:fullAppId:ipAddress:port:":{"name":"+debugConfigurationWithAppName:fullAppId:ipAddress:port:","abstract":"

    A debug configuration that runs using TCP. Additional functionality should be customized on the properties.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)tcpDebugMode":{"name":"tcpDebugMode","abstract":"

    Whether or not debug mode is enabled

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)tcpDebugIPAddress":{"name":"tcpDebugIPAddress","abstract":"

    The ip address at which the library will look for a server

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)tcpDebugPort":{"name":"tcpDebugPort","abstract":"

    The port at which the library will look for a server

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)appName":{"name":"appName","abstract":"

    The full name of the app

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)appId":{"name":"appId","abstract":"

    The app id. This must be the same as the app id received from the SDL developer portal.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)fullAppId":{"name":"fullAppId","abstract":"

    The full app id. This must be the same as the full app id received from the SDL developer portal.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)resumeHash":{"name":"resumeHash","abstract":"

    A hash id which should be passed to the remote system in the RegisterAppInterface

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)isMedia":{"name":"isMedia","abstract":"

    This is an automatically set based on the app type

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)appType":{"name":"appType","abstract":"

    The application type

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)additionalAppTypes":{"name":"additionalAppTypes","abstract":"

    Additional application types beyond appType

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)language":{"name":"language","abstract":"

    The default language to use

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)languagesSupported":{"name":"languagesSupported","abstract":"

    An array of all the supported languages

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)appIcon":{"name":"appIcon","abstract":"

    The application icon to be used on an app launching screen

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)shortAppName":{"name":"shortAppName","abstract":"

    An abbrevited application name that will be used on the app launching screen if the full one would be truncated

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)ttsName":{"name":"ttsName","abstract":"

    A Text to Speech String for voice recognition of the mobile application name.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)voiceRecognitionCommandNames":{"name":"voiceRecognitionCommandNames","abstract":"

    Additional voice recognition commands. May not interfere with any other app name or global commands.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)dayColorScheme":{"name":"dayColorScheme","abstract":"

    The color scheme to use when the head unit is in a light / day situation.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)nightColorScheme":{"name":"nightColorScheme","abstract":"

    The color scheme to use when the head unit is in a dark / night situation.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)minimumProtocolVersion":{"name":"minimumProtocolVersion","abstract":"

    The minimum protocol version that will be permitted to connect. This defaults to 1.0.0. If the protocol version of the head unit connected is below this version, the app will disconnect with an EndService protocol message and will not register.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)minimumRPCVersion":{"name":"minimumRPCVersion","abstract":"

    The minimum RPC version that will be permitted to connect. This defaults to 1.0.0. If the RPC version of the head unit connected is below this version, an UnregisterAppInterface will be sent.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(im)initWithLanguage:layout:keypressMode:limitedCharacterList:autoCompleteText:":{"name":"-initWithLanguage:layout:keypressMode:limitedCharacterList:autoCompleteText:","abstract":"

    Undocumented

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)language":{"name":"language","abstract":"

    The keyboard language

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)keyboardLayout":{"name":"keyboardLayout","abstract":"

    Desired keyboard layout

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)keypressMode":{"name":"keypressMode","abstract":"

    Desired keypress mode.

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)limitedCharacterList":{"name":"limitedCharacterList","abstract":"

    Array of keyboard characters to enable. All omitted characters will be greyed out (disabled) on the keyboard. If omitted, the entire keyboard will be enabled.

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)autoCompleteText":{"name":"autoCompleteText","abstract":"

    Allows an app to prepopulate the text field with a suggested or completed entry as the user types

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLImageResolution.html#/c:objc(cs)SDLImageResolution(py)resolutionWidth":{"name":"resolutionWidth","abstract":"

    Resolution width

    ","parent_name":"SDLImageResolution"},"Classes/SDLImageResolution.html#/c:objc(cs)SDLImageResolution(py)resolutionHeight":{"name":"resolutionHeight","abstract":"

    Resolution height

    ","parent_name":"SDLImageResolution"},"Classes/SDLImageResolution.html#/c:objc(cs)SDLImageResolution(im)initWithWidth:height:":{"name":"-initWithWidth:height:","abstract":"

    Undocumented

    ","parent_name":"SDLImageResolution"},"Classes/SDLImageField.html#/c:objc(cs)SDLImageField(py)name":{"name":"name","abstract":"

    The name that identifies the field.

    ","parent_name":"SDLImageField"},"Classes/SDLImageField.html#/c:objc(cs)SDLImageField(py)imageTypeSupported":{"name":"imageTypeSupported","abstract":"

    The image types that are supported in this field.

    ","parent_name":"SDLImageField"},"Classes/SDLImageField.html#/c:objc(cs)SDLImageField(py)imageResolution":{"name":"imageResolution","abstract":"

    The image resolution of this field

    ","parent_name":"SDLImageField"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithName:ofType:":{"name":"-initWithName:ofType:","abstract":"

    Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithName:ofType:isTemplate:":{"name":"-initWithName:ofType:isTemplate:","abstract":"

    Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithName:":{"name":"-initWithName:","abstract":"

    Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithName:isTemplate:":{"name":"-initWithName:isTemplate:","abstract":"

    Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithStaticImageValue:":{"name":"-initWithStaticImageValue:","abstract":"

    Convenience init for displaying a static image. Static images are already on-board SDL Core and can be used by providing the image’s value.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithStaticIconName:":{"name":"-initWithStaticIconName:","abstract":"

    Convenience init for displaying a static image. Static images are already on-board SDL Core and can be used by providing the image’s value.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(py)value":{"name":"value","abstract":"

    The static hex icon value or the binary image file name identifier (sent by SDLPutFile)

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(py)imageType":{"name":"imageType","abstract":"

    Describes whether the image is static or dynamic

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(py)isTemplate":{"name":"isTemplate","abstract":"

    Indicates that this image can be (re)colored by the HMI to best fit the current color scheme.

    ","parent_name":"SDLImage"},"Classes/SDLHeadLampStatus.html#/c:objc(cs)SDLHeadLampStatus(py)lowBeamsOn":{"name":"lowBeamsOn","abstract":"

    Low beams are on or off.

    ","parent_name":"SDLHeadLampStatus"},"Classes/SDLHeadLampStatus.html#/c:objc(cs)SDLHeadLampStatus(py)highBeamsOn":{"name":"highBeamsOn","abstract":"

    High beams are on or off

    ","parent_name":"SDLHeadLampStatus"},"Classes/SDLHeadLampStatus.html#/c:objc(cs)SDLHeadLampStatus(py)ambientLightSensorStatus":{"name":"ambientLightSensorStatus","abstract":"

    Status of the ambient light senser

    ","parent_name":"SDLHeadLampStatus"},"Classes/SDLHapticRect.html#/c:objc(cs)SDLHapticRect(im)initWithId:rect:":{"name":"-initWithId:rect:","abstract":"

    Undocumented

    ","parent_name":"SDLHapticRect"},"Classes/SDLHapticRect.html#/c:objc(cs)SDLHapticRect(py)id":{"name":"id","abstract":"

    A user control spatial identifier

    ","parent_name":"SDLHapticRect"},"Classes/SDLHapticRect.html#/c:objc(cs)SDLHapticRect(py)rect":{"name":"rect","abstract":"

    The position of the haptic rectangle to be highlighted. The center of this rectangle will be touched when a press occurs.

    ","parent_name":"SDLHapticRect"},"Classes/SDLHMISettingsControlData.html#/c:objc(cs)SDLHMISettingsControlData(im)initWithDisplaymode:temperatureUnit:distanceUnit:":{"name":"-initWithDisplaymode:temperatureUnit:distanceUnit:","abstract":"

    Constructs a newly allocated SDLHMISettingsControlCapabilities object with given parameters

    ","parent_name":"SDLHMISettingsControlData"},"Classes/SDLHMISettingsControlData.html#/c:objc(cs)SDLHMISettingsControlData(py)displayMode":{"name":"displayMode","abstract":"

    @abstract Display the Display Mode used HMI setting

    ","parent_name":"SDLHMISettingsControlData"},"Classes/SDLHMISettingsControlData.html#/c:objc(cs)SDLHMISettingsControlData(py)temperatureUnit":{"name":"temperatureUnit","abstract":"

    @abstract Display the temperature unit used HMI setting

    ","parent_name":"SDLHMISettingsControlData"},"Classes/SDLHMISettingsControlData.html#/c:objc(cs)SDLHMISettingsControlData(py)distanceUnit":{"name":"distanceUnit","abstract":"

    @abstract Display the distance unit used HMI setting

    ","parent_name":"SDLHMISettingsControlData"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(im)initWithModuleName:":{"name":"-initWithModuleName:","abstract":"

    Constructs a newly allocated SDLHMISettingsControlCapabilities object with moduleName

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(im)initWithModuleName:distanceUnitAvailable:temperatureUnitAvailable:displayModeUnitAvailable:":{"name":"-initWithModuleName:distanceUnitAvailable:temperatureUnitAvailable:displayModeUnitAvailable:","abstract":"

    Constructs a newly allocated SDLHMISettingsControlCapabilities object with given parameters

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    @abstract The short friendly name of the hmi setting module.","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(py)distanceUnitAvailable":{"name":"distanceUnitAvailable","abstract":"

    @abstract Availability of the control of distance unit.

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(py)temperatureUnitAvailable":{"name":"temperatureUnitAvailable","abstract":"

    @abstract Availability of the control of temperature unit.

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(py)displayModeUnitAvailable":{"name":"displayModeUnitAvailable","abstract":"

    @abstract Availability of the control of HMI display mode.

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMIPermissions.html#/c:objc(cs)SDLHMIPermissions(py)allowed":{"name":"allowed","abstract":"

    A set of all HMI levels that are permitted for this given RPC

    ","parent_name":"SDLHMIPermissions"},"Classes/SDLHMIPermissions.html#/c:objc(cs)SDLHMIPermissions(py)userDisallowed":{"name":"userDisallowed","abstract":"

    A set of all HMI levels that are prohibited for this given RPC

    ","parent_name":"SDLHMIPermissions"},"Classes/SDLHMICapabilities.html#/c:objc(cs)SDLHMICapabilities(py)navigation":{"name":"navigation","abstract":"

    Availability of built in Nav. True: Available, False: Not Available

    ","parent_name":"SDLHMICapabilities"},"Classes/SDLHMICapabilities.html#/c:objc(cs)SDLHMICapabilities(py)phoneCall":{"name":"phoneCall","abstract":"

    Availability of built in phone. True: Available, False: Not Available

    ","parent_name":"SDLHMICapabilities"},"Classes/SDLHMICapabilities.html#/c:objc(cs)SDLHMICapabilities(py)videoStreaming":{"name":"videoStreaming","abstract":"

    Availability of built in video streaming. True: Available, False: Not Available

    ","parent_name":"SDLHMICapabilities"},"Classes/SDLGetWayPointsResponse.html#/c:objc(cs)SDLGetWayPointsResponse(py)waypoints":{"name":"waypoints","abstract":"

    Provides additional human readable info regarding the result.

    ","parent_name":"SDLGetWayPointsResponse"},"Classes/SDLGetWayPoints.html#/c:objc(cs)SDLGetWayPoints(im)initWithType:":{"name":"-initWithType:","abstract":"

    Undocumented

    ","parent_name":"SDLGetWayPoints"},"Classes/SDLGetWayPoints.html#/c:objc(cs)SDLGetWayPoints(py)waypointType":{"name":"waypointType","abstract":"

    To request for either the destination","parent_name":"SDLGetWayPoints"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)gps":{"name":"gps","abstract":"

    The car current GPS coordinates

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)speed":{"name":"speed","abstract":"

    The vehicle speed in kilometers per hour

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)rpm":{"name":"rpm","abstract":"

    The number of revolutions per minute of the engine.

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)fuelLevel":{"name":"fuelLevel","abstract":"

    The fuel level in the tank (percentage)

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    The fuel level state

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)fuelRange":{"name":"fuelRange","abstract":"

    The estimate range in KM the vehicle can travel based on fuel level and consumption

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    The instantaneous fuel consumption in microlitres

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)externalTemperature":{"name":"externalTemperature","abstract":"

    The external temperature in degrees celsius.

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)vin":{"name":"vin","abstract":"

    The Vehicle Identification Number

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)prndl":{"name":"prndl","abstract":"

    The current gear shift state of the user’s vehicle

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)tirePressure":{"name":"tirePressure","abstract":"

    The current pressure warnings for the user’s vehicle

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)odometer":{"name":"odometer","abstract":"

    Odometer reading in km

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)beltStatus":{"name":"beltStatus","abstract":"

    The status of the seat belts

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)bodyInformation":{"name":"bodyInformation","abstract":"

    The body information including power modes

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)deviceStatus":{"name":"deviceStatus","abstract":"

    The IVI system status including signal and battery strength

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)driverBraking":{"name":"driverBraking","abstract":"

    The status of the brake pedal

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)wiperStatus":{"name":"wiperStatus","abstract":"

    The status of the wipers

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)headLampStatus":{"name":"headLampStatus","abstract":"

    Status of the head lamps

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)engineOilLife":{"name":"engineOilLife","abstract":"

    The estimated percentage (0% - 100%) of remaining oil life of the engine

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)engineTorque":{"name":"engineTorque","abstract":"

    Torque value for engine (in Nm) on non-diesel variants

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    Accelerator pedal position (percentage depressed)

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    Current angle of the steering wheel (in deg)

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)eCallInfo":{"name":"eCallInfo","abstract":"

    Emergency Call notification and confirmation data

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)airbagStatus":{"name":"airbagStatus","abstract":"

    The status of the air bags

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    Information related to an emergency event (and if it occurred)

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    The status modes of the cluster

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)myKey":{"name":"myKey","abstract":"

    Information related to the MyKey feature

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    The status of the electronic parking brake

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)turnSignal":{"name":"turnSignal","abstract":"

    The status of the turn signal

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    The cloud app vehicle ID

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:vin:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:vin:wiperStatus:","abstract":"

    Convenience init for getting data for all possible vehicle data items.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:vin:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:vin:wiperStatus:","abstract":"

    Convenience init for getting data for all possible vehicle data items.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:vin:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:vin:wiperStatus:","abstract":"

    Convenience init for getting data for all possible vehicle data items.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)gps":{"name":"gps","abstract":"

    A boolean value. If true, requests GPS data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)speed":{"name":"speed","abstract":"

    A boolean value. If true, requests Speed data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)rpm":{"name":"rpm","abstract":"

    A boolean value. If true, requests RPM data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)fuelLevel":{"name":"fuelLevel","abstract":"

    A boolean value. If true, requests Fuel Level data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    A boolean value. If true, requests Fuel Level State data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)fuelRange":{"name":"fuelRange","abstract":"

    A boolean value. If true, requests Fuel Range data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    A boolean value. If true, requests Instant Fuel Consumption data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)externalTemperature":{"name":"externalTemperature","abstract":"

    A boolean value. If true, requests External Temperature data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)vin":{"name":"vin","abstract":"

    A boolean value. If true, requests the Vehicle Identification Number.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)prndl":{"name":"prndl","abstract":"

    A boolean value. If true, requests PRNDL data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)tirePressure":{"name":"tirePressure","abstract":"

    A boolean value. If true, requests Tire Pressure data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)odometer":{"name":"odometer","abstract":"

    A boolean value. If true, requests Odometer data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)beltStatus":{"name":"beltStatus","abstract":"

    A boolean value. If true, requests Belt Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)bodyInformation":{"name":"bodyInformation","abstract":"

    A boolean value. If true, requests Body Information data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)deviceStatus":{"name":"deviceStatus","abstract":"

    A boolean value. If true, requests Device Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)driverBraking":{"name":"driverBraking","abstract":"

    A boolean value. If true, requests Driver Braking data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)wiperStatus":{"name":"wiperStatus","abstract":"

    A boolean value. If true, requests Wiper Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)headLampStatus":{"name":"headLampStatus","abstract":"

    A boolean value. If true, requests Head Lamp Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)engineOilLife":{"name":"engineOilLife","abstract":"

    A boolean value. If true, requests Engine Oil Life data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)engineTorque":{"name":"engineTorque","abstract":"

    A boolean value. If true, requests Engine Torque data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    A boolean value. If true, requests Acc Pedal Position data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    A boolean value. If true, requests Steering Wheel Angle data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)eCallInfo":{"name":"eCallInfo","abstract":"

    A boolean value. If true, requests Emergency Call Info data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)airbagStatus":{"name":"airbagStatus","abstract":"

    A boolean value. If true, requests Air Bag Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    A boolean value. If true, requests Emergency Event (if it occurred) data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    A boolean value. If true, requests Cluster Mode Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)myKey":{"name":"myKey","abstract":"

    A boolean value. If true, requests MyKey data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    A boolean value. If true, requests Electronic Parking Brake status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)turnSignal":{"name":"turnSignal","abstract":"

    A boolean value. If true, requests Turn Signal data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    A boolean value. If true, requests the Cloud App Vehicle ID.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetSystemCapabilityResponse.html#/c:objc(cs)SDLGetSystemCapabilityResponse(py)systemCapability":{"name":"systemCapability","abstract":"

    The requested system capability, of the type that was sent in the request

    ","parent_name":"SDLGetSystemCapabilityResponse"},"Classes/SDLGetSystemCapability.html#/c:objc(cs)SDLGetSystemCapability(im)initWithType:":{"name":"-initWithType:","abstract":"

    Convenience init

    ","parent_name":"SDLGetSystemCapability"},"Classes/SDLGetSystemCapability.html#/c:objc(cs)SDLGetSystemCapability(im)initWithType:subscribe:":{"name":"-initWithType:subscribe:","abstract":"

    Convenience init

    ","parent_name":"SDLGetSystemCapability"},"Classes/SDLGetSystemCapability.html#/c:objc(cs)SDLGetSystemCapability(py)systemCapabilityType":{"name":"systemCapabilityType","abstract":"

    The type of system capability to get more information on

    ","parent_name":"SDLGetSystemCapability"},"Classes/SDLGetSystemCapability.html#/c:objc(cs)SDLGetSystemCapability(py)subscribe":{"name":"subscribe","abstract":"

    Flag to subscribe to updates of the supplied service capability type. If true, the requester will be subscribed. If false, the requester will not be subscribed and be removed as a subscriber if it was previously subscribed.

    ","parent_name":"SDLGetSystemCapability"},"Classes/SDLGetInteriorVehicleDataResponse.html#/c:objc(cs)SDLGetInteriorVehicleDataResponse(py)moduleData":{"name":"moduleData","abstract":"

    The requested data

    ","parent_name":"SDLGetInteriorVehicleDataResponse"},"Classes/SDLGetInteriorVehicleDataResponse.html#/c:objc(cs)SDLGetInteriorVehicleDataResponse(py)isSubscribed":{"name":"isSubscribed","abstract":"

    It is a conditional-mandatory parameter: must be returned in case subscribe parameter was present in the related request.

    ","parent_name":"SDLGetInteriorVehicleDataResponse"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(im)initWithModuleType:":{"name":"-initWithModuleType:","abstract":"

    Undocumented

    ","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(im)initAndSubscribeToModuleType:":{"name":"-initAndSubscribeToModuleType:","abstract":"

    Undocumented

    ","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(im)initAndUnsubscribeToModuleType:":{"name":"-initAndUnsubscribeToModuleType:","abstract":"

    Undocumented

    ","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(py)moduleType":{"name":"moduleType","abstract":"

    The type of a RC module to retrieve module data from the vehicle.

    ","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(py)subscribe":{"name":"subscribe","abstract":"

    If subscribe is true, the head unit will register onInteriorVehicleData notifications for the requested moduelType.","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(im)initWithOffset:length:fileType:crc:":{"name":"-initWithOffset:length:fileType:crc:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(py)offset":{"name":"offset","abstract":"

    Optional offset in bytes for resuming partial data chunks.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(py)length":{"name":"length","abstract":"

    Optional length in bytes for resuming partial data chunks. If offset is set to 0, then length is the total length of the file to be downloaded.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(py)fileType":{"name":"fileType","abstract":"

    File type that is being sent in response.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(py)crc":{"name":"crc","abstract":"

    Additional CRC32 checksum to protect data integrity up to 512 Mbits.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(im)initWithFileName:":{"name":"-initWithFileName:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(im)initWithFileName:appServiceId:fileType:":{"name":"-initWithFileName:appServiceId:fileType:","abstract":"

    Convenience init for sending a small file.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(im)initWithFileName:appServiceId:fileType:offset:length:":{"name":"-initWithFileName:appServiceId:fileType:offset:length:","abstract":"

    Convenience init for sending a large file in multiple data chunks.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)fileName":{"name":"fileName","abstract":"

    File name that should be retrieved.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)appServiceId":{"name":"appServiceId","abstract":"

    ID of the service that should have uploaded the requested file.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)fileType":{"name":"fileType","abstract":"

    Selected file type.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)offset":{"name":"offset","abstract":"

    Optional offset in bytes for resuming partial data chunks.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)length":{"name":"length","abstract":"

    Optional length in bytes for resuming partial data chunks. If offset is set to 0, then length is the total length of the file to be downloaded.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetDTCsResponse.html#/c:objc(cs)SDLGetDTCsResponse(py)ecuHeader":{"name":"ecuHeader","abstract":"

    2 byte ECU Header for DTC response (as defined in VHR_Layout_Specification_DTCs.pdf)

    ","parent_name":"SDLGetDTCsResponse"},"Classes/SDLGetDTCsResponse.html#/c:objc(cs)SDLGetDTCsResponse(py)dtc":{"name":"dtc","abstract":"

    Array of all reported DTCs on module (ecuHeader contains information if list is truncated). Each DTC is represented by 4 bytes (3 bytes of data and 1 byte status as defined in VHR_Layout_Specification_DTCs.pdf).

    ","parent_name":"SDLGetDTCsResponse"},"Classes/SDLGetDTCs.html#/c:objc(cs)SDLGetDTCs(im)initWithECUName:":{"name":"-initWithECUName:","abstract":"

    Undocumented

    ","parent_name":"SDLGetDTCs"},"Classes/SDLGetDTCs.html#/c:objc(cs)SDLGetDTCs(im)initWithECUName:mask:":{"name":"-initWithECUName:mask:","abstract":"

    Undocumented

    ","parent_name":"SDLGetDTCs"},"Classes/SDLGetDTCs.html#/c:objc(cs)SDLGetDTCs(py)ecuName":{"name":"ecuName","abstract":"

    a name of the module to receive the DTC form","parent_name":"SDLGetDTCs"},"Classes/SDLGetDTCs.html#/c:objc(cs)SDLGetDTCs(py)dtcMask":{"name":"dtcMask","abstract":"

    DTC Mask Byte to be sent in diagnostic request to module. NSNumber* dtcMask Minvalue:0; Maxvalue:255

    ","parent_name":"SDLGetDTCs"},"Classes/SDLGetCloudAppPropertiesResponse.html#/c:objc(cs)SDLGetCloudAppPropertiesResponse(im)initWithProperties:":{"name":"-initWithProperties:","abstract":"

    Convenience init.

    ","parent_name":"SDLGetCloudAppPropertiesResponse"},"Classes/SDLGetCloudAppPropertiesResponse.html#/c:objc(cs)SDLGetCloudAppPropertiesResponse(py)properties":{"name":"properties","abstract":"

    The requested cloud application properties.

    ","parent_name":"SDLGetCloudAppPropertiesResponse"},"Classes/SDLGetCloudAppProperties.html#/c:objc(cs)SDLGetCloudAppProperties(im)initWithAppID:":{"name":"-initWithAppID:","abstract":"

    Convenience init.

    ","parent_name":"SDLGetCloudAppProperties"},"Classes/SDLGetCloudAppProperties.html#/c:objc(cs)SDLGetCloudAppProperties(py)appID":{"name":"appID","abstract":"

    The id of the cloud app.

    ","parent_name":"SDLGetCloudAppProperties"},"Classes/SDLGetAppServiceDataResponse.html#/c:objc(cs)SDLGetAppServiceDataResponse(im)initWithAppServiceData:":{"name":"-initWithAppServiceData:","abstract":"

    Convenience init.

    ","parent_name":"SDLGetAppServiceDataResponse"},"Classes/SDLGetAppServiceDataResponse.html#/c:objc(cs)SDLGetAppServiceDataResponse(py)serviceData":{"name":"serviceData","abstract":"

    Contains all the current data of the app service.

    ","parent_name":"SDLGetAppServiceDataResponse"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(im)initWithAppServiceType:":{"name":"-initWithAppServiceType:","abstract":"

    Convenience init for service type.

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(im)initAndSubscribeToAppServiceType:":{"name":"-initAndSubscribeToAppServiceType:","abstract":"

    Convenience init for subscribing to a service type.

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(im)initAndUnsubscribeToAppServiceType:":{"name":"-initAndUnsubscribeToAppServiceType:","abstract":"

    Convenience init for unsubscribing to a service type

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(py)serviceType":{"name":"serviceType","abstract":"

    The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(py)subscribe":{"name":"subscribe","abstract":"

    If true, the consumer is requesting to subscribe to all future updates from the service publisher. If false, the consumer doesn’t wish to subscribe and should be unsubscribed if it was previously subscribed.

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)longitudeDegrees":{"name":"longitudeDegrees","abstract":"

    longitude degrees

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)latitudeDegrees":{"name":"latitudeDegrees","abstract":"

    latitude degrees

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcYear":{"name":"utcYear","abstract":"

    utc year

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcMonth":{"name":"utcMonth","abstract":"

    utc month

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcDay":{"name":"utcDay","abstract":"

    utc day

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcHours":{"name":"utcHours","abstract":"

    utc hours

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcMinutes":{"name":"utcMinutes","abstract":"

    utc minutes

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcSeconds":{"name":"utcSeconds","abstract":"

    utc seconds

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)compassDirection":{"name":"compassDirection","abstract":"

    Optional, Potential Compass Directions

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)pdop":{"name":"pdop","abstract":"

    The 3D positional dilution of precision.

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)hdop":{"name":"hdop","abstract":"

    The horizontal dilution of precision

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)vdop":{"name":"vdop","abstract":"

    the vertical dilution of precision

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)actual":{"name":"actual","abstract":"

    What the coordinates are based on

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)satellites":{"name":"satellites","abstract":"

    The number of satellites in view

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)dimension":{"name":"dimension","abstract":"

    The supported dimensions of the GPS

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)altitude":{"name":"altitude","abstract":"

    Altitude in meters

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)heading":{"name":"heading","abstract":"

    Heading based on the GPS data.

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)speed":{"name":"speed","abstract":"

    Speed in KPH

    ","parent_name":"SDLGPSData"},"Classes/SDLFunctionID.html#/c:objc(cs)SDLFunctionID(cm)sharedInstance":{"name":"+sharedInstance","abstract":"

    Undocumented

    ","parent_name":"SDLFunctionID"},"Classes/SDLFunctionID.html#/c:objc(cs)SDLFunctionID(im)functionNameForId:":{"name":"-functionNameForId:","abstract":"

    Undocumented

    ","parent_name":"SDLFunctionID"},"Classes/SDLFunctionID.html#/c:objc(cs)SDLFunctionID(im)functionIdForName:":{"name":"-functionIdForName:","abstract":"

    Undocumented

    ","parent_name":"SDLFunctionID"},"Classes/SDLFuelRange.html#/c:objc(cs)SDLFuelRange(py)type":{"name":"type","abstract":"

    The vehicle’s fuel type

    ","parent_name":"SDLFuelRange"},"Classes/SDLFuelRange.html#/c:objc(cs)SDLFuelRange(py)range":{"name":"range","abstract":"

    The estimate range in KM the vehicle can travel based on fuel level and consumption.

    ","parent_name":"SDLFuelRange"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(py)artworkRetryCount":{"name":"artworkRetryCount","abstract":"

    Defines the number of times the file manager will attempt to reupload SDLArtwork files in the event of a failed upload to Core.

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(py)fileRetryCount":{"name":"fileRetryCount","abstract":"

    Defines the number of times the file manager will attempt to reupload general SDLFiles in the event of a failed upload to Core.

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(cm)defaultConfiguration":{"name":"+defaultConfiguration","abstract":"

    Creates a default file manager configuration.

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(im)init":{"name":"-init","abstract":"

    Use defaultConfiguration instead

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(im)initWithArtworkRetryCount:fileRetryCount:":{"name":"-initWithArtworkRetryCount:fileRetryCount:","abstract":"

    Creates a file manager configuration with customized upload retry counts.

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)remoteFileNames":{"name":"remoteFileNames","abstract":"

    A set of all names of files known on the remote head unit. Known files can be used or deleted on the remote system.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)bytesAvailable":{"name":"bytesAvailable","abstract":"

    The number of bytes still available for files for this app.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)currentState":{"name":"currentState","abstract":"

    The state of the file manager.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)pendingTransactions":{"name":"pendingTransactions","abstract":"

    The currently pending transactions (Upload, Delete, and List Files) in the file manager

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)suspended":{"name":"suspended","abstract":"

    Whether or not the file manager is suspended. If suspended, the file manager can continue to queue uploads and deletes, but will not actually perform any of those until it is no longer suspended. This can be used for throttling down the file manager if other, important operations are taking place over the accessory connection.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)init":{"name":"-init","abstract":"

    Initialize the class…or not, since this method is unavailable. Dependencies must be injected using initWithConnectionManager:

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)initWithConnectionManager:":{"name":"-initWithConnectionManager:","abstract":"

    Creates a new file manager with a specified connection manager

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)initWithConnectionManager:configuration:":{"name":"-initWithConnectionManager:configuration:","abstract":"

    Creates a new file manager with a specified connection manager and configuration

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)startWithCompletionHandler:":{"name":"-startWithCompletionHandler:","abstract":"

    The manager stars up and attempts to fetch its initial list and transfer initial files.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)stop":{"name":"-stop","abstract":"

    Cancels all file manager operations and deletes all associated data.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)hasUploadedFile:":{"name":"-hasUploadedFile:","abstract":"

    Check if the remote system contains a file

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)deleteRemoteFileWithName:completionHandler:":{"name":"-deleteRemoteFileWithName:completionHandler:","abstract":"

    Delete a file stored on the remote system

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)deleteRemoteFilesWithNames:completionHandler:":{"name":"-deleteRemoteFilesWithNames:completionHandler:","abstract":"

    Deletes an array of files on the remote file system. The files are deleted in the order in which they are added to the array, with the first file to be deleted at index 0. The delete queue is sequential, meaning that once a delete request is sent to Core, the queue waits until a response is received from Core before the next the next delete request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadFile:completionHandler:":{"name":"-uploadFile:completionHandler:","abstract":"

    Upload a file to the remote file system. If a file with the [SDLFile name] already exists, this will overwrite that file. If you do not want that to happen, check remoteFileNames before uploading, or change allowOverwrite to NO.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadFiles:progressHandler:completionHandler:":{"name":"-uploadFiles:progressHandler:completionHandler:","abstract":"

    Uploads an array of files to the remote file system. The files will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadFiles:completionHandler:":{"name":"-uploadFiles:completionHandler:","abstract":"

    Uploads an array of files to the remote file system. The files will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadArtwork:completionHandler:":{"name":"-uploadArtwork:completionHandler:","abstract":"

    Uploads an artwork file to the remote file system and returns the name of the uploaded artwork once completed. If an artwork with the same name is already on the remote system, the artwork is not uploaded and the artwork name is simply returned.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadArtworks:completionHandler:":{"name":"-uploadArtworks:completionHandler:","abstract":"

    Uploads an array of artworks to the remote file system. The artworks will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadArtworks:progressHandler:completionHandler:":{"name":"-uploadArtworks:progressHandler:completionHandler:","abstract":"

    Uploads an array of artworks to the remote file system. The artworks will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(cm)temporaryFileDirectory":{"name":"+temporaryFileDirectory","abstract":"

    A URL to the directory where temporary files are stored. When an SDLFile is created with NSData, it writes to a temporary file until the file manager finishes uploading it.

    ","parent_name":"SDLFileManager"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)persistent":{"name":"persistent","abstract":"

    Whether or not the file should persist on disk between car ignition cycles.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)overwrite":{"name":"overwrite","abstract":"

    Whether or not the file should overwrite an existing file on the remote disk with the same name.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)name":{"name":"name","abstract":"

    The name the file should be stored under on the remote disk. This is how the file will be referenced in all later calls.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)fileURL":{"name":"fileURL","abstract":"

    The url the local file is stored at while waiting to push it to the remote system. If the data has not been passed to the file URL, this will be nil.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)data":{"name":"data","abstract":"

    The binary data of the SDLFile. If initialized with data, this will be a relatively quick call, but if initialized with a file URL, this is a rather expensive call the first time. The data will be cached in RAM after the first call.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)fileSize":{"name":"fileSize","abstract":"

    The size of the binary data of the SDLFile.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)fileType":{"name":"fileType","abstract":"

    The system will attempt to determine the type of file that you have passed in. It will default to BINARY if it does not recognize the file type or the file type is not supported by SDL.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)inputStream":{"name":"inputStream","abstract":"

    A stream to pull binary data from a SDLFile. The stream only pulls required data from the file on disk or in memory. This reduces memory usage while uploading a large file to the remote system as each chunk of data can be released immediately after it is uploaded.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)isStaticIcon":{"name":"isStaticIcon","abstract":"

    Describes whether or not this file is represented by static icon data. The head unit will present its representation of the static icon concept when sent this data.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(im)initWithFileURL:name:persistent:":{"name":"-initWithFileURL:name:persistent:","abstract":"

    The designated initializer for an SDL File. The only major property that is not set using this is overwrite, which defaults to NO.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(cm)persistentFileAtFileURL:name:":{"name":"+persistentFileAtFileURL:name:","abstract":"

    Create an SDL file using a local file URL.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(cm)fileAtFileURL:name:":{"name":"+fileAtFileURL:name:","abstract":"

    Create an SDL file using a local file URL.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(im)initWithData:name:fileExtension:persistent:":{"name":"-initWithData:name:fileExtension:persistent:","abstract":"

    Create an SDL file using raw data. It is strongly preferred to pass a file URL instead of data, as it is currently held in memory until the file is sent.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(cm)persistentFileWithData:name:fileExtension:":{"name":"+persistentFileWithData:name:fileExtension:","abstract":"

    Create an SDL file using raw data. It is strongly preferred to pass a file URL instead of data, as it is currently held in memory until the file is sent.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(cm)fileWithData:name:fileExtension:":{"name":"+fileWithData:name:fileExtension:","abstract":"

    Create an SDL file using raw data. It is strongly preferred to pass a file URL instead of data, as it is currently held in memory until the file is sent.

    ","parent_name":"SDLFile"},"Classes/SDLEqualizerSettings.html#/c:objc(cs)SDLEqualizerSettings(im)initWithChannelId:channelSetting:":{"name":"-initWithChannelId:channelSetting:","abstract":"

    Undocumented

    ","parent_name":"SDLEqualizerSettings"},"Classes/SDLEqualizerSettings.html#/c:objc(cs)SDLEqualizerSettings(py)channelName":{"name":"channelName","abstract":"

    @abstract Read-only channel / frequency name","parent_name":"SDLEqualizerSettings"},"Classes/SDLEqualizerSettings.html#/c:objc(cs)SDLEqualizerSettings(py)channelSetting":{"name":"channelSetting","abstract":"

    @abstract Reflects the setting, from 0%-100%.

    ","parent_name":"SDLEqualizerSettings"},"Classes/SDLEqualizerSettings.html#/c:objc(cs)SDLEqualizerSettings(py)channelId":{"name":"channelId","abstract":"

    @abstract id of the channel.

    ","parent_name":"SDLEqualizerSettings"},"Classes/SDLEncodedSyncPData.html#/c:objc(cs)SDLEncodedSyncPData(py)data":{"name":"data","abstract":"

    Contains base64 encoded string of SyncP packets.

    ","parent_name":"SDLEncodedSyncPData"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)emergencyEventType":{"name":"emergencyEventType","abstract":"

    References signal VedsEvntType_D_Ltchd. See EmergencyEventType.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)fuelCutoffStatus":{"name":"fuelCutoffStatus","abstract":"

    References signal RCM_FuelCutoff. See FuelCutoffStatus.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)rolloverEvent":{"name":"rolloverEvent","abstract":"

    References signal VedsEvntRoll_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)maximumChangeVelocity":{"name":"maximumChangeVelocity","abstract":"

    References signal VedsMaxDeltaV_D_Ltchd. Change in velocity in KPH.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)multipleEvents":{"name":"multipleEvents","abstract":"

    References signal VedsMultiEvnt_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLECallInfo.html#/c:objc(cs)SDLECallInfo(py)eCallNotificationStatus":{"name":"eCallNotificationStatus","abstract":"

    References signal eCallNotification_4A. See VehicleDataNotificationStatus.

    ","parent_name":"SDLECallInfo"},"Classes/SDLECallInfo.html#/c:objc(cs)SDLECallInfo(py)auxECallNotificationStatus":{"name":"auxECallNotificationStatus","abstract":"

    References signal eCallNotification. See VehicleDataNotificationStatus.

    ","parent_name":"SDLECallInfo"},"Classes/SDLECallInfo.html#/c:objc(cs)SDLECallInfo(py)eCallConfirmationStatus":{"name":"eCallConfirmationStatus","abstract":"

    References signal eCallConfirmation. See ECallConfirmationStatus.

    ","parent_name":"SDLECallInfo"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)displayType":{"name":"displayType","abstract":"

    The type of display

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)displayName":{"name":"displayName","abstract":"

    The name of the connected display

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)textFields":{"name":"textFields","abstract":"

    An array of SDLTextField structures, each of which describes a field in the HMI which the application can write to using operations such as SDLShow, SDLSetMediaClockTimer, etc.

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)imageFields":{"name":"imageFields","abstract":"

    An array of SDLImageField elements

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)mediaClockFormats":{"name":"mediaClockFormats","abstract":"

    An array of SDLMediaClockFormat elements, defining the valid string formats used in specifying the contents of the media clock field

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)graphicSupported":{"name":"graphicSupported","abstract":"

    The display’s persistent screen supports.

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)templatesAvailable":{"name":"templatesAvailable","abstract":"

    Number of presets the screen supports

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)screenParams":{"name":"screenParams","abstract":"

    A set of all parameters related to a prescribed screen area (e.g. for video / touch input)

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)numCustomPresetsAvailable":{"name":"numCustomPresetsAvailable","abstract":"

    The number of on-screen custom presets available (if any); otherwise omitted

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDialNumber.html#/c:objc(cs)SDLDialNumber(im)initWithNumber:":{"name":"-initWithNumber:","abstract":"

    Undocumented

    ","parent_name":"SDLDialNumber"},"Classes/SDLDialNumber.html#/c:objc(cs)SDLDialNumber(py)number":{"name":"number","abstract":"

    Up to 40 character string representing the phone number. All characters stripped except for ‘0’-‘9’, ‘*’, ‘#’, ‘,’, ‘;’, and ‘+’

    ","parent_name":"SDLDialNumber"},"Classes/SDLDiagnosticMessageResponse.html#/c:objc(cs)SDLDiagnosticMessageResponse(py)messageDataResult":{"name":"messageDataResult","abstract":"

    Array of bytes comprising CAN message result.

    ","parent_name":"SDLDiagnosticMessageResponse"},"Classes/SDLDiagnosticMessage.html#/c:objc(cs)SDLDiagnosticMessage(im)initWithTargetId:length:data:":{"name":"-initWithTargetId:length:data:","abstract":"

    Undocumented

    ","parent_name":"SDLDiagnosticMessage"},"Classes/SDLDiagnosticMessage.html#/c:objc(cs)SDLDiagnosticMessage(py)targetID":{"name":"targetID","abstract":"

    Name of target ECU

    ","parent_name":"SDLDiagnosticMessage"},"Classes/SDLDiagnosticMessage.html#/c:objc(cs)SDLDiagnosticMessage(py)messageLength":{"name":"messageLength","abstract":"

    Length of message (in bytes)

    ","parent_name":"SDLDiagnosticMessage"},"Classes/SDLDiagnosticMessage.html#/c:objc(cs)SDLDiagnosticMessage(py)messageData":{"name":"messageData","abstract":"

    Array of bytes comprising CAN message.

    ","parent_name":"SDLDiagnosticMessage"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)voiceRecOn":{"name":"voiceRecOn","abstract":"

    Indicates whether the voice recognition is on or off

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)btIconOn":{"name":"btIconOn","abstract":"

    Indicates whether the bluetooth connection established

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)callActive":{"name":"callActive","abstract":"

    Indicates whether a call is being active

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)phoneRoaming":{"name":"phoneRoaming","abstract":"

    Indicates whether the phone is in roaming mode

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)textMsgAvailable":{"name":"textMsgAvailable","abstract":"

    Indicates whether a textmessage is available

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)battLevelStatus":{"name":"battLevelStatus","abstract":"

    Battery level status

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)stereoAudioOutputMuted":{"name":"stereoAudioOutputMuted","abstract":"

    The status of the stereo audio output channel

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)monoAudioOutputMuted":{"name":"monoAudioOutputMuted","abstract":"

    The status of the mono audio output channel

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)signalLevelStatus":{"name":"signalLevelStatus","abstract":"

    Signal level status

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)primaryAudioSource":{"name":"primaryAudioSource","abstract":"

    The current primary audio source of SDL (if selected).

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)eCallEventActive":{"name":"eCallEventActive","abstract":"

    Indicates if an emergency call is active

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(cm)currentDevice":{"name":"+currentDevice","abstract":"

    Undocumented

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)hardware":{"name":"hardware","abstract":"

    Device model

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)firmwareRev":{"name":"firmwareRev","abstract":"

    Device firmware version

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)os":{"name":"os","abstract":"

    Device OS

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)osVersion":{"name":"osVersion","abstract":"

    Device OS version

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)carrier":{"name":"carrier","abstract":"

    Device mobile carrier

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)maxNumberRFCOMMPorts":{"name":"maxNumberRFCOMMPorts","abstract":"

    Number of bluetooth RFCOMM ports available.

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeleteSubMenu.html#/c:objc(cs)SDLDeleteSubMenu(im)initWithId:":{"name":"-initWithId:","abstract":"

    Undocumented

    ","parent_name":"SDLDeleteSubMenu"},"Classes/SDLDeleteSubMenu.html#/c:objc(cs)SDLDeleteSubMenu(py)menuID":{"name":"menuID","abstract":"

    the MenuID that identifies the SDLSubMenu to be delete","parent_name":"SDLDeleteSubMenu"},"Classes/SDLDeleteInteractionChoiceSet.html#/c:objc(cs)SDLDeleteInteractionChoiceSet(im)initWithId:":{"name":"-initWithId:","abstract":"

    Undocumented

    ","parent_name":"SDLDeleteInteractionChoiceSet"},"Classes/SDLDeleteInteractionChoiceSet.html#/c:objc(cs)SDLDeleteInteractionChoiceSet(py)interactionChoiceSetID":{"name":"interactionChoiceSetID","abstract":"

    a unique ID that identifies the Choice Set","parent_name":"SDLDeleteInteractionChoiceSet"},"Classes/SDLDeleteFileResponse.html#/c:objc(cs)SDLDeleteFileResponse(py)spaceAvailable":{"name":"spaceAvailable","abstract":"

    The remaining available space for your application to store data on the remote system.

    ","parent_name":"SDLDeleteFileResponse"},"Classes/SDLDeleteFile.html#/c:objc(cs)SDLDeleteFile(im)initWithFileName:":{"name":"-initWithFileName:","abstract":"

    Undocumented

    ","parent_name":"SDLDeleteFile"},"Classes/SDLDeleteFile.html#/c:objc(cs)SDLDeleteFile(py)syncFileName":{"name":"syncFileName","abstract":"

    a file reference name","parent_name":"SDLDeleteFile"},"Classes/SDLDeleteCommand.html#/c:objc(cs)SDLDeleteCommand(im)initWithId:":{"name":"-initWithId:","abstract":"

    Undocumented

    ","parent_name":"SDLDeleteCommand"},"Classes/SDLDeleteCommand.html#/c:objc(cs)SDLDeleteCommand(py)cmdID":{"name":"cmdID","abstract":"

    the Command ID that identifies the Command to be deleted from Command Menu","parent_name":"SDLDeleteCommand"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(im)initWithHour:minute:":{"name":"-initWithHour:minute:","abstract":"

    Undocumented

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(im)initWithHour:minute:second:millisecond:":{"name":"-initWithHour:minute:second:millisecond:","abstract":"

    Undocumented

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(im)initWithHour:minute:second:millisecond:day:month:year:":{"name":"-initWithHour:minute:second:millisecond:day:month:year:","abstract":"

    Undocumented

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(im)initWithHour:minute:second:millisecond:day:month:year:timezoneMinuteOffset:timezoneHourOffset:":{"name":"-initWithHour:minute:second:millisecond:day:month:year:timezoneMinuteOffset:timezoneHourOffset:","abstract":"

    Undocumented

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)millisecond":{"name":"millisecond","abstract":"

    Milliseconds part of time

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)second":{"name":"second","abstract":"

    Seconds part of time

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)minute":{"name":"minute","abstract":"

    Minutes part of time

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)hour":{"name":"hour","abstract":"

    Hour part of time

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)day":{"name":"day","abstract":"

    Day of the month

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)month":{"name":"month","abstract":"

    Month of the year

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)year":{"name":"year","abstract":"

    The year in YYYY format

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)timezoneMinuteOffset":{"name":"timezoneMinuteOffset","abstract":"

    Time zone offset in Min with regard to UTC

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)timezoneHourOffset":{"name":"timezoneHourOffset","abstract":"

    Time zone offset in Hours with regard to UTC

    ","parent_name":"SDLDateTime"},"Classes/SDLDIDResult.html#/c:objc(cs)SDLDIDResult(py)resultCode":{"name":"resultCode","abstract":"

    Individual DID result code.

    ","parent_name":"SDLDIDResult"},"Classes/SDLDIDResult.html#/c:objc(cs)SDLDIDResult(py)didLocation":{"name":"didLocation","abstract":"

    Location of raw data from vehicle data DID

    ","parent_name":"SDLDIDResult"},"Classes/SDLDIDResult.html#/c:objc(cs)SDLDIDResult(py)data":{"name":"data","abstract":"

    Raw DID-based data returned for requested element.

    ","parent_name":"SDLDIDResult"},"Classes/SDLCreateInteractionChoiceSet.html#/c:objc(cs)SDLCreateInteractionChoiceSet(im)initWithId:choiceSet:":{"name":"-initWithId:choiceSet:","abstract":"

    Undocumented

    ","parent_name":"SDLCreateInteractionChoiceSet"},"Classes/SDLCreateInteractionChoiceSet.html#/c:objc(cs)SDLCreateInteractionChoiceSet(py)interactionChoiceSetID":{"name":"interactionChoiceSetID","abstract":"

    A unique ID that identifies the Choice Set

    ","parent_name":"SDLCreateInteractionChoiceSet"},"Classes/SDLCreateInteractionChoiceSet.html#/c:objc(cs)SDLCreateInteractionChoiceSet(py)choiceSet":{"name":"choiceSet","abstract":"

    Array of choices, which the user can select by menu or voice recognition

    ","parent_name":"SDLCreateInteractionChoiceSet"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)lifecycleConfig":{"name":"lifecycleConfig","abstract":"

    The lifecycle configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)lockScreenConfig":{"name":"lockScreenConfig","abstract":"

    The lock screen configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)loggingConfig":{"name":"loggingConfig","abstract":"

    The log configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)streamingMediaConfig":{"name":"streamingMediaConfig","abstract":"

    The streaming media configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)fileManagerConfig":{"name":"fileManagerConfig","abstract":"

    The file manager configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(im)initWithLifecycle:lockScreen:logging:":{"name":"-initWithLifecycle:lockScreen:logging:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen and logging configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(im)initWithLifecycle:lockScreen:logging:fileManager:":{"name":"-initWithLifecycle:lockScreen:logging:fileManager:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and file manager configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(cm)configurationWithLifecycle:lockScreen:logging:":{"name":"+configurationWithLifecycle:lockScreen:logging:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen and logging configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(cm)configurationWithLifecycle:lockScreen:logging:fileManager:":{"name":"+configurationWithLifecycle:lockScreen:logging:fileManager:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and file manager configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(im)initWithLifecycle:lockScreen:logging:streamingMedia:":{"name":"-initWithLifecycle:lockScreen:logging:streamingMedia:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and streaming media configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(im)initWithLifecycle:lockScreen:logging:streamingMedia:fileManager:":{"name":"-initWithLifecycle:lockScreen:logging:streamingMedia:fileManager:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media and file manager configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(cm)configurationWithLifecycle:lockScreen:logging:streamingMedia:":{"name":"+configurationWithLifecycle:lockScreen:logging:streamingMedia:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and streaming media configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(cm)configurationWithLifecycle:lockScreen:logging:streamingMedia:fileManager:":{"name":"+configurationWithLifecycle:lockScreen:logging:streamingMedia:fileManager:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media and file manager configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLClusterModeStatus.html#/c:objc(cs)SDLClusterModeStatus(py)powerModeActive":{"name":"powerModeActive","abstract":"

    References signal PowerMode_UB.

    ","parent_name":"SDLClusterModeStatus"},"Classes/SDLClusterModeStatus.html#/c:objc(cs)SDLClusterModeStatus(py)powerModeQualificationStatus":{"name":"powerModeQualificationStatus","abstract":"

    References signal PowerModeQF. See PowerModeQualificationStatus.

    ","parent_name":"SDLClusterModeStatus"},"Classes/SDLClusterModeStatus.html#/c:objc(cs)SDLClusterModeStatus(py)carModeStatus":{"name":"carModeStatus","abstract":"

    References signal CarMode. See CarMode.

    ","parent_name":"SDLClusterModeStatus"},"Classes/SDLClusterModeStatus.html#/c:objc(cs)SDLClusterModeStatus(py)powerModeStatus":{"name":"powerModeStatus","abstract":"

    References signal PowerMode. See PowerMode.

    ","parent_name":"SDLClusterModeStatus"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(im)initWithAppID:":{"name":"-initWithAppID:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(im)initWithAppID:nicknames:enabled:authToken:cloudTransportType:hybridAppPreference:endpoint:":{"name":"-initWithAppID:nicknames:enabled:authToken:cloudTransportType:hybridAppPreference:endpoint:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)nicknames":{"name":"nicknames","abstract":"

    An array of app names a cloud app is allowed to register with. If included in a SetCloudAppProperties request, this value will overwrite the existing nicknames field in the app policies section of the policy table.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)appID":{"name":"appID","abstract":"

    The id of the cloud app.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)enabled":{"name":"enabled","abstract":"

    If true, the cloud app will appear in the HMI’s app list; if false, the cloud app will not appear in the HMI’s app list.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)authToken":{"name":"authToken","abstract":"

    Used to authenticate websocket connection on app activation.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)cloudTransportType":{"name":"cloudTransportType","abstract":"

    Specifies the connection type Core should use. Currently the ones that work in SDL Core are WS or WSS, but an OEM can implement their own transport adapter to handle different values.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)hybridAppPreference":{"name":"hybridAppPreference","abstract":"

    Specifies the user preference to use the cloud app version or mobile app version when both are available.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)endpoint":{"name":"endpoint","abstract":"

    The websocket endpoint.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(im)initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone:dualModeEnable:acMaxEnable:ventilationMode:":{"name":"-initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone:dualModeEnable:acMaxEnable:ventilationMode:","abstract":"

    Undocumented

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(im)initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone:dualModeEnable:acMaxEnable:ventilationMode:heatedSteeringWheelEnable:heatedWindshieldEnable:heatedRearWindowEnable:heatedMirrorsEnable:":{"name":"-initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone:dualModeEnable:acMaxEnable:ventilationMode:heatedSteeringWheelEnable:heatedWindshieldEnable:heatedRearWindowEnable:heatedMirrorsEnable:","abstract":"

    Undocumented

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)fanSpeed":{"name":"fanSpeed","abstract":"

    Speed of Fan in integer

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)currentTemperature":{"name":"currentTemperature","abstract":"

    The Current Temperature in SDLTemperature

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)desiredTemperature":{"name":"desiredTemperature","abstract":"

    Desired Temperature in SDLTemperature

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)acEnable":{"name":"acEnable","abstract":"

    Represents if AC is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)circulateAirEnable":{"name":"circulateAirEnable","abstract":"

    Represents if circulation of air is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)autoModeEnable":{"name":"autoModeEnable","abstract":"

    Represents if auto mode is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)defrostZone":{"name":"defrostZone","abstract":"

    Represents the kind of defrost zone

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)dualModeEnable":{"name":"dualModeEnable","abstract":"

    Represents if dual mode is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)acMaxEnable":{"name":"acMaxEnable","abstract":"

    Represents if ac max is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)ventilationMode":{"name":"ventilationMode","abstract":"

    Represents the kind of Ventilation zone

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)heatedSteeringWheelEnable":{"name":"heatedSteeringWheelEnable","abstract":"

    @abstract value false means disabled/turn off, value true means enabled/turn on.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)heatedWindshieldEnable":{"name":"heatedWindshieldEnable","abstract":"

    @abstract value false means disabled, value true means enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)heatedRearWindowEnable":{"name":"heatedRearWindowEnable","abstract":"

    @abstract value false means disabled, value true means enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)heatedMirrorsEnable":{"name":"heatedMirrorsEnable","abstract":"

    @abstract Value false means disabled, value true means enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(im)initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable:dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable:":{"name":"-initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable:dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable:","abstract":"

    Undocumented

    ","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(im)initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable:dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable:heatedSteeringWheelAvailable:heatedWindshieldAvailable:heatedRearWindowAvailable:heatedMirrorsAvailable:":{"name":"-initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable:dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable:heatedSteeringWheelAvailable:heatedWindshieldAvailable:heatedRearWindowAvailable:heatedMirrorsAvailable:","abstract":"

    Undocumented

    ","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)moduleName":{"name":"moduleName","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)fanSpeedAvailable":{"name":"fanSpeedAvailable","abstract":"

    Availability of the control of fan speed.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)desiredTemperatureAvailable":{"name":"desiredTemperatureAvailable","abstract":"

    Availability of the control of desired temperature.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)acEnableAvailable":{"name":"acEnableAvailable","abstract":"

    Availability of the control of turn on/off AC.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)acMaxEnableAvailable":{"name":"acMaxEnableAvailable","abstract":"

    Availability of the control of enable/disable air conditioning is ON on the maximum level.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)circulateAirEnableAvailable":{"name":"circulateAirEnableAvailable","abstract":"

    Availability of the control of enable/disable circulate Air mode.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)autoModeEnableAvailable":{"name":"autoModeEnableAvailable","abstract":"

    Availability of the control of enable/disable auto mode.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)dualModeEnableAvailable":{"name":"dualModeEnableAvailable","abstract":"

    Availability of the control of enable/disable dual mode.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)defrostZoneAvailable":{"name":"defrostZoneAvailable","abstract":"

    Availability of the control of defrost zones.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)defrostZone":{"name":"defrostZone","abstract":"

    A set of all defrost zones that are controllable.

    ","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)ventilationModeAvailable":{"name":"ventilationModeAvailable","abstract":"

    Availability of the control of air ventilation mode.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)ventilationMode":{"name":"ventilationMode","abstract":"

    A set of all ventilation modes that are controllable.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)heatedSteeringWheelAvailable":{"name":"heatedSteeringWheelAvailable","abstract":"

    @abstract Availability of the control (enable/disable) of heated Steering Wheel.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)heatedWindshieldAvailable":{"name":"heatedWindshieldAvailable","abstract":"

    @abstract Availability of the control (enable/disable) of heated Windshield.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)heatedRearWindowAvailable":{"name":"heatedRearWindowAvailable","abstract":"

    @abstract Availability of the control (enable/disable) of heated Rear Window.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)heatedMirrorsAvailable":{"name":"heatedMirrorsAvailable","abstract":"

    @abstract Availability of the control (enable/disable) of heated Mirrors.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(cpy)defaultTimeout":{"name":"defaultTimeout","abstract":"

    Set this to change the default timeout for all choice sets. If a timeout is not set on an individual choice set object (or if it is set to 0.0), then it will use this timeout instead. See timeout for more details. If this is not set by you, it will default to 10 seconds.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(cpy)defaultLayout":{"name":"defaultLayout","abstract":"

    Set this to change the default layout for all choice sets. If a layout is not set on an individual choice set object, then it will use this layout instead. See layout for more details. If this is not set by you, it will default to SDLChoiceSetLayoutList.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)title":{"name":"title","abstract":"

    Maps to PerformInteraction.initialText. The title of the choice set, and/or the initial text on a keyboard prompt.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)initialPrompt":{"name":"initialPrompt","abstract":"

    Maps to PerformInteraction.initialPrompt. The initial prompt spoken to the user at the start of an interaction.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)layout":{"name":"layout","abstract":"

    Maps to PerformInteraction.interactionLayout. Whether the presented choices are arranged as a set of tiles or a list.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)timeout":{"name":"timeout","abstract":"

    Maps to PerformInteraction.timeout. This applies only to a manual selection (not a voice selection, which has its timeout handled by the system). Defaults to defaultTimeout.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)timeoutPrompt":{"name":"timeoutPrompt","abstract":"

    Maps to PerformInteraction.timeoutPrompt. This text is spoken when a VR interaction times out. If this set is presented in a manual (non-voice) only interaction, this will be ignored.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)helpPrompt":{"name":"helpPrompt","abstract":"

    Maps to PerformInteraction.helpPrompt. This is the spoken string when a user speaks help when the interaction is occurring.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)helpList":{"name":"helpList","abstract":"

    Maps to PerformInteraction.vrHelp. This is a list of help text presented to the user when they are in a voice recognition interaction from your choice set of options. If this set is presented in a touch only interaction, this will be ignored.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)delegate":{"name":"delegate","abstract":"

    The delegate of this choice set, called when the user interacts with it.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)choices":{"name":"choices","abstract":"

    The choices to be displayed to the user within this choice set. These choices could match those already preloaded via SDLScreenManager preloadChoices:withCompletionHandler:.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(im)initWithTitle:delegate:choices:":{"name":"-initWithTitle:delegate:choices:","abstract":"

    Initialize with a title, delegate, and choices. It will use the default timeout and layout, all other properties (such as prompts) will be nil.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(im)initWithTitle:delegate:layout:timeout:initialPromptString:timeoutPromptString:helpPromptString:vrHelpList:choices:":{"name":"-initWithTitle:delegate:layout:timeout:initialPromptString:timeoutPromptString:helpPromptString:vrHelpList:choices:","abstract":"

    Initializer with all possible properties.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(im)initWithTitle:delegate:layout:timeout:initialPrompt:timeoutPrompt:helpPrompt:vrHelpList:choices:":{"name":"-initWithTitle:delegate:layout:timeout:initialPrompt:timeoutPrompt:helpPrompt:vrHelpList:choices:","abstract":"

    Initializer with all possible properties.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)text":{"name":"text","abstract":"

    Maps to Choice.menuName. The primary text of the cell. Duplicates within an SDLChoiceSet are not permitted and will result in the SDLChoiceSet failing to initialize.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)secondaryText":{"name":"secondaryText","abstract":"

    Maps to Choice.secondaryText. Optional secondary text of the cell, if available. Duplicates within an SDLChoiceSet are permitted.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)tertiaryText":{"name":"tertiaryText","abstract":"

    Maps to Choice.tertiaryText. Optional tertitary text of the cell, if available. Duplicates within an SDLChoiceSet are permitted.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)voiceCommands":{"name":"voiceCommands","abstract":"

    Maps to Choice.vrCommands. Optional voice commands the user can speak to activate the cell. If not set and the head unit requires it, this will be set to the number in the list that this item appears. However, this would be a very poor experience for a user if the choice set is presented as a voice only interaction or both interaction mode. Therefore, consider not setting this only when you know the choice set will be presented as a touch only interaction.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)artwork":{"name":"artwork","abstract":"

    Maps to Choice.image. Optional image for the cell. This will be uploaded before the cell is used when the cell is preloaded or presented for the first time.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)secondaryArtwork":{"name":"secondaryArtwork","abstract":"

    Maps to Choice.secondaryImage. Optional secondary image for the cell. This will be uploaded before the cell is used when the cell is preloaded or presented for the first time.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(im)init":{"name":"-init","abstract":"

    Initialize the cell with nothing. This is unavailable

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(im)initWithText:":{"name":"-initWithText:","abstract":"

    Initialize the cell with text and nothing else.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(im)initWithText:artwork:voiceCommands:":{"name":"-initWithText:artwork:voiceCommands:","abstract":"

    Initialize the cell with text, optional artwork, and optional voice commands

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(im)initWithText:secondaryText:tertiaryText:voiceCommands:artwork:secondaryArtwork:":{"name":"-initWithText:secondaryText:tertiaryText:voiceCommands:artwork:secondaryArtwork:","abstract":"

    Initialize the cell with all optional items

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(im)initWithId:menuName:vrCommands:":{"name":"-initWithId:menuName:vrCommands:","abstract":"

    Undocumented

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(im)initWithId:menuName:vrCommands:image:secondaryText:secondaryImage:tertiaryText:":{"name":"-initWithId:menuName:vrCommands:image:secondaryText:secondaryImage:tertiaryText:","abstract":"

    Undocumented

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)choiceID":{"name":"choiceID","abstract":"

    The application-scoped identifier that uniquely identifies this choice

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)menuName":{"name":"menuName","abstract":"

    Text which appears in menu, representing this choice

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)vrCommands":{"name":"vrCommands","abstract":"

    VR synonyms for this choice

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)image":{"name":"image","abstract":"

    The image of the choice

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)secondaryText":{"name":"secondaryText","abstract":"

    Secondary text to display; e.g. address of POI in a search result entry

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)tertiaryText":{"name":"tertiaryText","abstract":"

    Tertiary text to display; e.g. distance to POI for a search result entry

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)secondaryImage":{"name":"secondaryImage","abstract":"

    Secondary image for choice

    ","parent_name":"SDLChoice"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(im)initWithLanguage:hmiDisplayLanguage:":{"name":"-initWithLanguage:hmiDisplayLanguage:","abstract":"

    Undocumented

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(im)initWithLanguage:hmiDisplayLanguage:appName:ttsName:ngnMediaScreenAppName:vrSynonyms:":{"name":"-initWithLanguage:hmiDisplayLanguage:appName:ttsName:ngnMediaScreenAppName:vrSynonyms:","abstract":"

    Undocumented

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)language":{"name":"language","abstract":"

    The language the app wants to change to

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)hmiDisplayLanguage":{"name":"hmiDisplayLanguage","abstract":"

    HMI display language

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)appName":{"name":"appName","abstract":"

    Request a new app name registration

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)ttsName":{"name":"ttsName","abstract":"

    Request a new TTSName registration.

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)ngnMediaScreenAppName":{"name":"ngnMediaScreenAppName","abstract":"

    Request a new app short name registration

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)vrSynonyms":{"name":"vrSynonyms","abstract":"

    Request a new VR synonyms registration

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLCarWindowViewController.html#/c:objc(cs)SDLCarWindowViewController(py)supportedOrientation":{"name":"supportedOrientation","abstract":"

    The supported interface orientation you wish to use. Defaults to MaskPortrait.

    ","parent_name":"SDLCarWindowViewController"},"Classes/SDLButtonPress.html#/c:objc(cs)SDLButtonPress(im)initWithButtonName:moduleType:":{"name":"-initWithButtonName:moduleType:","abstract":"

    Undocumented

    ","parent_name":"SDLButtonPress"},"Classes/SDLButtonPress.html#/c:objc(cs)SDLButtonPress(py)moduleType":{"name":"moduleType","abstract":"

    The module where the button should be pressed.

    ","parent_name":"SDLButtonPress"},"Classes/SDLButtonPress.html#/c:objc(cs)SDLButtonPress(py)buttonName":{"name":"buttonName","abstract":"

    The name of supported RC climate or radio button.

    ","parent_name":"SDLButtonPress"},"Classes/SDLButtonPress.html#/c:objc(cs)SDLButtonPress(py)buttonPressMode":{"name":"buttonPressMode","abstract":"

    Indicates whether this is a LONG or SHORT button press event.

    ","parent_name":"SDLButtonPress"},"Classes/SDLButtonCapabilities.html#/c:objc(cs)SDLButtonCapabilities(py)name":{"name":"name","parent_name":"SDLButtonCapabilities"},"Classes/SDLButtonCapabilities.html#/c:objc(cs)SDLButtonCapabilities(py)shortPressAvailable":{"name":"shortPressAvailable","abstract":"

    A NSNumber value indicates whether the button supports a SHORT press

    ","parent_name":"SDLButtonCapabilities"},"Classes/SDLButtonCapabilities.html#/c:objc(cs)SDLButtonCapabilities(py)longPressAvailable":{"name":"longPressAvailable","abstract":"

    A NSNumber value indicates whether the button supports a LONG press

    ","parent_name":"SDLButtonCapabilities"},"Classes/SDLButtonCapabilities.html#/c:objc(cs)SDLButtonCapabilities(py)upDownAvailable":{"name":"upDownAvailable","abstract":"

    A NSNumber value indicates whether the button supports button down and button up

    ","parent_name":"SDLButtonCapabilities"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)parkBrakeActive":{"name":"parkBrakeActive","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)ignitionStableStatus":{"name":"ignitionStableStatus","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)ignitionStatus":{"name":"ignitionStatus","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)driverDoorAjar":{"name":"driverDoorAjar","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)passengerDoorAjar":{"name":"passengerDoorAjar","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)rearLeftDoorAjar":{"name":"rearLeftDoorAjar","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)rearRightDoorAjar":{"name":"rearRightDoorAjar","parent_name":"SDLBodyInformation"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)driverBeltDeployed":{"name":"driverBeltDeployed","abstract":"

    References signal VedsDrvBelt_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)passengerBeltDeployed":{"name":"passengerBeltDeployed","abstract":"

    References signal VedsPasBelt_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)passengerBuckleBelted":{"name":"passengerBuckleBelted","abstract":"

    References signal VedsRw1PasBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)driverBuckleBelted":{"name":"driverBuckleBelted","abstract":"

    References signal VedsRw1DrvBckl_D_Ltchd. See VehicleDataEventStatus

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)leftRow2BuckleBelted":{"name":"leftRow2BuckleBelted","abstract":"

    References signal VedsRw2lBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)passengerChildDetected":{"name":"passengerChildDetected","abstract":"

    References signal VedsRw1PasChld_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)rightRow2BuckleBelted":{"name":"rightRow2BuckleBelted","abstract":"

    References signal VedsRw2rBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)middleRow2BuckleBelted":{"name":"middleRow2BuckleBelted","abstract":"

    References signal VedsRw2mBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)middleRow3BuckleBelted":{"name":"middleRow3BuckleBelted","abstract":"

    References signal VedsRw3mBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)leftRow3BuckleBelted":{"name":"leftRow3BuckleBelted","abstract":"

    References signal VedsRw3lBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)rightRow3BuckleBelted":{"name":"rightRow3BuckleBelted","abstract":"

    References signal VedsRw3rBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)leftRearInflatableBelted":{"name":"leftRearInflatableBelted","abstract":"

    References signal VedsRw2lRib_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)rightRearInflatableBelted":{"name":"rightRearInflatableBelted","abstract":"

    References signal VedsRw2rRib_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)middleRow1BeltDeployed":{"name":"middleRow1BeltDeployed","abstract":"

    References signal VedsRw1mBelt_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)middleRow1BuckleBelted":{"name":"middleRow1BuckleBelted","abstract":"

    References signal VedsRw1mBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(py)delegate":{"name":"delegate","abstract":"

    The delegate describing when files are done playing or any errors that occur

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(py)playing":{"name":"playing","abstract":"

    Whether or not we are currently playing audio

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(py)queue":{"name":"queue","abstract":"

    The queue of audio files that will be played in sequence

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)init":{"name":"-init","abstract":"

    Init should only occur with dependencies. use initWithManager:

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)initWithManager:":{"name":"-initWithManager:","abstract":"

    Create an audio stream manager with a reference to the parent stream manager.

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)pushWithFileURL:":{"name":"-pushWithFileURL:","abstract":"

    Push a new file URL onto the queue after converting it into the correct PCM format for streaming binary data. Call playNextWhenReady to start playing the next completed pushed file.

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)playNextWhenReady":{"name":"-playNextWhenReady","abstract":"

    Play the next item in the queue. If an item is currently playing, it will continue playing and this item will begin playing after it is completed.

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)stop":{"name":"-stop","abstract":"

    Stop playing the queue after the current item completes and clear the queue. If nothing is playing, the queue will be cleared.

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioPassThruCapabilities.html#/c:objc(cs)SDLAudioPassThruCapabilities(py)samplingRate":{"name":"samplingRate","abstract":"

    The sampling rate for AudioPassThru

    ","parent_name":"SDLAudioPassThruCapabilities"},"Classes/SDLAudioPassThruCapabilities.html#/c:objc(cs)SDLAudioPassThruCapabilities(py)bitsPerSample":{"name":"bitsPerSample","abstract":"

    The sample depth in bit for AudioPassThru

    ","parent_name":"SDLAudioPassThruCapabilities"},"Classes/SDLAudioPassThruCapabilities.html#/c:objc(cs)SDLAudioPassThruCapabilities(py)audioType":{"name":"audioType","abstract":"

    The audiotype for AudioPassThru

    ","parent_name":"SDLAudioPassThruCapabilities"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(im)initWithSource:keepContext:volume:equalizerSettings:":{"name":"-initWithSource:keepContext:volume:equalizerSettings:","abstract":"

    Constructs a newly allocated SDLAudioControlData object with given parameters

    ","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(py)source":{"name":"source","abstract":"

    @abstract In a getter response or a notification,","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(py)keepContext":{"name":"keepContext","abstract":"

    @abstract This parameter shall not be present in any getter responses or notifications.","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(py)volume":{"name":"volume","abstract":"

    @abstract Reflects the volume of audio, from 0%-100%.

    ","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(py)equalizerSettings":{"name":"equalizerSettings","abstract":"

    @abstract Defines the list of supported channels (band) and their current/desired settings on HMI

    ","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(im)initWithModuleName:":{"name":"-initWithModuleName:","abstract":"

    Constructs a newly allocated SDLAudioControlCapabilities object with audio control module name (max 100 chars)

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(im)initWithModuleName:sourceAvailable:keepContextAvailable:volumeAvailable:equalizerAvailable:equalizerMaxChannelID:":{"name":"-initWithModuleName:sourceAvailable:keepContextAvailable:volumeAvailable:equalizerAvailable:equalizerMaxChannelID:","abstract":"

    Constructs a newly allocated SDLAudioControlCapabilities object with given parameters

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    @abstract The short friendly name of the audio control module.","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)sourceAvailable":{"name":"sourceAvailable","abstract":"

    @abstract Availability of the control of audio source.

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)keepContextAvailable":{"name":"keepContextAvailable","abstract":"

    Availability of the keepContext parameter.

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)volumeAvailable":{"name":"volumeAvailable","abstract":"

    @abstract Availability of the control of audio volume.

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)equalizerAvailable":{"name":"equalizerAvailable","abstract":"

    @abstract Availability of the control of Equalizer Settings.

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)equalizerMaxChannelId":{"name":"equalizerMaxChannelId","abstract":"

    @abstract Must be included if equalizerAvailable=true,","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(py)isTemplate":{"name":"isTemplate","abstract":"

    Describes whether or not the image is a template that can be (re)colored by the SDL HMI. To make the artwork a template, set the UIImages rendering mode to UIImageRenderingModeAlwaysTemplate. In order for templates to work successfully, the icon must be one solid color with a clear background. The artwork should be created using the PNG image format.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(py)imageRPC":{"name":"imageRPC","abstract":"

    The Image RPC representing this artwork. Generally for use internally, you should instead pass an artwork to a Screen Manager method.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)artworkWithImage:name:asImageFormat:":{"name":"+artworkWithImage:name:asImageFormat:","abstract":"

    Convenience helper to create an ephemeral artwork from an image.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)artworkWithImage:asImageFormat:":{"name":"+artworkWithImage:asImageFormat:","abstract":"

    Convenience helper to create an ephemeral artwork from an image. A unique name will be assigned to the image. This name is a string representation of the image’s data which is created by hashing the data using the MD5 algorithm.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)artworkWithStaticIcon:":{"name":"+artworkWithStaticIcon:","abstract":"

    Create an SDLArtwork that represents a static icon. This can only be passed to the screen manager; passing this directly to the file manager will fail.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)persistentArtworkWithImage:name:asImageFormat:":{"name":"+persistentArtworkWithImage:name:asImageFormat:","abstract":"

    Convenience helper to create a persistent artwork from an image.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)persistentArtworkWithImage:asImageFormat:":{"name":"+persistentArtworkWithImage:asImageFormat:","abstract":"

    Convenience helper to create a persistent artwork from an image. A unique name will be assigned to the image. This name is a string representation of the image’s data which is created by hashing the data using the MD5 algorithm.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(im)initWithImage:name:persistent:asImageFormat:":{"name":"-initWithImage:name:persistent:asImageFormat:","abstract":"

    Create a file for transmission to the remote system from a UIImage.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(im)initWithImage:persistent:asImageFormat:":{"name":"-initWithImage:persistent:asImageFormat:","abstract":"

    Create a file for transmission to the remote system from a UIImage. A unique name will be assigned to the image. This name is a string representation of the image’s data which is created by hashing the data using the MD5 algorithm.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(im)initWithStaticIcon:":{"name":"-initWithStaticIcon:","abstract":"

    Create an SDLArtwork that represents a static icon. This can only be passed to the screen manager; passing this directly to the file manager will fail.

    ","parent_name":"SDLArtwork"},"Classes/SDLAppServicesCapabilities.html#/c:objc(cs)SDLAppServicesCapabilities(im)initWithAppServices:":{"name":"-initWithAppServices:","abstract":"

    Convenience init.

    ","parent_name":"SDLAppServicesCapabilities"},"Classes/SDLAppServicesCapabilities.html#/c:objc(cs)SDLAppServicesCapabilities(py)appServices":{"name":"appServices","abstract":"

    An array of currently available services. If this is an update to the capability the affected services will include an update reason in that item.

    ","parent_name":"SDLAppServicesCapabilities"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(im)initWithServiceID:serviceManifest:servicePublished:serviceActive:":{"name":"-initWithServiceID:serviceManifest:servicePublished:serviceActive:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(py)serviceID":{"name":"serviceID","abstract":"

    A unique ID tied to this specific service record. The ID is supplied by the module that services publish themselves.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(py)serviceManifest":{"name":"serviceManifest","abstract":"

    Manifest for the service that this record is for.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(py)servicePublished":{"name":"servicePublished","abstract":"

    If true, the service is published and available. If false, the service has likely just been unpublished, and should be considered unavailable.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(py)serviceActive":{"name":"serviceActive","abstract":"

    If true, the service is the active primary service of the supplied service type. It will receive all potential RPCs that are passed through to that service type. If false, it is not the primary service of the supplied type. See servicePublished for its availability.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithAppServiceType:":{"name":"-initWithAppServiceType:","abstract":"

    Convenience init for serviceType.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithMediaServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:":{"name":"-initWithMediaServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:","abstract":"

    Convenience init for a media service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithWeatherServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:weatherServiceManifest:":{"name":"-initWithWeatherServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:weatherServiceManifest:","abstract":"

    Convenience init for a weather service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithNavigationServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:navigationServiceManifest:":{"name":"-initWithNavigationServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:navigationServiceManifest:","abstract":"

    Convenience init for a navigation service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithServiceName:serviceType:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:weatherServiceManifest:navigationServiceManifest:":{"name":"-initWithServiceName:serviceType:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:weatherServiceManifest:navigationServiceManifest:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)serviceName":{"name":"serviceName","abstract":"

    Unique name of this service.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)serviceType":{"name":"serviceType","abstract":"

    The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)serviceIcon":{"name":"serviceIcon","abstract":"

    The file name of the icon to be associated with this service. Most likely the same as the appIcon.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)allowAppConsumers":{"name":"allowAppConsumers","abstract":"

    If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)rpcSpecVersion":{"name":"rpcSpecVersion","abstract":"

    This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)handledRPCs":{"name":"handledRPCs","abstract":"

    This field contains the Function IDs for the RPCs that this service intends to handle correctly. This means the service will provide meaningful responses. See FunctionID for enum equivalent values. This parameter is an integer to allow for new function IDs to be used by apps on older versions of SDL Core.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)mediaServiceManifest":{"name":"mediaServiceManifest","abstract":"

    A media service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)weatherServiceManifest":{"name":"weatherServiceManifest","abstract":"

    A weather service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)navigationServiceManifest":{"name":"navigationServiceManifest","abstract":"

    A navigation service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithAppServiceType:serviceId:":{"name":"-initWithAppServiceType:serviceId:","abstract":"

    Convenience init for service type and service id.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithMediaServiceData:serviceId:":{"name":"-initWithMediaServiceData:serviceId:","abstract":"

    Convenience init for media service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithWeatherServiceData:serviceId:":{"name":"-initWithWeatherServiceData:serviceId:","abstract":"

    Convenience init for weather service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithNavigationServiceData:serviceId:":{"name":"-initWithNavigationServiceData:serviceId:","abstract":"

    Convenience init for navigation service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithAppServiceType:serviceId:mediaServiceData:weatherServiceData:navigationServiceData:":{"name":"-initWithAppServiceType:serviceId:mediaServiceData:weatherServiceData:navigationServiceData:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)serviceType":{"name":"serviceType","abstract":"

    The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)serviceId":{"name":"serviceId","abstract":"

    A unique ID tied to this specific service record. The ID is supplied by the module that services publish themselves.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)mediaServiceData":{"name":"mediaServiceData","abstract":"

    The media service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)weatherServiceData":{"name":"weatherServiceData","abstract":"

    The weather service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)navigationServiceData":{"name":"navigationServiceData","abstract":"

    The navigation service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceCapability.html#/c:objc(cs)SDLAppServiceCapability(im)initWithUpdatedAppServiceRecord:":{"name":"-initWithUpdatedAppServiceRecord:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLAppServiceCapability"},"Classes/SDLAppServiceCapability.html#/c:objc(cs)SDLAppServiceCapability(im)initWithUpdateReason:updatedAppServiceRecord:":{"name":"-initWithUpdateReason:updatedAppServiceRecord:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLAppServiceCapability"},"Classes/SDLAppServiceCapability.html#/c:objc(cs)SDLAppServiceCapability(py)updateReason":{"name":"updateReason","abstract":"

    Only included in OnSystemCapbilityUpdated. Update reason for this service record.

    ","parent_name":"SDLAppServiceCapability"},"Classes/SDLAppServiceCapability.html#/c:objc(cs)SDLAppServiceCapability(py)updatedAppServiceRecord":{"name":"updatedAppServiceRecord","abstract":"

    Service record for a specific app service provider.

    ","parent_name":"SDLAppServiceCapability"},"Classes/SDLAppInfo.html#/c:objc(cs)SDLAppInfo(cm)currentAppInfo":{"name":"+currentAppInfo","abstract":"

    Undocumented

    ","parent_name":"SDLAppInfo"},"Classes/SDLAppInfo.html#/c:objc(cs)SDLAppInfo(py)appDisplayName":{"name":"appDisplayName","abstract":"

    The name displayed for the mobile application on the mobile device (can differ from the app name set in the initial RAI request).

    ","parent_name":"SDLAppInfo"},"Classes/SDLAppInfo.html#/c:objc(cs)SDLAppInfo(py)appBundleID":{"name":"appBundleID","abstract":"

    The AppBundleID of an iOS application or package name of the Android application. This supports App Launch strategies for each platform.

    ","parent_name":"SDLAppInfo"},"Classes/SDLAppInfo.html#/c:objc(cs)SDLAppInfo(py)appVersion":{"name":"appVersion","abstract":"

    Represents the build version number of this particular mobile app.

    ","parent_name":"SDLAppInfo"},"Classes/SDLAlertResponse.html#/c:objc(cs)SDLAlertResponse(py)tryAgainTime":{"name":"tryAgainTime","abstract":"

    Undocumented

    ","parent_name":"SDLAlertResponse"},"Classes/SDLAlertManeuver.html#/c:objc(cs)SDLAlertManeuver(im)initWithTTS:softButtons:":{"name":"-initWithTTS:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlertManeuver"},"Classes/SDLAlertManeuver.html#/c:objc(cs)SDLAlertManeuver(im)initWithTTSChunks:softButtons:":{"name":"-initWithTTSChunks:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlertManeuver"},"Classes/SDLAlertManeuver.html#/c:objc(cs)SDLAlertManeuver(py)ttsChunks":{"name":"ttsChunks","abstract":"

    An array of text chunks.

    ","parent_name":"SDLAlertManeuver"},"Classes/SDLAlertManeuver.html#/c:objc(cs)SDLAlertManeuver(py)softButtons":{"name":"softButtons","abstract":"

    An arry of soft buttons. If omitted on supported displays, only the system defined Close SoftButton shall be displayed.

    ","parent_name":"SDLAlertManeuver"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithAlertText1:alertText2:duration:":{"name":"-initWithAlertText1:alertText2:duration:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithAlertText1:alertText2:alertText3:":{"name":"-initWithAlertText1:alertText2:alertText3:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithAlertText1:alertText2:alertText3:duration:":{"name":"-initWithAlertText1:alertText2:alertText3:duration:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithAlertText1:alertText2:alertText3:duration:softButtons:":{"name":"-initWithAlertText1:alertText2:alertText3:duration:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTS:playTone:":{"name":"-initWithTTS:playTone:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTS:alertText1:alertText2:playTone:duration:":{"name":"-initWithTTS:alertText1:alertText2:playTone:duration:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTS:alertText1:alertText2:alertText3:playTone:duration:":{"name":"-initWithTTS:alertText1:alertText2:alertText3:playTone:duration:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTSChunks:playTone:":{"name":"-initWithTTSChunks:playTone:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTSChunks:alertText1:alertText2:alertText3:playTone:softButtons:":{"name":"-initWithTTSChunks:alertText1:alertText2:alertText3:playTone:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTSChunks:alertText1:alertText2:alertText3:playTone:duration:softButtons:":{"name":"-initWithTTSChunks:alertText1:alertText2:alertText3:playTone:duration:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)alertText1":{"name":"alertText1","abstract":"

    The String to be displayed in the first field of the display during the Alert

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)alertText2":{"name":"alertText2","abstract":"

    The String to be displayed in the second field of the display during the Alert

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)alertText3":{"name":"alertText3","abstract":"

    the String to be displayed in the third field of the display during the Alert","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)ttsChunks":{"name":"ttsChunks","abstract":"

    An array which, taken together, specify what is to be spoken to the user

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)duration":{"name":"duration","abstract":"

    The duration of the displayed portion of the alert, in milliseconds.

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)playTone":{"name":"playTone","abstract":"

    Whether the alert tone should be played before the TTS (if any) is spoken.

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)progressIndicator":{"name":"progressIndicator","abstract":"

    If supported on the given platform, the alert GUI will include some sort of animation indicating that loading of a feature is progressing. e.g. a spinning wheel or hourglass, etc.

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)softButtons":{"name":"softButtons","abstract":"

    App defined SoftButtons.

    ","parent_name":"SDLAlert"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)driverAirbagDeployed":{"name":"driverAirbagDeployed","abstract":"

    References signal VedsDrvBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)driverSideAirbagDeployed":{"name":"driverSideAirbagDeployed","abstract":"

    References signal VedsDrvSideBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)driverCurtainAirbagDeployed":{"name":"driverCurtainAirbagDeployed","abstract":"

    References signal VedsDrvCrtnBag_D_Ltchd. See VehicleDataEventStatus

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)passengerAirbagDeployed":{"name":"passengerAirbagDeployed","abstract":"

    References signal VedsPasBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)passengerCurtainAirbagDeployed":{"name":"passengerCurtainAirbagDeployed","abstract":"

    References signal VedsPasCrtnBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)driverKneeAirbagDeployed":{"name":"driverKneeAirbagDeployed","abstract":"

    References signal VedsKneeDrvBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)passengerSideAirbagDeployed":{"name":"passengerSideAirbagDeployed","abstract":"

    References signal VedsPasSideBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)passengerKneeAirbagDeployed":{"name":"passengerKneeAirbagDeployed","abstract":"

    References signal VedsKneePasBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(im)initWithId:menuName:":{"name":"-initWithId:menuName:","abstract":"

    Undocumented

    ","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(im)initWithId:menuName:position:":{"name":"-initWithId:menuName:position:","abstract":"

    Undocumented

    ","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(im)initWithId:menuName:menuIcon:position:":{"name":"-initWithId:menuName:menuIcon:position:","abstract":"

    Undocumented

    ","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(py)menuID":{"name":"menuID","abstract":"

    a Menu ID that identifies a sub menu","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(py)position":{"name":"position","abstract":"

    a position of menu","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(py)menuName":{"name":"menuName","abstract":"

    a menuName which is displayed representing this submenu item","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(py)menuIcon":{"name":"menuIcon","abstract":"

    An image that is displayed alongside this submenu item

    ","parent_name":"SDLAddSubMenu"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithHandler:":{"name":"-initWithHandler:","abstract":"

    Constructs a SDLAddCommand with a handler callback when an event occurs.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:handler:":{"name":"-initWithId:vrCommands:handler:","abstract":"

    Convenience init for creating a voice command menu item.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:menuName:handler:":{"name":"-initWithId:vrCommands:menuName:handler:","abstract":"

    Convenience init for creating a menu item with text.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:handler:":{"name":"-initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:handler:","abstract":"

    Convenience init for creating a menu item with text and a custom icon.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:iconIsTemplate:handler:":{"name":"-initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:iconIsTemplate:handler:","abstract":"

    Convenience init for creating a menu item with text and a custom icon.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:menuName:parentId:position:icon:handler:":{"name":"-initWithId:vrCommands:menuName:parentId:position:icon:handler:","abstract":"

    Convenience init for creating a menu item with text and a custom icon.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)handler":{"name":"handler","abstract":"

    A handler that will let you know when the button you created is subscribed.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)cmdID":{"name":"cmdID","abstract":"

    A unique id that identifies the command.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)menuParams":{"name":"menuParams","abstract":"

    A SDLMenuParams pointer which defines the command and how it is added to the command menu.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)vrCommands":{"name":"vrCommands","abstract":"

    An array of strings to be used as VR synonyms for this command.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)cmdIcon":{"name":"cmdIcon","abstract":"

    Image struct containing a static or dynamic icon.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html":{"name":"SDLAddCommand","abstract":"

    This class will add a command to the application’s Command Menu

    "},"Classes.html#/c:objc(cs)SDLAddCommandResponse":{"name":"SDLAddCommandResponse","abstract":"

    Response to SDLAddCommand

    "},"Classes/SDLAddSubMenu.html":{"name":"SDLAddSubMenu","abstract":"

    Add a SDLSubMenu to the Command Menu"},"Classes.html#/c:objc(cs)SDLAddSubMenuResponse":{"name":"SDLAddSubMenuResponse","abstract":"

    Response to SDLAddSubMenu

    "},"Classes/SDLAirbagStatus.html":{"name":"SDLAirbagStatus","abstract":"

    A vehicle data status struct for airbags

    "},"Classes/SDLAlert.html":{"name":"SDLAlert","abstract":"

    Shows an alert which typically consists of text-to-speech message and text on the display. At least either alertText1, alertText2 or TTSChunks need to be provided.

    "},"Classes/SDLAlertManeuver.html":{"name":"SDLAlertManeuver","abstract":"

    Shows a SDLShowConstantTBT message with an optional voice command. This message is shown as an overlay over the display’s base screen.

    "},"Classes.html#/c:objc(cs)SDLAlertManeuverResponse":{"name":"SDLAlertManeuverResponse","abstract":"

    Response to SDLAlertManeuver

    "},"Classes/SDLAlertResponse.html":{"name":"SDLAlertResponse","abstract":"

    Response to SDLAlert

    "},"Classes/SDLAppInfo.html":{"name":"SDLAppInfo","abstract":"

    A struct used in register app interface. Contains detailed information about the registered application.

    "},"Classes/SDLAppServiceCapability.html":{"name":"SDLAppServiceCapability","abstract":"

    Undocumented

    "},"Classes/SDLAppServiceData.html":{"name":"SDLAppServiceData","abstract":"

    Undocumented

    "},"Classes/SDLAppServiceManifest.html":{"name":"SDLAppServiceManifest","abstract":"

    This manifest contains all the information necessary for the service to be published, activated, and allow consumers to interact with it

    "},"Classes/SDLAppServiceRecord.html":{"name":"SDLAppServiceRecord","abstract":"

    Undocumented

    "},"Classes/SDLAppServicesCapabilities.html":{"name":"SDLAppServicesCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLArtwork.html":{"name":"SDLArtwork","abstract":"

    Undocumented

    "},"Classes/SDLAudioControlCapabilities.html":{"name":"SDLAudioControlCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLAudioControlData.html":{"name":"SDLAudioControlData","abstract":"

    Undocumented

    "},"Classes/SDLAudioPassThruCapabilities.html":{"name":"SDLAudioPassThruCapabilities","abstract":"

    Describes different audio type configurations for SDLPerformAudioPassThru, e.g. {8kHz,8-bit,PCM}

    "},"Classes/SDLAudioStreamManager.html":{"name":"SDLAudioStreamManager","abstract":"

    Undocumented

    "},"Classes/SDLBeltStatus.html":{"name":"SDLBeltStatus","abstract":"

    Vehicle data struct for the seat belt status

    "},"Classes/SDLBodyInformation.html":{"name":"SDLBodyInformation","abstract":"

    The body information including power modes.

    "},"Classes/SDLButtonCapabilities.html":{"name":"SDLButtonCapabilities","abstract":"

    Provides information about the capabilities of a SDL HMI button.

    "},"Classes/SDLButtonPress.html":{"name":"SDLButtonPress","abstract":"

    This RPC allows a remote control type mobile application to simulate a hardware button press event.

    "},"Classes.html#/c:objc(cs)SDLButtonPressResponse":{"name":"SDLButtonPressResponse","abstract":"

    Response to SDLButtonPress

    "},"Classes/SDLCarWindowViewController.html":{"name":"SDLCarWindowViewController","abstract":"

    Note that if this is embedded in a UINavigationController and UITabBarController, it will not lock orientation. You must lock your container controller to a specific orientation.

    "},"Classes/SDLChangeRegistration.html":{"name":"SDLChangeRegistration","abstract":"

    If the app recognizes during the app registration that the SDL HMI language (voice/TTS and/or display) does not match the app language, the app will be able (but does not need) to change this registration with changeRegistration prior to app being brought into focus.

    "},"Classes.html#/c:objc(cs)SDLChangeRegistrationResponse":{"name":"SDLChangeRegistrationResponse","abstract":"

    Response to SDLChangeRegistrations

    "},"Classes/SDLChoice.html":{"name":"SDLChoice","abstract":"

    A choice is an option which a user can select either via the menu or via voice recognition (VR) during an application initiated interaction.

    "},"Classes/SDLChoiceCell.html":{"name":"SDLChoiceCell","abstract":"

    Undocumented

    "},"Classes/SDLChoiceSet.html":{"name":"SDLChoiceSet","abstract":"

    Undocumented

    "},"Classes/SDLClimateControlCapabilities.html":{"name":"SDLClimateControlCapabilities","abstract":"

    Contains information about a climate control module’s capabilities.

    "},"Classes/SDLClimateControlData.html":{"name":"SDLClimateControlData","abstract":"

    The current information for the Climate Remote Control Module

    "},"Classes/SDLCloudAppProperties.html":{"name":"SDLCloudAppProperties","abstract":"

    Undocumented

    "},"Classes/SDLClusterModeStatus.html":{"name":"SDLClusterModeStatus","abstract":"

    A vehicle data struct for the cluster mode and power status

    "},"Classes/SDLConfiguration.html":{"name":"SDLConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLCreateInteractionChoiceSet.html":{"name":"SDLCreateInteractionChoiceSet","abstract":"

    Creates a Choice Set which can be used in subsequent SDLPerformInteraction Operations.

    "},"Classes.html#/c:objc(cs)SDLCreateInteractionChoiceSetResponse":{"name":"SDLCreateInteractionChoiceSetResponse","abstract":"

    Response to SDLCreateInteractionChoiceSet has been called

    "},"Classes/SDLDIDResult.html":{"name":"SDLDIDResult","abstract":"

    A vehicle data struct

    "},"Classes/SDLDateTime.html":{"name":"SDLDateTime","abstract":"

    A struct referenced in SendLocation for an absolute date

    "},"Classes/SDLDeleteCommand.html":{"name":"SDLDeleteCommand","abstract":"

    Removes a command from the Command Menu"},"Classes.html#/c:objc(cs)SDLDeleteCommandResponse":{"name":"SDLDeleteCommandResponse","abstract":"

    Response to SDLDeleteCommand

    "},"Classes/SDLDeleteFile.html":{"name":"SDLDeleteFile","abstract":"

    Used to delete a file resident on the SDL module in the app’s local cache."},"Classes/SDLDeleteFileResponse.html":{"name":"SDLDeleteFileResponse","abstract":"

    Response to SDLDeleteFile

    "},"Classes/SDLDeleteInteractionChoiceSet.html":{"name":"SDLDeleteInteractionChoiceSet","abstract":"

    Deletes an existing Choice Set identified by the parameter"},"Classes.html#/c:objc(cs)SDLDeleteInteractionChoiceSetResponse":{"name":"SDLDeleteInteractionChoiceSetResponse","abstract":"

    SDLDeleteInteractionChoiceSetResponse is sent, when SDLDeleteInteractionChoiceSet has been called

    "},"Classes/SDLDeleteSubMenu.html":{"name":"SDLDeleteSubMenu","abstract":"

    Deletes a submenu from the Command Menu"},"Classes.html#/c:objc(cs)SDLDeleteSubMenuResponse":{"name":"SDLDeleteSubMenuResponse","abstract":"

    Response to SDLDeleteSubMenu

    "},"Classes/SDLDeviceInfo.html":{"name":"SDLDeviceInfo","abstract":"

    Various information about connecting device. Referenced in RegisterAppInterface

    "},"Classes/SDLDeviceStatus.html":{"name":"SDLDeviceStatus","abstract":"

    Describes the status related to a connected mobile device or SDL and if or how it is represented in the vehicle.

    "},"Classes/SDLDiagnosticMessage.html":{"name":"SDLDiagnosticMessage","abstract":"

    Non periodic vehicle diagnostic request

    "},"Classes/SDLDiagnosticMessageResponse.html":{"name":"SDLDiagnosticMessageResponse","abstract":"

    Response to SDLDiagnosticMessage

    "},"Classes/SDLDialNumber.html":{"name":"SDLDialNumber","abstract":"

    This RPC is used to tell the head unit to use bluetooth to dial a phone number using the phone.

    "},"Classes.html#/c:objc(cs)SDLDialNumberResponse":{"name":"SDLDialNumberResponse","abstract":"

    The response to SDLDialNumber

    "},"Classes/SDLDisplayCapabilities.html":{"name":"SDLDisplayCapabilities","abstract":"

    Contains information about the display for the SDL system to which the application is currently connected.

    "},"Classes/SDLECallInfo.html":{"name":"SDLECallInfo","abstract":"

    A vehicle data struct for emergency call information

    "},"Classes/SDLEmergencyEvent.html":{"name":"SDLEmergencyEvent","abstract":"

    A vehicle data struct for an emergency event

    "},"Classes/SDLEncodedSyncPData.html":{"name":"SDLEncodedSyncPData","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLEncodedSyncPDataResponse":{"name":"SDLEncodedSyncPDataResponse","abstract":"

    The response to SDLEncodedSyncPData

    "},"Classes.html#/c:objc(cs)SDLEndAudioPassThru":{"name":"SDLEndAudioPassThru","abstract":"

    When this request is invoked, the audio capture stops

    "},"Classes.html#/c:objc(cs)SDLEndAudioPassThruResponse":{"name":"SDLEndAudioPassThruResponse","abstract":"

    Response to SDLEndAudioPassThru

    "},"Classes/SDLEqualizerSettings.html":{"name":"SDLEqualizerSettings","abstract":"

    Defines the each Equalizer channel settings.

    "},"Classes/SDLFile.html":{"name":"SDLFile","abstract":"

    Undocumented

    "},"Classes/SDLFileManager.html":{"name":"SDLFileManager","abstract":"

    The SDLFileManager is an RPC manager for the remote file system. After it starts, it will attempt to communicate with the remote file system to get the names of all files. Deleting and Uploading will them queue these changes as transactions. If a delete succeeds, the local list of remote files will remove that file name, and likewise, if an upload succeeds, the local list of remote files will now include that file name.

    "},"Classes/SDLFileManagerConfiguration.html":{"name":"SDLFileManagerConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLFuelRange.html":{"name":"SDLFuelRange","abstract":"

    Describes the distance a vehicle can travel with the current level of fuel.

    "},"Classes/SDLFunctionID.html":{"name":"SDLFunctionID","abstract":"

    Undocumented

    "},"Classes/SDLGPSData.html":{"name":"SDLGPSData","abstract":"

    Describes the GPS data. Not all data will be available on all carlines.

    "},"Classes.html#/c:objc(cs)SDLGenericResponse":{"name":"SDLGenericResponse","abstract":"

    Generic Response is sent when the name of a received request is unknown. It is only used in case of an error. It will have an INVALID_DATA result code.

    "},"Classes/SDLGetAppServiceData.html":{"name":"SDLGetAppServiceData","abstract":"

    This request asks the module for current data related to the specific service. It also includes an option to subscribe to that service for future updates.

    "},"Classes/SDLGetAppServiceDataResponse.html":{"name":"SDLGetAppServiceDataResponse","abstract":"

    Undocumented

    "},"Classes/SDLGetCloudAppProperties.html":{"name":"SDLGetCloudAppProperties","abstract":"

    RPC used to get the current properties of a cloud application.

    "},"Classes/SDLGetCloudAppPropertiesResponse.html":{"name":"SDLGetCloudAppPropertiesResponse","abstract":"

    The response to GetCloudAppProperties

    "},"Classes/SDLGetDTCs.html":{"name":"SDLGetDTCs","abstract":"

    This RPC allows to request diagnostic module trouble codes from a certain"},"Classes/SDLGetDTCsResponse.html":{"name":"SDLGetDTCsResponse","abstract":"

    Response to SDLGetDTCs

    "},"Classes/SDLGetFile.html":{"name":"SDLGetFile","abstract":"

    This request is sent to the module to retrieve a file.

    "},"Classes/SDLGetFileResponse.html":{"name":"SDLGetFileResponse","abstract":"

    Undocumented

    "},"Classes/SDLGetInteriorVehicleData.html":{"name":"SDLGetInteriorVehicleData","abstract":"

    Reads the current status value of specified remote control module (type)."},"Classes/SDLGetInteriorVehicleDataResponse.html":{"name":"SDLGetInteriorVehicleDataResponse","abstract":"

    A response to SDLGetInteriorVehicleData

    "},"Classes/SDLGetSystemCapability.html":{"name":"SDLGetSystemCapability","abstract":"

    Undocumented

    "},"Classes/SDLGetSystemCapabilityResponse.html":{"name":"SDLGetSystemCapabilityResponse","abstract":"

    Response to SDLGetSystemCapability

    "},"Classes/SDLGetVehicleData.html":{"name":"SDLGetVehicleData","abstract":"

    Requests current values of specific published vehicle data items.

    "},"Classes/SDLGetVehicleDataResponse.html":{"name":"SDLGetVehicleDataResponse","abstract":"

    Response to SDLGetVehicleData

    "},"Classes/SDLGetWayPoints.html":{"name":"SDLGetWayPoints","abstract":"

    Undocumented

    "},"Classes/SDLGetWayPointsResponse.html":{"name":"SDLGetWayPointsResponse","abstract":"

    Response to SDLGetWayPoints

    "},"Classes/SDLHMICapabilities.html":{"name":"SDLHMICapabilities","abstract":"

    Undocumented

    "},"Classes/SDLHMIPermissions.html":{"name":"SDLHMIPermissions","abstract":"

    Defining sets of HMI levels, which are permitted or prohibited for a given RPC.

    "},"Classes/SDLHMISettingsControlCapabilities.html":{"name":"SDLHMISettingsControlCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLHMISettingsControlData.html":{"name":"SDLHMISettingsControlData","abstract":"

    Corresponds to HMI_SETTINGS ModuleType

    "},"Classes/SDLHapticRect.html":{"name":"SDLHapticRect","abstract":"

    Defines spatial for each user control object for video streaming application

    "},"Classes/SDLHeadLampStatus.html":{"name":"SDLHeadLampStatus","abstract":"

    Vehicle data struct for status of head lamps

    "},"Classes/SDLImage.html":{"name":"SDLImage","abstract":"

    Specifies which image shall be used e.g. in SDLAlerts or on SDLSoftbuttons provided the display supports it.

    "},"Classes/SDLImageField.html":{"name":"SDLImageField","abstract":"

    A struct used in DisplayCapabilities describing the capability of an image field

    "},"Classes/SDLImageResolution.html":{"name":"SDLImageResolution","abstract":"

    The resolution of an image

    "},"Classes/SDLKeyboardProperties.html":{"name":"SDLKeyboardProperties","abstract":"

    Configuration of on-screen keyboard (if available)

    "},"Classes/SDLLifecycleConfiguration.html":{"name":"SDLLifecycleConfiguration","abstract":"

    Configuration options for SDLManager

    "},"Classes/SDLLifecycleConfigurationUpdate.html":{"name":"SDLLifecycleConfigurationUpdate","abstract":"

    Configuration update options for SDLManager. This class can be used to update the lifecycle configuration in"},"Classes/SDLLightCapabilities.html":{"name":"SDLLightCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLLightControlCapabilities.html":{"name":"SDLLightControlCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLLightControlData.html":{"name":"SDLLightControlData","abstract":"

    Undocumented

    "},"Classes/SDLLightState.html":{"name":"SDLLightState","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLListFiles":{"name":"SDLListFiles","abstract":"

    Requests the current list of resident filenames for the registered app. Not"},"Classes/SDLListFilesResponse.html":{"name":"SDLListFilesResponse","abstract":"

    Response to SDLListFiles

    "},"Classes/SDLLocationCoordinate.html":{"name":"SDLLocationCoordinate","abstract":"

    Describes a coordinate on earth

    "},"Classes/SDLLocationDetails.html":{"name":"SDLLocationDetails","abstract":"

    Describes a location, including its coordinate, name, etc. Used in WayPoints.

    "},"Classes/SDLLockScreenConfiguration.html":{"name":"SDLLockScreenConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLLockScreenViewController.html":{"name":"SDLLockScreenViewController","abstract":"

    Undocumented

    "},"Classes/SDLLogConfiguration.html":{"name":"SDLLogConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLLogFileModule.html":{"name":"SDLLogFileModule","abstract":"

    Undocumented

    "},"Classes/SDLLogFilter.html":{"name":"SDLLogFilter","abstract":"

    Undocumented

    "},"Classes/SDLLogManager.html":{"name":"SDLLogManager","abstract":"

    This is the central manager of logging. A developer should not have to interact with this class, it is exclusively used internally.

    "},"Classes.html#/c:objc(cs)SDLLogTargetAppleSystemLog":{"name":"SDLLogTargetAppleSystemLog","abstract":"

    The Apple System Log target is an iOS 2.0+ compatible log target that logs to both the Console and to the System Log.

    "},"Classes.html#/c:objc(cs)SDLLogTargetFile":{"name":"SDLLogTargetFile","abstract":"

    The File log will log to a text file on the iPhone in Documents/smartdevicelink/log/#appName##datetime##.log. It will log up to 3 logs which will rollover.

    "},"Classes.html#/c:objc(cs)SDLLogTargetOSLog":{"name":"SDLLogTargetOSLog","abstract":"

    OS_LOG is an iOS 10+ only logging system that logs to the Console and the Apple system console. This is an improved replacement for Apple SysLog (SDLLogTargetAppleSystemLog).

    "},"Classes/SDLManager.html":{"name":"SDLManager","abstract":"

    Undocumented

    "},"Classes/SDLMassageCushionFirmness.html":{"name":"SDLMassageCushionFirmness","abstract":"

    The intensity or firmness of a cushion.

    "},"Classes/SDLMassageModeData.html":{"name":"SDLMassageModeData","abstract":"

    Specify the mode of a massage zone.

    "},"Classes/SDLMediaServiceData.html":{"name":"SDLMediaServiceData","abstract":"

    This data is related to what a media service should provide.

    "},"Classes.html#/c:objc(cs)SDLMediaServiceManifest":{"name":"SDLMediaServiceManifest","abstract":"

    A media service manifest.

    "},"Classes/SDLMenuCell.html":{"name":"SDLMenuCell","abstract":"

    Undocumented

    "},"Classes/SDLMenuParams.html":{"name":"SDLMenuParams","abstract":"

    Used when adding a sub menu to an application menu or existing sub menu.

    "},"Classes/SDLMetadataTags.html":{"name":"SDLMetadataTags","abstract":"

    Undocumented

    "},"Classes/SDLModuleData.html":{"name":"SDLModuleData","abstract":"

    Describes a remote control module’s data

    "},"Classes/SDLMyKey.html":{"name":"SDLMyKey","abstract":"

    Vehicle Data struct

    "},"Classes/SDLNavigationCapability.html":{"name":"SDLNavigationCapability","abstract":"

    Extended capabilities for an onboard navigation system

    "},"Classes/SDLNavigationInstruction.html":{"name":"SDLNavigationInstruction","abstract":"

    Undocumented

    "},"Classes/SDLNavigationServiceData.html":{"name":"SDLNavigationServiceData","abstract":"

    Undocumented

    "},"Classes/SDLNavigationServiceManifest.html":{"name":"SDLNavigationServiceManifest","abstract":"

    Undocumented

    "},"Classes/SDLNotificationConstants.html":{"name":"SDLNotificationConstants","abstract":"

    Undocumented

    "},"Classes/SDLOasisAddress.html":{"name":"SDLOasisAddress","abstract":"

    Struct used in SendLocation describing an address

    "},"Classes/SDLOnAppInterfaceUnregistered.html":{"name":"SDLOnAppInterfaceUnregistered","abstract":"

    Notifies an application that its interface registration has been terminated. This means that all SDL resources associated with the application are discarded, including the Command Menu, Choice Sets, button subscriptions, etc.

    "},"Classes/SDLOnAppServiceData.html":{"name":"SDLOnAppServiceData","abstract":"

    This notification includes the data that is updated from the specific service.

    "},"Classes.html#/c:objc(cs)SDLOnAudioPassThru":{"name":"SDLOnAudioPassThru","abstract":"

    Binary data is in binary part of hybrid msg.

    "},"Classes/SDLOnButtonEvent.html":{"name":"SDLOnButtonEvent","abstract":"

    Notifies application that user has depressed or released a button to which"},"Classes/SDLOnButtonPress.html":{"name":"SDLOnButtonPress","abstract":"

    Notifies application of button press events for buttons to which the application is subscribed. SDL supports two button press events defined as follows:

    "},"Classes/SDLOnCommand.html":{"name":"SDLOnCommand","abstract":"

    This is called when a command was selected via VR after pressing the PTT button, or selected from the menu after pressing the MENU button.

    "},"Classes/SDLOnDriverDistraction.html":{"name":"SDLOnDriverDistraction","abstract":"

    Notifies the application of the current driver distraction state (whether driver distraction rules are in effect, or not).

    "},"Classes/SDLOnEncodedSyncPData.html":{"name":"SDLOnEncodedSyncPData","abstract":"

    Callback including encoded data of any SyncP packets that SYNC needs to send back to the mobile device. Legacy / v1 Protocol implementation; responds to EncodedSyncPData. *** DEPRECATED ***

    "},"Classes/SDLOnHMIStatus.html":{"name":"SDLOnHMIStatus"},"Classes/SDLOnHashChange.html":{"name":"SDLOnHashChange","abstract":"

    Notification containing an updated hashID which can be used over connection cycles (i.e. loss of connection, ignition cycles, etc.). Sent after initial registration and subsequently after any change in the calculated hash of all persisted app data.

    "},"Classes/SDLOnInteriorVehicleData.html":{"name":"SDLOnInteriorVehicleData","abstract":"

    Notifications when subscribed vehicle data changes.

    "},"Classes/SDLOnKeyboardInput.html":{"name":"SDLOnKeyboardInput","abstract":"

    Sent when a keyboard presented by a PerformInteraction has a keyboard input.

    "},"Classes/SDLOnLanguageChange.html":{"name":"SDLOnLanguageChange","abstract":"

    Provides information to what language the SDL HMI language was changed

    "},"Classes/SDLOnLockScreenStatus.html":{"name":"SDLOnLockScreenStatus","abstract":"

    To help prevent driver distraction, any SmartDeviceLink application is required to implement a lockscreen that must be enforced while the application is active on the system while the vehicle is in motion.

    "},"Classes/SDLOnPermissionsChange.html":{"name":"SDLOnPermissionsChange","abstract":"

    Provides update to app of which sets of functions are available

    "},"Classes/SDLOnRCStatus.html":{"name":"SDLOnRCStatus","abstract":"

    OnRCStatus notifications to all registered mobile applications and the HMI whenever"},"Classes/SDLOnSyncPData.html":{"name":"SDLOnSyncPData","abstract":"

    DEPRECATED

    "},"Classes/SDLOnSystemCapabilityUpdated.html":{"name":"SDLOnSystemCapabilityUpdated","abstract":"

    A notification to inform the connected device that a specific system capability has changed.

    "},"Classes/SDLOnSystemRequest.html":{"name":"SDLOnSystemRequest","abstract":"

    An asynchronous request from the system for specific data from the device or the cloud or response to a request from the device or cloud Binary data can be included in hybrid part of message for some requests (such as Authentication request responses)

    "},"Classes/SDLOnTBTClientState.html":{"name":"SDLOnTBTClientState","abstract":"

    Provides applications with notifications specific to the current TBT client status on the module

    "},"Classes/SDLOnTouchEvent.html":{"name":"SDLOnTouchEvent","abstract":"

    Notifies about touch events on the screen’s prescribed area during video streaming

    "},"Classes/SDLOnVehicleData.html":{"name":"SDLOnVehicleData","abstract":"

    Callback for the periodic and non periodic vehicle data read function.

    "},"Classes/SDLOnWayPointChange.html":{"name":"SDLOnWayPointChange","abstract":"

    Notification which provides the entire LocationDetails when there is a change to any waypoints or destination.

    "},"Classes/SDLParameterPermissions.html":{"name":"SDLParameterPermissions","abstract":"

    Defining sets of parameters, which are permitted or prohibited for a given RPC.

    "},"Classes/SDLPerformAppServiceInteraction.html":{"name":"SDLPerformAppServiceInteraction","abstract":"

    App service providers will likely have different actions exposed to the module and app service consumers. It will be difficult to standardize these actions by RPC versions and can easily become stale. Therefore, we introduce a best-effort attempt to take actions on a service.

    "},"Classes/SDLPerformAppServiceInteractionResponse.html":{"name":"SDLPerformAppServiceInteractionResponse","abstract":"

    Undocumented

    "},"Classes/SDLPerformAudioPassThru.html":{"name":"SDLPerformAudioPassThru","abstract":"

    This will open an audio pass thru session. By doing so the app can receive"},"Classes.html#/c:objc(cs)SDLPerformAudioPassThruResponse":{"name":"SDLPerformAudioPassThruResponse","abstract":"

    Response to SDLPerformAudioPassThru

    "},"Classes/SDLPerformInteraction.html":{"name":"SDLPerformInteraction","abstract":"

    Performs an application-initiated interaction in which the user can select a"},"Classes/SDLPerformInteractionResponse.html":{"name":"SDLPerformInteractionResponse","abstract":"

    PerformInteraction Response is sent, when SDLPerformInteraction has been called

    "},"Classes/SDLPermissionItem.html":{"name":"SDLPermissionItem","abstract":"

    Undocumented

    "},"Classes/SDLPermissionManager.html":{"name":"SDLPermissionManager","abstract":"

    Undocumented

    "},"Classes/SDLPhoneCapability.html":{"name":"SDLPhoneCapability","abstract":"

    Extended capabilities of the module’s phone feature

    "},"Classes/SDLPinchGesture.html":{"name":"SDLPinchGesture","abstract":"

    Undocumented

    "},"Classes/SDLPresetBankCapabilities.html":{"name":"SDLPresetBankCapabilities","abstract":"

    Contains information about on-screen preset capabilities.

    "},"Classes/SDLPublishAppService.html":{"name":"SDLPublishAppService","abstract":"

    Registers a service offered by this app on the module.

    "},"Classes/SDLPublishAppServiceResponse.html":{"name":"SDLPublishAppServiceResponse","abstract":"

    Undocumented

    "},"Classes/SDLPutFile.html":{"name":"SDLPutFile","abstract":"

    Used to push a binary data onto the SDL module from a mobile device, such as icons and album art.

    "},"Classes/SDLPutFileResponse.html":{"name":"SDLPutFileResponse","abstract":"

    Response to SDLPutFile

    "},"Classes/SDLRDSData.html":{"name":"SDLRDSData","abstract":"

    Include the data defined in Radio Data System, which is a communications protocol standard for embedding small amounts of digital information in conventional FM radio broadcasts.

    "},"Classes/SDLRGBColor.html":{"name":"SDLRGBColor","abstract":"

    Undocumented

    "},"Classes/SDLRPCMessage.html":{"name":"SDLRPCMessage","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLRPCNotification":{"name":"SDLRPCNotification","abstract":"

    An RPC sent from the head unit to the app about some data change, such as a button was pressed

    "},"Classes/SDLRPCNotificationNotification.html":{"name":"SDLRPCNotificationNotification","abstract":"

    An NSNotification object that makes retrieving internal SDLRPCNotification data easier

    "},"Classes/SDLRPCRequest.html":{"name":"SDLRPCRequest","abstract":"

    Undocumented

    "},"Classes/SDLRPCRequestNotification.html":{"name":"SDLRPCRequestNotification","abstract":"

    A NSNotification object that makes retrieving internal SDLRPCRequest data easier

    "},"Classes/SDLRPCResponse.html":{"name":"SDLRPCResponse","abstract":"

    Undocumented

    "},"Classes/SDLRPCResponseNotification.html":{"name":"SDLRPCResponseNotification","abstract":"

    A NSNotification object that makes retrieving internal SDLRPCResponse data easier

    "},"Classes/SDLRPCStruct.html":{"name":"SDLRPCStruct","abstract":"

    Undocumented

    "},"Classes/SDLRadioControlCapabilities.html":{"name":"SDLRadioControlCapabilities","abstract":"

    Contains information about a radio control module’s capabilities.

    "},"Classes/SDLRadioControlData.html":{"name":"SDLRadioControlData","abstract":"

    Include information (both read-only and changeable data) about a remote control radio module.

    "},"Classes/SDLReadDID.html":{"name":"SDLReadDID","abstract":"

    Non periodic vehicle data read request. This is an RPC to get diagnostics"},"Classes/SDLReadDIDResponse.html":{"name":"SDLReadDIDResponse","abstract":"

    A response to ReadDID

    "},"Classes/SDLRectangle.html":{"name":"SDLRectangle","abstract":"

    A struct describing a rectangle

    "},"Classes/SDLRegisterAppInterface.html":{"name":"SDLRegisterAppInterface","abstract":"

    Registers the application’s interface with SDL. The RegisterAppInterface RPC declares the properties of the app, including the messaging interface version, the app name, etc. The mobile application must establish its interface registration with SDL before any other interaction with SDL can take place. The registration lasts until it is terminated either by the application calling the SDLUnregisterAppInterface method, or by SDL sending an SDLOnAppInterfaceUnregistered notification, or by loss of the underlying transport connection, or closing of the underlying message transmission protocol RPC session.

    "},"Classes/SDLRegisterAppInterfaceResponse.html":{"name":"SDLRegisterAppInterfaceResponse","abstract":"

    Response to SDLRegisterAppInterface

    "},"Classes/SDLRemoteControlCapabilities.html":{"name":"SDLRemoteControlCapabilities","abstract":"

    Capabilities of the remote control feature

    "},"Classes/SDLResetGlobalProperties.html":{"name":"SDLResetGlobalProperties","abstract":"

    Resets the passed global properties to their default values as defined by"},"Classes.html#/c:objc(cs)SDLResetGlobalPropertiesResponse":{"name":"SDLResetGlobalPropertiesResponse","abstract":"

    Response to ResetGlobalProperties

    "},"Classes/SDLSISData.html":{"name":"SDLSISData","abstract":"

    HD radio Station Information Service (SIS) data.

    "},"Classes/SDLScreenManager.html":{"name":"SDLScreenManager","abstract":"

    Undocumented

    "},"Classes/SDLScreenParams.html":{"name":"SDLScreenParams","abstract":"

    A struct in DisplayCapabilities describing parameters related to a video / touch input area

    "},"Classes/SDLScrollableMessage.html":{"name":"SDLScrollableMessage","abstract":"

    Creates a full screen overlay containing a large block of formatted text that"},"Classes.html#/c:objc(cs)SDLScrollableMessageResponse":{"name":"SDLScrollableMessageResponse","abstract":"

    Response to SDLScrollableMessage

    "},"Classes/SDLSeatControlCapabilities.html":{"name":"SDLSeatControlCapabilities","abstract":"

    Include information about a seat control capabilities.

    "},"Classes/SDLSeatControlData.html":{"name":"SDLSeatControlData","abstract":"

    Seat control data corresponds to SEAT ModuleType.

    "},"Classes/SDLSeatMemoryAction.html":{"name":"SDLSeatMemoryAction","abstract":"

    Specify the action to be performed.

    "},"Classes/SDLSendHapticData.html":{"name":"SDLSendHapticData","abstract":"

    Sends the spatial data gathered from SDLCarWindow or VirtualDisplayEncoder to the HMI. This data will be utilized by the HMI to determine how and when haptic events should occur.

    "},"Classes.html#/c:objc(cs)SDLSendHapticDataResponse":{"name":"SDLSendHapticDataResponse","abstract":"

    Response to SDLSendHapticData

    "},"Classes/SDLSendLocation.html":{"name":"SDLSendLocation","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLSendLocationResponse":{"name":"SDLSendLocationResponse","abstract":"

    Response to SDLSendLocation

    "},"Classes/SDLSetAppIcon.html":{"name":"SDLSetAppIcon","abstract":"

    Used to set existing local file on SDL as the app’s icon. Not supported on"},"Classes.html#/c:objc(cs)SDLSetAppIconResponse":{"name":"SDLSetAppIconResponse","abstract":"

    Response to SDLSetAppIcon

    "},"Classes/SDLSetCloudAppProperties.html":{"name":"SDLSetCloudAppProperties","abstract":"

    RPC used to enable/disable a cloud application and set authentication data

    "},"Classes.html#/c:objc(cs)SDLSetCloudAppPropertiesResponse":{"name":"SDLSetCloudAppPropertiesResponse","abstract":"

    The response to SetCloudAppProperties

    "},"Classes/SDLSetDisplayLayout.html":{"name":"SDLSetDisplayLayout","abstract":"

    Used to set an alternate display layout. If not sent, default screen for"},"Classes/SDLSetDisplayLayoutResponse.html":{"name":"SDLSetDisplayLayoutResponse","abstract":"

    Response to SDLSetDisplayLayout

    "},"Classes/SDLSetGlobalProperties.html":{"name":"SDLSetGlobalProperties","abstract":"

    Sets global property values

    "},"Classes.html#/c:objc(cs)SDLSetGlobalPropertiesResponse":{"name":"SDLSetGlobalPropertiesResponse","abstract":"

    Response to SDLSetGlobalProperties

    "},"Classes/SDLSetInteriorVehicleData.html":{"name":"SDLSetInteriorVehicleData","abstract":"

    This RPC allows a remote control type mobile application to"},"Classes/SDLSetInteriorVehicleDataResponse.html":{"name":"SDLSetInteriorVehicleDataResponse","abstract":"

    Response to SDLSetInteriorVehicleData

    "},"Classes/SDLSetMediaClockTimer.html":{"name":"SDLSetMediaClockTimer","abstract":"

    Sets the media clock/timer value and the update method (e.g.count-up,"},"Classes.html#/c:objc(cs)SDLSetMediaClockTimerResponse":{"name":"SDLSetMediaClockTimerResponse","abstract":"

    Response to SDLSetMediaClockTimer

    "},"Classes/SDLShow.html":{"name":"SDLShow","abstract":"

    Updates the application’s display text area, regardless of whether or not"},"Classes/SDLShowConstantTBT.html":{"name":"SDLShowConstantTBT","abstract":"

    This RPC is used to update the user with navigation information for the constantly shown screen (base screen), but also for the alert maneuver screen.

    "},"Classes.html#/c:objc(cs)SDLShowConstantTBTResponse":{"name":"SDLShowConstantTBTResponse","abstract":"

    Response to SDLShowConstantTBT

    "},"Classes.html#/c:objc(cs)SDLShowResponse":{"name":"SDLShowResponse","abstract":"

    Response to SDLShow

    "},"Classes/SDLSingleTireStatus.html":{"name":"SDLSingleTireStatus","abstract":"

    Tire pressure status of a single tire.

    "},"Classes/SDLSlider.html":{"name":"SDLSlider","abstract":"

    Creates a full screen or pop-up overlay (depending on platform) with a single user controlled slider

    "},"Classes/SDLSliderResponse.html":{"name":"SDLSliderResponse","abstract":"

    Response to SDLSlider

    "},"Classes/SDLSoftButton.html":{"name":"SDLSoftButton","abstract":"

    Describes an on-screen button which may be presented in various contexts, e.g. templates or alerts

    "},"Classes/SDLSoftButtonCapabilities.html":{"name":"SDLSoftButtonCapabilities","abstract":"

    Contains information about a SoftButton’s capabilities.

    "},"Classes/SDLSoftButtonObject.html":{"name":"SDLSoftButtonObject","abstract":"

    A soft button wrapper object that is capable of storing and switching between states

    "},"Classes/SDLSoftButtonState.html":{"name":"SDLSoftButtonState","abstract":"

    Undocumented

    "},"Classes/SDLSpeak.html":{"name":"SDLSpeak","abstract":"

    Speaks a phrase over the vehicle audio system using SDL’s TTS (text-to-speech) engine. The provided text to be spoken can be simply a text phrase, or it can consist of phoneme specifications to direct SDL’s TTS engine to speak a speech-sculpted phrase.

    "},"Classes.html#/c:objc(cs)SDLSpeakResponse":{"name":"SDLSpeakResponse","abstract":"

    Response to SDLSpeak

    "},"Classes/SDLStartTime.html":{"name":"SDLStartTime","abstract":"

    Describes the hour, minute and second values used to set the media clock.

    "},"Classes/SDLStationIDNumber.html":{"name":"SDLStationIDNumber","abstract":"

    Describes the hour, minute and second values used to set the media clock.

    "},"Classes/SDLStreamingMediaConfiguration.html":{"name":"SDLStreamingMediaConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLStreamingMediaManager.html":{"name":"SDLStreamingMediaManager","abstract":"

    Undocumented

    "},"Classes/SDLSubscribeButton.html":{"name":"SDLSubscribeButton","abstract":"

    Establishes a subscription to button notifications for HMI buttons. Buttons"},"Classes.html#/c:objc(cs)SDLSubscribeButtonResponse":{"name":"SDLSubscribeButtonResponse","abstract":"

    Response to SDLSubscribeButton

    "},"Classes/SDLSubscribeVehicleData.html":{"name":"SDLSubscribeVehicleData","abstract":"

    Subscribes to specific published vehicle data items. The data will be only sent if it has changed. The application will be notified by the onVehicleData notification whenever new data is available. The update rate is dependent on sensors, vehicle architecture and vehicle type.

    "},"Classes/SDLSubscribeVehicleDataResponse.html":{"name":"SDLSubscribeVehicleDataResponse","abstract":"

    Response to SDLSubscribeVehicleData

    "},"Classes.html#/c:objc(cs)SDLSubscribeWayPoints":{"name":"SDLSubscribeWayPoints","abstract":"

    A SDLSubscribeWaypoints can be sent to subscribe"},"Classes.html#/c:objc(cs)SDLSubscribeWayPointsResponse":{"name":"SDLSubscribeWayPointsResponse","abstract":"

    Response to SubscribeWayPoints

    "},"Classes/SDLSyncMsgVersion.html":{"name":"SDLSyncMsgVersion","abstract":"

    Specifies the version number of the SDL V4 interface. This is used by both the application and SDL to declare what interface version each is using.

    "},"Classes.html#/c:objc(cs)SDLSyncPData":{"name":"SDLSyncPData","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLSyncPDataResponse":{"name":"SDLSyncPDataResponse","abstract":"

    Response to SyncPData

    "},"Classes/SDLSystemCapability.html":{"name":"SDLSystemCapability","abstract":"

    The systemCapabilityType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a navigationCapability should exist.

    "},"Classes/SDLSystemCapabilityManager.html":{"name":"SDLSystemCapabilityManager","abstract":"

    Undocumented

    "},"Classes/SDLSystemRequest.html":{"name":"SDLSystemRequest","abstract":"

    Undocumented

    "},"Classes/SDLTTSChunk.html":{"name":"SDLTTSChunk","abstract":"

    Specifies what is to be spoken. This can be simply a text phrase, which SDL will speak according to its own rules. It can also be phonemes from either the Microsoft SAPI phoneme set, or from the LHPLUS phoneme set. It can also be a pre-recorded sound in WAV format (either developer-defined, or provided by the SDL platform).

    "},"Classes/SDLTemperature.html":{"name":"SDLTemperature","abstract":"

    Struct representing a temperature.

    "},"Classes/SDLTemplateColorScheme.html":{"name":"SDLTemplateColorScheme","abstract":"

    Undocumented

    "},"Classes/SDLTextField.html":{"name":"SDLTextField","abstract":"

    Struct defining the characteristics of a displayed field on the HMI.

    "},"Classes/SDLTireStatus.html":{"name":"SDLTireStatus","abstract":"

    Struct used in Vehicle Data; the status and pressure of the tires.

    "},"Classes/SDLTouch.html":{"name":"SDLTouch","abstract":"

    Undocumented

    "},"Classes/SDLTouchCoord.html":{"name":"SDLTouchCoord","abstract":"

    The coordinate of a touch, used in a touch event

    "},"Classes/SDLTouchEvent.html":{"name":"SDLTouchEvent","abstract":"

    A touch which occurred on the IVI system during projection

    "},"Classes/SDLTouchEventCapabilities.html":{"name":"SDLTouchEventCapabilities","abstract":"

    The capabilities of touches during projection applications

    "},"Classes/SDLTouchManager.html":{"name":"SDLTouchManager","abstract":"

    Undocumented

    "},"Classes/SDLTurn.html":{"name":"SDLTurn","abstract":"

    A struct used in UpdateTurnList for Turn-by-Turn navigation applications

    "},"Classes.html#/c:objc(cs)SDLUnregisterAppInterface":{"name":"SDLUnregisterAppInterface","abstract":"

    Terminates an application’s interface registration. This causes SDL® to"},"Classes.html#/c:objc(cs)SDLUnregisterAppInterfaceResponse":{"name":"SDLUnregisterAppInterfaceResponse","abstract":"

    Response to UnregisterAppInterface

    "},"Classes/SDLUnsubscribeButton.html":{"name":"SDLUnsubscribeButton","abstract":"

    Deletes a subscription to button notifications for the specified button. For"},"Classes.html#/c:objc(cs)SDLUnsubscribeButtonResponse":{"name":"SDLUnsubscribeButtonResponse","abstract":"

    Response to UnsubscribeButton

    "},"Classes/SDLUnsubscribeVehicleData.html":{"name":"SDLUnsubscribeVehicleData","abstract":"

    This function is used to unsubscribe the notifications from the"},"Classes/SDLUnsubscribeVehicleDataResponse.html":{"name":"SDLUnsubscribeVehicleDataResponse","abstract":"

    Response to UnsubscribeVehicleData

    "},"Classes.html#/c:objc(cs)SDLUnsubscribeWayPoints":{"name":"SDLUnsubscribeWayPoints","abstract":"

    Request to unsubscribe from navigation WayPoints and Destination

    "},"Classes.html#/c:objc(cs)SDLUnsubscribeWayPointsResponse":{"name":"SDLUnsubscribeWayPointsResponse","abstract":"

    Response to UnsubscribeWayPoints

    "},"Classes/SDLUpdateTurnList.html":{"name":"SDLUpdateTurnList","abstract":"

    Updates the list of next maneuvers, which can be requested by the user pressing the softbutton

    "},"Classes.html#/c:objc(cs)SDLUpdateTurnListResponse":{"name":"SDLUpdateTurnListResponse","abstract":"

    Response to UpdateTurnList

    "},"Classes/SDLVehicleDataResult.html":{"name":"SDLVehicleDataResult","abstract":"

    Individual published data request result

    "},"Classes/SDLVehicleType.html":{"name":"SDLVehicleType","abstract":"

    Describes the type of vehicle the mobile phone is connected with.

    "},"Classes/SDLVersion.html":{"name":"SDLVersion","abstract":"

    Undocumented

    "},"Classes/SDLVideoStreamingCapability.html":{"name":"SDLVideoStreamingCapability","abstract":"

    Contains information about this system’s video streaming capabilities

    "},"Classes/SDLVideoStreamingFormat.html":{"name":"SDLVideoStreamingFormat","abstract":"

    An available format for video streaming in projection applications

    "},"Classes/SDLVoiceCommand.html":{"name":"SDLVoiceCommand","abstract":"

    Undocumented

    "},"Classes/SDLVRHelpItem.html":{"name":"SDLVRHelpItem","abstract":"

    A help item for voice commands, used locally in interaction lists and globally

    "},"Classes/SDLWeatherAlert.html":{"name":"SDLWeatherAlert","abstract":"

    Undocumented

    "},"Classes/SDLWeatherData.html":{"name":"SDLWeatherData","abstract":"

    Undocumented

    "},"Classes/SDLWeatherServiceData.html":{"name":"SDLWeatherServiceData","abstract":"

    This data is related to what a weather service would provide.

    "},"Classes/SDLWeatherServiceManifest.html":{"name":"SDLWeatherServiceManifest","abstract":"

    A weather service manifest.

    "},"Categories/NSString(SDLEnum).html#/c:objc(cs)NSString(im)isEqualToEnum:":{"name":"-isEqualToEnum:","abstract":"

    Returns whether or not two enums are equal.

    ","parent_name":"NSString(SDLEnum)"},"Categories/NSString(SDLEnum).html":{"name":"NSString(SDLEnum)","abstract":"

    Undocumented

    "},"Categories.html":{"name":"Categories","abstract":"

    The following categories are available globally.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Constants.html":{"name":"Constants","abstract":"

    The following constants are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Type Definitions.html":{"name":"Type Definitions","abstract":"

    The following type definitions are available globally.

    "}} \ No newline at end of file +{"Type Definitions/SDLTouchIdentifier/.html#/c:@EA@SDLTouchIdentifier@SDLTouchIdentifierFirstFinger":{"name":"SDLTouchIdentifierFirstFinger","abstract":"

    Undocumented

    "},"Type Definitions/SDLTouchIdentifier/.html#/c:@EA@SDLTouchIdentifier@SDLTouchIdentifierSecondFinger":{"name":"SDLTouchIdentifierSecondFinger","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLAmbientLightStatus.h@T@SDLAmbientLightStatus":{"name":"SDLAmbientLightStatus","abstract":"

    Reflects the status of the ambient light sensor for headlamps

    "},"Type Definitions.html#/c:SDLAppHMIType.h@T@SDLAppHMIType":{"name":"SDLAppHMIType","abstract":"

    Enumeration listing possible app hmi types.

    "},"Type Definitions.html#/c:SDLAppInterfaceUnregisteredReason.h@T@SDLAppInterfaceUnregisteredReason":{"name":"SDLAppInterfaceUnregisteredReason","abstract":"

    Indicates reason why app interface was unregistered. The application is being disconnected by SDL.

    "},"Type Definitions.html#/c:SDLAppServiceType.h@T@SDLAppServiceType":{"name":"SDLAppServiceType","abstract":"

    Enumeration listing possible app service types.

    "},"Type Definitions.html#/c:SDLAudioStreamingIndicator.h@T@SDLAudioStreamingIndicator":{"name":"SDLAudioStreamingIndicator","abstract":"

    Enumeration listing possible indicators of audio streaming changes

    "},"Type Definitions.html#/c:SDLAudioStreamingState.h@T@SDLAudioStreamingState":{"name":"SDLAudioStreamingState","abstract":"

    Describes whether or not streaming audio is currently audible to the user. Though provided in every OnHMIStatus notification, this information is only relevant for applications that declare themselves as media apps in RegisterAppInterface

    "},"Type Definitions.html#/c:SDLAudioType.h@T@SDLAudioType":{"name":"SDLAudioType","abstract":"

    Describes different audio type options for PerformAudioPassThru

    "},"Type Definitions.html#/c:SDLBitsPerSample.h@T@SDLBitsPerSample":{"name":"SDLBitsPerSample","abstract":"

    Describes different bit depth options for PerformAudioPassThru

    "},"Type Definitions.html#/c:SDLButtonEventMode.h@T@SDLButtonEventMode":{"name":"SDLButtonEventMode","abstract":"

    Indicates whether the button was depressed or released. A BUTTONUP event will always be preceded by a BUTTONDOWN event.

    "},"Type Definitions.html#/c:SDLButtonName.h@T@SDLButtonName":{"name":"SDLButtonName","abstract":"

    Defines logical buttons which, on a given SDL unit, would correspond to either physical or soft (touchscreen) buttons. These logical buttons present a standard functional abstraction which the developer can rely upon, independent of the SDL unit. For example, the developer can rely upon the OK button having the same meaning to the user across SDL platforms.

    "},"Type Definitions.html#/c:SDLButtonPressMode.h@T@SDLButtonPressMode":{"name":"SDLButtonPressMode","abstract":"

    Indicates whether this is a LONG or SHORT button press

    "},"Type Definitions.html#/c:SDLCarModeStatus.h@T@SDLCarModeStatus":{"name":"SDLCarModeStatus","abstract":"

    Describes the carmode the vehicle is in. Used in ClusterModeStatus

    "},"Type Definitions.html#/c:SDLCharacterSet.h@T@SDLCharacterSet":{"name":"SDLCharacterSet","abstract":"

    Character sets supported by SDL. Used to describe text field capabilities.

    "},"Type Definitions.html#/c:SDLCompassDirection.h@T@SDLCompassDirection":{"name":"SDLCompassDirection","abstract":"

    The list of potential compass directions. Used in GPS data

    "},"Type Definitions.html#/c:SDLComponentVolumeStatus.h@T@SDLComponentVolumeStatus":{"name":"SDLComponentVolumeStatus","abstract":"

    The volume status of a vehicle component. Used in SingleTireStatus and VehicleData Fuel Level

    "},"Type Definitions.html#/c:SDLDefrostZone.h@T@SDLDefrostZone":{"name":"SDLDefrostZone","abstract":"

    Enumeration listing possible defrost zones. Used in ClimateControlCapabilities and Data.

    "},"Type Definitions.html#/c:SDLDeliveryMode.h@T@SDLDeliveryMode":{"name":"SDLDeliveryMode","abstract":"

    Specifies the mode in which the sendLocation request is sent. Used in SendLocation.

    "},"Type Definitions.html#/c:SDLDeviceLevelStatus.h@T@SDLDeviceLevelStatus":{"name":"SDLDeviceLevelStatus","abstract":"

    Reflects the reported battery status of the connected device, if reported. Used in DeviceStatus.

    "},"Type Definitions.html#/c:SDLDimension.h@T@SDLDimension":{"name":"SDLDimension","abstract":"

    The supported dimensions of the GPS. Used in GPSData

    "},"Type Definitions.html#/c:SDLDirection.h@T@SDLDirection":{"name":"SDLDirection","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLDisplayMode.h@T@SDLDisplayMode":{"name":"SDLDisplayMode","abstract":"

    Identifies the various display types used by SDL.

    "},"Type Definitions.html#/c:SDLDisplayType.h@T@SDLDisplayType":{"name":"SDLDisplayType","abstract":"

    Identifies the various display types used by SDL. Used in DisplayCapabilities.

    "},"Type Definitions.html#/c:SDLDistanceUnit.h@T@SDLDistanceUnit":{"name":"SDLDistanceUnit","abstract":"

    Wiper Status

    "},"Type Definitions.html#/c:SDLDriverDistractionState.h@T@SDLDriverDistractionState":{"name":"SDLDriverDistractionState","abstract":"

    Enumeration that describes possible states of driver distraction. Used in OnDriverDistraction.

    "},"Type Definitions.html#/c:SDLECallConfirmationStatus.h@T@SDLECallConfirmationStatus":{"name":"SDLECallConfirmationStatus","abstract":"

    Reflects the status of the eCall Notification. Used in ECallInfo

    "},"Type Definitions.html#/c:SDLElectronicParkBrakeStatus.h@T@SDLElectronicParkBrakeStatus":{"name":"SDLElectronicParkBrakeStatus","abstract":"

    Reflects the status of the Electronic Parking Brake. A Vehicle Data Type.

    "},"Type Definitions.html#/c:SDLEmergencyEventType.h@T@SDLEmergencyEventType":{"name":"SDLEmergencyEventType","abstract":"

    Reflects the emergency event status of the vehicle. Used in EmergencyEvent

    "},"Type Definitions.html#/c:SDLEnum.h@T@SDLEnum":{"name":"SDLEnum","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLFileManager.h@T@SDLFileManagerStartupCompletionHandler":{"name":"SDLFileManagerStartupCompletionHandler","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileName":{"name":"SDLFileName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerUploadCompletionHandler":{"name":"SDLFileManagerUploadCompletionHandler","abstract":"

    A completion handler called after a response from Core to a upload request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiUploadCompletionHandler":{"name":"SDLFileManagerMultiUploadCompletionHandler","abstract":"

    A completion handler called after a set of upload requests has completed.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiUploadProgressHandler":{"name":"SDLFileManagerMultiUploadProgressHandler","abstract":"

    In a multiple request send, a handler called after each response from Core to a upload request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerDeleteCompletionHandler":{"name":"SDLFileManagerDeleteCompletionHandler","abstract":"

    A completion handler called after a response from Core to a delete request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiDeleteCompletionHandler":{"name":"SDLFileManagerMultiDeleteCompletionHandler","abstract":"

    A completion handler called after a set of delete requests has completed.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerListFilesCompletionHandler":{"name":"SDLFileManagerListFilesCompletionHandler","abstract":"

    A completion handler called after response from Core to a list files request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerUploadArtworkCompletionHandler":{"name":"SDLFileManagerUploadArtworkCompletionHandler","abstract":"

    A completion handler called after a response from Core to a artwork upload request.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiUploadArtworkCompletionHandler":{"name":"SDLFileManagerMultiUploadArtworkCompletionHandler","abstract":"

    A completion handler called after a set of upload artwork requests has completed.

    "},"Type Definitions.html#/c:SDLFileManagerConstants.h@T@SDLFileManagerMultiUploadArtworkProgressHandler":{"name":"SDLFileManagerMultiUploadArtworkProgressHandler","abstract":"

    In a multiple request send, a handler called after each response from Core to an artwork upload request.

    "},"Type Definitions.html#/c:SDLFileType.h@T@SDLFileType":{"name":"SDLFileType","abstract":"

    Enumeration listing possible file types. Used in SDLFile, PutFile, ImageField, OnSystemRequest

    "},"Type Definitions.html#/c:SDLFuelCutoffStatus.h@T@SDLFuelCutoffStatus":{"name":"SDLFuelCutoffStatus","abstract":"

    Reflects the status of the Restraints Control Module fuel pump cutoff. The fuel pump is cut off typically after the vehicle has had a collision. Used in EmergencyEvent.

    "},"Type Definitions.html#/c:SDLFuelType.h@T@SDLFuelType":{"name":"SDLFuelType","abstract":"

    Enumeration listing possible fuel types.

    "},"Type Definitions.html#/c:SDLGlobalProperty.h@T@SDLGlobalProperty":{"name":"SDLGlobalProperty","abstract":"

    Properties of a user-initiated VR interaction (i.e. interactions started by the user pressing the PTT button). Used in RPCs related to ResetGlobalProperties

    "},"Type Definitions.html#/c:SDLHMILevel.h@T@SDLHMILevel":{"name":"SDLHMILevel","abstract":"

    Specifies current level of the HMI. An HMI level indicates the degree of user interaction possible through the HMI (e.g. TTS only, display only, VR, etc.). The HMI level varies for an application based on the type of display (i.e. Nav or non-Nav) and the user directing focus to other applications (e.g. phone, other mobile applications, etc.). Used in OnHMIStatus

    "},"Type Definitions.html#/c:SDLHMIZoneCapabilities.h@T@SDLHMIZoneCapabilities":{"name":"SDLHMIZoneCapabilities","abstract":"

    Specifies HMI Zones in the vehicle. Used in RegisterAppInterfaceResponse

    "},"Type Definitions.html#/c:SDLHybridAppPreference.h@T@SDLHybridAppPreference":{"name":"SDLHybridAppPreference","abstract":"

    Enumeration for the user’s preference of which app type to use when both are available.

    "},"Type Definitions.html#/c:SDLIgnitionStableStatus.h@T@SDLIgnitionStableStatus":{"name":"SDLIgnitionStableStatus","abstract":"

    Reflects the ignition switch stability. Used in BodyInformation

    "},"Type Definitions.html#/c:SDLIgnitionStatus.h@T@SDLIgnitionStatus":{"name":"SDLIgnitionStatus","abstract":"

    Reflects the status of ignition. Used in BodyInformation.

    "},"Type Definitions.html#/c:SDLImageFieldName.h@T@SDLImageFieldName":{"name":"SDLImageFieldName","abstract":"

    The name that identifies the filed. Used in DisplayCapabilities.

    "},"Type Definitions.html#/c:SDLImageType.h@T@SDLImageType":{"name":"SDLImageType","abstract":"

    Contains information about the type of image. Used in Image.

    "},"Type Definitions.html#/c:SDLInteractionMode.h@T@SDLInteractionMode":{"name":"SDLInteractionMode","abstract":"

    For application-initiated interactions (SDLPerformInteraction), this specifies the mode by which the user is prompted and by which the user’s selection is indicated. Used in PerformInteraction.

    "},"Type Definitions.html#/c:SDLKeyboardDelegate.h@T@SDLKeyboardAutocompleteCompletionHandler":{"name":"SDLKeyboardAutocompleteCompletionHandler","abstract":"

    This handler is called when you wish to update your autocomplete text in response to the user’s input

    "},"Type Definitions.html#/c:SDLKeyboardDelegate.h@T@SDLKeyboardCharacterSetCompletionHandler":{"name":"SDLKeyboardCharacterSetCompletionHandler","abstract":"

    This handler is called when you wish to update your keyboard’s limitedCharacterSet in response to the user’s input

    "},"Type Definitions.html#/c:SDLKeyboardEvent.h@T@SDLKeyboardEvent":{"name":"SDLKeyboardEvent","abstract":"

    Enumeration listing possible keyboard events. Used in OnKeyboardInput.

    "},"Type Definitions.html#/c:SDLKeyboardLayout.h@T@SDLKeyboardLayout":{"name":"SDLKeyboardLayout","abstract":"

    Enumeration listing possible keyboard layouts. Used in KeyboardProperties.

    "},"Type Definitions.html#/c:SDLKeypressMode.h@T@SDLKeypressMode":{"name":"SDLKeypressMode","abstract":"

    Enumeration listing possible keyboard events.

    "},"Type Definitions.html#/c:SDLLanguage.h@T@SDLLanguage":{"name":"SDLLanguage","abstract":"

    Specifies the language to be used for TTS, VR, displayed messages/menus. Used in ChangeRegistration and RegisterAppInterface.

    "},"Type Definitions.html#/c:SDLLayoutMode.h@T@SDLLayoutMode":{"name":"SDLLayoutMode","abstract":"

    For touchscreen interactions, the mode of how the choices are presented. Used in PerformInteraction.

    "},"Type Definitions.html#/c:SDLLightName.h@T@SDLLightName":{"name":"SDLLightName","abstract":"

    The name that identifies the Light

    "},"Type Definitions.html#/c:SDLLightStatus.h@T@SDLLightStatus":{"name":"SDLLightStatus","abstract":"

    Reflects the status of Light.

    "},"Type Definitions.html#/c:SDLLockScreenStatus.h@T@SDLLockScreenStatus":{"name":"SDLLockScreenStatus","abstract":"

    Describes what the status of the lock screen should be

    "},"Type Definitions.html#/c:SDLLogConstants.h@T@SDLLogFilterBlock":{"name":"SDLLogFilterBlock","abstract":"

    A block that takes in a log model and returns whether or not the log passes the filter and should therefore be logged.

    "},"Type Definitions.html#/c:SDLMaintenanceModeStatus.h@T@SDLMaintenanceModeStatus":{"name":"SDLMaintenanceModeStatus","abstract":"

    Describes the maintenence mode. Used in nothing.

    "},"Type Definitions.html#/c:SDLManager.h@T@SDLManagerReadyBlock":{"name":"SDLManagerReadyBlock","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLManager.h@T@SDLRPCUpdatedBlock":{"name":"SDLRPCUpdatedBlock","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLMassageCushion.h@T@SDLMassageCushion":{"name":"SDLMassageCushion","abstract":"

    The List possible cushions of a multi-contour massage seat.

    "},"Type Definitions.html#/c:SDLMassageMode.h@T@SDLMassageMode":{"name":"SDLMassageMode","abstract":"

    The List possible modes of a massage zone.

    "},"Type Definitions.html#/c:SDLMassageZone.h@T@SDLMassageZone":{"name":"SDLMassageZone","abstract":"

    List possible zones of a multi-contour massage seat.

    "},"Type Definitions.html#/c:SDLMediaClockFormat.h@T@SDLMediaClockFormat":{"name":"SDLMediaClockFormat","abstract":"

    Indicates the format of the time displayed on the connected SDL unit.

    "},"Type Definitions.html#/c:SDLMediaType.h@T@SDLMediaType":{"name":"SDLMediaType","abstract":"

    Enumeration listing possible media types.

    "},"Type Definitions.html#/c:SDLMenuCell.h@T@SDLMenuCellSelectionHandler":{"name":"SDLMenuCellSelectionHandler","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLMetadataType.h@T@SDLMetadataType":{"name":"SDLMetadataType","abstract":"

    Text Field metadata types. Used in Show.

    "},"Type Definitions.html#/c:SDLModuleType.h@T@SDLModuleType":{"name":"SDLModuleType","abstract":"

    The type of remote control data. Used in ButtonPress, GetInteriorVehicleData, and ModuleData

    "},"Type Definitions.html#/c:SDLNavigationAction.h@T@SDLNavigationAction":{"name":"SDLNavigationAction","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLNavigationJunction.h@T@SDLNavigationJunction":{"name":"SDLNavigationJunction","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLNotificationName":{"name":"SDLNotificationName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLNotificationUserInfoKey":{"name":"SDLNotificationUserInfoKey","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLAudioPassThruHandler":{"name":"SDLAudioPassThruHandler","abstract":"

    A handler used on SDLPerformAudioPassThru.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLResponseHandler":{"name":"SDLResponseHandler","abstract":"

    A handler used on all RPC requests which fires when the response is received.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLMultipleRequestCompletionHandler":{"name":"SDLMultipleRequestCompletionHandler","abstract":"

    A completion handler called after a sequential or simultaneous set of requests have completed sending.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLMultipleSequentialRequestProgressHandler":{"name":"SDLMultipleSequentialRequestProgressHandler","abstract":"

    A handler called after each response to a request comes in in a multiple request send.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLMultipleAsyncRequestProgressHandler":{"name":"SDLMultipleAsyncRequestProgressHandler","abstract":"

    A handler called after each response to a request comes in in a multiple request send.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLRPCButtonNotificationHandler":{"name":"SDLRPCButtonNotificationHandler","abstract":"

    A handler that may optionally be run when an SDLSubscribeButton or SDLSoftButton has a corresponding notification occur.

    "},"Type Definitions.html#/c:SDLNotificationConstants.h@T@SDLRPCCommandNotificationHandler":{"name":"SDLRPCCommandNotificationHandler","abstract":"

    A handler that may optionally be run when an SDLAddCommand has a corresponding notification occur.

    "},"Type Definitions.html#/c:SDLPRNDL.h@T@SDLPRNDL":{"name":"SDLPRNDL","abstract":"

    The selected gear the car is in. Used in retrieving vehicle data.

    "},"Type Definitions.html#/c:SDLPermissionConstants.h@T@SDLPermissionRPCName":{"name":"SDLPermissionRPCName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLPermissionConstants.h@T@SDLPermissionObserverIdentifier":{"name":"SDLPermissionObserverIdentifier","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLPermissionConstants.h@T@SDLPermissionsChangedHandler":{"name":"SDLPermissionsChangedHandler","abstract":"

    The PermissionObserver is a block that is passed in to some methods that will be stored and called when specified permissions change.

    "},"Type Definitions.html#/c:SDLPermissionStatus.h@T@SDLPermissionStatus":{"name":"SDLPermissionStatus","abstract":"

    Enumeration that describes possible permission states of a policy table entry. Used in nothing.

    "},"Type Definitions.html#/c:SDLPowerModeQualificationStatus.h@T@SDLPowerModeQualificationStatus":{"name":"SDLPowerModeQualificationStatus","abstract":"

    Describes the power mode qualification status. Used in ClusterModeStatus.

    "},"Type Definitions.html#/c:SDLPowerModeStatus.h@T@SDLPowerModeStatus":{"name":"SDLPowerModeStatus","abstract":"

    The status of the car’s power. Used in ClusterModeStatus.

    "},"Type Definitions.html#/c:SDLPredefinedLayout.h@T@SDLPredefinedLayout":{"name":"SDLPredefinedLayout","abstract":"

    A template layout an app uses to display information. The broad details of the layout are defined, but the details depend on the IVI system. Used in SetDisplayLayout.

    "},"Type Definitions.html#/c:SDLPrerecordedSpeech.h@T@SDLPrerecordedSpeech":{"name":"SDLPrerecordedSpeech","abstract":"

    Contains information about the speech capabilities on the SDL platform. Used in RegisterAppInterfaceResponse to indicate capability.

    "},"Type Definitions.html#/c:SDLPrimaryAudioSource.h@T@SDLPrimaryAudioSource":{"name":"SDLPrimaryAudioSource","abstract":"

    Reflects the current primary audio source of SDL (if selected). Used in DeviceStatus.

    "},"Type Definitions.html#/c:SDLRPCFunctionNames.h@T@SDLRPCFunctionName":{"name":"SDLRPCFunctionName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLRadioBand.h@T@SDLRadioBand":{"name":"SDLRadioBand","abstract":"

    Radio bands, such as AM and FM, used in RadioControlData

    "},"Type Definitions.html#/c:SDLRadioState.h@T@SDLRadioState":{"name":"SDLRadioState","abstract":"

    List possible states of a remote control radio module. Used in RadioControlData.

    "},"Type Definitions.html#/c:SDLRequestType.h@T@SDLRequestType":{"name":"SDLRequestType","abstract":"

    A type of system request. Used in SystemRequest.

    "},"Type Definitions.html#/c:SDLResult.h@T@SDLResult":{"name":"SDLResult","abstract":"

    Defines the possible result codes returned by SDL to the application in a response to a requested operation. Used in RPC responses

    "},"Type Definitions.html#/c:SDLSamplingRate.h@T@SDLSamplingRate":{"name":"SDLSamplingRate","abstract":"

    Describes different sampling rates for PerformAudioPassThru and AudioPassThruCapabilities

    "},"Type Definitions.html#/c:SDLScreenManager.h@T@SDLScreenManagerUpdateCompletionHandler":{"name":"SDLScreenManagerUpdateCompletionHandler","abstract":"

    The handler run when the update has completed

    "},"Type Definitions.html#/c:SDLScreenManager.h@T@SDLPreloadChoiceCompletionHandler":{"name":"SDLPreloadChoiceCompletionHandler","abstract":"

    Return an error with userinfo [key: SDLChoiceCell, value: NSError] if choices failed to upload

    "},"Type Definitions.html#/c:SDLSeatMemoryActionType.h@T@SDLSeatMemoryActionType":{"name":"SDLSeatMemoryActionType","abstract":"

    List of possible actions on Seat Meomry

    "},"Type Definitions.html#/c:SDLServiceUpdateReason.h@T@SDLServiceUpdateReason":{"name":"SDLServiceUpdateReason","abstract":"

    Enumeration listing possible service update reasons.

    "},"Type Definitions.html#/c:SDLSoftButtonType.h@T@SDLSoftButtonType":{"name":"SDLSoftButtonType","abstract":"

    SoftButtonType (TEXT / IMAGE / BOTH). Used by SoftButton.

    "},"Type Definitions.html#/c:SDLSpeechCapabilities.h@T@SDLSpeechCapabilities":{"name":"SDLSpeechCapabilities","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLStaticIconName.h@T@SDLStaticIconName":{"name":"SDLStaticIconName","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLStreamingMediaManagerConstants.h@T@SDLVideoStreamManagerState":{"name":"SDLVideoStreamManagerState","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLStreamingMediaManagerConstants.h@T@SDLAudioStreamManagerState":{"name":"SDLAudioStreamManagerState","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLStreamingMediaManagerConstants.h@T@SDLAppState":{"name":"SDLAppState","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLSupportedSeat.h@T@SDLSupportedSeat":{"name":"SDLSupportedSeat","abstract":"

    List possible seats that is a remote controllable seat.

    "},"Type Definitions.html#/c:SDLSystemAction.h@T@SDLSystemAction":{"name":"SDLSystemAction","abstract":"

    Enumeration that describes system actions that can be triggered. Used in SoftButton.

    "},"Type Definitions.html#/c:SDLSystemCapabilityManager.h@T@SDLUpdateCapabilityHandler":{"name":"SDLUpdateCapabilityHandler","abstract":"

    A completion handler called after a request for the capability type is returned from the remote system.

    "},"Type Definitions.html#/c:SDLSystemCapabilityManager.h@T@SDLCapabilityUpdateHandler":{"name":"SDLCapabilityUpdateHandler","abstract":"

    An observer block for whenever a subscription is called.

    "},"Type Definitions.html#/c:SDLSystemCapabilityType.h@T@SDLSystemCapabilityType":{"name":"SDLSystemCapabilityType","abstract":"

    The type of system capability to get more information on. Used in GetSystemCapability.

    "},"Type Definitions.html#/c:SDLSystemContext.h@T@SDLSystemContext":{"name":"SDLSystemContext","abstract":"

    Indicates whether or not a user-initiated interaction is in progress, and if so, in what mode (i.e. MENU or VR). Used in OnHMIStatus

    "},"Type Definitions.html#/c:SDLTBTState.h@T@SDLTBTState":{"name":"SDLTBTState","abstract":"

    The turn-by-turn state, used in OnTBTClientState.

    "},"Type Definitions.html#/c:SDLTPMS.h@T@SDLTPMS":{"name":"SDLTPMS","abstract":"

    An enum representing values of the tire pressure monitoring system

    "},"Type Definitions.html#/c:SDLTemperatureUnit.h@T@SDLTemperatureUnit":{"name":"SDLTemperatureUnit","abstract":"

    The unit of temperature to display. Used in Temperature.

    "},"Type Definitions.html#/c:SDLTextAlignment.h@T@SDLTextAlignment":{"name":"SDLTextAlignment","abstract":"

    The list of possible alignments of text in a field. May only work on some display types. used in Show.

    "},"Type Definitions.html#/c:SDLTextFieldName.h@T@SDLTextFieldName":{"name":"SDLTextFieldName","abstract":"

    Names of the text fields that can appear on a SDL display. Used in TextFieldName.

    "},"Type Definitions.html#/c:SDLTimerMode.h@T@SDLTimerMode":{"name":"SDLTimerMode","abstract":"

    The direction of a timer. Used in nothing.

    "},"Type Definitions/SDLTouchIdentifier.html":{"name":"SDLTouchIdentifier","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLTouchManager.h@T@SDLTouchEventHandler":{"name":"SDLTouchEventHandler","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLTouchType.h@T@SDLTouchType":{"name":"SDLTouchType","abstract":"

    The type of a touch in a projection application. Used in OnTouchEvent.

    "},"Type Definitions.html#/c:SDLTriggerSource.h@T@SDLTriggerSource":{"name":"SDLTriggerSource","abstract":"

    Indicates whether choice/command was selected via VR or via a menu selection (using SEEKRIGHT/SEEKLEFT, TUNEUP, TUNEDOWN, OK buttons). Used in PerformInteractionResponse and OnCommand.

    "},"Type Definitions.html#/c:SDLTurnSignal.h@T@SDLTurnSignal":{"name":"SDLTurnSignal","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLUpdateMode.h@T@SDLUpdateMode":{"name":"SDLUpdateMode","abstract":"

    Specifies what function should be performed on the media clock/counter. Used in SetMediaClockTimer.

    "},"Type Definitions.html#/c:SDLVehicleDataActiveStatus.h@T@SDLVehicleDataActiveStatus":{"name":"SDLVehicleDataActiveStatus","abstract":"

    Vehicle Data Activity Status. Used in nothing.

    "},"Type Definitions.html#/c:SDLVehicleDataEventStatus.h@T@SDLVehicleDataEventStatus":{"name":"SDLVehicleDataEventStatus","abstract":"

    Reflects the status of a vehicle data event; e.g. a seat belt event status. Used in retrieving vehicle data.

    "},"Type Definitions.html#/c:SDLVehicleDataNotificationStatus.h@T@SDLVehicleDataNotificationStatus":{"name":"SDLVehicleDataNotificationStatus","abstract":"

    Reflects the status of a vehicle data notification. Used in ECallInfo

    "},"Type Definitions.html#/c:SDLVehicleDataResultCode.h@T@SDLVehicleDataResultCode":{"name":"SDLVehicleDataResultCode","abstract":"

    Vehicle Data Result Code. Used in DIDResult.

    "},"Type Definitions.html#/c:SDLVehicleDataStatus.h@T@SDLVehicleDataStatus":{"name":"SDLVehicleDataStatus","abstract":"

    Reflects the status of a binary vehicle data item. Used in MyKey.

    "},"Type Definitions.html#/c:SDLVehicleDataType.h@T@SDLVehicleDataType":{"name":"SDLVehicleDataType","abstract":"

    Defines the vehicle data types that can be published and/or subscribed to using SDLSubscribeVehicleData. Used in VehicleDataResult

    "},"Type Definitions.html#/c:SDLVentilationMode.h@T@SDLVentilationMode":{"name":"SDLVentilationMode","abstract":"

    The ventilation mode. Used in ClimateControlCapabilities

    "},"Type Definitions.html#/c:SDLVideoStreamingCodec.h@T@SDLVideoStreamingCodec":{"name":"SDLVideoStreamingCodec","abstract":"

    Enum for each type of video streaming codec. Used in VideoStreamingFormat.

    "},"Type Definitions.html#/c:SDLVideoStreamingProtocol.h@T@SDLVideoStreamingProtocol":{"name":"SDLVideoStreamingProtocol","abstract":"

    Enum for each type of video streaming protocol, used in VideoStreamingFormat

    "},"Type Definitions.html#/c:SDLVideoStreamingState.h@T@SDLVideoStreamingState":{"name":"SDLVideoStreamingState","abstract":"

    Enum for each type of video streaming protocol, used in VideoStreamingFormat

    "},"Type Definitions.html#/c:SDLVoiceCommand.h@T@SDLVoiceCommandSelectionHandler":{"name":"SDLVoiceCommandSelectionHandler","abstract":"

    Undocumented

    "},"Type Definitions.html#/c:SDLVrCapabilities.h@T@SDLVRCapabilities":{"name":"SDLVRCapabilities","abstract":"

    The VR capabilities of the connected SDL platform. Used in RegisterAppInterfaceResponse.

    "},"Type Definitions.html#/c:SDLWarningLightStatus.h@T@SDLWarningLightStatus":{"name":"SDLWarningLightStatus","abstract":"

    Reflects the status of a cluster instrument warning light. Used in TireStatus

    "},"Type Definitions.html#/c:SDLWayPointType.h@T@SDLWayPointType":{"name":"SDLWayPointType","abstract":"

    The type of a navigation waypoint. Used in GetWayPoints.

    "},"Type Definitions.html#/c:SDLWiperStatus.h@T@SDLWiperStatus":{"name":"SDLWiperStatus","abstract":"

    The status of the windshield wipers. Used in retrieving vehicle data.

    "},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceiveSingleTapForView:atPoint:":{"name":"-touchManager:didReceiveSingleTapForView:atPoint:","abstract":"

    A single tap was received

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceiveDoubleTapForView:atPoint:":{"name":"-touchManager:didReceiveDoubleTapForView:atPoint:","abstract":"

    A double tap was received

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:panningDidStartInView:atPoint:":{"name":"-touchManager:panningDidStartInView:atPoint:","abstract":"

    Panning started

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceivePanningFromPoint:toPoint:":{"name":"-touchManager:didReceivePanningFromPoint:toPoint:","abstract":"

    Panning moved between points

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:panningDidEndInView:atPoint:":{"name":"-touchManager:panningDidEndInView:atPoint:","abstract":"

    Panning ended

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:panningCanceledAtPoint:":{"name":"-touchManager:panningCanceledAtPoint:","abstract":"

    Panning canceled

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:pinchDidStartInView:atCenterPoint:":{"name":"-touchManager:pinchDidStartInView:atCenterPoint:","abstract":"

    Pinch did start

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceivePinchAtCenterPoint:withScale:":{"name":"-touchManager:didReceivePinchAtCenterPoint:withScale:","abstract":"

    @abstract","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:didReceivePinchInView:atCenterPoint:withScale:":{"name":"-touchManager:didReceivePinchInView:atCenterPoint:withScale:","abstract":"

    Pinch moved and changed scale

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:pinchDidEndInView:atCenterPoint:":{"name":"-touchManager:pinchDidEndInView:atCenterPoint:","abstract":"

    Pinch did end

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLTouchManagerDelegate.html#/c:objc(pl)SDLTouchManagerDelegate(im)touchManager:pinchCanceledAtCenterPoint:":{"name":"-touchManager:pinchCanceledAtCenterPoint:","abstract":"

    Pinch canceled

    ","parent_name":"SDLTouchManagerDelegate"},"Protocols/SDLStreamingMediaManagerDataSource.html#/c:objc(pl)SDLStreamingMediaManagerDataSource(im)preferredVideoFormatOrderFromHeadUnitPreferredOrder:":{"name":"-preferredVideoFormatOrderFromHeadUnitPreferredOrder:","abstract":"

    Implement to return a different preferred order of attempted format usage than the head unit’s preferred order. In nearly all cases, it’s best to simply return the head unit’s preferred order, or not implement this method (which does the same thing).

    ","parent_name":"SDLStreamingMediaManagerDataSource"},"Protocols/SDLStreamingMediaManagerDataSource.html#/c:objc(pl)SDLStreamingMediaManagerDataSource(im)resolutionFromHeadUnitPreferredResolution:":{"name":"-resolutionFromHeadUnitPreferredResolution:","abstract":"

    Implement to return a different resolution to use for video streaming than the head unit’s requested resolution. If you return a resolution that the head unit does not like, the manager will fail to start up. In nearly all cases, it’s best to simply return the head unit’s preferred order, or not implement this method (which does the same thing), and adapt your UI to the head unit’s preferred resolution instead.

    ","parent_name":"SDLStreamingMediaManagerDataSource"},"Protocols/SDLStreamingAudioManagerType.html#/c:objc(pl)SDLStreamingAudioManagerType(py)audioConnected":{"name":"audioConnected","abstract":"

    Whether or not the audio byte stream is currently connected

    ","parent_name":"SDLStreamingAudioManagerType"},"Protocols/SDLStreamingAudioManagerType.html#/c:objc(pl)SDLStreamingAudioManagerType(im)sendAudioData:":{"name":"-sendAudioData:","abstract":"

    Send audio data bytes over the audio byte stream

    ","parent_name":"SDLStreamingAudioManagerType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(py)appId":{"name":"appId","abstract":"

    The app id of the app

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)initializeWithAppId:completionHandler:":{"name":"-initializeWithAppId:completionHandler:","abstract":"

    Initialize the SDL security library with the app’s id and a completion handler

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)stop":{"name":"-stop","abstract":"

    Stop the security library

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)runHandshakeWithClientData:error:":{"name":"-runHandshakeWithClientData:error:","abstract":"

    Run the SSL/TLS handshake

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)encryptData:withError:":{"name":"-encryptData:withError:","abstract":"

    Encrypt data using SSL/TLS

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(im)decryptData:withError:":{"name":"-decryptData:withError:","abstract":"

    Decrypt data using SSL/TLS

    ","parent_name":"SDLSecurityType"},"Protocols/SDLSecurityType.html#/c:objc(pl)SDLSecurityType(cm)availableMakes":{"name":"+availableMakes","abstract":"

    The vehicle makes this security library covers

    ","parent_name":"SDLSecurityType"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)managerDidDisconnect":{"name":"-managerDidDisconnect","abstract":"

    Called upon a disconnection from the remote system.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)hmiLevel:didChangeToLevel:":{"name":"-hmiLevel:didChangeToLevel:","abstract":"

    Called when the HMI level state of this application changes on the remote system. This is equivalent to the application’s state changes in iOS such as foreground, background, or closed.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)audioStreamingState:didChangeToState:":{"name":"-audioStreamingState:didChangeToState:","abstract":"

    Called when the audio streaming state of this application changes on the remote system. This refers to when streaming audio is audible to the user.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)systemContext:didChangeToContext:":{"name":"-systemContext:didChangeToContext:","abstract":"

    Called when the system context of this application changes on the remote system. This refers to whether or not a user-initiated interaction is in progress, and if so, what it is.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLManagerDelegate.html#/c:objc(pl)SDLManagerDelegate(im)managerShouldUpdateLifecycleToLanguage:":{"name":"-managerShouldUpdateLifecycleToLanguage:","abstract":"

    Called when the lifecycle manager detected a language mismatch. In case of a language mismatch the manager should change the apps registration by updating the lifecycle configuration to the specified language. If the app can support the specified language it should return an Object of SDLLifecycleConfigurationUpdate, otherwise it should return nil to indicate that the language is not supported.

    ","parent_name":"SDLManagerDelegate"},"Protocols/SDLLogTarget.html#/c:objc(pl)SDLLogTarget(cm)logger":{"name":"+logger","abstract":"

    A simple convenience initializer to create the object. This should not start up the logger.

    ","parent_name":"SDLLogTarget"},"Protocols/SDLLogTarget.html#/c:objc(pl)SDLLogTarget(im)setupLogger":{"name":"-setupLogger","abstract":"

    A call to setup the logger in whatever manner it needs to do so.

    ","parent_name":"SDLLogTarget"},"Protocols/SDLLogTarget.html#/c:objc(pl)SDLLogTarget(im)logWithLog:formattedLog:":{"name":"-logWithLog:formattedLog:","abstract":"

    Log a particular log using the model and the formatted log message to the target.

    ","parent_name":"SDLLogTarget"},"Protocols/SDLLogTarget.html#/c:objc(pl)SDLLogTarget(im)teardownLogger":{"name":"-teardownLogger","abstract":"

    The log target should be torn down. e.g. file handles should be closed

    ","parent_name":"SDLLogTarget"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)userDidSubmitInput:withEvent:":{"name":"-userDidSubmitInput:withEvent:","abstract":"

    The keyboard session completed with some input.

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)keyboardDidAbortWithReason:":{"name":"-keyboardDidAbortWithReason:","abstract":"

    The keyboard session aborted.

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)customKeyboardConfiguration":{"name":"-customKeyboardConfiguration","abstract":"

    Implement this in order to provide a custom keyboard configuration to just this keyboard. To apply default settings to all keyboards, see SDLScreenManager.keyboardConfiguration

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)updateAutocompleteWithInput:completionHandler:":{"name":"-updateAutocompleteWithInput:completionHandler:","abstract":"

    Implement this if you wish to update the KeyboardProperties.autoCompleteText as the user updates their input. This is called upon a KEYPRESS event.

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)updateCharacterSetWithInput:completionHandler:":{"name":"-updateCharacterSetWithInput:completionHandler:","abstract":"

    Implement this if you wish to update the limitedCharacterSet as the user updates their input. This is called upon a KEYPRESS event.

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLKeyboardDelegate.html#/c:objc(pl)SDLKeyboardDelegate(im)keyboardDidSendEvent:text:":{"name":"-keyboardDidSendEvent:text:","abstract":"

    Implement this to be notified of all events occurring on the keyboard

    ","parent_name":"SDLKeyboardDelegate"},"Protocols/SDLChoiceSetDelegate.html#/c:objc(pl)SDLChoiceSetDelegate(im)choiceSet:didSelectChoice:withSource:atRowIndex:":{"name":"-choiceSet:didSelectChoice:withSource:atRowIndex:","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetDelegate"},"Protocols/SDLChoiceSetDelegate.html#/c:objc(pl)SDLChoiceSetDelegate(im)choiceSet:didReceiveError:":{"name":"-choiceSet:didReceiveError:","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetDelegate"},"Protocols/SDLAudioStreamManagerDelegate.html#/c:objc(pl)SDLAudioStreamManagerDelegate(im)audioStreamManager:fileDidFinishPlaying:successfully:":{"name":"-audioStreamManager:fileDidFinishPlaying:successfully:","abstract":"

    Called when a file from the SDLAudioStreamManager finishes playing

    ","parent_name":"SDLAudioStreamManagerDelegate"},"Protocols/SDLAudioStreamManagerDelegate.html#/c:objc(pl)SDLAudioStreamManagerDelegate(im)audioStreamManager:errorDidOccurForFile:error:":{"name":"-audioStreamManager:errorDidOccurForFile:error:","abstract":"

    Called when a file from the SDLAudioStreamManager could not play

    ","parent_name":"SDLAudioStreamManagerDelegate"},"Protocols/SDLAudioStreamManagerDelegate.html#/c:objc(pl)SDLAudioStreamManagerDelegate(im)audioStreamManager:dataBufferDidFinishPlayingSuccessfully:":{"name":"-audioStreamManager:dataBufferDidFinishPlayingSuccessfully:","abstract":"

    Called when a data buffer from the SDLAudioStreamManager finishes playing

    ","parent_name":"SDLAudioStreamManagerDelegate"},"Protocols/SDLAudioStreamManagerDelegate.html#/c:objc(pl)SDLAudioStreamManagerDelegate(im)audioStreamManager:errorDidOccurForDataBuffer:":{"name":"-audioStreamManager:errorDidOccurForDataBuffer:","abstract":"

    Called when a data buffer from the SDLAudioStreamManager could not play

    ","parent_name":"SDLAudioStreamManagerDelegate"},"Protocols.html#/c:objc(pl)SDLInt":{"name":"SDLInt","abstract":"

    A declaration that this NSNumber contains an NSInteger.

    "},"Protocols.html#/c:objc(pl)SDLUInt":{"name":"SDLUInt","abstract":"

    A declaration that this NSNumber contains an NSUInteger.

    "},"Protocols.html#/c:objc(pl)SDLBool":{"name":"SDLBool","abstract":"

    A declaration that this NSNumber contains a BOOL.

    "},"Protocols.html#/c:objc(pl)SDLFloat":{"name":"SDLFloat","abstract":"

    A declaration that this NSNumber contains a float.

    "},"Protocols/SDLAudioStreamManagerDelegate.html":{"name":"SDLAudioStreamManagerDelegate","abstract":"

    Undocumented

    "},"Protocols/SDLChoiceSetDelegate.html":{"name":"SDLChoiceSetDelegate","abstract":"

    Undocumented

    "},"Protocols/SDLKeyboardDelegate.html":{"name":"SDLKeyboardDelegate","abstract":"

    Undocumented

    "},"Protocols/SDLLogTarget.html":{"name":"SDLLogTarget","abstract":"

    A protocol describing a place logs from SDLLogManager are logged to

    "},"Protocols/SDLManagerDelegate.html":{"name":"SDLManagerDelegate","abstract":"

    Undocumented

    "},"Protocols/SDLSecurityType.html":{"name":"SDLSecurityType","abstract":"

    A protocol used by SDL Security libraries.

    "},"Protocols/SDLStreamingAudioManagerType.html":{"name":"SDLStreamingAudioManagerType","abstract":"

    Undocumented

    "},"Protocols/SDLStreamingMediaManagerDataSource.html":{"name":"SDLStreamingMediaManagerDataSource","abstract":"

    Undocumented

    "},"Protocols/SDLTouchManagerDelegate.html":{"name":"SDLTouchManagerDelegate","abstract":"

    Undocumented

    "},"Enums/SDLStreamingEncryptionFlag.html#/c:@E@SDLStreamingEncryptionFlag@SDLStreamingEncryptionFlagNone":{"name":"SDLStreamingEncryptionFlagNone","abstract":"

    Undocumented

    ","parent_name":"SDLStreamingEncryptionFlag"},"Enums/SDLStreamingEncryptionFlag.html#/c:@E@SDLStreamingEncryptionFlag@SDLStreamingEncryptionFlagAuthenticateOnly":{"name":"SDLStreamingEncryptionFlagAuthenticateOnly","abstract":"

    Undocumented

    ","parent_name":"SDLStreamingEncryptionFlag"},"Enums/SDLStreamingEncryptionFlag.html#/c:@E@SDLStreamingEncryptionFlag@SDLStreamingEncryptionFlagAuthenticateAndEncrypt":{"name":"SDLStreamingEncryptionFlagAuthenticateAndEncrypt","abstract":"

    Undocumented

    ","parent_name":"SDLStreamingEncryptionFlag"},"Enums/SDLCarWindowRenderingType.html#/c:@E@SDLCarWindowRenderingType@SDLCarWindowRenderingTypeLayer":{"name":"SDLCarWindowRenderingTypeLayer","abstract":"

    Undocumented

    ","parent_name":"SDLCarWindowRenderingType"},"Enums/SDLCarWindowRenderingType.html#/c:@E@SDLCarWindowRenderingType@SDLCarWindowRenderingTypeViewAfterScreenUpdates":{"name":"SDLCarWindowRenderingTypeViewAfterScreenUpdates","abstract":"

    Undocumented

    ","parent_name":"SDLCarWindowRenderingType"},"Enums/SDLCarWindowRenderingType.html#/c:@E@SDLCarWindowRenderingType@SDLCarWindowRenderingTypeViewBeforeScreenUpdates":{"name":"SDLCarWindowRenderingTypeViewBeforeScreenUpdates","abstract":"

    Undocumented

    ","parent_name":"SDLCarWindowRenderingType"},"Enums/SDLRPCMessageType.html#/c:@E@SDLRPCMessageType@SDLRPCMessageTypeRequest":{"name":"SDLRPCMessageTypeRequest","abstract":"

    Undocumented

    ","parent_name":"SDLRPCMessageType"},"Enums/SDLRPCMessageType.html#/c:@E@SDLRPCMessageType@SDLRPCMessageTypeResponse":{"name":"SDLRPCMessageTypeResponse","abstract":"

    Undocumented

    ","parent_name":"SDLRPCMessageType"},"Enums/SDLRPCMessageType.html#/c:@E@SDLRPCMessageType@SDLRPCMessageTypeNotification":{"name":"SDLRPCMessageTypeNotification","abstract":"

    Undocumented

    ","parent_name":"SDLRPCMessageType"},"Enums/SDLPermissionGroupStatus.html#/c:@E@SDLPermissionGroupStatus@SDLPermissionGroupStatusAllowed":{"name":"SDLPermissionGroupStatusAllowed","abstract":"

    Every RPC in the group is currently allowed.

    ","parent_name":"SDLPermissionGroupStatus"},"Enums/SDLPermissionGroupStatus.html#/c:@E@SDLPermissionGroupStatus@SDLPermissionGroupStatusDisallowed":{"name":"SDLPermissionGroupStatusDisallowed","abstract":"

    Every RPC in the group is currently disallowed.

    ","parent_name":"SDLPermissionGroupStatus"},"Enums/SDLPermissionGroupStatus.html#/c:@E@SDLPermissionGroupStatus@SDLPermissionGroupStatusMixed":{"name":"SDLPermissionGroupStatusMixed","abstract":"

    Some RPCs in the group are allowed and some disallowed.

    ","parent_name":"SDLPermissionGroupStatus"},"Enums/SDLPermissionGroupStatus.html#/c:@E@SDLPermissionGroupStatus@SDLPermissionGroupStatusUnknown":{"name":"SDLPermissionGroupStatusUnknown","abstract":"

    The current status of the group is unknown.

    ","parent_name":"SDLPermissionGroupStatus"},"Enums/SDLPermissionGroupType.html#/c:@E@SDLPermissionGroupType@SDLPermissionGroupTypeAllAllowed":{"name":"SDLPermissionGroupTypeAllAllowed","abstract":"

    Be notified when all of the RPC in the group are allowed, or, when they all stop being allowed in some sense, that is, when they were all allowed, and now they are not.

    ","parent_name":"SDLPermissionGroupType"},"Enums/SDLPermissionGroupType.html#/c:@E@SDLPermissionGroupType@SDLPermissionGroupTypeAny":{"name":"SDLPermissionGroupTypeAny","abstract":"

    Be notified when any change in availability occurs among the group.

    ","parent_name":"SDLPermissionGroupType"},"Enums/MenuCellState.html#/c:@E@MenuCellState@MenuCellStateDelete":{"name":"MenuCellStateDelete","abstract":"

    Undocumented

    ","parent_name":"MenuCellState"},"Enums/MenuCellState.html#/c:@E@MenuCellState@MenuCellStateAdd":{"name":"MenuCellStateAdd","abstract":"

    Undocumented

    ","parent_name":"MenuCellState"},"Enums/MenuCellState.html#/c:@E@MenuCellState@MenuCellStateKeep":{"name":"MenuCellStateKeep","abstract":"

    Undocumented

    ","parent_name":"MenuCellState"},"Enums/SDLDynamicMenuUpdatesMode.html#/c:@E@SDLDynamicMenuUpdatesMode@SDLDynamicMenuUpdatesModeForceOn":{"name":"SDLDynamicMenuUpdatesModeForceOn","abstract":"

    Undocumented

    ","parent_name":"SDLDynamicMenuUpdatesMode"},"Enums/SDLDynamicMenuUpdatesMode.html#/c:@E@SDLDynamicMenuUpdatesMode@SDLDynamicMenuUpdatesModeForceOff":{"name":"SDLDynamicMenuUpdatesModeForceOff","abstract":"

    Undocumented

    ","parent_name":"SDLDynamicMenuUpdatesMode"},"Enums/SDLDynamicMenuUpdatesMode.html#/c:@E@SDLDynamicMenuUpdatesMode@SDLDynamicMenuUpdatesModeOnWithCompatibility":{"name":"SDLDynamicMenuUpdatesModeOnWithCompatibility","abstract":"

    Undocumented

    ","parent_name":"SDLDynamicMenuUpdatesMode"},"Enums/SDLLogFormatType.html#/c:@E@SDLLogFormatType@SDLLogFormatTypeSimple":{"name":"SDLLogFormatTypeSimple","abstract":"

    Undocumented

    ","parent_name":"SDLLogFormatType"},"Enums/SDLLogFormatType.html#/c:@E@SDLLogFormatType@SDLLogFormatTypeDefault":{"name":"SDLLogFormatTypeDefault","abstract":"

    Undocumented

    ","parent_name":"SDLLogFormatType"},"Enums/SDLLogFormatType.html#/c:@E@SDLLogFormatType@SDLLogFormatTypeDetailed":{"name":"SDLLogFormatTypeDetailed","abstract":"

    Undocumented

    ","parent_name":"SDLLogFormatType"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelDefault":{"name":"SDLLogLevelDefault","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelOff":{"name":"SDLLogLevelOff","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelError":{"name":"SDLLogLevelError","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelWarning":{"name":"SDLLogLevelWarning","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelDebug":{"name":"SDLLogLevelDebug","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogLevel.html#/c:@E@SDLLogLevel@SDLLogLevelVerbose":{"name":"SDLLogLevelVerbose","abstract":"

    Undocumented

    ","parent_name":"SDLLogLevel"},"Enums/SDLLogFlag.html#/c:@E@SDLLogFlag@SDLLogFlagError":{"name":"SDLLogFlagError","abstract":"

    Undocumented

    ","parent_name":"SDLLogFlag"},"Enums/SDLLogFlag.html#/c:@E@SDLLogFlag@SDLLogFlagWarning":{"name":"SDLLogFlagWarning","abstract":"

    Undocumented

    ","parent_name":"SDLLogFlag"},"Enums/SDLLogFlag.html#/c:@E@SDLLogFlag@SDLLogFlagDebug":{"name":"SDLLogFlagDebug","abstract":"

    Undocumented

    ","parent_name":"SDLLogFlag"},"Enums/SDLLogFlag.html#/c:@E@SDLLogFlag@SDLLogFlagVerbose":{"name":"SDLLogFlagVerbose","abstract":"

    Undocumented

    ","parent_name":"SDLLogFlag"},"Enums/SDLLogBytesDirection.html#/c:@E@SDLLogBytesDirection@SDLLogBytesDirectionTransmit":{"name":"SDLLogBytesDirectionTransmit","abstract":"

    Undocumented

    ","parent_name":"SDLLogBytesDirection"},"Enums/SDLLogBytesDirection.html#/c:@E@SDLLogBytesDirection@SDLLogBytesDirectionReceive":{"name":"SDLLogBytesDirectionReceive","abstract":"

    Undocumented

    ","parent_name":"SDLLogBytesDirection"},"Enums/SDLRPCStoreError.html#/c:@E@SDLRPCStoreError@SDLRPCStoreErrorGetInvalidObject":{"name":"SDLRPCStoreErrorGetInvalidObject","abstract":"

    In dictionary stored value with unexpected type

    ","parent_name":"SDLRPCStoreError"},"Enums/SDLTransportError.html#/c:@E@SDLTransportError@SDLTransportErrorUnknown":{"name":"SDLTransportErrorUnknown","abstract":"

    Connection cannot be established due to a reason not listed here.

    ","parent_name":"SDLTransportError"},"Enums/SDLTransportError.html#/c:@E@SDLTransportError@SDLTransportErrorConnectionRefused":{"name":"SDLTransportErrorConnectionRefused","abstract":"

    TCP connection is refused.","parent_name":"SDLTransportError"},"Enums/SDLTransportError.html#/c:@E@SDLTransportError@SDLTransportErrorConnectionTimedOut":{"name":"SDLTransportErrorConnectionTimedOut","abstract":"

    TCP connection cannot be established within given time.","parent_name":"SDLTransportError"},"Enums/SDLTransportError.html#/c:@E@SDLTransportError@SDLTransportErrorNetworkDown":{"name":"SDLTransportErrorNetworkDown","abstract":"

    TCP connection cannot be established since network is down.","parent_name":"SDLTransportError"},"Enums/SDLChoiceSetManagerError.html#/c:@E@SDLChoiceSetManagerError@SDLChoiceSetManagerErrorPendingPresentationDeleted":{"name":"SDLChoiceSetManagerErrorPendingPresentationDeleted","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetManagerError"},"Enums/SDLChoiceSetManagerError.html#/c:@E@SDLChoiceSetManagerError@SDLChoiceSetManagerErrorDeletionFailed":{"name":"SDLChoiceSetManagerErrorDeletionFailed","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetManagerError"},"Enums/SDLChoiceSetManagerError.html#/c:@E@SDLChoiceSetManagerError@SDLChoiceSetManagerErrorUploadFailed":{"name":"SDLChoiceSetManagerErrorUploadFailed","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetManagerError"},"Enums/SDLChoiceSetManagerError.html#/c:@E@SDLChoiceSetManagerError@SDLChoiceSetManagerErrorFailedToCreateMenuItems":{"name":"SDLChoiceSetManagerErrorFailedToCreateMenuItems","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetManagerError"},"Enums/SDLChoiceSetManagerError.html#/c:@E@SDLChoiceSetManagerError@SDLChoiceSetManagerErrorInvalidState":{"name":"SDLChoiceSetManagerErrorInvalidState","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetManagerError"},"Enums/SDLMenuManagerError.html#/c:@E@SDLMenuManagerError@SDLMenuManagerErrorRPCsFailed":{"name":"SDLMenuManagerErrorRPCsFailed","abstract":"

    Undocumented

    ","parent_name":"SDLMenuManagerError"},"Enums/SDLSoftButtonManagerError.html#/c:@E@SDLSoftButtonManagerError@SDLSoftButtonManagerErrorPendingUpdateSuperseded":{"name":"SDLSoftButtonManagerErrorPendingUpdateSuperseded","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButtonManagerError"},"Enums/SDLTextAndGraphicManagerError.html#/c:@E@SDLTextAndGraphicManagerError@SDLTextAndGraphicManagerErrorPendingUpdateSuperseded":{"name":"SDLTextAndGraphicManagerErrorPendingUpdateSuperseded","abstract":"

    Undocumented

    ","parent_name":"SDLTextAndGraphicManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorCannotOverwrite":{"name":"SDLFileManagerErrorCannotOverwrite","abstract":"

    A file attempted to send, but a file with that name already exists on the remote head unit, and the file was not configured to overwrite.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorNoKnownFile":{"name":"SDLFileManagerErrorNoKnownFile","abstract":"

    A file was attempted to be accessed but it does not exist.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorUnableToStart":{"name":"SDLFileManagerErrorUnableToStart","abstract":"

    The file manager attempted to start but encountered an error.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorUnableToUpload":{"name":"SDLFileManagerErrorUnableToUpload","abstract":"

    The file manager was unable to send this file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorFileDoesNotExist":{"name":"SDLFileManagerErrorFileDoesNotExist","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerUploadCanceled":{"name":"SDLFileManagerUploadCanceled","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerMultipleFileUploadTasksFailed":{"name":"SDLFileManagerMultipleFileUploadTasksFailed","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerMultipleFileDeleteTasksFailed":{"name":"SDLFileManagerMultipleFileDeleteTasksFailed","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorFileDataMissing":{"name":"SDLFileManagerErrorFileDataMissing","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLFileManagerError.html#/c:@E@SDLFileManagerError@SDLFileManagerErrorStaticIcon":{"name":"SDLFileManagerErrorStaticIcon","abstract":"

    The file manager could not find the local file.

    ","parent_name":"SDLFileManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorRPCRequestFailed":{"name":"SDLManagerErrorRPCRequestFailed","abstract":"

    An RPC request failed to send.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorNotConnected":{"name":"SDLManagerErrorNotConnected","abstract":"

    Some action was attempted that requires a connection to the remote head unit.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorNotReady":{"name":"SDLManagerErrorNotReady","abstract":"

    Some action was attempted before the ready state was reached.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorUnknownRemoteError":{"name":"SDLManagerErrorUnknownRemoteError","abstract":"

    The remote system encountered an unknown error.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorManagersFailedToStart":{"name":"SDLManagerErrorManagersFailedToStart","abstract":"

    One or more of the sub-managers failed to start.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorRegistrationFailed":{"name":"SDLManagerErrorRegistrationFailed","abstract":"

    Registering with the remote system failed.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorRegistrationSuccessWithWarning":{"name":"SDLManagerErrorRegistrationSuccessWithWarning","abstract":"

    Registering with the remote system was successful, but had a warning.

    ","parent_name":"SDLManagerError"},"Enums/SDLManagerError.html#/c:@E@SDLManagerError@SDLManagerErrorCancelled":{"name":"SDLManagerErrorCancelled","abstract":"

    Request operations were cancelled before they could be sent

    ","parent_name":"SDLManagerError"},"Enums/SDLChoiceSetLayout.html#/c:@E@SDLChoiceSetLayout@SDLChoiceSetLayoutList":{"name":"SDLChoiceSetLayoutList","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetLayout"},"Enums/SDLChoiceSetLayout.html#/c:@E@SDLChoiceSetLayout@SDLChoiceSetLayoutTiles":{"name":"SDLChoiceSetLayoutTiles","abstract":"

    Undocumented

    ","parent_name":"SDLChoiceSetLayout"},"Enums/SDLAudioStreamManagerError.html#/c:@E@SDLAudioStreamManagerError@SDLAudioStreamManagerErrorNotConnected":{"name":"SDLAudioStreamManagerErrorNotConnected","abstract":"

    Undocumented

    ","parent_name":"SDLAudioStreamManagerError"},"Enums/SDLAudioStreamManagerError.html#/c:@E@SDLAudioStreamManagerError@SDLAudioStreamManagerErrorNoQueuedAudio":{"name":"SDLAudioStreamManagerErrorNoQueuedAudio","abstract":"

    Undocumented

    ","parent_name":"SDLAudioStreamManagerError"},"Enums/SDLArtworkImageFormat.html#/c:@E@SDLArtworkImageFormat@SDLArtworkImageFormatPNG":{"name":"SDLArtworkImageFormatPNG","abstract":"

    Undocumented

    ","parent_name":"SDLArtworkImageFormat"},"Enums/SDLArtworkImageFormat.html#/c:@E@SDLArtworkImageFormat@SDLArtworkImageFormatJPG":{"name":"SDLArtworkImageFormatJPG","abstract":"

    Undocumented

    ","parent_name":"SDLArtworkImageFormat"},"Enums/SDLArtworkImageFormat.html":{"name":"SDLArtworkImageFormat","abstract":"

    Undocumented

    "},"Enums/SDLAudioStreamManagerError.html":{"name":"SDLAudioStreamManagerError","abstract":"

    Undocumented

    "},"Enums/SDLChoiceSetLayout.html":{"name":"SDLChoiceSetLayout","abstract":"

    Undocumented

    "},"Enums/SDLManagerError.html":{"name":"SDLManagerError","abstract":"

    Errors associated with the SDLManager class.

    "},"Enums/SDLFileManagerError.html":{"name":"SDLFileManagerError","abstract":"

    Errors associated with the SDLFileManager class.

    "},"Enums/SDLTextAndGraphicManagerError.html":{"name":"SDLTextAndGraphicManagerError","abstract":"

    Errors associated with the ScreenManager class

    "},"Enums/SDLSoftButtonManagerError.html":{"name":"SDLSoftButtonManagerError","abstract":"

    Errors associated with the ScreenManager class

    "},"Enums/SDLMenuManagerError.html":{"name":"SDLMenuManagerError","abstract":"

    Errors associated with the ScreenManager class

    "},"Enums/SDLChoiceSetManagerError.html":{"name":"SDLChoiceSetManagerError","abstract":"

    Undocumented

    "},"Enums/SDLTransportError.html":{"name":"SDLTransportError","abstract":"

    Errors associated with transport.

    "},"Enums/SDLRPCStoreError.html":{"name":"SDLRPCStoreError","abstract":"

    Errors associated with store.

    "},"Enums/SDLLogBytesDirection.html":{"name":"SDLLogBytesDirection","abstract":"

    Undocumented

    "},"Enums/SDLLogFlag.html":{"name":"SDLLogFlag","abstract":"

    Flags used for SDLLogLevel to provide correct enum values. This is purely for internal use.

    "},"Enums/SDLLogLevel.html":{"name":"SDLLogLevel","abstract":"

    An enum describing a level of logging.

    "},"Enums/SDLLogFormatType.html":{"name":"SDLLogFormatType","abstract":"

    The output format of logs; how they will appear when printed out into a string.

    "},"Enums/SDLDynamicMenuUpdatesMode.html":{"name":"SDLDynamicMenuUpdatesMode","abstract":"

    Dynamic Menu Manager Mode

    "},"Enums/MenuCellState.html":{"name":"MenuCellState","abstract":"

    Undocumented

    "},"Enums/SDLPermissionGroupType.html":{"name":"SDLPermissionGroupType","abstract":"

    A permission group type which will be used to tell the system what type of changes you want to be notified about for the group.

    "},"Enums/SDLPermissionGroupStatus.html":{"name":"SDLPermissionGroupStatus","abstract":"

    The status of the group of RPCs permissions.

    "},"Enums/SDLRPCMessageType.html":{"name":"SDLRPCMessageType","abstract":"

    The type of RPC message

    "},"Enums/SDLCarWindowRenderingType.html":{"name":"SDLCarWindowRenderingType","abstract":"

    The type of rendering that CarWindow will perform. Depending on your app, you may need to try different ones for best performance

    "},"Enums/SDLStreamingEncryptionFlag.html":{"name":"SDLStreamingEncryptionFlag","abstract":"

    A flag determining how video and audio streaming should be encrypted

    "},"Constants.html#/c:@SDLAmbientLightStatusNight":{"name":"SDLAmbientLightStatusNight","abstract":"

    Represents a night ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusTwilight1":{"name":"SDLAmbientLightStatusTwilight1","abstract":"

    Represents a twilight 1 ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusTwilight2":{"name":"SDLAmbientLightStatusTwilight2","abstract":"

    Represents a twilight 2 ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusTwilight3":{"name":"SDLAmbientLightStatusTwilight3","abstract":"

    Represents a twilight 3 ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusTwilight4":{"name":"SDLAmbientLightStatusTwilight4","abstract":"

    Represents a twilight 4 ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusDay":{"name":"SDLAmbientLightStatusDay","abstract":"

    Represents a day ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusUnknown":{"name":"SDLAmbientLightStatusUnknown","abstract":"

    Represents an unknown ambient light status

    "},"Constants.html#/c:@SDLAmbientLightStatusInvalid":{"name":"SDLAmbientLightStatusInvalid","abstract":"

    Represents a invalid ambient light status

    "},"Constants.html#/c:@SDLAppHMITypeDefault":{"name":"SDLAppHMITypeDefault","abstract":"

    The App will have default rights.

    "},"Constants.html#/c:@SDLAppHMITypeCommunication":{"name":"SDLAppHMITypeCommunication","abstract":"

    Communication type of App

    "},"Constants.html#/c:@SDLAppHMITypeMedia":{"name":"SDLAppHMITypeMedia","abstract":"

    App dealing with Media

    "},"Constants.html#/c:@SDLAppHMITypeMessaging":{"name":"SDLAppHMITypeMessaging","abstract":"

    Messaging App

    "},"Constants.html#/c:@SDLAppHMITypeNavigation":{"name":"SDLAppHMITypeNavigation","abstract":"

    Navigation App

    "},"Constants.html#/c:@SDLAppHMITypeInformation":{"name":"SDLAppHMITypeInformation","abstract":"

    Information App

    "},"Constants.html#/c:@SDLAppHMITypeSocial":{"name":"SDLAppHMITypeSocial","abstract":"

    App dealing with social media

    "},"Constants.html#/c:@SDLAppHMITypeProjection":{"name":"SDLAppHMITypeProjection","abstract":"

    App dealing with Mobile Projection applications

    "},"Constants.html#/c:@SDLAppHMITypeBackgroundProcess":{"name":"SDLAppHMITypeBackgroundProcess","abstract":"

    App designed for use in the background

    "},"Constants.html#/c:@SDLAppHMITypeTesting":{"name":"SDLAppHMITypeTesting","abstract":"

    App only for Testing purposes

    "},"Constants.html#/c:@SDLAppHMITypeSystem":{"name":"SDLAppHMITypeSystem","abstract":"

    System App

    "},"Constants.html#/c:@SDLAppHMITypeRemoteControl":{"name":"SDLAppHMITypeRemoteControl","abstract":"

    Remote control

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonIgnitionOff":{"name":"SDLAppInterfaceUnregisteredReasonIgnitionOff","abstract":"

    Vehicle ignition turned off.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonBluetoothOff":{"name":"SDLAppInterfaceUnregisteredReasonBluetoothOff","abstract":"

    Bluetooth was turned off, causing termination of a necessary Bluetooth connection.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonUSBDisconnected":{"name":"SDLAppInterfaceUnregisteredReasonUSBDisconnected","abstract":"

    USB was disconnected, causing termination of a necessary iAP connection.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonRequestWhileInNoneHMILevel":{"name":"SDLAppInterfaceUnregisteredReasonRequestWhileInNoneHMILevel","abstract":"

    Application attempted SmartDeviceLink RPC request while HMILevel = NONE. App must have HMILevel other than NONE to issue RPC requests or get notifications or RPC responses.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonTooManyRequests":{"name":"SDLAppInterfaceUnregisteredReasonTooManyRequests","abstract":"

    Either too many – or too many per unit of time – requests were made by the application.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonDriverDistractionViolation":{"name":"SDLAppInterfaceUnregisteredReasonDriverDistractionViolation","abstract":"

    The application has issued requests which cause driver distraction rules to be violated.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonLanguageChange":{"name":"SDLAppInterfaceUnregisteredReasonLanguageChange","abstract":"

    The user performed a language change on the SDL platform, causing the application to need to be reregistered for the new language.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonMasterReset":{"name":"SDLAppInterfaceUnregisteredReasonMasterReset","abstract":"

    The user performed a MASTER RESET on the SDL platform, causing removal of a necessary Bluetooth pairing.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonFactoryDefaults":{"name":"SDLAppInterfaceUnregisteredReasonFactoryDefaults","abstract":"

    The user restored settings to FACTORY DEFAULTS on the SDL platform.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonAppUnauthorized":{"name":"SDLAppInterfaceUnregisteredReasonAppUnauthorized","abstract":"

    The app is not being authorized to be connected to SDL.

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonProtocolViolation":{"name":"SDLAppInterfaceUnregisteredReasonProtocolViolation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAppInterfaceUnregisteredReasonUnsupportedHMIResource":{"name":"SDLAppInterfaceUnregisteredReasonUnsupportedHMIResource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAppServiceTypeMedia":{"name":"SDLAppServiceTypeMedia","abstract":"

    The app will have a service type of media.

    "},"Constants.html#/c:@SDLAppServiceTypeWeather":{"name":"SDLAppServiceTypeWeather","abstract":"

    The app will have a service type of weather.

    "},"Constants.html#/c:@SDLAppServiceTypeNavigation":{"name":"SDLAppServiceTypeNavigation","abstract":"

    The app will have a service type of navigation.

    "},"Constants.html#/c:@SDLErrorDomainAudioStreamManager":{"name":"SDLErrorDomainAudioStreamManager","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamingIndicatorPlayPause":{"name":"SDLAudioStreamingIndicatorPlayPause","abstract":"

    Default playback indicator."},"Constants.html#/c:@SDLAudioStreamingIndicatorPlay":{"name":"SDLAudioStreamingIndicatorPlay","abstract":"

    Indicates that a button press of the Play/Pause button starts the audio playback.

    "},"Constants.html#/c:@SDLAudioStreamingIndicatorPause":{"name":"SDLAudioStreamingIndicatorPause","abstract":"

    Indicates that a button press of the Play/Pause button pauses the current audio playback.

    "},"Constants.html#/c:@SDLAudioStreamingIndicatorStop":{"name":"SDLAudioStreamingIndicatorStop","abstract":"

    Indicates that a button press of the Play/Pause button stops the current audio playback.

    "},"Constants.html#/c:@SDLAudioStreamingStateAudible":{"name":"SDLAudioStreamingStateAudible","abstract":"

    Currently streaming audio, if any, is audible to user.

    "},"Constants.html#/c:@SDLAudioStreamingStateAttenuated":{"name":"SDLAudioStreamingStateAttenuated","abstract":"

    Some kind of audio mixing is taking place. Currently streaming audio, if any, is audible to the user at a lowered volume.

    "},"Constants.html#/c:@SDLAudioStreamingStateNotAudible":{"name":"SDLAudioStreamingStateNotAudible","abstract":"

    Currently streaming audio, if any, is not audible to user. made via VR session.

    "},"Constants.html#/c:@SDLAudioTypePCM":{"name":"SDLAudioTypePCM","abstract":"

    PCM raw audio

    "},"Constants.html#/c:@SDLBitsPerSample8Bit":{"name":"SDLBitsPerSample8Bit","abstract":"

    8 bits per sample

    "},"Constants.html#/c:@SDLBitsPerSample16Bit":{"name":"SDLBitsPerSample16Bit","abstract":"

    16 bits per sample

    "},"Constants.html#/c:@SDLButtonEventModeButtonUp":{"name":"SDLButtonEventModeButtonUp","abstract":"

    The button was released

    "},"Constants.html#/c:@SDLButtonEventModeButtonDown":{"name":"SDLButtonEventModeButtonDown","abstract":"

    The button was depressed

    "},"Constants.html#/c:@SDLButtonNameOk":{"name":"SDLButtonNameOk","abstract":"

    Represents the button usually labeled OK. A typical use of this button is for the user to press it to make a selection. Prior to SDL Core 5.0 (iOS Proxy v.6.1), Ok was used for both OK buttons AND PlayPause. In 5.0, PlayPause was introduced to reduce confusion, and you should use the one you intend for your use case (usually PlayPause). Until the next proxy breaking change, however, subscribing to this button name will continue to subscribe you to PlayPause so that your code does not break. That means that if you subscribe to both Ok and PlayPause, you will receive duplicate notifications.

    "},"Constants.html#/c:@SDLButtonNamePlayPause":{"name":"SDLButtonNamePlayPause","abstract":"

    Represents the play/pause button for media apps. Replaces OK on sub-5.0 head units, compliments it on 5.0 head units and later.

    "},"Constants.html#/c:@SDLButtonNameSeekLeft":{"name":"SDLButtonNameSeekLeft","abstract":"

    Represents the seek-left button. A typical use of this button is for the user to scroll to the left through menu choices one menu item per press.

    "},"Constants.html#/c:@SDLButtonNameSeekRight":{"name":"SDLButtonNameSeekRight","abstract":"

    Represents the seek-right button. A typical use of this button is for the user to scroll to the right through menu choices one menu item per press.

    "},"Constants.html#/c:@SDLButtonNameTuneUp":{"name":"SDLButtonNameTuneUp","abstract":"

    Represents a turn of the tuner knob in the clockwise direction one tick.

    "},"Constants.html#/c:@SDLButtonNameTuneDown":{"name":"SDLButtonNameTuneDown","abstract":"

    Represents a turn of the tuner knob in the counter-clockwise direction one tick.

    "},"Constants.html#/c:@SDLButtonNamePreset0":{"name":"SDLButtonNamePreset0","abstract":"

    Represents the preset 0 button.

    "},"Constants.html#/c:@SDLButtonNamePreset1":{"name":"SDLButtonNamePreset1","abstract":"

    Represents the preset 1 button.

    "},"Constants.html#/c:@SDLButtonNamePreset2":{"name":"SDLButtonNamePreset2","abstract":"

    Represents the preset 2 button.

    "},"Constants.html#/c:@SDLButtonNamePreset3":{"name":"SDLButtonNamePreset3","abstract":"

    Represents the preset 3 button.

    "},"Constants.html#/c:@SDLButtonNamePreset4":{"name":"SDLButtonNamePreset4","abstract":"

    Represents the preset 4 button.

    "},"Constants.html#/c:@SDLButtonNamePreset5":{"name":"SDLButtonNamePreset5","abstract":"

    Represents the preset 5 button.

    "},"Constants.html#/c:@SDLButtonNamePreset6":{"name":"SDLButtonNamePreset6","abstract":"

    Represents the preset 6 button.

    "},"Constants.html#/c:@SDLButtonNamePreset7":{"name":"SDLButtonNamePreset7","abstract":"

    Represents the preset 7 button.

    "},"Constants.html#/c:@SDLButtonNamePreset8":{"name":"SDLButtonNamePreset8","abstract":"

    Represents the preset 8 button.

    "},"Constants.html#/c:@SDLButtonNamePreset9":{"name":"SDLButtonNamePreset9","abstract":"

    Represents the preset 9 button.

    "},"Constants.html#/c:@SDLButtonNameCustomButton":{"name":"SDLButtonNameCustomButton","abstract":"

    Represents the Custom button.

    "},"Constants.html#/c:@SDLButtonNameSearch":{"name":"SDLButtonNameSearch","abstract":"

    Represents the SEARCH button.

    "},"Constants.html#/c:@SDLButtonNameACMax":{"name":"SDLButtonNameACMax","abstract":"

    Represents AC max button *

    "},"Constants.html#/c:@SDLButtonNameAC":{"name":"SDLButtonNameAC","abstract":"

    Represents AC button *

    "},"Constants.html#/c:@SDLButtonNameRecirculate":{"name":"SDLButtonNameRecirculate","abstract":"

    Represents a Recirculate button

    "},"Constants.html#/c:@SDLButtonNameFanUp":{"name":"SDLButtonNameFanUp","abstract":"

    Represents a Fan up button

    "},"Constants.html#/c:@SDLButtonNameFanDown":{"name":"SDLButtonNameFanDown","abstract":"

    Represents a fan down button

    "},"Constants.html#/c:@SDLButtonNameTempUp":{"name":"SDLButtonNameTempUp","abstract":"

    Represents a temperature up button

    "},"Constants.html#/c:@SDLButtonNameTempDown":{"name":"SDLButtonNameTempDown","abstract":"

    Represents a temperature down button

    "},"Constants.html#/c:@SDLButtonNameDefrostMax":{"name":"SDLButtonNameDefrostMax","abstract":"

    Represents a Defrost max button.

    "},"Constants.html#/c:@SDLButtonNameDefrost":{"name":"SDLButtonNameDefrost","abstract":"

    Represents a Defrost button.

    "},"Constants.html#/c:@SDLButtonNameDefrostRear":{"name":"SDLButtonNameDefrostRear","abstract":"

    Represents a Defrost rear button.

    "},"Constants.html#/c:@SDLButtonNameUpperVent":{"name":"SDLButtonNameUpperVent","abstract":"

    Represents a Upper Vent button.

    "},"Constants.html#/c:@SDLButtonNameLowerVent":{"name":"SDLButtonNameLowerVent","abstract":"

    Represents a Lower vent button.

    "},"Constants.html#/c:@SDLButtonNameVolumeUp":{"name":"SDLButtonNameVolumeUp","abstract":"

    Represents a volume up button.

    "},"Constants.html#/c:@SDLButtonNameVolumeDown":{"name":"SDLButtonNameVolumeDown","abstract":"

    Represents a volume down button.

    "},"Constants.html#/c:@SDLButtonNameEject":{"name":"SDLButtonNameEject","abstract":"

    Represents a Eject Button.

    "},"Constants.html#/c:@SDLButtonNameSource":{"name":"SDLButtonNameSource","abstract":"

    Represents a Source button.

    "},"Constants.html#/c:@SDLButtonNameShuffle":{"name":"SDLButtonNameShuffle","abstract":"

    Represents a SHUFFLE button.

    "},"Constants.html#/c:@SDLButtonNameRepeat":{"name":"SDLButtonNameRepeat","abstract":"

    Represents a Repeat button.

    "},"Constants.html#/c:@SDLButtonPressModeLong":{"name":"SDLButtonPressModeLong","abstract":"

    A button was released, after it was pressed for a long time. Actual timing is defined by the head unit and may vary.

    "},"Constants.html#/c:@SDLButtonPressModeShort":{"name":"SDLButtonPressModeShort","abstract":"

    A button was released, after it was pressed for a short time. Actual timing is defined by the head unit and may vary.

    "},"Constants.html#/c:@SDLCarModeStatusNormal":{"name":"SDLCarModeStatusNormal","abstract":"

    Provides carmode NORMAL to each module.

    "},"Constants.html#/c:@SDLCarModeStatusFactory":{"name":"SDLCarModeStatusFactory","abstract":"

    Provides carmode FACTORY to each module.

    "},"Constants.html#/c:@SDLCarModeStatusTransport":{"name":"SDLCarModeStatusTransport","abstract":"

    Provides carmode TRANSPORT to each module.

    "},"Constants.html#/c:@SDLCarModeStatusCrash":{"name":"SDLCarModeStatusCrash","abstract":"

    Provides carmode CRASH to each module.

    "},"Constants.html#/c:@SDLCharacterSetType2":{"name":"SDLCharacterSetType2","abstract":"

    Character Set Type 2

    "},"Constants.html#/c:@SDLCharacterSetType5":{"name":"SDLCharacterSetType5","abstract":"

    Character Set Type 5

    "},"Constants.html#/c:@SDLCharacterSetCID1":{"name":"SDLCharacterSetCID1","abstract":"

    Character Set CID1

    "},"Constants.html#/c:@SDLCharacterSetCID2":{"name":"SDLCharacterSetCID2","abstract":"

    Character Set CID2

    "},"Constants.html#/c:@SDLCompassDirectionNorth":{"name":"SDLCompassDirectionNorth","abstract":"

    Direction North

    "},"Constants.html#/c:@SDLCompassDirectionNorthwest":{"name":"SDLCompassDirectionNorthwest","abstract":"

    Direction Northwest

    "},"Constants.html#/c:@SDLCompassDirectionWest":{"name":"SDLCompassDirectionWest","abstract":"

    Direction West

    "},"Constants.html#/c:@SDLCompassDirectionSouthwest":{"name":"SDLCompassDirectionSouthwest","abstract":"

    Direction Southwest

    "},"Constants.html#/c:@SDLCompassDirectionSouth":{"name":"SDLCompassDirectionSouth","abstract":"

    Direction South

    "},"Constants.html#/c:@SDLCompassDirectionSoutheast":{"name":"SDLCompassDirectionSoutheast","abstract":"

    Direction Southeast

    "},"Constants.html#/c:@SDLCompassDirectionEast":{"name":"SDLCompassDirectionEast","abstract":"

    Direction East

    "},"Constants.html#/c:@SDLCompassDirectionNortheast":{"name":"SDLCompassDirectionNortheast","abstract":"

    Direction Northeast

    "},"Constants.html#/c:@SDLComponentVolumeStatusUnknown":{"name":"SDLComponentVolumeStatusUnknown","abstract":"

    Unknown SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusNormal":{"name":"SDLComponentVolumeStatusNormal","abstract":"

    Normal SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusLow":{"name":"SDLComponentVolumeStatusLow","abstract":"

    Low SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusFault":{"name":"SDLComponentVolumeStatusFault","abstract":"

    Fault SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusAlert":{"name":"SDLComponentVolumeStatusAlert","abstract":"

    Alert SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLComponentVolumeStatusNotSupported":{"name":"SDLComponentVolumeStatusNotSupported","abstract":"

    Not supported SDLComponentVolumeStatus

    "},"Constants.html#/c:@SDLDefrostZoneFront":{"name":"SDLDefrostZoneFront","abstract":"

    A SDLDefrostZone with the value of FRONT

    "},"Constants.html#/c:@SDLDefrostZoneRear":{"name":"SDLDefrostZoneRear","abstract":"

    A SDLDefrostZone with the value of REAR

    "},"Constants.html#/c:@SDLDefrostZoneAll":{"name":"SDLDefrostZoneAll","abstract":"

    A SDLDefrostZone with the value of All

    "},"Constants.html#/c:@SDLDefrostZoneNone":{"name":"SDLDefrostZoneNone","abstract":"

    A SDLDefrostZone with the value of None

    "},"Constants.html#/c:@SDLDeliveryModePrompt":{"name":"SDLDeliveryModePrompt","abstract":"

    User is prompted on HMI

    "},"Constants.html#/c:@SDLDeliveryModeDestination":{"name":"SDLDeliveryModeDestination","abstract":"

    Set the location as destination without prompting the user

    "},"Constants.html#/c:@SDLDeliveryModeQueue":{"name":"SDLDeliveryModeQueue","abstract":"

    Adds the current location to navigation queue

    "},"Constants.html#/c:@SDLDeviceLevelStatusZeroBars":{"name":"SDLDeviceLevelStatusZeroBars","abstract":"

    Device battery level is zero bars

    "},"Constants.html#/c:@SDLDeviceLevelStatusOneBar":{"name":"SDLDeviceLevelStatusOneBar","abstract":"

    Device battery level is one bar

    "},"Constants.html#/c:@SDLDeviceLevelStatusTwoBars":{"name":"SDLDeviceLevelStatusTwoBars","abstract":"

    Device battery level is two bars

    "},"Constants.html#/c:@SDLDeviceLevelStatusThreeBars":{"name":"SDLDeviceLevelStatusThreeBars","abstract":"

    Device battery level is three bars

    "},"Constants.html#/c:@SDLDeviceLevelStatusFourBars":{"name":"SDLDeviceLevelStatusFourBars","abstract":"

    Device battery level is four bars

    "},"Constants.html#/c:@SDLDeviceLevelStatusNotProvided":{"name":"SDLDeviceLevelStatusNotProvided","abstract":"

    Device battery level is unknown

    "},"Constants.html#/c:@SDLDimensionNoFix":{"name":"SDLDimensionNoFix","abstract":"

    No GPS at all

    "},"Constants.html#/c:@SDLDimension2D":{"name":"SDLDimension2D","abstract":"

    Longitude and latitude of the GPS

    "},"Constants.html#/c:@SDLDimension3D":{"name":"SDLDimension3D","abstract":"

    Longitude and latitude and altitude of the GPS

    "},"Constants.html#/c:@SDLDirectionLeft":{"name":"SDLDirectionLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDirectionRight":{"name":"SDLDirectionRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDisplayModeDay":{"name":"SDLDisplayModeDay","abstract":"

    @abstract Display Mode : DAY

    "},"Constants.html#/c:@SDLDisplayModeNight":{"name":"SDLDisplayModeNight","abstract":"

    @abstract Display Mode : NIGHT.

    "},"Constants.html#/c:@SDLDisplayModeAuto":{"name":"SDLDisplayModeAuto","abstract":"

    @abstract Display Mode : AUTO.

    "},"Constants.html#/c:@SDLDisplayTypeCID":{"name":"SDLDisplayTypeCID","abstract":"

    This display type provides a 2-line x 20 character dot matrix display.

    "},"Constants.html#/c:@SDLDisplayTypeType2":{"name":"SDLDisplayTypeType2","abstract":"

    Display type 2

    "},"Constants.html#/c:@SDLDisplayTypeType5":{"name":"SDLDisplayTypeType5","abstract":"

    Display type 5

    "},"Constants.html#/c:@SDLDisplayTypeNGN":{"name":"SDLDisplayTypeNGN","abstract":"

    This display type provides an 8 inch touchscreen display.

    "},"Constants.html#/c:@SDLDisplayTypeGen28DMA":{"name":"SDLDisplayTypeGen28DMA","abstract":"

    Display type Gen 28 DMA

    "},"Constants.html#/c:@SDLDisplayTypeGen26DMA":{"name":"SDLDisplayTypeGen26DMA","abstract":"

    Display type Gen 26 DMA

    "},"Constants.html#/c:@SDLDisplayTypeMFD3":{"name":"SDLDisplayTypeMFD3","abstract":"

    Display type MFD3

    "},"Constants.html#/c:@SDLDisplayTypeMFD4":{"name":"SDLDisplayTypeMFD4","abstract":"

    Display type MFD4

    "},"Constants.html#/c:@SDLDisplayTypeMFD5":{"name":"SDLDisplayTypeMFD5","abstract":"

    Display type MFD5

    "},"Constants.html#/c:@SDLDisplayTypeGen38Inch":{"name":"SDLDisplayTypeGen38Inch","abstract":"

    Display type Gen 3 8-inch

    "},"Constants.html#/c:@SDLDisplayTypeGeneric":{"name":"SDLDisplayTypeGeneric","abstract":"

    Display type Generic

    "},"Constants.html#/c:@SDLDistanceUnitMiles":{"name":"SDLDistanceUnitMiles","abstract":"

    @abstract SDLDistanceUnit: MILES

    "},"Constants.html#/c:@SDLDistanceUnitKilometers":{"name":"SDLDistanceUnitKilometers","abstract":"

    @abstract SDLDistanceUnit: KILOMETERS

    "},"Constants.html#/c:@SDLDriverDistractionStateOn":{"name":"SDLDriverDistractionStateOn","abstract":"

    Driver distraction rules are in effect.

    "},"Constants.html#/c:@SDLDriverDistractionStateOff":{"name":"SDLDriverDistractionStateOff","abstract":"

    Driver distraction rules are NOT in effect.

    "},"Constants.html#/c:@SDLECallConfirmationStatusNormal":{"name":"SDLECallConfirmationStatusNormal","abstract":"

    No E-Call signal triggered.

    "},"Constants.html#/c:@SDLECallConfirmationStatusInProgress":{"name":"SDLECallConfirmationStatusInProgress","abstract":"

    An E-Call is being in progress.

    "},"Constants.html#/c:@SDLECallConfirmationStatusCancelled":{"name":"SDLECallConfirmationStatusCancelled","abstract":"

    An E-Call was cancelled by the user.

    "},"Constants.html#/c:@SDLECallConfirmationStatusCompleted":{"name":"SDLECallConfirmationStatusCompleted","abstract":"

    The E-Call sequence is completed.

    "},"Constants.html#/c:@SDLECallConfirmationStatusUnsuccessful":{"name":"SDLECallConfirmationStatusUnsuccessful","abstract":"

    An E-Call could not be connected.

    "},"Constants.html#/c:@SDLECallConfirmationStatusConfiguredOff":{"name":"SDLECallConfirmationStatusConfiguredOff","abstract":"

    E-Call is not configured on this vehicle.

    "},"Constants.html#/c:@SDLECallConfirmationStatusCompleteDTMFTimeout":{"name":"SDLECallConfirmationStatusCompleteDTMFTimeout","abstract":"

    E-Call is considered to be complete without Emergency Operator contact.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusClosed":{"name":"SDLElectronicParkBrakeStatusClosed","abstract":"

    Parking brake actuators have been fully applied.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusTransition":{"name":"SDLElectronicParkBrakeStatusTransition","abstract":"

    Parking brake actuators are transitioning to either Apply/Closed or Release/Open state.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusOpen":{"name":"SDLElectronicParkBrakeStatusOpen","abstract":"

    Parking brake actuators are released.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusDriveActive":{"name":"SDLElectronicParkBrakeStatusDriveActive","abstract":"

    When driver pulls the Electronic Parking Brake switch while driving at speed.

    "},"Constants.html#/c:@SDLElectronicParkBrakeStatusFault":{"name":"SDLElectronicParkBrakeStatusFault","abstract":"

    When system has a fault or is under maintenance.

    "},"Constants.html#/c:@SDLEmergencyEventTypeNoEvent":{"name":"SDLEmergencyEventTypeNoEvent","abstract":"

    No emergency event has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeFrontal":{"name":"SDLEmergencyEventTypeFrontal","abstract":"

    Frontal collision has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeSide":{"name":"SDLEmergencyEventTypeSide","abstract":"

    Side collision has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeRear":{"name":"SDLEmergencyEventTypeRear","abstract":"

    Rear collision has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeRollover":{"name":"SDLEmergencyEventTypeRollover","abstract":"

    A rollover event has happened.

    "},"Constants.html#/c:@SDLEmergencyEventTypeNotSupported":{"name":"SDLEmergencyEventTypeNotSupported","abstract":"

    The signal is not supported

    "},"Constants.html#/c:@SDLEmergencyEventTypeFault":{"name":"SDLEmergencyEventTypeFault","abstract":"

    Emergency status cannot be determined

    "},"Constants.html#/c:@SDLFileTypeBMP":{"name":"SDLFileTypeBMP","abstract":"

    file type: Bitmap (BMP)

    "},"Constants.html#/c:@SDLFileTypeJPEG":{"name":"SDLFileTypeJPEG","abstract":"

    file type: JPEG

    "},"Constants.html#/c:@SDLFileTypePNG":{"name":"SDLFileTypePNG","abstract":"

    file type: PNG

    "},"Constants.html#/c:@SDLFileTypeWAV":{"name":"SDLFileTypeWAV","abstract":"

    file type: WAVE (WAV)

    "},"Constants.html#/c:@SDLFileTypeMP3":{"name":"SDLFileTypeMP3","abstract":"

    file type: MP3

    "},"Constants.html#/c:@SDLFileTypeAAC":{"name":"SDLFileTypeAAC","abstract":"

    file type: AAC

    "},"Constants.html#/c:@SDLFileTypeBinary":{"name":"SDLFileTypeBinary","abstract":"

    file type: BINARY

    "},"Constants.html#/c:@SDLFileTypeJSON":{"name":"SDLFileTypeJSON","abstract":"

    file type: JSON

    "},"Constants.html#/c:@SDLFuelCutoffStatusTerminateFuel":{"name":"SDLFuelCutoffStatusTerminateFuel","abstract":"

    Fuel is cut off

    "},"Constants.html#/c:@SDLFuelCutoffStatusNormalOperation":{"name":"SDLFuelCutoffStatusNormalOperation","abstract":"

    Fuel is not cut off

    "},"Constants.html#/c:@SDLFuelCutoffStatusFault":{"name":"SDLFuelCutoffStatusFault","abstract":"

    Status of the fuel pump cannot be determined

    "},"Constants.html#/c:@SDLFuelTypeGasoline":{"name":"SDLFuelTypeGasoline","abstract":"

    Fuel type: Gasoline

    "},"Constants.html#/c:@SDLFuelTypeDiesel":{"name":"SDLFuelTypeDiesel","abstract":"

    Fuel type: Diesel

    "},"Constants.html#/c:@SDLFuelTypeCNG":{"name":"SDLFuelTypeCNG","abstract":"

    Fuel type: CNG

    "},"Constants.html#/c:@SDLFuelTypeLPG":{"name":"SDLFuelTypeLPG","abstract":"

    Fuel type: LPG

    "},"Constants.html#/c:@SDLFuelTypeHydrogen":{"name":"SDLFuelTypeHydrogen","abstract":"

    Fuel type: Hydrogen

    "},"Constants.html#/c:@SDLFuelTypeBattery":{"name":"SDLFuelTypeBattery","abstract":"

    Fuel type: Battery

    "},"Constants.html#/c:@SDLGlobalPropertyHelpPrompt":{"name":"SDLGlobalPropertyHelpPrompt","abstract":"

    The help prompt to be spoken if the user needs assistance during a user-initiated interaction.

    "},"Constants.html#/c:@SDLGlobalPropertyTimeoutPrompt":{"name":"SDLGlobalPropertyTimeoutPrompt","abstract":"

    The prompt to be spoken if the user-initiated interaction times out waiting for the user’s verbal input.

    "},"Constants.html#/c:@SDLGlobalPropertyVoiceRecognitionHelpTitle":{"name":"SDLGlobalPropertyVoiceRecognitionHelpTitle","abstract":"

    The title of the menu displayed when the user requests help via voice recognition.

    "},"Constants.html#/c:@SDLGlobalPropertyVoiceRecognitionHelpItems":{"name":"SDLGlobalPropertyVoiceRecognitionHelpItems","abstract":"

    Items of the menu displayed when the user requests help via voice recognition.

    "},"Constants.html#/c:@SDLGlobalPropertyMenuName":{"name":"SDLGlobalPropertyMenuName","abstract":"

    The name of the menu button displayed in templates

    "},"Constants.html#/c:@SDLGlobalPropertyMenuIcon":{"name":"SDLGlobalPropertyMenuIcon","abstract":"

    An icon on the menu button displayed in templates

    "},"Constants.html#/c:@SDLGlobalPropertyKeyboard":{"name":"SDLGlobalPropertyKeyboard","abstract":"

    Property related to the keyboard

    "},"Constants.html#/c:@SDLHMILevelFull":{"name":"SDLHMILevelFull","abstract":"

    The application has full use of the SDL HMI. The app may output via TTS, display, or streaming audio and may gather input via VR, Menu, and button presses

    "},"Constants.html#/c:@SDLHMILevelLimited":{"name":"SDLHMILevelLimited","abstract":"

    This HMI Level is only defined for a media application using an HMI with an 8 inch touchscreen (Nav) system. The application’s Show text is displayed and it receives button presses from media-oriented buttons (SEEKRIGHT, SEEKLEFT, TUNEUP, TUNEDOWN, PRESET_0-9)

    "},"Constants.html#/c:@SDLHMILevelBackground":{"name":"SDLHMILevelBackground","abstract":"

    App cannot interact with user via TTS, VR, Display or Button Presses. App can perform the following operations:

    "},"Constants.html#/c:@SDLHMILevelNone":{"name":"SDLHMILevelNone","abstract":"

    Application has been discovered by SDL, but it cannot send any requests or receive any notifications

    "},"Constants.html#/c:@SDLHMIZoneCapabilitiesFront":{"name":"SDLHMIZoneCapabilitiesFront","abstract":"

    Indicates HMI available for front seat passengers.

    "},"Constants.html#/c:@SDLHMIZoneCapabilitiesBack":{"name":"SDLHMIZoneCapabilitiesBack","abstract":"

    Indicates HMI available for rear seat passengers.

    "},"Constants.html#/c:@SDLHybridAppPreferenceMobile":{"name":"SDLHybridAppPreferenceMobile","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLHybridAppPreferenceCloud":{"name":"SDLHybridAppPreferenceCloud","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLHybridAppPreferenceBoth":{"name":"SDLHybridAppPreferenceBoth","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLIgnitionStableStatusNotStable":{"name":"SDLIgnitionStableStatusNotStable","abstract":"

    The current ignition switch status is considered not to be stable.

    "},"Constants.html#/c:@SDLIgnitionStableStatusStable":{"name":"SDLIgnitionStableStatusStable","abstract":"

    The current ignition switch status is considered to be stable.

    "},"Constants.html#/c:@SDLIgnitionStableStatusMissingFromTransmitter":{"name":"SDLIgnitionStableStatusMissingFromTransmitter","abstract":"

    The current ignition switch status is considered to be missing from the transmitter

    "},"Constants.html#/c:@SDLIgnitionStatusUnknown":{"name":"SDLIgnitionStatusUnknown","abstract":"

    Ignition status currently unknown

    "},"Constants.html#/c:@SDLIgnitionStatusOff":{"name":"SDLIgnitionStatusOff","abstract":"

    Ignition is off

    "},"Constants.html#/c:@SDLIgnitionStatusAccessory":{"name":"SDLIgnitionStatusAccessory","abstract":"

    Ignition is in mode accessory

    "},"Constants.html#/c:@SDLIgnitionStatusRun":{"name":"SDLIgnitionStatusRun","abstract":"

    Ignition is in mode run

    "},"Constants.html#/c:@SDLIgnitionStatusStart":{"name":"SDLIgnitionStatusStart","abstract":"

    Ignition is in mode start

    "},"Constants.html#/c:@SDLIgnitionStatusInvalid":{"name":"SDLIgnitionStatusInvalid","abstract":"

    Signal is invalid

    "},"Constants.html#/c:@SDLImageFieldNameSoftButtonImage":{"name":"SDLImageFieldNameSoftButtonImage","abstract":"

    The image field for SoftButton

    "},"Constants.html#/c:@SDLImageFieldNameChoiceImage":{"name":"SDLImageFieldNameChoiceImage","abstract":"

    The first image field for Choice.

    "},"Constants.html#/c:@SDLImageFieldNameChoiceSecondaryImage":{"name":"SDLImageFieldNameChoiceSecondaryImage","abstract":"

    The scondary image field for Choice.

    "},"Constants.html#/c:@SDLImageFieldNameVoiceRecognitionHelpItem":{"name":"SDLImageFieldNameVoiceRecognitionHelpItem","abstract":"

    The image field for vrHelpItem.

    "},"Constants.html#/c:@SDLImageFieldNameTurnIcon":{"name":"SDLImageFieldNameTurnIcon","abstract":"

    The image field for Turn.

    "},"Constants.html#/c:@SDLImageFieldNameMenuIcon":{"name":"SDLImageFieldNameMenuIcon","abstract":"

    The image field for the menu icon in SetGlobalProperties.

    "},"Constants.html#/c:@SDLImageFieldNameCommandIcon":{"name":"SDLImageFieldNameCommandIcon","abstract":"

    The image field for AddCommand."},"Constants.html#/c:@SDLImageFieldNameAppIcon":{"name":"SDLImageFieldNameAppIcon","abstract":"

    The image field for the app icon (set by setAppIcon).

    "},"Constants.html#/c:@SDLImageFieldNameGraphic":{"name":"SDLImageFieldNameGraphic","abstract":"

    The primary image field for Show."},"Constants.html#/c:@SDLImageFieldNameSecondaryGraphic":{"name":"SDLImageFieldNameSecondaryGraphic","abstract":"

    The secondary image field for Show."},"Constants.html#/c:@SDLImageFieldNameShowConstantTBTIcon":{"name":"SDLImageFieldNameShowConstantTBTIcon","abstract":"

    The primary image field for ShowConstant TBT."},"Constants.html#/c:@SDLImageFieldNameShowConstantTBTNextTurnIcon":{"name":"SDLImageFieldNameShowConstantTBTNextTurnIcon","abstract":"

    The secondary image field for ShowConstant TBT.

    "},"Constants.html#/c:@SDLImageFieldNameLocationImage":{"name":"SDLImageFieldNameLocationImage","abstract":"

    The optional image of a destination / location

    "},"Constants.html#/c:@SDLImageTypeStatic":{"name":"SDLImageTypeStatic","abstract":"

    Activate an icon that shipped with the IVI system by passing a hex value.

    "},"Constants.html#/c:@SDLImageTypeDynamic":{"name":"SDLImageTypeDynamic","abstract":"

    An icon referencing an image uploaded by the app (identifier to be sent by SDLPutFile)

    "},"Constants.html#/c:@SDLInteractionModeManualOnly":{"name":"SDLInteractionModeManualOnly","abstract":"

    Interaction Mode : Manual Only

    "},"Constants.html#/c:@SDLInteractionModeVoiceRecognitionOnly":{"name":"SDLInteractionModeVoiceRecognitionOnly","abstract":"

    Interaction Mode : VR Only

    "},"Constants.html#/c:@SDLInteractionModeBoth":{"name":"SDLInteractionModeBoth","abstract":"

    Interaction Mode : Manual & VR

    "},"Constants.html#/c:@SDLKeyboardEventKeypress":{"name":"SDLKeyboardEventKeypress","abstract":"

    The use has pressed the keyboard key (applies to both SINGLE_KEYPRESS and RESEND_CURRENT_ENTRY modes).

    "},"Constants.html#/c:@SDLKeyboardEventSubmitted":{"name":"SDLKeyboardEventSubmitted","abstract":"

    The User has finished entering text from the keyboard and submitted the entry.

    "},"Constants.html#/c:@SDLKeyboardEventCancelled":{"name":"SDLKeyboardEventCancelled","abstract":"

    The User has pressed the HMI-defined Cancel button.

    "},"Constants.html#/c:@SDLKeyboardEventAborted":{"name":"SDLKeyboardEventAborted","abstract":"

    The User has not finished entering text and the keyboard is aborted with the event of higher priority.

    "},"Constants.html#/c:@SDLKeyboardEventVoice":{"name":"SDLKeyboardEventVoice","abstract":"

    The user used voice as input for the keyboard

    "},"Constants.html#/c:@SDLKeyboardLayoutQWERTY":{"name":"SDLKeyboardLayoutQWERTY","abstract":"

    QWERTY layout (the name comes from the first six keys
    appearing on the top left letter row of the keyboard and read from left to right)

    "},"Constants.html#/c:@SDLKeyboardLayoutQWERTZ":{"name":"SDLKeyboardLayoutQWERTZ","abstract":"

    QWERTZ layout (the name comes from the first six keys
    appearing on the top left letter row of the keyboard and read from left to right)

    "},"Constants.html#/c:@SDLKeyboardLayoutAZERTY":{"name":"SDLKeyboardLayoutAZERTY","abstract":"

    AZERTY layout (the name comes from the first six keys
    appearing on the top left letter row of the keyboard and read from left to right)

    "},"Constants.html#/c:@SDLKeypressModeSingleKeypress":{"name":"SDLKeypressModeSingleKeypress","abstract":"

    SINGLE_KEYPRESS:
    Each and every User`s keypress must be reported (new notification for every newly entered single symbol).

    "},"Constants.html#/c:@SDLKeypressModeQueueKeypresses":{"name":"SDLKeypressModeQueueKeypresses","abstract":"

    QUEUE_KEYPRESSES:
    The whole entry is reported only after the User submits it (by ‘Search’ button click displayed on touchscreen keyboard)

    "},"Constants.html#/c:@SDLKeypressModeResendCurrentEntry":{"name":"SDLKeypressModeResendCurrentEntry","abstract":"

    RESEND_CURRENT_ENTRY:
    The whole entry must be reported each and every time the User makes a new keypress
    (new notification with all previously entered symbols and a newly entered one appended).

    "},"Constants.html#/c:@SDLLanguageEnSa":{"name":"SDLLanguageEnSa","abstract":"

    English_SA

    "},"Constants.html#/c:@SDLLanguageHeIl":{"name":"SDLLanguageHeIl","abstract":"

    Hebrew_IL

    "},"Constants.html#/c:@SDLLanguageRoRo":{"name":"SDLLanguageRoRo","abstract":"

    Romainian_RO

    "},"Constants.html#/c:@SDLLanguageUkUa":{"name":"SDLLanguageUkUa","abstract":"

    Ukrainian_UA

    "},"Constants.html#/c:@SDLLanguageIdId":{"name":"SDLLanguageIdId","abstract":"

    Indonesian_ID

    "},"Constants.html#/c:@SDLLanguageViVn":{"name":"SDLLanguageViVn","abstract":"

    Vietnamese_VN

    "},"Constants.html#/c:@SDLLanguageMsMy":{"name":"SDLLanguageMsMy","abstract":"

    Malay_MY

    "},"Constants.html#/c:@SDLLanguageHiIn":{"name":"SDLLanguageHiIn","abstract":"

    Hindi_IN

    "},"Constants.html#/c:@SDLLanguageNlBe":{"name":"SDLLanguageNlBe","abstract":"

    Dutch(Flemish)_BE

    "},"Constants.html#/c:@SDLLanguageElGr":{"name":"SDLLanguageElGr","abstract":"

    Greek_GR

    "},"Constants.html#/c:@SDLLanguageHuHu":{"name":"SDLLanguageHuHu","abstract":"

    Hungarian_HU

    "},"Constants.html#/c:@SDLLanguageFiFi":{"name":"SDLLanguageFiFi","abstract":"

    Finnish_FI

    "},"Constants.html#/c:@SDLLanguageSkSk":{"name":"SDLLanguageSkSk","abstract":"

    Slovak_SK

    "},"Constants.html#/c:@SDLLanguageEnUs":{"name":"SDLLanguageEnUs","abstract":"

    English_US

    "},"Constants.html#/c:@SDLLanguageEnIn":{"name":"SDLLanguageEnIn","abstract":"

    English - India

    "},"Constants.html#/c:@SDLLanguageThTh":{"name":"SDLLanguageThTh","abstract":"

    Thai - Thailand

    "},"Constants.html#/c:@SDLLanguageEsMx":{"name":"SDLLanguageEsMx","abstract":"

    Spanish - Mexico

    "},"Constants.html#/c:@SDLLanguageFrCa":{"name":"SDLLanguageFrCa","abstract":"

    French - Canada

    "},"Constants.html#/c:@SDLLanguageDeDe":{"name":"SDLLanguageDeDe","abstract":"

    German - Germany

    "},"Constants.html#/c:@SDLLanguageEsEs":{"name":"SDLLanguageEsEs","abstract":"

    Spanish - Spain

    "},"Constants.html#/c:@SDLLanguageEnGb":{"name":"SDLLanguageEnGb","abstract":"

    English - Great Britain

    "},"Constants.html#/c:@SDLLanguageRuRu":{"name":"SDLLanguageRuRu","abstract":"

    Russian - Russia

    "},"Constants.html#/c:@SDLLanguageTrTr":{"name":"SDLLanguageTrTr","abstract":"

    Turkish - Turkey

    "},"Constants.html#/c:@SDLLanguagePlPl":{"name":"SDLLanguagePlPl","abstract":"

    Polish - Poland

    "},"Constants.html#/c:@SDLLanguageFrFr":{"name":"SDLLanguageFrFr","abstract":"

    French - France

    "},"Constants.html#/c:@SDLLanguageItIt":{"name":"SDLLanguageItIt","abstract":"

    Italian - Italy

    "},"Constants.html#/c:@SDLLanguageSvSe":{"name":"SDLLanguageSvSe","abstract":"

    Swedish - Sweden

    "},"Constants.html#/c:@SDLLanguagePtPt":{"name":"SDLLanguagePtPt","abstract":"

    Portuguese - Portugal

    "},"Constants.html#/c:@SDLLanguageNlNl":{"name":"SDLLanguageNlNl","abstract":"

    Dutch (Standard) - Netherlands

    "},"Constants.html#/c:@SDLLanguageEnAu":{"name":"SDLLanguageEnAu","abstract":"

    English - Australia

    "},"Constants.html#/c:@SDLLanguageZhCn":{"name":"SDLLanguageZhCn","abstract":"

    Mandarin - China

    "},"Constants.html#/c:@SDLLanguageZhTw":{"name":"SDLLanguageZhTw","abstract":"

    Mandarin - Taiwan

    "},"Constants.html#/c:@SDLLanguageJaJp":{"name":"SDLLanguageJaJp","abstract":"

    Japanese - Japan

    "},"Constants.html#/c:@SDLLanguageArSa":{"name":"SDLLanguageArSa","abstract":"

    Arabic - Saudi Arabia

    "},"Constants.html#/c:@SDLLanguageKoKr":{"name":"SDLLanguageKoKr","abstract":"

    Korean - South Korea

    "},"Constants.html#/c:@SDLLanguagePtBr":{"name":"SDLLanguagePtBr","abstract":"

    Portuguese - Brazil

    "},"Constants.html#/c:@SDLLanguageCsCz":{"name":"SDLLanguageCsCz","abstract":"

    Czech - Czech Republic

    "},"Constants.html#/c:@SDLLanguageDaDk":{"name":"SDLLanguageDaDk","abstract":"

    Danish - Denmark

    "},"Constants.html#/c:@SDLLanguageNoNo":{"name":"SDLLanguageNoNo","abstract":"

    Norwegian - Norway

    "},"Constants.html#/c:@SDLLayoutModeIconOnly":{"name":"SDLLayoutModeIconOnly","abstract":"

    This mode causes the interaction to display the previous set of choices as icons.

    "},"Constants.html#/c:@SDLLayoutModeIconWithSearch":{"name":"SDLLayoutModeIconWithSearch","abstract":"

    This mode causes the interaction to display the previous set of choices as icons along with a search field in the HMI.

    "},"Constants.html#/c:@SDLLayoutModeListOnly":{"name":"SDLLayoutModeListOnly","abstract":"

    This mode causes the interaction to display the previous set of choices as a list.

    "},"Constants.html#/c:@SDLLayoutModeListWithSearch":{"name":"SDLLayoutModeListWithSearch","abstract":"

    This mode causes the interaction to display the previous set of choices as a list along with a search field in the HMI.

    "},"Constants.html#/c:@SDLLayoutModeKeyboard":{"name":"SDLLayoutModeKeyboard","abstract":"

    This mode causes the interaction to immediately display a keyboard entry through the HMI.

    "},"Constants.html#/c:@SDLLightNameFrontLeftHighBeam":{"name":"SDLLightNameFrontLeftHighBeam","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_HIGH_BEAM.

    "},"Constants.html#/c:@SDLLightNameFrontRightHighBeam":{"name":"SDLLightNameFrontRightHighBeam","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_HIGH_BEAM.

    "},"Constants.html#/c:@SDLLightNameFrontLeftLowBeam":{"name":"SDLLightNameFrontLeftLowBeam","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_LOW_BEAM.

    "},"Constants.html#/c:@SDLLightNameFrontRightLowBeam":{"name":"SDLLightNameFrontRightLowBeam","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_LOW_BEAM.

    "},"Constants.html#/c:@SDLLightNameFrontLeftParkingLight":{"name":"SDLLightNameFrontLeftParkingLight","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_PARKING_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontRightParkingLight":{"name":"SDLLightNameFrontRightParkingLight","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_PARKING_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontLeftFogLight":{"name":"SDLLightNameFrontLeftFogLight","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_FOG_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontRightFogLight":{"name":"SDLLightNameFrontRightFogLight","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_FOG_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontLeftDaytimeRunningLight":{"name":"SDLLightNameFrontLeftDaytimeRunningLight","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_DAYTIME_RUNNING_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontRightDaytimeRunningLight":{"name":"SDLLightNameFrontRightDaytimeRunningLight","abstract":"

    @abstract Represents the Light with name FRONT_RIGHT_DAYTIME_RUNNING_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontLeftTurnLight":{"name":"SDLLightNameFrontLeftTurnLight","abstract":"

    @abstract Represents the Light with name FRONT_LEFT_TURN_LIGHT

    "},"Constants.html#/c:@SDLLightNameFrontRightTurnLight":{"name":"SDLLightNameFrontRightTurnLight","abstract":"

    @abstract Represents the Light with name FRONT_Right_TURN_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearLeftFogLight":{"name":"SDLLightNameRearLeftFogLight","abstract":"

    @abstract Represents the Light with name REAR_LEFT_FOG_LIGHT.

    "},"Constants.html#/c:@SDLLightNameRearRightFogLight":{"name":"SDLLightNameRearRightFogLight","abstract":"

    @abstract Represents the Light with name REAR_RIGHT_FOG_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearLeftTailLight":{"name":"SDLLightNameRearLeftTailLight","abstract":"

    @abstract Represents the Light with name REAR_LEFT_TAIL_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearRightTailLight":{"name":"SDLLightNameRearRightTailLight","abstract":"

    @abstract Represents the Light with name REAR_RIGHT_TAIL_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearLeftBrakeLight":{"name":"SDLLightNameRearLeftBrakeLight","abstract":"

    @abstract Represents the Light with name REAR_LEFT_BRAKE_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearRightBrakeLight":{"name":"SDLLightNameRearRightBrakeLight","abstract":"

    @abstract Represents the Light with name REAR_RIGHT_BRAKE_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearLeftTurnLight":{"name":"SDLLightNameRearLeftTurnLight","abstract":"

    @abstract Represents the Light with name REAR_LEFT_TURN_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearRightTurnLight":{"name":"SDLLightNameRearRightTurnLight","abstract":"

    @abstract Represents the Light with name REAR_RIGHT_TURN_LIGHT

    "},"Constants.html#/c:@SDLLightNameRearRegistrationPlateLight":{"name":"SDLLightNameRearRegistrationPlateLight","abstract":"

    @abstract Represents the Light with name REAR_REGISTRATION_PLATE_LIGHT

    "},"Constants.html#/c:@SDLLightNameHighBeams":{"name":"SDLLightNameHighBeams","abstract":"

    @abstract Include all high beam lights: front_left and front_right.

    "},"Constants.html#/c:@SDLLightNameLowBeams":{"name":"SDLLightNameLowBeams","abstract":"

    @abstract Include all low beam lights: front_left and front_right.

    "},"Constants.html#/c:@SDLLightNameFogLights":{"name":"SDLLightNameFogLights","abstract":"

    @abstract Include all fog lights: front_left, front_right, rear_left and rear_right.

    "},"Constants.html#/c:@SDLLightNameRunningLights":{"name":"SDLLightNameRunningLights","abstract":"

    @abstract Include all daytime running lights: front_left and front_right.

    "},"Constants.html#/c:@SDLLightNameParkingLights":{"name":"SDLLightNameParkingLights","abstract":"

    @abstract Include all parking lights: front_left and front_right.

    "},"Constants.html#/c:@SDLLightNameBrakeLights":{"name":"SDLLightNameBrakeLights","abstract":"

    @abstract Include all brake lights: rear_left and rear_right.

    "},"Constants.html#/c:@SDLLightNameRearReversingLights":{"name":"SDLLightNameRearReversingLights","abstract":"

    @abstract Represents the Light with name REAR_REVERSING_LIGHTS

    "},"Constants.html#/c:@SDLLightNameSideMarkerLights":{"name":"SDLLightNameSideMarkerLights","abstract":"

    @abstract Represents the Light with name SIDE_MARKER_LIGHTS

    "},"Constants.html#/c:@SDLLightNameLeftTurnLights":{"name":"SDLLightNameLeftTurnLights","abstract":"

    @abstract Include all left turn signal lights: front_left, rear_left, left_side and mirror_mounted.

    "},"Constants.html#/c:@SDLLightNameRightTurnLights":{"name":"SDLLightNameRightTurnLights","abstract":"

    @abstract Include all right turn signal lights: front_right, rear_right, right_side and mirror_mounted.

    "},"Constants.html#/c:@SDLLightNameHazardLights":{"name":"SDLLightNameHazardLights","abstract":"

    @abstract Include all hazard lights: front_left, front_right, rear_left and rear_right.

    "},"Constants.html#/c:@SDLLightNameAmbientLights":{"name":"SDLLightNameAmbientLights","abstract":"

    @abstract Represents the Light with name AMBIENT_LIGHTS

    "},"Constants.html#/c:@SDLLightNameOverHeadLights":{"name":"SDLLightNameOverHeadLights","abstract":"

    @abstract Represents the Light with name OVERHEAD_LIGHTS

    "},"Constants.html#/c:@SDLLightNameReadingLights":{"name":"SDLLightNameReadingLights","abstract":"

    @abstract Represents the Light with name READING_LIGHTS

    "},"Constants.html#/c:@SDLLightNameTrunkLights":{"name":"SDLLightNameTrunkLights","abstract":"

    @abstract Represents the Light with name TRUNK_LIGHTS

    "},"Constants.html#/c:@SDLLightNameExteriorFrontLights":{"name":"SDLLightNameExteriorFrontLights","abstract":"

    @abstract Include exterior lights located in front of the vehicle. For example, fog lights and low beams.

    "},"Constants.html#/c:@SDLLightNameExteriorRearLights":{"name":"SDLLightNameExteriorRearLights","abstract":"

    @abstract Include exterior lights located at the back of the vehicle."},"Constants.html#/c:@SDLLightNameExteriorLeftLights":{"name":"SDLLightNameExteriorLeftLights","abstract":"

    @abstract Include exterior lights located at the left side of the vehicle."},"Constants.html#/c:@SDLLightNameExteriorRightLights":{"name":"SDLLightNameExteriorRightLights","abstract":"

    @abstract Include exterior lights located at the right side of the vehicle."},"Constants.html#/c:@SDLLightNameExteriorRearCargoLights":{"name":"SDLLightNameExteriorRearCargoLights","abstract":"

    @abstract Cargo lamps illuminate the cargo area.

    "},"Constants.html#/c:@SDLLightNameExteriorRearTruckBedLights":{"name":"SDLLightNameExteriorRearTruckBedLights","abstract":"

    @abstract Truck bed lamps light up the bed of the truck.

    "},"Constants.html#/c:@SDLLightNameExteriorRearTrailerLights":{"name":"SDLLightNameExteriorRearTrailerLights","abstract":"

    @abstract Trailer lights are lamps mounted on a trailer hitch.

    "},"Constants.html#/c:@SDLLightNameExteriorLeftSpotLights":{"name":"SDLLightNameExteriorLeftSpotLights","abstract":"

    @abstract It is the spotlights mounted on the left side of a vehicle.

    "},"Constants.html#/c:@SDLLightNameExteriorRightSpotLights":{"name":"SDLLightNameExteriorRightSpotLights","abstract":"

    @abstract It is the spotlights mounted on the right side of a vehicle.

    "},"Constants.html#/c:@SDLLightNameExteriorLeftPuddleLights":{"name":"SDLLightNameExteriorLeftPuddleLights","abstract":"

    @abstract Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.

    "},"Constants.html#/c:@SDLLightNameExteriorRightPuddleLights":{"name":"SDLLightNameExteriorRightPuddleLights","abstract":"

    @abstract Puddle lamps illuminate the ground beside the door as the customer is opening or approaching the door.

    "},"Constants.html#/c:@SDLLightNameExteriorAllLights":{"name":"SDLLightNameExteriorAllLights","abstract":"

    @abstract Include all exterior lights around the vehicle.

    "},"Constants.html#/c:@SDLLightStatusOn":{"name":"SDLLightStatusOn","abstract":"

    @abstract Light status currently on.

    "},"Constants.html#/c:@SDLLightStatusOFF":{"name":"SDLLightStatusOFF","abstract":"

    @abstract Light status currently Off.

    "},"Constants.html#/c:@SDLLightStatusRampUp":{"name":"SDLLightStatusRampUp","abstract":"

    @abstract Light status currently RAMP_UP.

    "},"Constants.html#/c:@SDLLightStatusRampDown":{"name":"SDLLightStatusRampDown","abstract":"

    @abstract Light status currently RAMP_DOWN.

    "},"Constants.html#/c:@SDLLightStatusUnknown":{"name":"SDLLightStatusUnknown","abstract":"

    @abstract Light status currently UNKNOWN.

    "},"Constants.html#/c:@SDLLightStatusInvalid":{"name":"SDLLightStatusInvalid","abstract":"

    @abstract Light status currently INVALID.

    "},"Constants.html#/c:@SDLLockScreenStatusOff":{"name":"SDLLockScreenStatusOff","abstract":"

    LockScreen is Not Required

    "},"Constants.html#/c:@SDLLockScreenStatusOptional":{"name":"SDLLockScreenStatusOptional","abstract":"

    LockScreen is Optional

    "},"Constants.html#/c:@SDLLockScreenStatusRequired":{"name":"SDLLockScreenStatusRequired","abstract":"

    LockScreen is Not Required

    "},"Constants.html#/c:@SDLMaintenanceModeStatusNormal":{"name":"SDLMaintenanceModeStatusNormal","abstract":"

    Maintenance Mode Status : Normal

    "},"Constants.html#/c:@SDLMaintenanceModeStatusNear":{"name":"SDLMaintenanceModeStatusNear","abstract":"

    Maintenance Mode Status : Near

    "},"Constants.html#/c:@SDLMaintenanceModeStatusActive":{"name":"SDLMaintenanceModeStatusActive","abstract":"

    Maintenance Mode Status : Active

    "},"Constants.html#/c:@SDLMaintenanceModeStatusFeatureNotPresent":{"name":"SDLMaintenanceModeStatusFeatureNotPresent","abstract":"

    Maintenance Mode Status : Feature not present

    "},"Constants.html#/c:@SDLMassageCushionTopLumbar":{"name":"SDLMassageCushionTopLumbar","abstract":"

    @abstract TOP LUMBAR cushions of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageCushionMiddleLumbar":{"name":"SDLMassageCushionMiddleLumbar","abstract":"

    @abstract MIDDLE LUMBAR cushion of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageCushionBottomLumbar":{"name":"SDLMassageCushionBottomLumbar","abstract":"

    @abstract BOTTOM LUMBAR cushion of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageCushionBackBolsters":{"name":"SDLMassageCushionBackBolsters","abstract":"

    @abstract BACK BOLSTERS cushion of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageCushionSeatBolsters":{"name":"SDLMassageCushionSeatBolsters","abstract":"

    @abstract SEAT BOLSTERS cushion of a multi-contour massage seat

    "},"Constants.html#/c:@SDLMassageModeOff":{"name":"SDLMassageModeOff","abstract":"

    @abstract Massage Mode Status : OFF

    "},"Constants.html#/c:@SDLMassageModeLow":{"name":"SDLMassageModeLow","abstract":"

    @abstract Massage Mode Status : LOW

    "},"Constants.html#/c:@SDLMassageModeHigh":{"name":"SDLMassageModeHigh","abstract":"

    @abstract Massage Mode Status : HIGH

    "},"Constants.html#/c:@SDLMassageZoneLumbar":{"name":"SDLMassageZoneLumbar","abstract":"

    @abstract The back of a multi-contour massage seat. or SEAT_BACK

    "},"Constants.html#/c:@SDLMassageZoneSeatCushion":{"name":"SDLMassageZoneSeatCushion","abstract":"

    @abstract The bottom a multi-contour massage seat. or SEAT_BOTTOM

    "},"Constants.html#/c:@SDLMediaClockFormatClock1":{"name":"SDLMediaClockFormatClock1","abstract":"

    Media clock format: Clock1

    "},"Constants.html#/c:@SDLMediaClockFormatClock2":{"name":"SDLMediaClockFormatClock2","abstract":"

    Media clock format: Clock2

    "},"Constants.html#/c:@SDLMediaClockFormatClock3":{"name":"SDLMediaClockFormatClock3","abstract":"

    Media clock format: Clock3

    "},"Constants.html#/c:@SDLMediaClockFormatClockText1":{"name":"SDLMediaClockFormatClockText1","abstract":"

    Media clock format: ClockText1

    "},"Constants.html#/c:@SDLMediaClockFormatClockText2":{"name":"SDLMediaClockFormatClockText2","abstract":"

    Media clock format: ClockText2

    "},"Constants.html#/c:@SDLMediaClockFormatClockText3":{"name":"SDLMediaClockFormatClockText3","abstract":"

    Media clock format: ClockText3

    "},"Constants.html#/c:@SDLMediaClockFormatClockText4":{"name":"SDLMediaClockFormatClockText4","abstract":"

    Media clock format: ClockText4

    "},"Constants.html#/c:@SDLMediaTypeMusic":{"name":"SDLMediaTypeMusic","abstract":"

    The app will have a media type of music.

    "},"Constants.html#/c:@SDLMediaTypePodcast":{"name":"SDLMediaTypePodcast","abstract":"

    The app will have a media type of podcast.

    "},"Constants.html#/c:@SDLMediaTypeAudiobook":{"name":"SDLMediaTypeAudiobook","abstract":"

    The app will have a media type of audiobook.

    "},"Constants.html#/c:@SDLMediaTypeOther":{"name":"SDLMediaTypeOther","abstract":"

    The app will have a media type of other.

    "},"Constants.html#/c:@SDLMetadataTypeMediaTitle":{"name":"SDLMetadataTypeMediaTitle","abstract":"

    The song / media title name

    "},"Constants.html#/c:@SDLMetadataTypeMediaArtist":{"name":"SDLMetadataTypeMediaArtist","abstract":"

    The artist of the media

    "},"Constants.html#/c:@SDLMetadataTypeMediaAlbum":{"name":"SDLMetadataTypeMediaAlbum","abstract":"

    The album of the media"

    "},"Constants.html#/c:@SDLMetadataTypeMediaYear":{"name":"SDLMetadataTypeMediaYear","abstract":"

    The year that the media was created

    "},"Constants.html#/c:@SDLMetadataTypeMediaGenre":{"name":"SDLMetadataTypeMediaGenre","abstract":"

    The genre of the media

    "},"Constants.html#/c:@SDLMetadataTypeMediaStation":{"name":"SDLMetadataTypeMediaStation","abstract":"

    The station that the media is playing on

    "},"Constants.html#/c:@SDLMetadataTypeRating":{"name":"SDLMetadataTypeRating","abstract":"

    The rating given to the media

    "},"Constants.html#/c:@SDLMetadataTypeCurrentTemperature":{"name":"SDLMetadataTypeCurrentTemperature","abstract":"

    The current temperature of the weather information

    "},"Constants.html#/c:@SDLMetadataTypeMaximumTemperature":{"name":"SDLMetadataTypeMaximumTemperature","abstract":"

    The high / maximum temperature of the weather information for the current period

    "},"Constants.html#/c:@SDLMetadataTypeMinimumTemperature":{"name":"SDLMetadataTypeMinimumTemperature","abstract":"

    The low / minimum temperature of the weather information for the current period

    "},"Constants.html#/c:@SDLMetadataTypeWeatherTerm":{"name":"SDLMetadataTypeWeatherTerm","abstract":"

    A description of the weather for the current period

    "},"Constants.html#/c:@SDLMetadataTypeHumidity":{"name":"SDLMetadataTypeHumidity","abstract":"

    The humidity of the weather information for the current period

    "},"Constants.html#/c:@SDLModuleTypeClimate":{"name":"SDLModuleTypeClimate","abstract":"

    A SDLModuleType with the value of CLIMATE

    "},"Constants.html#/c:@SDLModuleTypeRadio":{"name":"SDLModuleTypeRadio","abstract":"

    A SDLModuleType with the value of RADIO

    "},"Constants.html#/c:@SDLModuleTypeSeat":{"name":"SDLModuleTypeSeat","abstract":"

    A SDLModuleType with the value of SEAT

    "},"Constants.html#/c:@SDLModuleTypeAudio":{"name":"SDLModuleTypeAudio","abstract":"

    A SDLModuleType with the value of AUDIO

    "},"Constants.html#/c:@SDLModuleTypeLight":{"name":"SDLModuleTypeLight","abstract":"

    A SDLModuleType with the value of LIGHT

    "},"Constants.html#/c:@SDLModuleTypeHMISettings":{"name":"SDLModuleTypeHMISettings","abstract":"

    A SDLModuleType with the value of HMI_SETTINGS

    "},"Constants.html#/c:@SDLNavigationActionTurn":{"name":"SDLNavigationActionTurn","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionExit":{"name":"SDLNavigationActionExit","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionStay":{"name":"SDLNavigationActionStay","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionMerge":{"name":"SDLNavigationActionMerge","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionFerry":{"name":"SDLNavigationActionFerry","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionCarShuttleTrain":{"name":"SDLNavigationActionCarShuttleTrain","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationActionWaypoint":{"name":"SDLNavigationActionWaypoint","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionRegular":{"name":"SDLNavigationJunctionRegular","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionBifurcation":{"name":"SDLNavigationJunctionBifurcation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionMultiCarriageway":{"name":"SDLNavigationJunctionMultiCarriageway","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionRoundabout":{"name":"SDLNavigationJunctionRoundabout","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionTraversableRoundabout":{"name":"SDLNavigationJunctionTraversableRoundabout","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionJughandle":{"name":"SDLNavigationJunctionJughandle","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionAllWayYield":{"name":"SDLNavigationJunctionAllWayYield","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNavigationJunctionTurnAround":{"name":"SDLNavigationJunctionTurnAround","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLNotificationUserInfoObject":{"name":"SDLNotificationUserInfoObject","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTransportDidDisconnect":{"name":"SDLTransportDidDisconnect","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTransportDidConnect":{"name":"SDLTransportDidConnect","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTransportConnectError":{"name":"SDLTransportConnectError","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveError":{"name":"SDLDidReceiveError","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveLockScreenIcon":{"name":"SDLDidReceiveLockScreenIcon","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidBecomeReady":{"name":"SDLDidBecomeReady","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidUpdateProjectionView":{"name":"SDLDidUpdateProjectionView","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAddCommandResponse":{"name":"SDLDidReceiveAddCommandResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAddSubMenuResponse":{"name":"SDLDidReceiveAddSubMenuResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAlertResponse":{"name":"SDLDidReceiveAlertResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAlertManeuverResponse":{"name":"SDLDidReceiveAlertManeuverResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveButtonPressResponse":{"name":"SDLDidReceiveButtonPressResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveChangeRegistrationResponse":{"name":"SDLDidReceiveChangeRegistrationResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveCreateInteractionChoiceSetResponse":{"name":"SDLDidReceiveCreateInteractionChoiceSetResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteCommandResponse":{"name":"SDLDidReceiveDeleteCommandResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteFileResponse":{"name":"SDLDidReceiveDeleteFileResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteInteractionChoiceSetResponse":{"name":"SDLDidReceiveDeleteInteractionChoiceSetResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteSubmenuResponse":{"name":"SDLDidReceiveDeleteSubmenuResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDiagnosticMessageResponse":{"name":"SDLDidReceiveDiagnosticMessageResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDialNumberResponse":{"name":"SDLDidReceiveDialNumberResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEncodedSyncPDataResponse":{"name":"SDLDidReceiveEncodedSyncPDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEndAudioPassThruResponse":{"name":"SDLDidReceiveEndAudioPassThruResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGenericResponse":{"name":"SDLDidReceiveGenericResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetCloudAppPropertiesResponse":{"name":"SDLDidReceiveGetCloudAppPropertiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetAppServiceDataResponse":{"name":"SDLDidReceiveGetAppServiceDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetDTCsResponse":{"name":"SDLDidReceiveGetDTCsResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetFileResponse":{"name":"SDLDidReceiveGetFileResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetInteriorVehicleDataResponse":{"name":"SDLDidReceiveGetInteriorVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetSystemCapabilitiesResponse":{"name":"SDLDidReceiveGetSystemCapabilitiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetVehicleDataResponse":{"name":"SDLDidReceiveGetVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetWaypointsResponse":{"name":"SDLDidReceiveGetWaypointsResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveListFilesResponse":{"name":"SDLDidReceiveListFilesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformAppServiceInteractionResponse":{"name":"SDLDidReceivePerformAppServiceInteractionResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformAudioPassThruResponse":{"name":"SDLDidReceivePerformAudioPassThruResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformInteractionResponse":{"name":"SDLDidReceivePerformInteractionResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePublishAppServiceResponse":{"name":"SDLDidReceivePublishAppServiceResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePutFileResponse":{"name":"SDLDidReceivePutFileResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveReadDIDResponse":{"name":"SDLDidReceiveReadDIDResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveRegisterAppInterfaceResponse":{"name":"SDLDidReceiveRegisterAppInterfaceResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveResetGlobalPropertiesResponse":{"name":"SDLDidReceiveResetGlobalPropertiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveScrollableMessageResponse":{"name":"SDLDidReceiveScrollableMessageResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSendHapticDataResponse":{"name":"SDLDidReceiveSendHapticDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSendLocationResponse":{"name":"SDLDidReceiveSendLocationResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetAppIconResponse":{"name":"SDLDidReceiveSetAppIconResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetCloudAppPropertiesResponse":{"name":"SDLDidReceiveSetCloudAppPropertiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetDisplayLayoutResponse":{"name":"SDLDidReceiveSetDisplayLayoutResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetGlobalPropertiesResponse":{"name":"SDLDidReceiveSetGlobalPropertiesResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetInteriorVehicleDataResponse":{"name":"SDLDidReceiveSetInteriorVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetMediaClockTimerResponse":{"name":"SDLDidReceiveSetMediaClockTimerResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveShowConstantTBTResponse":{"name":"SDLDidReceiveShowConstantTBTResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveShowResponse":{"name":"SDLDidReceiveShowResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSliderResponse":{"name":"SDLDidReceiveSliderResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSpeakResponse":{"name":"SDLDidReceiveSpeakResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeButtonResponse":{"name":"SDLDidReceiveSubscribeButtonResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeVehicleDataResponse":{"name":"SDLDidReceiveSubscribeVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeWaypointsResponse":{"name":"SDLDidReceiveSubscribeWaypointsResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSyncPDataResponse":{"name":"SDLDidReceiveSyncPDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUpdateTurnListResponse":{"name":"SDLDidReceiveUpdateTurnListResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnregisterAppInterfaceResponse":{"name":"SDLDidReceiveUnregisterAppInterfaceResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeButtonResponse":{"name":"SDLDidReceiveUnsubscribeButtonResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeVehicleDataResponse":{"name":"SDLDidReceiveUnsubscribeVehicleDataResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeWaypointsResponse":{"name":"SDLDidReceiveUnsubscribeWaypointsResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAddCommandRequest":{"name":"SDLDidReceiveAddCommandRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAddSubMenuRequest":{"name":"SDLDidReceiveAddSubMenuRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAlertRequest":{"name":"SDLDidReceiveAlertRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAlertManeuverRequest":{"name":"SDLDidReceiveAlertManeuverRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveButtonPressRequest":{"name":"SDLDidReceiveButtonPressRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveChangeRegistrationRequest":{"name":"SDLDidReceiveChangeRegistrationRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveCreateInteractionChoiceSetRequest":{"name":"SDLDidReceiveCreateInteractionChoiceSetRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteCommandRequest":{"name":"SDLDidReceiveDeleteCommandRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteFileRequest":{"name":"SDLDidReceiveDeleteFileRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteInteractionChoiceSetRequest":{"name":"SDLDidReceiveDeleteInteractionChoiceSetRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDeleteSubMenuRequest":{"name":"SDLDidReceiveDeleteSubMenuRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDiagnosticMessageRequest":{"name":"SDLDidReceiveDiagnosticMessageRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveDialNumberRequest":{"name":"SDLDidReceiveDialNumberRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEncodedSyncPDataRequest":{"name":"SDLDidReceiveEncodedSyncPDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEndAudioPassThruRequest":{"name":"SDLDidReceiveEndAudioPassThruRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetAppServiceDataRequest":{"name":"SDLDidReceiveGetAppServiceDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetCloudAppPropertiesRequest":{"name":"SDLDidReceiveGetCloudAppPropertiesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetDTCsRequest":{"name":"SDLDidReceiveGetDTCsRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetFileRequest":{"name":"SDLDidReceiveGetFileRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetInteriorVehicleDataRequest":{"name":"SDLDidReceiveGetInteriorVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetSystemCapabilityRequest":{"name":"SDLDidReceiveGetSystemCapabilityRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetVehicleDataRequest":{"name":"SDLDidReceiveGetVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveGetWayPointsRequest":{"name":"SDLDidReceiveGetWayPointsRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveListFilesRequest":{"name":"SDLDidReceiveListFilesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformAppServiceInteractionRequest":{"name":"SDLDidReceivePerformAppServiceInteractionRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformAudioPassThruRequest":{"name":"SDLDidReceivePerformAudioPassThruRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePerformInteractionRequest":{"name":"SDLDidReceivePerformInteractionRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePublishAppServiceRequest":{"name":"SDLDidReceivePublishAppServiceRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceivePutFileRequest":{"name":"SDLDidReceivePutFileRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveReadDIDRequest":{"name":"SDLDidReceiveReadDIDRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveRegisterAppInterfaceRequest":{"name":"SDLDidReceiveRegisterAppInterfaceRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveResetGlobalPropertiesRequest":{"name":"SDLDidReceiveResetGlobalPropertiesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveScrollableMessageRequest":{"name":"SDLDidReceiveScrollableMessageRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSendHapticDataRequest":{"name":"SDLDidReceiveSendHapticDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSendLocationRequest":{"name":"SDLDidReceiveSendLocationRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetAppIconRequest":{"name":"SDLDidReceiveSetAppIconRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetCloudAppPropertiesRequest":{"name":"SDLDidReceiveSetCloudAppPropertiesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetDisplayLayoutRequest":{"name":"SDLDidReceiveSetDisplayLayoutRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetGlobalPropertiesRequest":{"name":"SDLDidReceiveSetGlobalPropertiesRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetInteriorVehicleDataRequest":{"name":"SDLDidReceiveSetInteriorVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSetMediaClockTimerRequest":{"name":"SDLDidReceiveSetMediaClockTimerRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveShowRequest":{"name":"SDLDidReceiveShowRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveShowConstantTBTRequest":{"name":"SDLDidReceiveShowConstantTBTRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSliderRequest":{"name":"SDLDidReceiveSliderRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSpeakRequest":{"name":"SDLDidReceiveSpeakRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeButtonRequest":{"name":"SDLDidReceiveSubscribeButtonRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeVehicleDataRequest":{"name":"SDLDidReceiveSubscribeVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSubscribeWayPointsRequest":{"name":"SDLDidReceiveSubscribeWayPointsRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSyncPDataRequest":{"name":"SDLDidReceiveSyncPDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSystemRequestRequest":{"name":"SDLDidReceiveSystemRequestRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnregisterAppInterfaceRequest":{"name":"SDLDidReceiveUnregisterAppInterfaceRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeButtonRequest":{"name":"SDLDidReceiveUnsubscribeButtonRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeVehicleDataRequest":{"name":"SDLDidReceiveUnsubscribeVehicleDataRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUnsubscribeWayPointsRequest":{"name":"SDLDidReceiveUnsubscribeWayPointsRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveUpdateTurnListRequest":{"name":"SDLDidReceiveUpdateTurnListRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeDriverDistractionStateNotification":{"name":"SDLDidChangeDriverDistractionStateNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeHMIStatusNotification":{"name":"SDLDidChangeHMIStatusNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAppServiceDataNotification":{"name":"SDLDidReceiveAppServiceDataNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAppUnregisteredNotification":{"name":"SDLDidReceiveAppUnregisteredNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveAudioPassThruNotification":{"name":"SDLDidReceiveAudioPassThruNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveButtonEventNotification":{"name":"SDLDidReceiveButtonEventNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveButtonPressNotification":{"name":"SDLDidReceiveButtonPressNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveCommandNotification":{"name":"SDLDidReceiveCommandNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveEncodedDataNotification":{"name":"SDLDidReceiveEncodedDataNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveInteriorVehicleDataNotification":{"name":"SDLDidReceiveInteriorVehicleDataNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveKeyboardInputNotification":{"name":"SDLDidReceiveKeyboardInputNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeLanguageNotification":{"name":"SDLDidChangeLanguageNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeLockScreenStatusNotification":{"name":"SDLDidChangeLockScreenStatusNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveNewHashNotification":{"name":"SDLDidReceiveNewHashNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveVehicleIconNotification":{"name":"SDLDidReceiveVehicleIconNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangePermissionsNotification":{"name":"SDLDidChangePermissionsNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveRemoteControlStatusNotification":{"name":"SDLDidReceiveRemoteControlStatusNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSystemCapabilityUpdatedNotification":{"name":"SDLDidReceiveSystemCapabilityUpdatedNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveSystemRequestNotification":{"name":"SDLDidReceiveSystemRequestNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidChangeTurnByTurnStateNotification":{"name":"SDLDidChangeTurnByTurnStateNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveTouchEventNotification":{"name":"SDLDidReceiveTouchEventNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveVehicleDataNotification":{"name":"SDLDidReceiveVehicleDataNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDidReceiveWaypointNotification":{"name":"SDLDidReceiveWaypointNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLPRNDLPark":{"name":"SDLPRNDLPark","abstract":"

    Park

    "},"Constants.html#/c:@SDLPRNDLReverse":{"name":"SDLPRNDLReverse","abstract":"

    Reverse gear

    "},"Constants.html#/c:@SDLPRNDLNeutral":{"name":"SDLPRNDLNeutral","abstract":"

    No gear

    "},"Constants.html#/c:@SDLPRNDLDrive":{"name":"SDLPRNDLDrive","abstract":"

    @abstract: Drive gear

    "},"Constants.html#/c:@SDLPRNDLSport":{"name":"SDLPRNDLSport","abstract":"

    Drive Sport mode

    "},"Constants.html#/c:@SDLPRNDLLowGear":{"name":"SDLPRNDLLowGear","abstract":"

    1st gear hold

    "},"Constants.html#/c:@SDLPRNDLFirst":{"name":"SDLPRNDLFirst","abstract":"

    First gear

    "},"Constants.html#/c:@SDLPRNDLSecond":{"name":"SDLPRNDLSecond","abstract":"

    Second gear

    "},"Constants.html#/c:@SDLPRNDLThird":{"name":"SDLPRNDLThird","abstract":"

    Third gear

    "},"Constants.html#/c:@SDLPRNDLFourth":{"name":"SDLPRNDLFourth","abstract":"

    Fourth gear

    "},"Constants.html#/c:@SDLPRNDLFifth":{"name":"SDLPRNDLFifth","abstract":"

    Fifth gear

    "},"Constants.html#/c:@SDLPRNDLSixth":{"name":"SDLPRNDLSixth","abstract":"

    Sixth gear

    "},"Constants.html#/c:@SDLPRNDLSeventh":{"name":"SDLPRNDLSeventh","abstract":"

    Seventh gear

    "},"Constants.html#/c:@SDLPRNDLEighth":{"name":"SDLPRNDLEighth","abstract":"

    Eighth gear

    "},"Constants.html#/c:@SDLPRNDLUnknown":{"name":"SDLPRNDLUnknown","abstract":"

    Unknown

    "},"Constants.html#/c:@SDLPRNDLFault":{"name":"SDLPRNDLFault","abstract":"

    Fault

    "},"Constants.html#/c:@SDLPermissionStatusAllowed":{"name":"SDLPermissionStatusAllowed","abstract":"

    permission: allowed

    "},"Constants.html#/c:@SDLPermissionStatusDisallowed":{"name":"SDLPermissionStatusDisallowed","abstract":"

    permission: disallowed

    "},"Constants.html#/c:@SDLPermissionStatusUserDisallowed":{"name":"SDLPermissionStatusUserDisallowed","abstract":"

    permission: user disallowed

    "},"Constants.html#/c:@SDLPermissionStatusUserConsentPending":{"name":"SDLPermissionStatusUserConsentPending","abstract":"

    permission: user consent pending

    "},"Constants.html#/c:@SDLPowerModeQualificationStatusUndefined":{"name":"SDLPowerModeQualificationStatusUndefined","abstract":"

    An undefined status

    "},"Constants.html#/c:@SDLPowerModeQualificationStatusEvaluationInProgress":{"name":"SDLPowerModeQualificationStatusEvaluationInProgress","abstract":"

    An evaluation in progress status

    "},"Constants.html#/c:@SDLPowerModeQualificationStatusNotDefined":{"name":"SDLPowerModeQualificationStatusNotDefined","abstract":"

    A not defined status

    "},"Constants.html#/c:@SDLPowerModeQualificationStatusOk":{"name":"SDLPowerModeQualificationStatusOk","abstract":"

    An ok status

    "},"Constants.html#/c:@SDLPowerModeStatusKeyOut":{"name":"SDLPowerModeStatusKeyOut","abstract":"

    The key is not in the ignition, and the power is off

    "},"Constants.html#/c:@SDLPowerModeStatusKeyRecentlyOut":{"name":"SDLPowerModeStatusKeyRecentlyOut","abstract":"

    The key is not in the ignition and it was just recently removed

    "},"Constants.html#/c:@SDLPowerModeStatusKeyApproved":{"name":"SDLPowerModeStatusKeyApproved","abstract":"

    The key is not in the ignition, but an approved key is available

    "},"Constants.html#/c:@SDLPowerModeStatusPostAccessory":{"name":"SDLPowerModeStatusPostAccessory","abstract":"

    We are in a post-accessory power situation

    "},"Constants.html#/c:@SDLPowerModeStatusAccessory":{"name":"SDLPowerModeStatusAccessory","abstract":"

    The car is in accessory power mode

    "},"Constants.html#/c:@SDLPowerModeStatusPostIgnition":{"name":"SDLPowerModeStatusPostIgnition","abstract":"

    We are in a post-ignition power situation

    "},"Constants.html#/c:@SDLPowerModeStatusIgnitionOn":{"name":"SDLPowerModeStatusIgnitionOn","abstract":"

    The ignition is on but the car is not yet running

    "},"Constants.html#/c:@SDLPowerModeStatusRunning":{"name":"SDLPowerModeStatusRunning","abstract":"

    The ignition is on and the car is running

    "},"Constants.html#/c:@SDLPowerModeStatusCrank":{"name":"SDLPowerModeStatusCrank","abstract":"

    We are in a crank power situation

    "},"Constants.html#/c:@SDLPredefinedLayoutDefault":{"name":"SDLPredefinedLayoutDefault","abstract":"

    A default layout

    "},"Constants.html#/c:@SDLPredefinedLayoutMedia":{"name":"SDLPredefinedLayoutMedia","abstract":"

    The default media layout

    "},"Constants.html#/c:@SDLPredefinedLayoutNonMedia":{"name":"SDLPredefinedLayoutNonMedia","abstract":"

    The default non-media layout

    "},"Constants.html#/c:@SDLPredefinedLayoutOnscreenPresets":{"name":"SDLPredefinedLayoutOnscreenPresets","abstract":"

    A media layout containing preset buttons

    "},"Constants.html#/c:@SDLPredefinedLayoutNavigationFullscreenMap":{"name":"SDLPredefinedLayoutNavigationFullscreenMap","abstract":"

    The default navigation layout with a fullscreen map

    "},"Constants.html#/c:@SDLPredefinedLayoutNavigationList":{"name":"SDLPredefinedLayoutNavigationList","abstract":"

    A list layout used for navigation apps

    "},"Constants.html#/c:@SDLPredefinedLayoutNavigationKeyboard":{"name":"SDLPredefinedLayoutNavigationKeyboard","abstract":"

    A keyboard layout used for navigation apps

    "},"Constants.html#/c:@SDLPredefinedLayoutGraphicWithText":{"name":"SDLPredefinedLayoutGraphicWithText","abstract":"

    A layout with a single graphic on the left and text on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTextWithGraphic":{"name":"SDLPredefinedLayoutTextWithGraphic","abstract":"

    A layout with text on the left and a single graphic on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTilesOnly":{"name":"SDLPredefinedLayoutTilesOnly","abstract":"

    A layout with only softbuttons placed in a tile layout

    "},"Constants.html#/c:@SDLPredefinedLayoutTextButtonsOnly":{"name":"SDLPredefinedLayoutTextButtonsOnly","abstract":"

    A layout with only soft buttons that only accept text

    "},"Constants.html#/c:@SDLPredefinedLayoutGraphicWithTiles":{"name":"SDLPredefinedLayoutGraphicWithTiles","abstract":"

    A layout with a single graphic on the left and soft buttons in a tile layout on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTilesWithGraphic":{"name":"SDLPredefinedLayoutTilesWithGraphic","abstract":"

    A layout with soft buttons in a tile layout on the left and a single graphic on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutGraphicWithTextAndSoftButtons":{"name":"SDLPredefinedLayoutGraphicWithTextAndSoftButtons","abstract":"

    A layout with a single graphic on the left and both text and soft buttons on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTextAndSoftButtonsWithGraphic":{"name":"SDLPredefinedLayoutTextAndSoftButtonsWithGraphic","abstract":"

    A layout with both text and soft buttons on the left and a single graphic on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutGraphicWithTextButtons":{"name":"SDLPredefinedLayoutGraphicWithTextButtons","abstract":"

    A layout with a single graphic on the left and text-only soft buttons on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutTextButtonsWithGraphic":{"name":"SDLPredefinedLayoutTextButtonsWithGraphic","abstract":"

    A layout with text-only soft buttons on the left and a single graphic on the right

    "},"Constants.html#/c:@SDLPredefinedLayoutLargeGraphicWithSoftButtons":{"name":"SDLPredefinedLayoutLargeGraphicWithSoftButtons","abstract":"

    A layout with a single large graphic and soft buttons

    "},"Constants.html#/c:@SDLPredefinedLayoutDoubleGraphicWithSoftButtons":{"name":"SDLPredefinedLayoutDoubleGraphicWithSoftButtons","abstract":"

    A layout with two graphics and soft buttons

    "},"Constants.html#/c:@SDLPredefinedLayoutLargeGraphicOnly":{"name":"SDLPredefinedLayoutLargeGraphicOnly","abstract":"

    A layout with only a single large graphic

    "},"Constants.html#/c:@SDLPrerecordedSpeechHelp":{"name":"SDLPrerecordedSpeechHelp","abstract":"

    A prerecorded help prompt

    "},"Constants.html#/c:@SDLPrerecordedSpeechInitial":{"name":"SDLPrerecordedSpeechInitial","abstract":"

    A prerecorded initial prompt

    "},"Constants.html#/c:@SDLPrerecordedSpeechListen":{"name":"SDLPrerecordedSpeechListen","abstract":"

    A prerecorded listen prompt is available

    "},"Constants.html#/c:@SDLPrerecordedSpeechPositive":{"name":"SDLPrerecordedSpeechPositive","abstract":"

    A prerecorded positive indicator noise is available

    "},"Constants.html#/c:@SDLPrerecordedSpeechNegative":{"name":"SDLPrerecordedSpeechNegative","abstract":"

    A prerecorded negative indicator noise is available

    "},"Constants.html#/c:@SDLPrimaryAudioSourceNoSourceSelected":{"name":"SDLPrimaryAudioSourceNoSourceSelected","abstract":"

    Currently no source selected

    "},"Constants.html#/c:@SDLPrimaryAudioSourceUSB":{"name":"SDLPrimaryAudioSourceUSB","abstract":"

    USB is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceUSB2":{"name":"SDLPrimaryAudioSourceUSB2","abstract":"

    USB2 is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceBluetoothStereo":{"name":"SDLPrimaryAudioSourceBluetoothStereo","abstract":"

    Bluetooth Stereo is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceLineIn":{"name":"SDLPrimaryAudioSourceLineIn","abstract":"

    Line in is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceIpod":{"name":"SDLPrimaryAudioSourceIpod","abstract":"

    iPod is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceMobileApp":{"name":"SDLPrimaryAudioSourceMobileApp","abstract":"

    Mobile app is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceCD":{"name":"SDLPrimaryAudioSourceCD","abstract":"

    @abstract CD is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceAM":{"name":"SDLPrimaryAudioSourceAM","abstract":"

    @abstract Radio frequency AM is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceFM":{"name":"SDLPrimaryAudioSourceFM","abstract":"

    @abstract Radio frequency FM is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceXM":{"name":"SDLPrimaryAudioSourceXM","abstract":"

    @abstract Radio frequency XM is current source

    "},"Constants.html#/c:@SDLPrimaryAudioSourceDAB":{"name":"SDLPrimaryAudioSourceDAB","abstract":"

    @abstract Radio frequency DAB is current source

    "},"Constants.html#/c:@SDLRPCFunctionNameAddCommand":{"name":"SDLRPCFunctionNameAddCommand","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameAddSubMenu":{"name":"SDLRPCFunctionNameAddSubMenu","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameAlert":{"name":"SDLRPCFunctionNameAlert","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameAlertManeuver":{"name":"SDLRPCFunctionNameAlertManeuver","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameButtonPress":{"name":"SDLRPCFunctionNameButtonPress","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameChangeRegistration":{"name":"SDLRPCFunctionNameChangeRegistration","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameCreateInteractionChoiceSet":{"name":"SDLRPCFunctionNameCreateInteractionChoiceSet","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDeleteCommand":{"name":"SDLRPCFunctionNameDeleteCommand","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDeleteFile":{"name":"SDLRPCFunctionNameDeleteFile","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDeleteInteractionChoiceSet":{"name":"SDLRPCFunctionNameDeleteInteractionChoiceSet","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDeleteSubMenu":{"name":"SDLRPCFunctionNameDeleteSubMenu","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDiagnosticMessage":{"name":"SDLRPCFunctionNameDiagnosticMessage","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameDialNumber":{"name":"SDLRPCFunctionNameDialNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameEncodedSyncPData":{"name":"SDLRPCFunctionNameEncodedSyncPData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameEndAudioPassThru":{"name":"SDLRPCFunctionNameEndAudioPassThru","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGenericResponse":{"name":"SDLRPCFunctionNameGenericResponse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetAppServiceData":{"name":"SDLRPCFunctionNameGetAppServiceData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetDTCs":{"name":"SDLRPCFunctionNameGetDTCs","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetFile":{"name":"SDLRPCFunctionNameGetFile","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetCloudAppProperties":{"name":"SDLRPCFunctionNameGetCloudAppProperties","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetInteriorVehicleData":{"name":"SDLRPCFunctionNameGetInteriorVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetSystemCapability":{"name":"SDLRPCFunctionNameGetSystemCapability","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetVehicleData":{"name":"SDLRPCFunctionNameGetVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameGetWayPoints":{"name":"SDLRPCFunctionNameGetWayPoints","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameListFiles":{"name":"SDLRPCFunctionNameListFiles","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnAppInterfaceUnregistered":{"name":"SDLRPCFunctionNameOnAppInterfaceUnregistered","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnAppServiceData":{"name":"SDLRPCFunctionNameOnAppServiceData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnAudioPassThru":{"name":"SDLRPCFunctionNameOnAudioPassThru","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnButtonEvent":{"name":"SDLRPCFunctionNameOnButtonEvent","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnButtonPress":{"name":"SDLRPCFunctionNameOnButtonPress","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnCommand":{"name":"SDLRPCFunctionNameOnCommand","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnDriverDistraction":{"name":"SDLRPCFunctionNameOnDriverDistraction","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnEncodedSyncPData":{"name":"SDLRPCFunctionNameOnEncodedSyncPData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnHashChange":{"name":"SDLRPCFunctionNameOnHashChange","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnHMIStatus":{"name":"SDLRPCFunctionNameOnHMIStatus","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnInteriorVehicleData":{"name":"SDLRPCFunctionNameOnInteriorVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnKeyboardInput":{"name":"SDLRPCFunctionNameOnKeyboardInput","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnLanguageChange":{"name":"SDLRPCFunctionNameOnLanguageChange","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnLockScreenStatus":{"name":"SDLRPCFunctionNameOnLockScreenStatus","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnPermissionsChange":{"name":"SDLRPCFunctionNameOnPermissionsChange","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnRCStatus":{"name":"SDLRPCFunctionNameOnRCStatus","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnSyncPData":{"name":"SDLRPCFunctionNameOnSyncPData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnSystemCapabilityUpdated":{"name":"SDLRPCFunctionNameOnSystemCapabilityUpdated","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnSystemRequest":{"name":"SDLRPCFunctionNameOnSystemRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnTBTClientState":{"name":"SDLRPCFunctionNameOnTBTClientState","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnTouchEvent":{"name":"SDLRPCFunctionNameOnTouchEvent","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnVehicleData":{"name":"SDLRPCFunctionNameOnVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameOnWayPointChange":{"name":"SDLRPCFunctionNameOnWayPointChange","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePerformAppServiceInteraction":{"name":"SDLRPCFunctionNamePerformAppServiceInteraction","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePerformAudioPassThru":{"name":"SDLRPCFunctionNamePerformAudioPassThru","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePerformInteraction":{"name":"SDLRPCFunctionNamePerformInteraction","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePublishAppService":{"name":"SDLRPCFunctionNamePublishAppService","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNamePutFile":{"name":"SDLRPCFunctionNamePutFile","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameReadDID":{"name":"SDLRPCFunctionNameReadDID","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameRegisterAppInterface":{"name":"SDLRPCFunctionNameRegisterAppInterface","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameReserved":{"name":"SDLRPCFunctionNameReserved","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameResetGlobalProperties":{"name":"SDLRPCFunctionNameResetGlobalProperties","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameScrollableMessage":{"name":"SDLRPCFunctionNameScrollableMessage","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSendHapticData":{"name":"SDLRPCFunctionNameSendHapticData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSendLocation":{"name":"SDLRPCFunctionNameSendLocation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetAppIcon":{"name":"SDLRPCFunctionNameSetAppIcon","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetCloudAppProperties":{"name":"SDLRPCFunctionNameSetCloudAppProperties","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetDisplayLayout":{"name":"SDLRPCFunctionNameSetDisplayLayout","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetGlobalProperties":{"name":"SDLRPCFunctionNameSetGlobalProperties","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetInteriorVehicleData":{"name":"SDLRPCFunctionNameSetInteriorVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSetMediaClockTimer":{"name":"SDLRPCFunctionNameSetMediaClockTimer","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameShow":{"name":"SDLRPCFunctionNameShow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameShowConstantTBT":{"name":"SDLRPCFunctionNameShowConstantTBT","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSlider":{"name":"SDLRPCFunctionNameSlider","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSpeak":{"name":"SDLRPCFunctionNameSpeak","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSubscribeButton":{"name":"SDLRPCFunctionNameSubscribeButton","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSubscribeVehicleData":{"name":"SDLRPCFunctionNameSubscribeVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSubscribeWayPoints":{"name":"SDLRPCFunctionNameSubscribeWayPoints","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSyncPData":{"name":"SDLRPCFunctionNameSyncPData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameSystemRequest":{"name":"SDLRPCFunctionNameSystemRequest","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUnregisterAppInterface":{"name":"SDLRPCFunctionNameUnregisterAppInterface","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUnsubscribeButton":{"name":"SDLRPCFunctionNameUnsubscribeButton","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUnsubscribeVehicleData":{"name":"SDLRPCFunctionNameUnsubscribeVehicleData","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUnsubscribeWayPoints":{"name":"SDLRPCFunctionNameUnsubscribeWayPoints","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRPCFunctionNameUpdateTurnList":{"name":"SDLRPCFunctionNameUpdateTurnList","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLRadioBandAM":{"name":"SDLRadioBandAM","abstract":"

    Represents AM radio band

    "},"Constants.html#/c:@SDLRadioBandFM":{"name":"SDLRadioBandFM","abstract":"

    Represents FM radio band

    "},"Constants.html#/c:@SDLRadioBandXM":{"name":"SDLRadioBandXM","abstract":"

    Represents XM radio band

    "},"Constants.html#/c:@SDLRadioStateAcquiring":{"name":"SDLRadioStateAcquiring","abstract":"

    Represents Radio state as ACQUIRING

    "},"Constants.html#/c:@SDLRadioStateAcquired":{"name":"SDLRadioStateAcquired","abstract":"

    Represents Radio state as ACQUIRED

    "},"Constants.html#/c:@SDLRadioStateMulticast":{"name":"SDLRadioStateMulticast","abstract":"

    Represents Radio state as MULTICAST

    "},"Constants.html#/c:@SDLRadioStateNotFound":{"name":"SDLRadioStateNotFound","abstract":"

    Represents Radio state as NOT_FOUND

    "},"Constants.html#/c:@SDLRequestTypeHTTP":{"name":"SDLRequestTypeHTTP","abstract":"

    An HTTP request

    "},"Constants.html#/c:@SDLRequestTypeFileResume":{"name":"SDLRequestTypeFileResume","abstract":"

    A file resumption request

    "},"Constants.html#/c:@SDLRequestTypeAuthenticationRequest":{"name":"SDLRequestTypeAuthenticationRequest","abstract":"

    An authentication request

    "},"Constants.html#/c:@SDLRequestTypeAuthenticationChallenge":{"name":"SDLRequestTypeAuthenticationChallenge","abstract":"

    An authentication challenge

    "},"Constants.html#/c:@SDLRequestTypeAuthenticationAck":{"name":"SDLRequestTypeAuthenticationAck","abstract":"

    An authentication acknowledgment

    "},"Constants.html#/c:@SDLRequestTypeProprietary":{"name":"SDLRequestTypeProprietary","abstract":"

    An proprietary formatted request

    "},"Constants.html#/c:@SDLRequestTypeQueryApps":{"name":"SDLRequestTypeQueryApps","abstract":"

    An Query Apps request

    "},"Constants.html#/c:@SDLRequestTypeLaunchApp":{"name":"SDLRequestTypeLaunchApp","abstract":"

    A Launch Apps request

    "},"Constants.html#/c:@SDLRequestTypeLockScreenIconURL":{"name":"SDLRequestTypeLockScreenIconURL","abstract":"

    The URL for a lock screen icon

    "},"Constants.html#/c:@SDLRequestTypeTrafficMessageChannel":{"name":"SDLRequestTypeTrafficMessageChannel","abstract":"

    A traffic message channel request

    "},"Constants.html#/c:@SDLRequestTypeDriverProfile":{"name":"SDLRequestTypeDriverProfile","abstract":"

    A driver profile request

    "},"Constants.html#/c:@SDLRequestTypeVoiceSearch":{"name":"SDLRequestTypeVoiceSearch","abstract":"

    A voice search request

    "},"Constants.html#/c:@SDLRequestTypeNavigation":{"name":"SDLRequestTypeNavigation","abstract":"

    A navigation request

    "},"Constants.html#/c:@SDLRequestTypePhone":{"name":"SDLRequestTypePhone","abstract":"

    A phone request

    "},"Constants.html#/c:@SDLRequestTypeClimate":{"name":"SDLRequestTypeClimate","abstract":"

    A climate request

    "},"Constants.html#/c:@SDLRequestTypeSettings":{"name":"SDLRequestTypeSettings","abstract":"

    A settings request

    "},"Constants.html#/c:@SDLRequestTypeVehicleDiagnostics":{"name":"SDLRequestTypeVehicleDiagnostics","abstract":"

    A vehicle diagnostics request

    "},"Constants.html#/c:@SDLRequestTypeEmergency":{"name":"SDLRequestTypeEmergency","abstract":"

    An emergency request

    "},"Constants.html#/c:@SDLRequestTypeMedia":{"name":"SDLRequestTypeMedia","abstract":"

    A media request

    "},"Constants.html#/c:@SDLRequestTypeFOTA":{"name":"SDLRequestTypeFOTA","abstract":"

    A firmware over-the-air request

    "},"Constants.html#/c:@SDLRequestTypeOEMSpecific":{"name":"SDLRequestTypeOEMSpecific","abstract":"

    A request that is OEM specific using the RequestSubType in SystemRequest

    "},"Constants.html#/c:@SDLRequestTypeIconURL":{"name":"SDLRequestTypeIconURL","abstract":"

    A request for an icon url

    "},"Constants.html#/c:@SDLResultSuccess":{"name":"SDLResultSuccess","abstract":"

    The request succeeded

    "},"Constants.html#/c:@SDLResultInvalidData":{"name":"SDLResultInvalidData","abstract":"

    The request contained invalid data

    "},"Constants.html#/c:@SDLResultCharacterLimitExceeded":{"name":"SDLResultCharacterLimitExceeded","abstract":"

    The request had a string containing too many characters

    "},"Constants.html#/c:@SDLResultUnsupportedRequest":{"name":"SDLResultUnsupportedRequest","abstract":"

    The request is not supported by the IVI unit implementing SDL

    "},"Constants.html#/c:@SDLResultOutOfMemory":{"name":"SDLResultOutOfMemory","abstract":"

    The system could not process the request because the necessary memory couldn’t be allocated

    "},"Constants.html#/c:@SDLResultTooManyPendingRequests":{"name":"SDLResultTooManyPendingRequests","abstract":"

    There are too many requests pending (means that the response has not been delivered yet).

    "},"Constants.html#/c:@SDLResultInvalidId":{"name":"SDLResultInvalidId","abstract":"

    One of the provided IDs is not valid.

    "},"Constants.html#/c:@SDLResultDuplicateName":{"name":"SDLResultDuplicateName","abstract":"

    The provided name or synonym is a duplicate of some already-defined name or synonym.

    "},"Constants.html#/c:@SDLResultTooManyApplications":{"name":"SDLResultTooManyApplications","abstract":"

    There are already too many registered applications.

    "},"Constants.html#/c:@SDLResultApplicationRegisteredAlready":{"name":"SDLResultApplicationRegisteredAlready","abstract":"

    RegisterAppInterface has been called, but this app is already registered

    "},"Constants.html#/c:@SDLResultUnsupportedVersion":{"name":"SDLResultUnsupportedVersion","abstract":"

    The Head Unit doesn’t support the SDL version that is requested by the mobile application.

    "},"Constants.html#/c:@SDLResultWrongLanguage":{"name":"SDLResultWrongLanguage","abstract":"

    The requested language is currently not supported. This might be because of a mismatch of the currently active language on the head unit and the requested language.

    "},"Constants.html#/c:@SDLResultApplicationNotRegistered":{"name":"SDLResultApplicationNotRegistered","abstract":"

    A command can not be executed because no application has been registered with RegisterApplication.

    "},"Constants.html#/c:@SDLResultInUse":{"name":"SDLResultInUse","abstract":"

    The data may not be changed, because it is currently in use. For example when trying to delete a choice set that is currently involved in an interaction.

    "},"Constants.html#/c:@SDLResultVehicleDataNotAllowed":{"name":"SDLResultVehicleDataNotAllowed","abstract":"

    The user has turned off access to vehicle data, and it is globally unavailable to mobile applications.

    "},"Constants.html#/c:@SDLResultVehicleDataNotAvailable":{"name":"SDLResultVehicleDataNotAvailable","abstract":"

    The requested vehicle data is not available on this vehicle or is not published.

    "},"Constants.html#/c:@SDLResultRejected":{"name":"SDLResultRejected","abstract":"

    The requested command was rejected, e.g. because the mobile app is in background and cannot perform any HMI commands, or an HMI command (e.g. Speak) is rejected because a higher priority HMI command (e.g. Alert) is playing.

    "},"Constants.html#/c:@SDLResultAborted":{"name":"SDLResultAborted","abstract":"

    A command was aborted, e.g. due to user interaction (user pressed button), or an HMI command (e.g. Speak) is aborted because a higher priority HMI command (e.g. Alert) was requested.

    "},"Constants.html#/c:@SDLResultIgnored":{"name":"SDLResultIgnored","abstract":"

    A command was ignored, because the intended result is already in effect. For example, SetMediaClockTimer was used to pause the media clock although the clock is paused already.

    "},"Constants.html#/c:@SDLResultUnsupportedResource":{"name":"SDLResultUnsupportedResource","abstract":"

    A button that was requested for subscription is not supported under the current system.

    "},"Constants.html#/c:@SDLResultFileNotFound":{"name":"SDLResultFileNotFound","abstract":"

    A specified file could not be found on the head unit.

    "},"Constants.html#/c:@SDLResultGenericError":{"name":"SDLResultGenericError","abstract":"

    Provided data is valid but something went wrong in the lower layers.

    "},"Constants.html#/c:@SDLResultDisallowed":{"name":"SDLResultDisallowed","abstract":"

    RPC is not authorized in local policy table.

    "},"Constants.html#/c:@SDLResultUserDisallowed":{"name":"SDLResultUserDisallowed","abstract":"

    RPC is included in a functional group explicitly blocked by the user.

    "},"Constants.html#/c:@SDLResultTimedOut":{"name":"SDLResultTimedOut","abstract":"

    Overlay reached the maximum timeout and closed.

    "},"Constants.html#/c:@SDLResultCancelRoute":{"name":"SDLResultCancelRoute","abstract":"

    User selected to Cancel Route.

    "},"Constants.html#/c:@SDLResultCorruptedData":{"name":"SDLResultCorruptedData","abstract":"

    The data sent failed to pass CRC check in receiver end.

    "},"Constants.html#/c:@SDLResultTruncatedData":{"name":"SDLResultTruncatedData","abstract":"

    The RPC (e.g. ReadDID) executed successfully but the data exceeded the platform maximum threshold and thus, only part of the data is available.

    "},"Constants.html#/c:@SDLResultRetry":{"name":"SDLResultRetry","abstract":"

    The user interrupted the RPC (e.g. PerformAudioPassThru) and indicated to start over. Note, the app must issue the new RPC.

    "},"Constants.html#/c:@SDLResultWarnings":{"name":"SDLResultWarnings","abstract":"

    The RPC (e.g. SubscribeVehicleData) executed successfully but one or more items have a warning or failure.

    "},"Constants.html#/c:@SDLResultSaved":{"name":"SDLResultSaved","abstract":"

    The RPC (e.g. Slider) executed successfully and the user elected to save the current position / value.

    "},"Constants.html#/c:@SDLResultInvalidCertificate":{"name":"SDLResultInvalidCertificate","abstract":"

    The certificate provided during authentication is invalid.

    "},"Constants.html#/c:@SDLResultExpiredCertificate":{"name":"SDLResultExpiredCertificate","abstract":"

    The certificate provided during authentication is expired.

    "},"Constants.html#/c:@SDLResultResumeFailed":{"name":"SDLResultResumeFailed","abstract":"

    The provided hash ID does not match the hash of the current set of registered data or the core could not resume the previous data.

    "},"Constants.html#/c:@SDLResultDataNotAvailable":{"name":"SDLResultDataNotAvailable","abstract":"

    The requested data is not available on this vehicle or is not published for the connected app.

    "},"Constants.html#/c:@SDLResultReadOnly":{"name":"SDLResultReadOnly","abstract":"

    The requested data is read only thus cannot be change via remote control .

    "},"Constants.html#/c:@SDLSamplingRate8KHZ":{"name":"SDLSamplingRate8KHZ","abstract":"

    Sampling rate of 8 kHz

    "},"Constants.html#/c:@SDLSamplingRate16KHZ":{"name":"SDLSamplingRate16KHZ","abstract":"

    Sampling rate of 16 kHz

    "},"Constants.html#/c:@SDLSamplingRate22KHZ":{"name":"SDLSamplingRate22KHZ","abstract":"

    Sampling rate of 22 kHz

    "},"Constants.html#/c:@SDLSamplingRate44KHZ":{"name":"SDLSamplingRate44KHZ","abstract":"

    Sampling rate of 44 kHz

    "},"Constants.html#/c:@SDLSeatMemoryActionTypeSave":{"name":"SDLSeatMemoryActionTypeSave","abstract":"

    @abstract Save current seat postions and settings to seat memory.

    "},"Constants.html#/c:@SDLSeatMemoryActionTypeRestore":{"name":"SDLSeatMemoryActionTypeRestore","abstract":"

    @abstract Restore / apply the seat memory settings to the current seat.

    "},"Constants.html#/c:@SDLSeatMemoryActionTypeNone":{"name":"SDLSeatMemoryActionTypeNone","abstract":"

    @abstract No action to be performed.

    "},"Constants.html#/c:@SDLServiceUpdatePublished":{"name":"SDLServiceUpdatePublished","abstract":"

    The service has just been published with the module and once activated to the primary service of its type, it will be ready for possible consumption.

    "},"Constants.html#/c:@SDLServiceUpdateRemoved":{"name":"SDLServiceUpdateRemoved","abstract":"

    The service has just been unpublished with the module and is no longer accessible.

    "},"Constants.html#/c:@SDLServiceUpdateActivated":{"name":"SDLServiceUpdateActivated","abstract":"

    The service is activated as the primary service of this type. All requests dealing with this service type will be handled by this service.

    "},"Constants.html#/c:@SDLServiceUpdateDeactivated":{"name":"SDLServiceUpdateDeactivated","abstract":"

    The service has been deactivated as the primary service of its type.

    "},"Constants.html#/c:@SDLServiceUpdateManifestUpdate":{"name":"SDLServiceUpdateManifestUpdate","abstract":"

    The service has updated its manifest. This could imply updated capabilities.

    "},"Constants.html#/c:@SDLSoftButtonTypeText":{"name":"SDLSoftButtonTypeText","abstract":"

    Text kind Softbutton

    "},"Constants.html#/c:@SDLSoftButtonTypeImage":{"name":"SDLSoftButtonTypeImage","abstract":"

    Image kind Softbutton

    "},"Constants.html#/c:@SDLSoftButtonTypeBoth":{"name":"SDLSoftButtonTypeBoth","abstract":"

    Both (Text & Image) kind Softbutton

    "},"Constants.html#/c:@SDLSpeechCapabilitiesText":{"name":"SDLSpeechCapabilitiesText","abstract":"

    The SDL platform can speak text phrases.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesSAPIPhonemes":{"name":"SDLSpeechCapabilitiesSAPIPhonemes","abstract":"

    The SDL platform can speak SAPI Phonemes.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesLHPlusPhonemes":{"name":"SDLSpeechCapabilitiesLHPlusPhonemes","abstract":"

    The SDL platform can speak LHPlus Phonemes.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesPrerecorded":{"name":"SDLSpeechCapabilitiesPrerecorded","abstract":"

    The SDL platform can speak Prerecorded indicators and prompts.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesSilence":{"name":"SDLSpeechCapabilitiesSilence","abstract":"

    The SDL platform can speak Silence.

    "},"Constants.html#/c:@SDLSpeechCapabilitiesFile":{"name":"SDLSpeechCapabilitiesFile","abstract":"

    The SDL platform can play a file

    "},"Constants.html#/c:@SDLStaticIconNameAcceptCall":{"name":"SDLStaticIconNameAcceptCall","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAddWaypoint":{"name":"SDLStaticIconNameAddWaypoint","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAlbum":{"name":"SDLStaticIconNameAlbum","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAmbientLighting":{"name":"SDLStaticIconNameAmbientLighting","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameArrowNorth":{"name":"SDLStaticIconNameArrowNorth","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAudioMute":{"name":"SDLStaticIconNameAudioMute","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAudiobookEpisode":{"name":"SDLStaticIconNameAudiobookEpisode","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAudiobookNarrator":{"name":"SDLStaticIconNameAudiobookNarrator","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameAuxillaryAudio":{"name":"SDLStaticIconNameAuxillaryAudio","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBack":{"name":"SDLStaticIconNameBack","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity0Of5":{"name":"SDLStaticIconNameBatteryCapacity0Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity1Of5":{"name":"SDLStaticIconNameBatteryCapacity1Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity2Of5":{"name":"SDLStaticIconNameBatteryCapacity2Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity3Of5":{"name":"SDLStaticIconNameBatteryCapacity3Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity4Of5":{"name":"SDLStaticIconNameBatteryCapacity4Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBatteryCapacity5Of5":{"name":"SDLStaticIconNameBatteryCapacity5Of5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBluetoothAudioSource":{"name":"SDLStaticIconNameBluetoothAudioSource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBluetooth1":{"name":"SDLStaticIconNameBluetooth1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBluetooth2":{"name":"SDLStaticIconNameBluetooth2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameBrowse":{"name":"SDLStaticIconNameBrowse","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellPhoneInRoamingMode":{"name":"SDLStaticIconNameCellPhoneInRoamingMode","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength0Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength0Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength1Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength1Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength2Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength2Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength3Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength3Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength4Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength4Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCellServiceSignalStrength5Of5Bars":{"name":"SDLStaticIconNameCellServiceSignalStrength5Of5Bars","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameChangeLaneLeft":{"name":"SDLStaticIconNameChangeLaneLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameChangeLaneRight":{"name":"SDLStaticIconNameChangeLaneRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCheckBoxChecked":{"name":"SDLStaticIconNameCheckBoxChecked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCheckBoxUnchecked":{"name":"SDLStaticIconNameCheckBoxUnchecked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameClimate":{"name":"SDLStaticIconNameClimate","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameClock":{"name":"SDLStaticIconNameClock","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameCompose":{"name":"SDLStaticIconNameCompose","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameContact":{"name":"SDLStaticIconNameContact","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameContinue":{"name":"SDLStaticIconNameContinue","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDash":{"name":"SDLStaticIconNameDash","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDate":{"name":"SDLStaticIconNameDate","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDelete":{"name":"SDLStaticIconNameDelete","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDestination":{"name":"SDLStaticIconNameDestination","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameDestinationFerryAhead":{"name":"SDLStaticIconNameDestinationFerryAhead","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameEbookmark":{"name":"SDLStaticIconNameEbookmark","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameEmpty":{"name":"SDLStaticIconNameEmpty","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameEndCall":{"name":"SDLStaticIconNameEndCall","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFail":{"name":"SDLStaticIconNameFail","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFastForward30Secs":{"name":"SDLStaticIconNameFastForward30Secs","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFavoriteHeart":{"name":"SDLStaticIconNameFavoriteHeart","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFavoriteStar":{"name":"SDLStaticIconNameFavoriteStar","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFaxNumber":{"name":"SDLStaticIconNameFaxNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFilename":{"name":"SDLStaticIconNameFilename","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFilter":{"name":"SDLStaticIconNameFilter","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFolder":{"name":"SDLStaticIconNameFolder","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFuelPrices":{"name":"SDLStaticIconNameFuelPrices","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameFullMap":{"name":"SDLStaticIconNameFullMap","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameGenericPhoneNumber":{"name":"SDLStaticIconNameGenericPhoneNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameGenre":{"name":"SDLStaticIconNameGenre","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameGlobalKeyboard":{"name":"SDLStaticIconNameGlobalKeyboard","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameHighwayExitInformation":{"name":"SDLStaticIconNameHighwayExitInformation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameHomePhoneNumber":{"name":"SDLStaticIconNameHomePhoneNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameHyperlink":{"name":"SDLStaticIconNameHyperlink","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameID3TagUnknown":{"name":"SDLStaticIconNameID3TagUnknown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameIncomingCalls":{"name":"SDLStaticIconNameIncomingCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameInformation":{"name":"SDLStaticIconNameInformation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameIPodMediaSource":{"name":"SDLStaticIconNameIPodMediaSource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameJoinCalls":{"name":"SDLStaticIconNameJoinCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameKeepLeft":{"name":"SDLStaticIconNameKeepLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameKeepRight":{"name":"SDLStaticIconNameKeepRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameKey":{"name":"SDLStaticIconNameKey","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLeft":{"name":"SDLStaticIconNameLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLeftArrow":{"name":"SDLStaticIconNameLeftArrow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLeftExit":{"name":"SDLStaticIconNameLeftExit","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLineInAudioSource":{"name":"SDLStaticIconNameLineInAudioSource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameLocked":{"name":"SDLStaticIconNameLocked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMediaControlLeftArrow":{"name":"SDLStaticIconNameMediaControlLeftArrow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMediaControlRecording":{"name":"SDLStaticIconNameMediaControlRecording","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMediaControlRightArrow":{"name":"SDLStaticIconNameMediaControlRightArrow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMediaControlStop":{"name":"SDLStaticIconNameMediaControlStop","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMicrophone":{"name":"SDLStaticIconNameMicrophone","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMissedCalls":{"name":"SDLStaticIconNameMissedCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMobilePhoneNumber":{"name":"SDLStaticIconNameMobilePhoneNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMoveDown":{"name":"SDLStaticIconNameMoveDown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMoveUp":{"name":"SDLStaticIconNameMoveUp","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameMP3TagArtist":{"name":"SDLStaticIconNameMP3TagArtist","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameNavigation":{"name":"SDLStaticIconNameNavigation","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameNavigationCurrentDirection":{"name":"SDLStaticIconNameNavigationCurrentDirection","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameNegativeRatingThumbsDown":{"name":"SDLStaticIconNameNegativeRatingThumbsDown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameNew":{"name":"SDLStaticIconNameNew","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameOfficePhoneNumber":{"name":"SDLStaticIconNameOfficePhoneNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameOpened":{"name":"SDLStaticIconNameOpened","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameOrigin":{"name":"SDLStaticIconNameOrigin","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameOutgoingCalls":{"name":"SDLStaticIconNameOutgoingCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePause":{"name":"SDLStaticIconNamePause","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhoneCall1":{"name":"SDLStaticIconNamePhoneCall1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhoneCall2":{"name":"SDLStaticIconNamePhoneCall2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhoneDevice":{"name":"SDLStaticIconNamePhoneDevice","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhonebook":{"name":"SDLStaticIconNamePhonebook","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePhoto":{"name":"SDLStaticIconNamePhoto","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePlay":{"name":"SDLStaticIconNamePlay","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePlaylist":{"name":"SDLStaticIconNamePlaylist","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePopUp":{"name":"SDLStaticIconNamePopUp","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePositiveRatingThumbsUp":{"name":"SDLStaticIconNamePositiveRatingThumbsUp","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePower":{"name":"SDLStaticIconNamePower","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNamePrimaryPhone":{"name":"SDLStaticIconNamePrimaryPhone","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRadioButtonChecked":{"name":"SDLStaticIconNameRadioButtonChecked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRadioButtonUnchecked":{"name":"SDLStaticIconNameRadioButtonUnchecked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRecentCalls":{"name":"SDLStaticIconNameRecentCalls","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRecentDestinations":{"name":"SDLStaticIconNameRecentDestinations","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRedo":{"name":"SDLStaticIconNameRedo","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRefresh":{"name":"SDLStaticIconNameRefresh","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRemoteDiagnosticsCheckEngine":{"name":"SDLStaticIconNameRemoteDiagnosticsCheckEngine","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRendered911Assist":{"name":"SDLStaticIconNameRendered911Assist","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRepeat":{"name":"SDLStaticIconNameRepeat","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRepeatPlay":{"name":"SDLStaticIconNameRepeatPlay","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameReply":{"name":"SDLStaticIconNameReply","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRewind30Secs":{"name":"SDLStaticIconNameRewind30Secs","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRight":{"name":"SDLStaticIconNameRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRightExit":{"name":"SDLStaticIconNameRightExit","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRingtones":{"name":"SDLStaticIconNameRingtones","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand1":{"name":"SDLStaticIconNameRoundaboutLeftHand1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand2":{"name":"SDLStaticIconNameRoundaboutLeftHand2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand3":{"name":"SDLStaticIconNameRoundaboutLeftHand3","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand4":{"name":"SDLStaticIconNameRoundaboutLeftHand4","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand5":{"name":"SDLStaticIconNameRoundaboutLeftHand5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand6":{"name":"SDLStaticIconNameRoundaboutLeftHand6","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutLeftHand7":{"name":"SDLStaticIconNameRoundaboutLeftHand7","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand1":{"name":"SDLStaticIconNameRoundaboutRightHand1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand2":{"name":"SDLStaticIconNameRoundaboutRightHand2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand3":{"name":"SDLStaticIconNameRoundaboutRightHand3","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand4":{"name":"SDLStaticIconNameRoundaboutRightHand4","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand5":{"name":"SDLStaticIconNameRoundaboutRightHand5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand6":{"name":"SDLStaticIconNameRoundaboutRightHand6","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRoundaboutRightHand7":{"name":"SDLStaticIconNameRoundaboutRightHand7","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameRSS":{"name":"SDLStaticIconNameRSS","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSettings":{"name":"SDLStaticIconNameSettings","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSharpLeft":{"name":"SDLStaticIconNameSharpLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSharpRight":{"name":"SDLStaticIconNameSharpRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameShow":{"name":"SDLStaticIconNameShow","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameShufflePlay":{"name":"SDLStaticIconNameShufflePlay","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSkiPlaces":{"name":"SDLStaticIconNameSkiPlaces","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSlightLeft":{"name":"SDLStaticIconNameSlightLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSlightRight":{"name":"SDLStaticIconNameSlightRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSmartphone":{"name":"SDLStaticIconNameSmartphone","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSortList":{"name":"SDLStaticIconNameSortList","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber0":{"name":"SDLStaticIconNameSpeedDialNumbersNumber0","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber1":{"name":"SDLStaticIconNameSpeedDialNumbersNumber1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber2":{"name":"SDLStaticIconNameSpeedDialNumbersNumber2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber3":{"name":"SDLStaticIconNameSpeedDialNumbersNumber3","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber4":{"name":"SDLStaticIconNameSpeedDialNumbersNumber4","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber5":{"name":"SDLStaticIconNameSpeedDialNumbersNumber5","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber6":{"name":"SDLStaticIconNameSpeedDialNumbersNumber6","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber7":{"name":"SDLStaticIconNameSpeedDialNumbersNumber7","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber8":{"name":"SDLStaticIconNameSpeedDialNumbersNumber8","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSpeedDialNumbersNumber9":{"name":"SDLStaticIconNameSpeedDialNumbersNumber9","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameSuccess":{"name":"SDLStaticIconNameSuccess","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameTrackTitle":{"name":"SDLStaticIconNameTrackTitle","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameTrafficReport":{"name":"SDLStaticIconNameTrafficReport","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameTurnList":{"name":"SDLStaticIconNameTurnList","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUTurnLeftTraffic":{"name":"SDLStaticIconNameUTurnLeftTraffic","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUTurnRightTraffic":{"name":"SDLStaticIconNameUTurnRightTraffic","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUndo":{"name":"SDLStaticIconNameUndo","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUnlocked":{"name":"SDLStaticIconNameUnlocked","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameUSBMediaAudioSource":{"name":"SDLStaticIconNameUSBMediaAudioSource","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceControlScrollbarListItemNo1":{"name":"SDLStaticIconNameVoiceControlScrollbarListItemNo1","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceControlScrollbarListItemNo2":{"name":"SDLStaticIconNameVoiceControlScrollbarListItemNo2","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceControlScrollbarListItemNo3":{"name":"SDLStaticIconNameVoiceControlScrollbarListItemNo3","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceControlScrollbarListItemNo4":{"name":"SDLStaticIconNameVoiceControlScrollbarListItemNo4","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionFailed":{"name":"SDLStaticIconNameVoiceRecognitionFailed","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionPause":{"name":"SDLStaticIconNameVoiceRecognitionPause","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionSuccessful":{"name":"SDLStaticIconNameVoiceRecognitionSuccessful","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionSystemActive":{"name":"SDLStaticIconNameVoiceRecognitionSystemActive","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionSystemListening":{"name":"SDLStaticIconNameVoiceRecognitionSystemListening","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameVoiceRecognitionTryAgain":{"name":"SDLStaticIconNameVoiceRecognitionTryAgain","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameWarning":{"name":"SDLStaticIconNameWarning","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameWeather":{"name":"SDLStaticIconNameWeather","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameWifiFull":{"name":"SDLStaticIconNameWifiFull","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameZoomIn":{"name":"SDLStaticIconNameZoomIn","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLStaticIconNameZoomOut":{"name":"SDLStaticIconNameZoomOut","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLDefaultScreenSize":{"name":"SDLDefaultScreenSize","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamDidStartNotification":{"name":"SDLVideoStreamDidStartNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamDidStopNotification":{"name":"SDLVideoStreamDidStopNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamSuspendedNotification":{"name":"SDLVideoStreamSuspendedNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamDidStartNotification":{"name":"SDLAudioStreamDidStartNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamDidStopNotification":{"name":"SDLAudioStreamDidStopNotification","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLLockScreenManagerWillPresentLockScreenViewController":{"name":"SDLLockScreenManagerWillPresentLockScreenViewController","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLLockScreenManagerDidPresentLockScreenViewController":{"name":"SDLLockScreenManagerDidPresentLockScreenViewController","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLLockScreenManagerWillDismissLockScreenViewController":{"name":"SDLLockScreenManagerWillDismissLockScreenViewController","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLLockScreenManagerDidDismissLockScreenViewController":{"name":"SDLLockScreenManagerDidDismissLockScreenViewController","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateStopped":{"name":"SDLVideoStreamManagerStateStopped","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateStarting":{"name":"SDLVideoStreamManagerStateStarting","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateReady":{"name":"SDLVideoStreamManagerStateReady","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateSuspended":{"name":"SDLVideoStreamManagerStateSuspended","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLVideoStreamManagerStateShuttingDown":{"name":"SDLVideoStreamManagerStateShuttingDown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamManagerStateStopped":{"name":"SDLAudioStreamManagerStateStopped","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamManagerStateStarting":{"name":"SDLAudioStreamManagerStateStarting","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamManagerStateReady":{"name":"SDLAudioStreamManagerStateReady","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAudioStreamManagerStateShuttingDown":{"name":"SDLAudioStreamManagerStateShuttingDown","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAppStateInactive":{"name":"SDLAppStateInactive","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLAppStateActive":{"name":"SDLAppStateActive","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLSupportedSeatDriver":{"name":"SDLSupportedSeatDriver","abstract":"

    @abstract Save current seat postions and settings to seat memory.

    "},"Constants.html#/c:@SDLSupportedSeatFrontPassenger":{"name":"SDLSupportedSeatFrontPassenger","abstract":"

    @abstract Restore / apply the seat memory settings to the current seat.

    "},"Constants.html#/c:@SDLSystemActionDefaultAction":{"name":"SDLSystemActionDefaultAction","abstract":"

    A default soft button action

    "},"Constants.html#/c:@SDLSystemActionStealFocus":{"name":"SDLSystemActionStealFocus","abstract":"

    An action causing your app to steal HMI focus

    "},"Constants.html#/c:@SDLSystemActionKeepContext":{"name":"SDLSystemActionKeepContext","abstract":"

    An action causing you to keep context

    "},"Constants.html#/c:@SDLSystemCapabilityTypeAppServices":{"name":"SDLSystemCapabilityTypeAppServices","abstract":"

    The app services capability

    "},"Constants.html#/c:@SDLSystemCapabilityTypeNavigation":{"name":"SDLSystemCapabilityTypeNavigation","abstract":"

    The navigation capability

    "},"Constants.html#/c:@SDLSystemCapabilityTypePhoneCall":{"name":"SDLSystemCapabilityTypePhoneCall","abstract":"

    The phone call capability

    "},"Constants.html#/c:@SDLSystemCapabilityTypeVideoStreaming":{"name":"SDLSystemCapabilityTypeVideoStreaming","abstract":"

    The video streaming capability

    "},"Constants.html#/c:@SDLSystemCapabilityTypeRemoteControl":{"name":"SDLSystemCapabilityTypeRemoteControl","abstract":"

    The remote control capability

    "},"Constants.html#/c:@SDLSystemContextMain":{"name":"SDLSystemContextMain","abstract":"

    No user interaction (user-initiated or app-initiated) is in progress.

    "},"Constants.html#/c:@SDLSystemContextVoiceRecognitionSession":{"name":"SDLSystemContextVoiceRecognitionSession","abstract":"

    VR-oriented, user-initiated or app-initiated interaction is in-progress.

    "},"Constants.html#/c:@SDLSystemContextMenu":{"name":"SDLSystemContextMenu","abstract":"

    Menu-oriented, user-initiated or app-initiated interaction is in-progress.

    "},"Constants.html#/c:@SDLSystemContextHMIObscured":{"name":"SDLSystemContextHMIObscured","abstract":"

    The app’s display HMI is currently being obscured by either a system or other app’s overlay.

    "},"Constants.html#/c:@SDLSystemContextAlert":{"name":"SDLSystemContextAlert","abstract":"

    Broadcast only to whichever app has an alert currently being displayed.

    "},"Constants.html#/c:@SDLTBTStateRouteUpdateRequest":{"name":"SDLTBTStateRouteUpdateRequest","abstract":"

    The route should be updated

    "},"Constants.html#/c:@SDLTBTStateRouteAccepted":{"name":"SDLTBTStateRouteAccepted","abstract":"

    The route is accepted

    "},"Constants.html#/c:@SDLTBTStateRouteRefused":{"name":"SDLTBTStateRouteRefused","abstract":"

    The route is refused

    "},"Constants.html#/c:@SDLTBTStateRouteCancelled":{"name":"SDLTBTStateRouteCancelled","abstract":"

    The route is cancelled

    "},"Constants.html#/c:@SDLTBTStateETARequest":{"name":"SDLTBTStateETARequest","abstract":"

    The route should update its Estimated Time of Arrival

    "},"Constants.html#/c:@SDLTBTStateNextTurnRequest":{"name":"SDLTBTStateNextTurnRequest","abstract":"

    The route should update its next turn

    "},"Constants.html#/c:@SDLTBTStateRouteStatusRequest":{"name":"SDLTBTStateRouteStatusRequest","abstract":"

    The route should update its status

    "},"Constants.html#/c:@SDLTBTStateRouteSummaryRequest":{"name":"SDLTBTStateRouteSummaryRequest","abstract":"

    The route update its summary

    "},"Constants.html#/c:@SDLTBTStateTripStatusRequest":{"name":"SDLTBTStateTripStatusRequest","abstract":"

    The route should update the trip’s status

    "},"Constants.html#/c:@SDLTBTStateRouteUpdateRequestTimeout":{"name":"SDLTBTStateRouteUpdateRequestTimeout","abstract":"

    The route update timed out

    "},"Constants.html#/c:@SDLTPMSUnknown":{"name":"SDLTPMSUnknown","abstract":"

    If set the status of the tire is not known.

    "},"Constants.html#/c:@SDLTPMSSystemFault":{"name":"SDLTPMSSystemFault","abstract":"

    TPMS does not function.

    "},"Constants.html#/c:@SDLTPMSSensorFault":{"name":"SDLTPMSSensorFault","abstract":"

    The sensor of the tire does not function.

    "},"Constants.html#/c:@SDLTPMSLow":{"name":"SDLTPMSLow","abstract":"

    TPMS is reporting a low tire pressure for the tire.

    "},"Constants.html#/c:@SDLTPMSSystemActive":{"name":"SDLTPMSSystemActive","abstract":"

    TPMS is active and the tire pressure is monitored.

    "},"Constants.html#/c:@SDLTPMSTrain":{"name":"SDLTPMSTrain","abstract":"

    TPMS is reporting that the tire must be trained.

    "},"Constants.html#/c:@SDLTPMSTrainingComplete":{"name":"SDLTPMSTrainingComplete","abstract":"

    TPMS reports the training for the tire is completed.

    "},"Constants.html#/c:@SDLTPMSNotTrained":{"name":"SDLTPMSNotTrained","abstract":"

    TPMS reports the tire is not trained.

    "},"Constants.html#/c:@SDLTemperatureUnitCelsius":{"name":"SDLTemperatureUnitCelsius","abstract":"

    Reflects the current HMI setting for temperature unit in Celsius

    "},"Constants.html#/c:@SDLTemperatureUnitFahrenheit":{"name":"SDLTemperatureUnitFahrenheit","abstract":"

    Reflects the current HMI setting for temperature unit in Fahrenheit

    "},"Constants.html#/c:@SDLTextAlignmentLeft":{"name":"SDLTextAlignmentLeft","abstract":"

    Text aligned left.

    "},"Constants.html#/c:@SDLTextAlignmentRight":{"name":"SDLTextAlignmentRight","abstract":"

    Text aligned right.

    "},"Constants.html#/c:@SDLTextAlignmentCenter":{"name":"SDLTextAlignmentCenter","abstract":"

    Text aligned centered.

    "},"Constants.html#/c:@SDLTextFieldNameMainField1":{"name":"SDLTextFieldNameMainField1","abstract":"

    The first line of the first set of main fields of the persistent display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMainField2":{"name":"SDLTextFieldNameMainField2","abstract":"

    The second line of the first set of main fields of the persistent display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMainField3":{"name":"SDLTextFieldNameMainField3","abstract":"

    The first line of the second set of main fields of the persistent display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMainField4":{"name":"SDLTextFieldNameMainField4"},"Constants.html#/c:@SDLTextFieldNameStatusBar":{"name":"SDLTextFieldNameStatusBar","abstract":"

    The status bar on the NGN display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMediaClock":{"name":"SDLTextFieldNameMediaClock","abstract":"

    Text value for MediaClock field. Must be properly formatted according to MediaClockFormat. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameMediaTrack":{"name":"SDLTextFieldNameMediaTrack","abstract":"

    The track field of NGN type ACMs. This field is only available for media applications on a NGN display. Applies to SDLShow.

    "},"Constants.html#/c:@SDLTextFieldNameAlertText1":{"name":"SDLTextFieldNameAlertText1","abstract":"

    The first line of the alert text field. Applies to SDLAlert.

    "},"Constants.html#/c:@SDLTextFieldNameAlertText2":{"name":"SDLTextFieldNameAlertText2","abstract":"

    The second line of the alert text field. Applies to SDLAlert.

    "},"Constants.html#/c:@SDLTextFieldNameAlertText3":{"name":"SDLTextFieldNameAlertText3","abstract":"

    The third line of the alert text field. Applies to SDLAlert.

    "},"Constants.html#/c:@SDLTextFieldNameScrollableMessageBody":{"name":"SDLTextFieldNameScrollableMessageBody","abstract":"

    Long form body of text that can include newlines and tabs. Applies to SDLScrollableMessage.

    "},"Constants.html#/c:@SDLTextFieldNameInitialInteractionText":{"name":"SDLTextFieldNameInitialInteractionText","abstract":"

    First line suggestion for a user response (in the case of VR enabled interaction).

    "},"Constants.html#/c:@SDLTextFieldNameNavigationText1":{"name":"SDLTextFieldNameNavigationText1","abstract":"

    First line of navigation text.

    "},"Constants.html#/c:@SDLTextFieldNameNavigationText2":{"name":"SDLTextFieldNameNavigationText2","abstract":"

    Second line of navigation text.

    "},"Constants.html#/c:@SDLTextFieldNameETA":{"name":"SDLTextFieldNameETA","abstract":"

    Estimated Time of Arrival time for navigation.

    "},"Constants.html#/c:@SDLTextFieldNameTotalDistance":{"name":"SDLTextFieldNameTotalDistance","abstract":"

    Total distance to destination for navigation.

    "},"Constants.html#/c:@SDLTextFieldNameAudioPassThruDisplayText1":{"name":"SDLTextFieldNameAudioPassThruDisplayText1","abstract":"

    First line of text for audio pass thru.

    "},"Constants.html#/c:@SDLTextFieldNameAudioPassThruDisplayText2":{"name":"SDLTextFieldNameAudioPassThruDisplayText2","abstract":"

    Second line of text for audio pass thru.

    "},"Constants.html#/c:@SDLTextFieldNameSliderHeader":{"name":"SDLTextFieldNameSliderHeader","abstract":"

    Header text for slider.

    "},"Constants.html#/c:@SDLTextFieldNameSliderFooter":{"name":"SDLTextFieldNameSliderFooter","abstract":"

    Footer text for slider

    "},"Constants.html#/c:@SDLTextFieldNameMenuName":{"name":"SDLTextFieldNameMenuName","abstract":"

    Primary text for SDLChoice

    "},"Constants.html#/c:@SDLTextFieldNameSecondaryText":{"name":"SDLTextFieldNameSecondaryText","abstract":"

    Secondary text for SDLChoice

    "},"Constants.html#/c:@SDLTextFieldNameTertiaryText":{"name":"SDLTextFieldNameTertiaryText","abstract":"

    Tertiary text for SDLChoice

    "},"Constants.html#/c:@SDLTextFieldNameMenuTitle":{"name":"SDLTextFieldNameMenuTitle","abstract":"

    Optional text to label an app menu button (for certain touchscreen platforms)

    "},"Constants.html#/c:@SDLTextFieldNameLocationName":{"name":"SDLTextFieldNameLocationName","abstract":"

    Optional name / title of intended location for SDLSendLocation

    "},"Constants.html#/c:@SDLTextFieldNameLocationDescription":{"name":"SDLTextFieldNameLocationDescription","abstract":"

    Optional description of intended location / establishment (if applicable) for SDLSendLocation

    "},"Constants.html#/c:@SDLTextFieldNameAddressLines":{"name":"SDLTextFieldNameAddressLines","abstract":"

    Optional location address (if applicable) for SDLSendLocation

    "},"Constants.html#/c:@SDLTextFieldNamePhoneNumber":{"name":"SDLTextFieldNamePhoneNumber","abstract":"

    Optional hone number of intended location / establishment (if applicable) for SDLSendLocation

    "},"Constants.html#/c:@SDLTimerModeUp":{"name":"SDLTimerModeUp","abstract":"

    The timer should count up.

    "},"Constants.html#/c:@SDLTimerModeDown":{"name":"SDLTimerModeDown","abstract":"

    The timer should count down.

    "},"Constants.html#/c:@SDLTimerModeNone":{"name":"SDLTimerModeNone","abstract":"

    The timer should not count.

    "},"Constants.html#/c:@SDLTouchTypeBegin":{"name":"SDLTouchTypeBegin","abstract":"

    The touch is the beginning of a finger pressed on the display.

    "},"Constants.html#/c:@SDLTouchTypeMove":{"name":"SDLTouchTypeMove","abstract":"

    The touch is the movement of a finger pressed on the display.

    "},"Constants.html#/c:@SDLTouchTypeEnd":{"name":"SDLTouchTypeEnd","abstract":"

    The touch is the ending of a finger pressed on the display.

    "},"Constants.html#/c:@SDLTouchTypeCancel":{"name":"SDLTouchTypeCancel","abstract":"

    The touch is the cancellation of a finger pressed on the display.

    "},"Constants.html#/c:@SDLTriggerSourceMenu":{"name":"SDLTriggerSourceMenu","abstract":"

    Selection made via menu

    "},"Constants.html#/c:@SDLTriggerSourceVoiceRecognition":{"name":"SDLTriggerSourceVoiceRecognition","abstract":"

    Selection made via Voice session

    "},"Constants.html#/c:@SDLTriggerSourceKeyboard":{"name":"SDLTriggerSourceKeyboard","abstract":"

    Selection made via Keyboard

    "},"Constants.html#/c:@SDLTurnSignalOff":{"name":"SDLTurnSignalOff","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTurnSignalLeft":{"name":"SDLTurnSignalLeft","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTurnSignalRight":{"name":"SDLTurnSignalRight","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLTurnSignalBoth":{"name":"SDLTurnSignalBoth","abstract":"

    Undocumented

    "},"Constants.html#/c:@SDLUpdateModeCountUp":{"name":"SDLUpdateModeCountUp","abstract":"

    Starts the media clock timer counting upward, in increments of 1 second.

    "},"Constants.html#/c:@SDLUpdateModeCountDown":{"name":"SDLUpdateModeCountDown","abstract":"

    Starts the media clock timer counting downward, in increments of 1 second.

    "},"Constants.html#/c:@SDLUpdateModePause":{"name":"SDLUpdateModePause","abstract":"

    Pauses the media clock timer.

    "},"Constants.html#/c:@SDLUpdateModeResume":{"name":"SDLUpdateModeResume","abstract":"

    Resumes the media clock timer. The timer resumes counting in whatever mode was in effect before pausing (i.e. COUNTUP or COUNTDOWN).

    "},"Constants.html#/c:@SDLUpdateModeClear":{"name":"SDLUpdateModeClear","abstract":"

    Clear the media clock timer.

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusInactiveNotConfirmed":{"name":"SDLVehicleDataActiveStatusInactiveNotConfirmed","abstract":"

    Inactive not confirmed

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusInactiveConfirmed":{"name":"SDLVehicleDataActiveStatusInactiveConfirmed","abstract":"

    Inactive confirmed

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusActiveNotConfirmed":{"name":"SDLVehicleDataActiveStatusActiveNotConfirmed","abstract":"

    Active not confirmed

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusActiveConfirmed":{"name":"SDLVehicleDataActiveStatusActiveConfirmed","abstract":"

    Active confirmed

    "},"Constants.html#/c:@SDLVehicleDataActiveStatusFault":{"name":"SDLVehicleDataActiveStatusFault","abstract":"

    Fault

    "},"Constants.html#/c:@SDLVehicleDataEventStatusNoEvent":{"name":"SDLVehicleDataEventStatusNoEvent","abstract":"

    No event

    "},"Constants.html#/c:@SDLVehicleDataEventStatusNo":{"name":"SDLVehicleDataEventStatusNo","abstract":"

    The event is a No status

    "},"Constants.html#/c:@SDLVehicleDataEventStatusYes":{"name":"SDLVehicleDataEventStatusYes","abstract":"

    The event is a Yes status

    "},"Constants.html#/c:@SDLVehicleDataEventStatusNotSupported":{"name":"SDLVehicleDataEventStatusNotSupported","abstract":"

    Vehicle data event is not supported

    "},"Constants.html#/c:@SDLVehicleDataEventStatusFault":{"name":"SDLVehicleDataEventStatusFault","abstract":"

    The event is a Fault status

    "},"Constants.html#/c:@SDLVehicleDataNotificationStatusNotSupported":{"name":"SDLVehicleDataNotificationStatusNotSupported","abstract":"

    The vehicle data notification status is not supported

    "},"Constants.html#/c:@SDLVehicleDataNotificationStatusNormal":{"name":"SDLVehicleDataNotificationStatusNormal","abstract":"

    The vehicle data notification status is normal

    "},"Constants.html#/c:@SDLVehicleDataNotificationStatusActive":{"name":"SDLVehicleDataNotificationStatusActive","abstract":"

    The vehicle data notification status is active

    "},"Constants.html#/c:@SDLVehicleDataNotificationStatusNotUsed":{"name":"SDLVehicleDataNotificationStatusNotUsed","abstract":"

    The vehicle data notification status is not used

    "},"Constants.html#/c:@SDLVehicleDataResultCodeSuccess":{"name":"SDLVehicleDataResultCodeSuccess","abstract":"

    Individual vehicle data item / DTC / DID request or subscription successful

    "},"Constants.html#/c:@SDLVehicleDataResultCodeTruncatedData":{"name":"SDLVehicleDataResultCodeTruncatedData","abstract":"

    DTC / DID request successful, however, not all active DTCs or full contents of DID location available

    "},"Constants.html#/c:@SDLVehicleDataResultCodeDisallowed":{"name":"SDLVehicleDataResultCodeDisallowed","abstract":"

    This vehicle data item is not allowed for this app by SDL

    "},"Constants.html#/c:@SDLVehicleDataResultCodeUserDisallowed":{"name":"SDLVehicleDataResultCodeUserDisallowed","abstract":"

    The user has not granted access to this type of vehicle data item at this time

    "},"Constants.html#/c:@SDLVehicleDataResultCodeInvalidId":{"name":"SDLVehicleDataResultCodeInvalidId","abstract":"

    The ECU ID referenced is not a valid ID on the bus / system

    "},"Constants.html#/c:@SDLVehicleDataResultCodeVehicleDataNotAvailable":{"name":"SDLVehicleDataResultCodeVehicleDataNotAvailable","abstract":"

    The requested vehicle data item / DTC / DID is not currently available or responding on the bus / system

    "},"Constants.html#/c:@SDLVehicleDataResultCodeDataAlreadySubscribed":{"name":"SDLVehicleDataResultCodeDataAlreadySubscribed","abstract":"

    The vehicle data item is already subscribed

    "},"Constants.html#/c:@SDLVehicleDataResultCodeDataNotSubscribed":{"name":"SDLVehicleDataResultCodeDataNotSubscribed","abstract":"

    The vehicle data item cannot be unsubscribed because it is not currently subscribed

    "},"Constants.html#/c:@SDLVehicleDataResultCodeIgnored":{"name":"SDLVehicleDataResultCodeIgnored","abstract":"

    The request for this item is ignored because it is already in progress

    "},"Constants.html#/c:@SDLVehicleDataStatusNoDataExists":{"name":"SDLVehicleDataStatusNoDataExists","abstract":"

    No data avaliable

    "},"Constants.html#/c:@SDLVehicleDataStatusOff":{"name":"SDLVehicleDataStatusOff","abstract":"

    The status is Off

    "},"Constants.html#/c:@SDLVehicleDataStatusOn":{"name":"SDLVehicleDataStatusOn","abstract":"

    The status is On

    "},"Constants.html#/c:@SDLVehicleDataTypeGPS":{"name":"SDLVehicleDataTypeGPS","abstract":"

    GPS vehicle data

    "},"Constants.html#/c:@SDLVehicleDataTypeSpeed":{"name":"SDLVehicleDataTypeSpeed","abstract":"

    Vehicle speed data

    "},"Constants.html#/c:@SDLVehicleDataTypeRPM":{"name":"SDLVehicleDataTypeRPM","abstract":"

    Vehicle RPM data

    "},"Constants.html#/c:@SDLVehicleDataTypeFuelLevel":{"name":"SDLVehicleDataTypeFuelLevel","abstract":"

    Vehicle fuel level data

    "},"Constants.html#/c:@SDLVehicleDataTypeFuelLevelState":{"name":"SDLVehicleDataTypeFuelLevelState","abstract":"

    Vehicle fuel level state data

    "},"Constants.html#/c:@SDLVehicleDataTypeFuelConsumption":{"name":"SDLVehicleDataTypeFuelConsumption","abstract":"

    Vehicle fuel consumption data

    "},"Constants.html#/c:@SDLVehicleDataTypeExternalTemperature":{"name":"SDLVehicleDataTypeExternalTemperature","abstract":"

    Vehicle external temperature data

    "},"Constants.html#/c:@SDLVehicleDataTypeVIN":{"name":"SDLVehicleDataTypeVIN","abstract":"

    Vehicle VIN data

    "},"Constants.html#/c:@SDLVehicleDataTypePRNDL":{"name":"SDLVehicleDataTypePRNDL","abstract":"

    Vehicle PRNDL data

    "},"Constants.html#/c:@SDLVehicleDataTypeTirePressure":{"name":"SDLVehicleDataTypeTirePressure","abstract":"

    Vehicle tire pressure data

    "},"Constants.html#/c:@SDLVehicleDataTypeOdometer":{"name":"SDLVehicleDataTypeOdometer","abstract":"

    Vehicle odometer data

    "},"Constants.html#/c:@SDLVehicleDataTypeBeltStatus":{"name":"SDLVehicleDataTypeBeltStatus","abstract":"

    Vehicle belt status data

    "},"Constants.html#/c:@SDLVehicleDataTypeBodyInfo":{"name":"SDLVehicleDataTypeBodyInfo","abstract":"

    Vehicle body info data

    "},"Constants.html#/c:@SDLVehicleDataTypeDeviceStatus":{"name":"SDLVehicleDataTypeDeviceStatus","abstract":"

    Vehicle device status data

    "},"Constants.html#/c:@SDLVehicleDataTypeECallInfo":{"name":"SDLVehicleDataTypeECallInfo","abstract":"

    Vehicle emergency call info data

    "},"Constants.html#/c:@SDLVehicleDataTypeFuelRange":{"name":"SDLVehicleDataTypeFuelRange","abstract":"

    Vehicle fuel range data

    "},"Constants.html#/c:@SDLVehicleDataTypeAirbagStatus":{"name":"SDLVehicleDataTypeAirbagStatus","abstract":"

    Vehicle airbag status data

    "},"Constants.html#/c:@SDLVehicleDataTypeEmergencyEvent":{"name":"SDLVehicleDataTypeEmergencyEvent","abstract":"

    Vehicle emergency event info

    "},"Constants.html#/c:@SDLVehicleDataTypeClusterModeStatus":{"name":"SDLVehicleDataTypeClusterModeStatus","abstract":"

    Vehicle cluster mode status data

    "},"Constants.html#/c:@SDLVehicleDataTypeMyKey":{"name":"SDLVehicleDataTypeMyKey","abstract":"

    Vehicle MyKey data

    "},"Constants.html#/c:@SDLVehicleDataTypeBraking":{"name":"SDLVehicleDataTypeBraking","abstract":"

    Vehicle braking data

    "},"Constants.html#/c:@SDLVehicleDataTypeWiperStatus":{"name":"SDLVehicleDataTypeWiperStatus","abstract":"

    Vehicle wiper status data

    "},"Constants.html#/c:@SDLVehicleDataTypeHeadlampStatus":{"name":"SDLVehicleDataTypeHeadlampStatus","abstract":"

    Vehicle headlamp status

    "},"Constants.html#/c:@SDLVehicleDataTypeBatteryVoltage":{"name":"SDLVehicleDataTypeBatteryVoltage","abstract":"

    Vehicle battery voltage data

    "},"Constants.html#/c:@SDLVehicleDataTypeEngineOilLife":{"name":"SDLVehicleDataTypeEngineOilLife","abstract":"

    Vehicle engine oil life data

    "},"Constants.html#/c:@SDLVehicleDataTypeEngineTorque":{"name":"SDLVehicleDataTypeEngineTorque","abstract":"

    Vehicle engine torque data

    "},"Constants.html#/c:@SDLVehicleDataTypeAccelerationPedal":{"name":"SDLVehicleDataTypeAccelerationPedal","abstract":"

    Vehicle accleration pedal data

    "},"Constants.html#/c:@SDLVehicleDataTypeSteeringWheel":{"name":"SDLVehicleDataTypeSteeringWheel","abstract":"

    Vehicle steering wheel data

    "},"Constants.html#/c:@SDLVehicleDataTypeElectronicParkBrakeStatus":{"name":"SDLVehicleDataTypeElectronicParkBrakeStatus","abstract":"

    Vehicle electronic parking brake status data

    "},"Constants.html#/c:@SDLVehicleDataTypeTurnSignal":{"name":"SDLVehicleDataTypeTurnSignal","abstract":"

    Vehicle turn signal data

    "},"Constants.html#/c:@SDLVehicleDataTypeCloudAppVehicleID":{"name":"SDLVehicleDataTypeCloudAppVehicleID","abstract":"

    The cloud application vehicle id. Used by cloud apps to identify a head unit

    "},"Constants.html#/c:@SDLVentilationModeUpper":{"name":"SDLVentilationModeUpper","abstract":"

    The upper ventilation mode

    "},"Constants.html#/c:@SDLVentilationModeLower":{"name":"SDLVentilationModeLower","abstract":"

    The lower ventilation mode

    "},"Constants.html#/c:@SDLVentilationModeBoth":{"name":"SDLVentilationModeBoth","abstract":"

    The both ventilation mode

    "},"Constants.html#/c:@SDLVentilationModeNone":{"name":"SDLVentilationModeNone","abstract":"

    No ventilation mode

    "},"Constants.html#/c:@SDLVideoStreamingCodecH264":{"name":"SDLVideoStreamingCodecH264","abstract":"

    H264

    "},"Constants.html#/c:@SDLVideoStreamingCodecH265":{"name":"SDLVideoStreamingCodecH265","abstract":"

    H265

    "},"Constants.html#/c:@SDLVideoStreamingCodecTheora":{"name":"SDLVideoStreamingCodecTheora","abstract":"

    Theora

    "},"Constants.html#/c:@SDLVideoStreamingCodecVP8":{"name":"SDLVideoStreamingCodecVP8","abstract":"

    VP8

    "},"Constants.html#/c:@SDLVideoStreamingCodecVP9":{"name":"SDLVideoStreamingCodecVP9","abstract":"

    VP9

    "},"Constants.html#/c:@SDLVideoStreamingProtocolRAW":{"name":"SDLVideoStreamingProtocolRAW","abstract":"

    RAW

    "},"Constants.html#/c:@SDLVideoStreamingProtocolRTP":{"name":"SDLVideoStreamingProtocolRTP","abstract":"

    RTP

    "},"Constants.html#/c:@SDLVideoStreamingProtocolRTSP":{"name":"SDLVideoStreamingProtocolRTSP","abstract":"

    RTSP

    "},"Constants.html#/c:@SDLVideoStreamingProtocolRTMP":{"name":"SDLVideoStreamingProtocolRTMP","abstract":"

    RTMP

    "},"Constants.html#/c:@SDLVideoStreamingProtocolWebM":{"name":"SDLVideoStreamingProtocolWebM","abstract":"

    WebM

    "},"Constants.html#/c:@SDLVideoStreamingStateStreamable":{"name":"SDLVideoStreamingStateStreamable","abstract":"

    STREAMABLE, the current app is allowed to stream video

    "},"Constants.html#/c:@SDLVideoStreamingStateNotStreamable":{"name":"SDLVideoStreamingStateNotStreamable","abstract":"

    NOT_STREAMABLE, the current app is not allowed to stream video

    "},"Constants.html#/c:@SDLVRCapabilitiesText":{"name":"SDLVRCapabilitiesText","abstract":"

    The SDL platform is capable of recognizing spoken text in the current language.

    "},"Constants.html#/c:@SDLWarningLightStatusOff":{"name":"SDLWarningLightStatusOff","abstract":"

    The warning light is off

    "},"Constants.html#/c:@SDLWarningLightStatusOn":{"name":"SDLWarningLightStatusOn","abstract":"

    The warning light is off

    "},"Constants.html#/c:@SDLWarningLightStatusFlash":{"name":"SDLWarningLightStatusFlash","abstract":"

    The warning light is flashing

    "},"Constants.html#/c:@SDLWarningLightStatusNotUsed":{"name":"SDLWarningLightStatusNotUsed","abstract":"

    The warning light is unused

    "},"Constants.html#/c:@SDLWayPointTypeAll":{"name":"SDLWayPointTypeAll","abstract":"

    All other waypoint types

    "},"Constants.html#/c:@SDLWayPointTypeDestination":{"name":"SDLWayPointTypeDestination","abstract":"

    The destination waypoint

    "},"Constants.html#/c:@SDLWiperStatusOff":{"name":"SDLWiperStatusOff","abstract":"

    Wiper is off

    "},"Constants.html#/c:@SDLWiperStatusAutomaticOff":{"name":"SDLWiperStatusAutomaticOff","abstract":"

    Wiper is off automatically

    "},"Constants.html#/c:@SDLWiperStatusOffMoving":{"name":"SDLWiperStatusOffMoving","abstract":"

    Wiper is moving but off

    "},"Constants.html#/c:@SDLWiperStatusManualIntervalOff":{"name":"SDLWiperStatusManualIntervalOff","abstract":"

    Wiper is off due to a manual interval

    "},"Constants.html#/c:@SDLWiperStatusManualIntervalOn":{"name":"SDLWiperStatusManualIntervalOn","abstract":"

    Wiper is on due to a manual interval

    "},"Constants.html#/c:@SDLWiperStatusManualLow":{"name":"SDLWiperStatusManualLow","abstract":"

    Wiper is on low manually

    "},"Constants.html#/c:@SDLWiperStatusManualHigh":{"name":"SDLWiperStatusManualHigh","abstract":"

    Wiper is on high manually

    "},"Constants.html#/c:@SDLWiperStatusManualFlick":{"name":"SDLWiperStatusManualFlick","abstract":"

    Wiper is on for a single wipe manually

    "},"Constants.html#/c:@SDLWiperStatusWash":{"name":"SDLWiperStatusWash","abstract":"

    Wiper is in wash mode

    "},"Constants.html#/c:@SDLWiperStatusAutomaticLow":{"name":"SDLWiperStatusAutomaticLow","abstract":"

    Wiper is on low automatically

    "},"Constants.html#/c:@SDLWiperStatusAutomaticHigh":{"name":"SDLWiperStatusAutomaticHigh","abstract":"

    Wiper is on high automatically

    "},"Constants.html#/c:@SDLWiperStatusCourtesyWipe":{"name":"SDLWiperStatusCourtesyWipe","abstract":"

    Wiper is performing a courtesy wipe

    "},"Constants.html#/c:@SDLWiperStatusAutomaticAdjust":{"name":"SDLWiperStatusAutomaticAdjust","abstract":"

    Wiper is on automatic adjust

    "},"Constants.html#/c:@SDLWiperStatusStalled":{"name":"SDLWiperStatusStalled","abstract":"

    Wiper is stalled

    "},"Constants.html#/c:@SDLWiperStatusNoDataExists":{"name":"SDLWiperStatusNoDataExists","abstract":"

    Wiper data is not available

    "},"Constants.html#/c:@SmartDeviceLinkVersionNumber":{"name":"SmartDeviceLinkVersionNumber","abstract":"

    Undocumented

    "},"Constants.html#/c:@SmartDeviceLinkVersionString":{"name":"SmartDeviceLinkVersionString","abstract":"

    Undocumented

    "},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(im)initWithCurrentForecastSupported:maxMultidayForecastAmount:maxHourlyForecastAmount:maxMinutelyForecastAmount:weatherForLocationSupported:":{"name":"-initWithCurrentForecastSupported:maxMultidayForecastAmount:maxHourlyForecastAmount:maxMinutelyForecastAmount:weatherForLocationSupported:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)currentForecastSupported":{"name":"currentForecastSupported","abstract":"

    Whether or not the current forcast is supported.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)maxMultidayForecastAmount":{"name":"maxMultidayForecastAmount","abstract":"

    The maximum number of day-by-day forecasts.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)maxHourlyForecastAmount":{"name":"maxHourlyForecastAmount","abstract":"

    The maximum number of hour-by-hour forecasts.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)maxMinutelyForecastAmount":{"name":"maxMinutelyForecastAmount","abstract":"

    The maximum number of minute-by-minute forecasts.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceManifest.html#/c:objc(cs)SDLWeatherServiceManifest(py)weatherForLocationSupported":{"name":"weatherForLocationSupported","abstract":"

    Whether or not the weather for location is supported.

    ","parent_name":"SDLWeatherServiceManifest"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(im)initWithLocation:":{"name":"-initWithLocation:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(im)initWithLocation:currentForecast:minuteForecast:hourlyForecast:multidayForecast:alerts:":{"name":"-initWithLocation:currentForecast:minuteForecast:hourlyForecast:multidayForecast:alerts:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)location":{"name":"location","abstract":"

    The location.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)currentForecast":{"name":"currentForecast","abstract":"

    The current forecast.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)minuteForecast":{"name":"minuteForecast","abstract":"

    A minute-by-minute array of forecasts.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)hourlyForecast":{"name":"hourlyForecast","abstract":"

    An hour-by-hour array of forecasts.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)multidayForecast":{"name":"multidayForecast","abstract":"

    A day-by-day array of forecasts.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherServiceData.html#/c:objc(cs)SDLWeatherServiceData(py)alerts":{"name":"alerts","abstract":"

    An array of weather alerts. This array should be ordered with the first object being the current day.

    ","parent_name":"SDLWeatherServiceData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(im)initWithCurrentTemperature:temperatureHigh:temperatureLow:apparentTemperature:apparentTemperatureHigh:apparentTemperatureLow:weatherSummary:time:humidity:cloudCover:moonPhase:windBearing:windGust:windSpeed:nearestStormBearing:nearestStormDistance:precipAccumulation:precipIntensity:precipProbability:precipType:visibility:weatherIcon:":{"name":"-initWithCurrentTemperature:temperatureHigh:temperatureLow:apparentTemperature:apparentTemperatureHigh:apparentTemperatureLow:weatherSummary:time:humidity:cloudCover:moonPhase:windBearing:windGust:windSpeed:nearestStormBearing:nearestStormDistance:precipAccumulation:precipIntensity:precipProbability:precipType:visibility:weatherIcon:","abstract":"

    Convenience init for all parameters

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)currentTemperature":{"name":"currentTemperature","abstract":"

    The current temperature.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)temperatureHigh":{"name":"temperatureHigh","abstract":"

    The predicted high temperature for the day.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)temperatureLow":{"name":"temperatureLow","abstract":"

    The predicted low temperature for the day.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)apparentTemperature":{"name":"apparentTemperature","abstract":"

    The apparent temperature.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)apparentTemperatureHigh":{"name":"apparentTemperatureHigh","abstract":"

    The predicted high apparent temperature for the day.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)apparentTemperatureLow":{"name":"apparentTemperatureLow","abstract":"

    The predicted low apparent temperature for the day.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)weatherSummary":{"name":"weatherSummary","abstract":"

    A summary of the weather.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)time":{"name":"time","abstract":"

    The time this data refers to.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)humidity":{"name":"humidity","abstract":"

    From 0 to 1, percentage humidity.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)cloudCover":{"name":"cloudCover","abstract":"

    From 0 to 1, percentage cloud cover.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)moonPhase":{"name":"moonPhase","abstract":"

    From 0 to 1, percentage of the moon seen, e.g. 0 = no moon, 0.25 = quarter moon

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)windBearing":{"name":"windBearing","abstract":"

    In degrees, true north at 0 degrees.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)windGust":{"name":"windGust","abstract":"

    In km/hr

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)windSpeed":{"name":"windSpeed","abstract":"

    In km/hr

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)nearestStormBearing":{"name":"nearestStormBearing","abstract":"

    In degrees, true north at 0 degrees.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)nearestStormDistance":{"name":"nearestStormDistance","abstract":"

    In km

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)precipAccumulation":{"name":"precipAccumulation","abstract":"

    In cm

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)precipIntensity":{"name":"precipIntensity","abstract":"

    In cm of water per hour.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)precipProbability":{"name":"precipProbability","abstract":"

    From 0 to 1, percentage chance.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)precipType":{"name":"precipType","abstract":"

    A description of the precipitation type (e.g. rain, snow, sleet, hail)

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)visibility":{"name":"visibility","abstract":"

    In km

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherData.html#/c:objc(cs)SDLWeatherData(py)weatherIcon":{"name":"weatherIcon","abstract":"

    The weather icon image.

    ","parent_name":"SDLWeatherData"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(im)initWithTitle:summary:expires:regions:severity:timeIssued:":{"name":"-initWithTitle:summary:expires:regions:severity:timeIssued:","abstract":"

    Convenience init for all parameters

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)title":{"name":"title","abstract":"

    The title of the alert.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)summary":{"name":"summary","abstract":"

    A summary for the alert.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)expires":{"name":"expires","abstract":"

    The date the alert expires.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)regions":{"name":"regions","abstract":"

    Regions affected.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)severity":{"name":"severity","abstract":"

    Severity of the weather alert.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLWeatherAlert.html#/c:objc(cs)SDLWeatherAlert(py)timeIssued":{"name":"timeIssued","abstract":"

    The date the alert was issued.

    ","parent_name":"SDLWeatherAlert"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(im)initWithText:image:":{"name":"-initWithText:image:","abstract":"

    Undocumented

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(im)initWithText:image:position:":{"name":"-initWithText:image:position:","abstract":"

    Undocumented

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(py)text":{"name":"text","abstract":"

    Text to display for VR Help item

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(py)image":{"name":"image","abstract":"

    Image for VR Help item

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVRHelpItem.html#/c:objc(cs)SDLVRHelpItem(py)position":{"name":"position","abstract":"

    Position to display item in VR Help list

    ","parent_name":"SDLVRHelpItem"},"Classes/SDLVoiceCommand.html#/c:objc(cs)SDLVoiceCommand(py)voiceCommands":{"name":"voiceCommands","abstract":"

    The strings the user can say to activate this voice command

    ","parent_name":"SDLVoiceCommand"},"Classes/SDLVoiceCommand.html#/c:objc(cs)SDLVoiceCommand(py)handler":{"name":"handler","abstract":"

    The handler that will be called when the command is activated

    ","parent_name":"SDLVoiceCommand"},"Classes/SDLVoiceCommand.html#/c:objc(cs)SDLVoiceCommand(im)initWithVoiceCommands:handler:":{"name":"-initWithVoiceCommands:handler:","abstract":"

    Undocumented

    ","parent_name":"SDLVoiceCommand"},"Classes/SDLVideoStreamingFormat.html#/c:objc(cs)SDLVideoStreamingFormat(py)protocol":{"name":"protocol","abstract":"

    Protocol type, see VideoStreamingProtocol

    ","parent_name":"SDLVideoStreamingFormat"},"Classes/SDLVideoStreamingFormat.html#/c:objc(cs)SDLVideoStreamingFormat(py)codec":{"name":"codec","abstract":"

    Codec type, see VideoStreamingCodec

    ","parent_name":"SDLVideoStreamingFormat"},"Classes/SDLVideoStreamingFormat.html#/c:objc(cs)SDLVideoStreamingFormat(im)initWithCodec:protocol:":{"name":"-initWithCodec:protocol:","abstract":"

    Undocumented

    ","parent_name":"SDLVideoStreamingFormat"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(im)initWithPreferredResolution:maxBitrate:supportedFormats:hapticDataSupported:":{"name":"-initWithPreferredResolution:maxBitrate:supportedFormats:hapticDataSupported:","abstract":"

    Undocumented

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(py)preferredResolution":{"name":"preferredResolution","abstract":"

    The preferred resolution of a video stream for decoding and rendering on HMI

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(py)maxBitrate":{"name":"maxBitrate","abstract":"

    The maximum bitrate of video stream that is supported, in kbps, optional

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(py)supportedFormats":{"name":"supportedFormats","abstract":"

    Detailed information on each format supported by this system, in its preferred order

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVideoStreamingCapability.html#/c:objc(cs)SDLVideoStreamingCapability(py)hapticSpatialDataSupported":{"name":"hapticSpatialDataSupported","abstract":"

    True if the system can utilize the haptic spatial data from the source being streamed.

    ","parent_name":"SDLVideoStreamingCapability"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(py)major":{"name":"major","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(py)minor":{"name":"minor","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(py)patch":{"name":"patch","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(py)stringVersion":{"name":"stringVersion","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)initWithMajor:minor:patch:":{"name":"-initWithMajor:minor:patch:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(cm)versionWithMajor:minor:patch:":{"name":"+versionWithMajor:minor:patch:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)initWithString:":{"name":"-initWithString:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(cm)versionWithString:":{"name":"+versionWithString:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)initWithSyncMsgVersion:":{"name":"-initWithSyncMsgVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(cm)versionWithSyncMsgVersion:":{"name":"+versionWithSyncMsgVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)compare:":{"name":"-compare:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isLessThanVersion:":{"name":"-isLessThanVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isEqualToVersion:":{"name":"-isEqualToVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isGreaterThanVersion:":{"name":"-isGreaterThanVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isGreaterThanOrEqualToVersion:":{"name":"-isGreaterThanOrEqualToVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVersion.html#/c:objc(cs)SDLVersion(im)isLessThanOrEqualToVersion:":{"name":"-isLessThanOrEqualToVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLVersion"},"Classes/SDLVehicleType.html#/c:objc(cs)SDLVehicleType(py)make":{"name":"make","abstract":"

    The make of the vehicle

    ","parent_name":"SDLVehicleType"},"Classes/SDLVehicleType.html#/c:objc(cs)SDLVehicleType(py)model":{"name":"model","abstract":"

    The model of the vehicle

    ","parent_name":"SDLVehicleType"},"Classes/SDLVehicleType.html#/c:objc(cs)SDLVehicleType(py)modelYear":{"name":"modelYear","abstract":"

    The model year of the vehicle

    ","parent_name":"SDLVehicleType"},"Classes/SDLVehicleType.html#/c:objc(cs)SDLVehicleType(py)trim":{"name":"trim","abstract":"

    The trim of the vehicle

    ","parent_name":"SDLVehicleType"},"Classes/SDLVehicleDataResult.html#/c:objc(cs)SDLVehicleDataResult(py)dataType":{"name":"dataType","abstract":"

    Defined published data element type

    ","parent_name":"SDLVehicleDataResult"},"Classes/SDLVehicleDataResult.html#/c:objc(cs)SDLVehicleDataResult(py)resultCode":{"name":"resultCode","abstract":"

    Published data result code

    ","parent_name":"SDLVehicleDataResult"},"Classes/SDLUpdateTurnList.html#/c:objc(cs)SDLUpdateTurnList(im)initWithTurnList:softButtons:":{"name":"-initWithTurnList:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLUpdateTurnList"},"Classes/SDLUpdateTurnList.html#/c:objc(cs)SDLUpdateTurnList(py)turnList":{"name":"turnList","abstract":"

    Optional, SDLTurn, 1 - 100 entries

    ","parent_name":"SDLUpdateTurnList"},"Classes/SDLUpdateTurnList.html#/c:objc(cs)SDLUpdateTurnList(py)softButtons":{"name":"softButtons","abstract":"

    Required, SDLSoftButton, 0 - 1 Entries

    ","parent_name":"SDLUpdateTurnList"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)gps":{"name":"gps","abstract":"

    The result of requesting to unsubscribe to the GPSData.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)speed":{"name":"speed","abstract":"

    The result of requesting to unsubscribe to the vehicle speed in kilometers per hour.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)rpm":{"name":"rpm","abstract":"

    The result of requesting to unsubscribe to the number of revolutions per minute of the engine.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)fuelLevel":{"name":"fuelLevel","abstract":"

    The result of requesting to unsubscribe to the fuel level in the tank (percentage)

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    The result of requesting to unsubscribe to the fuel level state.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)fuelRange":{"name":"fuelRange","abstract":"

    The result of requesting to unsubscribe to the fuel range.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    The result of requesting to unsubscribe to the instantaneous fuel consumption in microlitres.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)externalTemperature":{"name":"externalTemperature","abstract":"

    The result of requesting to unsubscribe to the external temperature in degrees celsius.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)prndl":{"name":"prndl","abstract":"

    The result of requesting to unsubscribe to the PRNDL status.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)tirePressure":{"name":"tirePressure","abstract":"

    The result of requesting to unsubscribe to the tireStatus.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)odometer":{"name":"odometer","abstract":"

    The result of requesting to unsubscribe to the odometer in km.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)beltStatus":{"name":"beltStatus","abstract":"

    The result of requesting to unsubscribe to the status of the seat belts.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)bodyInformation":{"name":"bodyInformation","abstract":"

    The result of requesting to unsubscribe to the body information including power modes.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)deviceStatus":{"name":"deviceStatus","abstract":"

    The result of requesting to unsubscribe to the device status including signal and battery strength.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)driverBraking":{"name":"driverBraking","abstract":"

    The result of requesting to unsubscribe to the status of the brake pedal.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)wiperStatus":{"name":"wiperStatus","abstract":"

    The result of requesting to unsubscribe to the status of the wipers.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)headLampStatus":{"name":"headLampStatus","abstract":"

    The result of requesting to unsubscribe to the status of the head lamps.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)engineOilLife":{"name":"engineOilLife","abstract":"

    The result of requesting to unsubscribe to the estimated percentage of remaining oil life of the engine.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)engineTorque":{"name":"engineTorque","abstract":"

    The result of requesting to unsubscribe to the torque value for engine (in Nm) on non-diesel variants.

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    The result of requesting to unsubscribe to the accelerator pedal position (percentage depressed)

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    The result of requesting to unsubscribe to the current angle of the steering wheel (in deg)

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)eCallInfo":{"name":"eCallInfo","abstract":"

    The result of requesting to unsubscribe to the emergency call info

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)airbagStatus":{"name":"airbagStatus","abstract":"

    The result of requesting to unsubscribe to the airbag status

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    The result of requesting to unsubscribe to the emergency event

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)clusterModes":{"name":"clusterModes","abstract":"

    The result of requesting to unsubscribe to the cluster modes

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)myKey":{"name":"myKey","abstract":"

    The result of requesting to unsubscribe to the myKey status

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    The result of requesting to unsubscribe to the electronic parking brake status

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)turnSignal":{"name":"turnSignal","abstract":"

    The result of requesting to unsubscribe to the turn signal

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleDataResponse.html#/c:objc(cs)SDLUnsubscribeVehicleDataResponse(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    The result of requesting to unsubscribe to the cloud app vehicle id

    ","parent_name":"SDLUnsubscribeVehicleDataResponse"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:","abstract":"

    Convenience init for unsubscribing to all possible vehicle data items.

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:","abstract":"

    Convenience init for unsubscribing to all possible vehicle data items.

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:","abstract":"

    Convenience init for unsubscribing to all possible vehicle data items.

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)gps":{"name":"gps","abstract":"

    If true, unsubscribes from GPS

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)speed":{"name":"speed","abstract":"

    If true, unsubscribes from Speed

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)rpm":{"name":"rpm","abstract":"

    If true, unsubscribes from RPM

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)fuelLevel":{"name":"fuelLevel","abstract":"

    If true, unsubscribes from Fuel Level

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    If true, unsubscribes from Fuel Level State

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)fuelRange":{"name":"fuelRange","abstract":"

    If true, unsubscribes from Fuel Range

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    If true, unsubscribes from Instant Fuel Consumption

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)externalTemperature":{"name":"externalTemperature","abstract":"

    If true, unsubscribes from External Temperature

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)prndl":{"name":"prndl","abstract":"

    If true, unsubscribes from PRNDL

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)tirePressure":{"name":"tirePressure","abstract":"

    If true, unsubscribes from Tire Pressure

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)odometer":{"name":"odometer","abstract":"

    If true, unsubscribes from Odometer

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)beltStatus":{"name":"beltStatus","abstract":"

    If true, unsubscribes from Belt Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)bodyInformation":{"name":"bodyInformation","abstract":"

    If true, unsubscribes from Body Information

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)deviceStatus":{"name":"deviceStatus","abstract":"

    If true, unsubscribes from Device Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)driverBraking":{"name":"driverBraking","abstract":"

    If true, unsubscribes from Driver Braking

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)wiperStatus":{"name":"wiperStatus","abstract":"

    If true, unsubscribes from Wiper Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)headLampStatus":{"name":"headLampStatus","abstract":"

    If true, unsubscribes from Head Lamp Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)engineOilLife":{"name":"engineOilLife","abstract":"

    If true, unsubscribes from Engine Oil Life

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)engineTorque":{"name":"engineTorque","abstract":"

    If true, unsubscribes from Engine Torque

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    If true, unsubscribes from Acc Pedal Position

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    If true, unsubscribes from Steering Wheel Angle data

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)eCallInfo":{"name":"eCallInfo","abstract":"

    If true, unsubscribes from eCallInfo

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)airbagStatus":{"name":"airbagStatus","abstract":"

    If true, unsubscribes from Airbag Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    If true, unsubscribes from Emergency Event

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    If true, unsubscribes from Cluster Mode Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)myKey":{"name":"myKey","abstract":"

    If true, unsubscribes from My Key

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    A boolean value. If true, unsubscribes to the Electronic Parking Brake Status

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)turnSignal":{"name":"turnSignal","abstract":"

    A boolean value. If true, unsubscribes to the Turn Signal

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeVehicleData.html#/c:objc(cs)SDLUnsubscribeVehicleData(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    A boolean value. If true, unsubscribes to the Cloud App Vehicle ID

    ","parent_name":"SDLUnsubscribeVehicleData"},"Classes/SDLUnsubscribeButton.html#/c:objc(cs)SDLUnsubscribeButton(im)initWithButtonName:":{"name":"-initWithButtonName:","abstract":"

    Undocumented

    ","parent_name":"SDLUnsubscribeButton"},"Classes/SDLUnsubscribeButton.html#/c:objc(cs)SDLUnsubscribeButton(py)buttonName":{"name":"buttonName","abstract":"

    A name of the button to unsubscribe from","parent_name":"SDLUnsubscribeButton"},"Classes/SDLTurn.html#/c:objc(cs)SDLTurn(im)initWithNavigationText:turnIcon:":{"name":"-initWithNavigationText:turnIcon:","abstract":"

    Undocumented

    ","parent_name":"SDLTurn"},"Classes/SDLTurn.html#/c:objc(cs)SDLTurn(py)navigationText":{"name":"navigationText","abstract":"

    Individual turn text. Must provide at least text or icon for a given turn

    ","parent_name":"SDLTurn"},"Classes/SDLTurn.html#/c:objc(cs)SDLTurn(py)turnIcon":{"name":"turnIcon","abstract":"

    Individual turn icon. Must provide at least text or icon for a given turn

    ","parent_name":"SDLTurn"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)touchEventDelegate":{"name":"touchEventDelegate","abstract":"

    Notified of processed touches such as pinches, pans, and taps

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)touchEventHandler":{"name":"touchEventHandler","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)tapDistanceThreshold":{"name":"tapDistanceThreshold","abstract":"

    Distance between two taps on the screen, in the head unit’s coordinate system, used for registering double-tap callbacks.

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)panDistanceThreshold":{"name":"panDistanceThreshold","abstract":"

    Minimum distance for a pan gesture in the head unit’s coordinate system, used for registering pan callbacks.

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)tapTimeThreshold":{"name":"tapTimeThreshold","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)movementTimeThreshold":{"name":"movementTimeThreshold","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)enableSyncedPanning":{"name":"enableSyncedPanning","abstract":"

    If set to NO, the display link syncing will be ignored and movementTimeThreshold will be used. Defaults to YES.

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(py)touchEnabled":{"name":"touchEnabled","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(im)cancelPendingTouches":{"name":"-cancelPendingTouches","abstract":"

    @abstract","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(im)initWithHitTester:":{"name":"-initWithHitTester:","abstract":"

    Initialize a touch manager with a hit tester if available

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchManager.html#/c:objc(cs)SDLTouchManager(im)syncFrame":{"name":"-syncFrame","abstract":"

    Called by SDLStreamingMediaManager in sync with the streaming framerate. This helps to moderate panning gestures by allowing the UI to be modified in time with the framerate.

    ","parent_name":"SDLTouchManager"},"Classes/SDLTouchEventCapabilities.html#/c:objc(cs)SDLTouchEventCapabilities(py)pressAvailable":{"name":"pressAvailable","abstract":"

    Whether or not long presses are available

    ","parent_name":"SDLTouchEventCapabilities"},"Classes/SDLTouchEventCapabilities.html#/c:objc(cs)SDLTouchEventCapabilities(py)multiTouchAvailable":{"name":"multiTouchAvailable","abstract":"

    Whether or not multi-touch (e.g. a pinch gesture) is available

    ","parent_name":"SDLTouchEventCapabilities"},"Classes/SDLTouchEventCapabilities.html#/c:objc(cs)SDLTouchEventCapabilities(py)doublePressAvailable":{"name":"doublePressAvailable","abstract":"

    Whether or not a double tap is available

    ","parent_name":"SDLTouchEventCapabilities"},"Classes/SDLTouchEvent.html#/c:objc(cs)SDLTouchEvent(py)touchEventId":{"name":"touchEventId","abstract":"

    A touch’s unique identifier. The application can track the current touch events by id.

    ","parent_name":"SDLTouchEvent"},"Classes/SDLTouchEvent.html#/c:objc(cs)SDLTouchEvent(py)timeStamp":{"name":"timeStamp","abstract":"

    The time that the touch was recorded. This number can the time since the beginning of the session or something else as long as the units are in milliseconds.

    ","parent_name":"SDLTouchEvent"},"Classes/SDLTouchEvent.html#/c:objc(cs)SDLTouchEvent(py)coord":{"name":"coord","abstract":"

    The touch’s coordinate

    ","parent_name":"SDLTouchEvent"},"Classes/SDLTouchCoord.html#/c:objc(cs)SDLTouchCoord(py)x":{"name":"x","abstract":"

    The x value of the touch coordinate

    ","parent_name":"SDLTouchCoord"},"Classes/SDLTouchCoord.html#/c:objc(cs)SDLTouchCoord(py)y":{"name":"y","abstract":"

    The y value of the touch coordinate

    ","parent_name":"SDLTouchCoord"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(im)initWithTouchEvent:":{"name":"-initWithTouchEvent:","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)identifier":{"name":"identifier","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)location":{"name":"location","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)timeStamp":{"name":"timeStamp","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)isFirstFinger":{"name":"isFirstFinger","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTouch.html#/c:objc(cs)SDLTouch(py)isSecondFinger":{"name":"isSecondFinger","abstract":"

    @abstract","parent_name":"SDLTouch"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)pressureTelltale":{"name":"pressureTelltale","abstract":"

    Status of the Tire Pressure Telltale. See WarningLightStatus.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)leftFront":{"name":"leftFront","abstract":"

    The status of the left front tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)rightFront":{"name":"rightFront","abstract":"

    The status of the right front tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)leftRear":{"name":"leftRear","abstract":"

    The status of the left rear tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)rightRear":{"name":"rightRear","abstract":"

    The status of the right rear tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)innerLeftRear":{"name":"innerLeftRear","abstract":"

    The status of the inner left rear tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTireStatus.html#/c:objc(cs)SDLTireStatus(py)innerRightRear":{"name":"innerRightRear","abstract":"

    The status of the innter right rear tire.

    ","parent_name":"SDLTireStatus"},"Classes/SDLTextField.html#/c:objc(cs)SDLTextField(py)name":{"name":"name","abstract":"

    The enumeration identifying the field.

    ","parent_name":"SDLTextField"},"Classes/SDLTextField.html#/c:objc(cs)SDLTextField(py)characterSet":{"name":"characterSet","abstract":"

    The character set that is supported in this field.

    ","parent_name":"SDLTextField"},"Classes/SDLTextField.html#/c:objc(cs)SDLTextField(py)width":{"name":"width","abstract":"

    The number of characters in one row of this field.

    ","parent_name":"SDLTextField"},"Classes/SDLTextField.html#/c:objc(cs)SDLTextField(py)rows":{"name":"rows","abstract":"

    The number of rows for this text field.

    ","parent_name":"SDLTextField"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(im)initWithPrimaryRGBColor:secondaryRGBColor:backgroundRGBColor:":{"name":"-initWithPrimaryRGBColor:secondaryRGBColor:backgroundRGBColor:","abstract":"

    Undocumented

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(im)initWithPrimaryColor:secondaryColor:backgroundColor:":{"name":"-initWithPrimaryColor:secondaryColor:backgroundColor:","abstract":"

    Undocumented

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(py)primaryColor":{"name":"primaryColor","abstract":"

    The primary color. This must always be your primary brand color. If the OEM only uses one color, this will be the color. It is recommended to the OEMs that the primaryColor should change the mediaClockTimer bar and the highlight color of soft buttons.

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(py)secondaryColor":{"name":"secondaryColor","abstract":"

    The secondary color. This may be an accent or complimentary color to your primary brand color. If the OEM uses this color, they must also use the primary color. It is recommended to the OEMs that the secondaryColor should change the background color of buttons, such as soft buttons.

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemplateColorScheme.html#/c:objc(cs)SDLTemplateColorScheme(py)backgroundColor":{"name":"backgroundColor","abstract":"

    The background color to be used on the template. If the OEM does not support this parameter, assume on dayColorScheme that this will be a light color, and on nightColorScheme a dark color. You should do the same for your custom schemes.

    ","parent_name":"SDLTemplateColorScheme"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(im)initWithFahrenheitValue:":{"name":"-initWithFahrenheitValue:","abstract":"

    Convenience init for a fahrenheit temperature value.

    ","parent_name":"SDLTemperature"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(im)initWithCelsiusValue:":{"name":"-initWithCelsiusValue:","abstract":"

    Convenience init for a celsius temperature value.

    ","parent_name":"SDLTemperature"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(im)initWithUnit:value:":{"name":"-initWithUnit:value:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLTemperature"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(py)unit":{"name":"unit","abstract":"

    Temperature unit

    ","parent_name":"SDLTemperature"},"Classes/SDLTemperature.html#/c:objc(cs)SDLTemperature(py)value":{"name":"value","abstract":"

    Temperature value in specified unit. Range depends on OEM and is not checked by SDL.

    ","parent_name":"SDLTemperature"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(im)initWithText:type:":{"name":"-initWithText:type:","abstract":"

    Initialize with text and a type

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)textChunksFromString:":{"name":"+textChunksFromString:","abstract":"

    Create TTS using text

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)sapiChunksFromString:":{"name":"+sapiChunksFromString:","abstract":"

    Create TTS using SAPI

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)lhPlusChunksFromString:":{"name":"+lhPlusChunksFromString:","abstract":"

    Create TTS using LH Plus

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)prerecordedChunksFromString:":{"name":"+prerecordedChunksFromString:","abstract":"

    Create TTS using prerecorded chunks

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)silenceChunks":{"name":"+silenceChunks","abstract":"

    Create TTS using silence

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(cm)fileChunksWithName:":{"name":"+fileChunksWithName:","abstract":"

    Create TTS to play an audio file previously uploaded to the system.

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(py)text":{"name":"text","abstract":"

    Text to be spoken, a phoneme specification, or the name of a pre-recorded / pre-uploaded sound. The contents of this field are indicated by the type field.

    ","parent_name":"SDLTTSChunk"},"Classes/SDLTTSChunk.html#/c:objc(cs)SDLTTSChunk(py)type":{"name":"type","abstract":"

    The type of information in the text field (e.g. phrase to be spoken, phoneme specification, name of pre-recorded sound).

    ","parent_name":"SDLTTSChunk"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(im)initWithType:fileName:":{"name":"-initWithType:fileName:","abstract":"

    Create a generic system request with a file name

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(im)initWithProprietaryType:fileName:":{"name":"-initWithProprietaryType:fileName:","abstract":"

    Create an OEM_PROPRIETARY system request with a subtype and file name

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(py)requestType":{"name":"requestType","abstract":"

    The type of system request. Note that Proprietary requests should forward the binary data to the known proprietary module on the system.

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(py)requestSubType":{"name":"requestSubType","abstract":"

    A request subType used when the requestType is OEM_SPECIFIC.

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemRequest.html#/c:objc(cs)SDLSystemRequest(py)fileName":{"name":"fileName","abstract":"

    Filename of HTTP data to store in predefined system staging area.

    ","parent_name":"SDLSystemRequest"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)supportsSubscriptions":{"name":"supportsSubscriptions","abstract":"

    YES if subscriptions are available on the connected head unit. If NO, calls to subscribeToCapabilityType:withBlock and subscribeToCapabilityType:withObserver:selector will fail.

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)displayCapabilities":{"name":"displayCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)hmiCapabilities":{"name":"hmiCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)softButtonCapabilities":{"name":"softButtonCapabilities","abstract":"

    If returned, the platform supports on-screen SoftButtons

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)buttonCapabilities":{"name":"buttonCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)presetBankCapabilities":{"name":"presetBankCapabilities","abstract":"

    If returned, the platform supports custom on-screen Presets

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)hmiZoneCapabilities":{"name":"hmiZoneCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)speechCapabilities":{"name":"speechCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)prerecordedSpeechCapabilities":{"name":"prerecordedSpeechCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)vrCapability":{"name":"vrCapability","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)audioPassThruCapabilities":{"name":"audioPassThruCapabilities","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)pcmStreamCapability":{"name":"pcmStreamCapability","abstract":"
    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)appServicesCapabilities":{"name":"appServicesCapabilities","abstract":"

    If returned, the platform supports app services

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)navigationCapability":{"name":"navigationCapability","abstract":"

    If returned, the platform supports navigation

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)phoneCapability":{"name":"phoneCapability","abstract":"

    If returned, the platform supports making phone calls

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)videoStreamingCapability":{"name":"videoStreamingCapability","abstract":"

    If returned, the platform supports video streaming

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(py)remoteControlCapability":{"name":"remoteControlCapability","abstract":"

    If returned, the platform supports remote control capabilities

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)init":{"name":"-init","abstract":"

    Init is unavailable. Dependencies must be injected using initWithConnectionManager:

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)initWithConnectionManager:":{"name":"-initWithConnectionManager:","abstract":"

    Creates a new system capability manager with a specified connection manager

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)start":{"name":"-start","abstract":"

    Starts the manager. This method is used internally.

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)stop":{"name":"-stop","abstract":"

    Stops the manager. This method is used internally.

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)updateCapabilityType:completionHandler:":{"name":"-updateCapabilityType:completionHandler:","abstract":"

    Retrieves a capability type from the remote system. This function must be called in order to retrieve the values for navigationCapability, phoneCapability, videoStreamingCapability, remoteControlCapability, and appServicesCapabilities. If you do not call this method first, those values will be nil. After calling this method, assuming there is no error in the handler, you may retrieve the capability you requested from the manager within the handler.

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)subscribeToCapabilityType:withBlock:":{"name":"-subscribeToCapabilityType:withBlock:","abstract":"

    Subscribe to a particular capability type using a block callback

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)subscribeToCapabilityType:withObserver:selector:":{"name":"-subscribeToCapabilityType:withObserver:selector:","abstract":"

    Subscribe to a particular capability type with a selector callback. The selector supports the following parameters:

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapabilityManager.html#/c:objc(cs)SDLSystemCapabilityManager(im)unsubscribeFromCapabilityType:withObserver:":{"name":"-unsubscribeFromCapabilityType:withObserver:","abstract":"

    Unsubscribe from a particular capability type. If it was subscribed with a block, the return value should be passed to the observer to unsubscribe the block. If it was subscribed with a selector, the observer object should be passed to unsubscribe the object selector.

    ","parent_name":"SDLSystemCapabilityManager"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithAppServicesCapabilities:":{"name":"-initWithAppServicesCapabilities:","abstract":"

    Convenience init for an App Service Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithNavigationCapability:":{"name":"-initWithNavigationCapability:","abstract":"

    Convenience init for a Navigation Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithPhoneCapability:":{"name":"-initWithPhoneCapability:","abstract":"

    Convenience init for a Phone Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithVideoStreamingCapability:":{"name":"-initWithVideoStreamingCapability:","abstract":"

    Convenience init for a Video Streaming Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(im)initWithRemoteControlCapability:":{"name":"-initWithRemoteControlCapability:","abstract":"

    Convenience init for a Remote Control Capability

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)systemCapabilityType":{"name":"systemCapabilityType","abstract":"

    Used as a descriptor of what data to expect in this struct. The corresponding param to this enum should be included and the only other parameter included.

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)appServicesCapabilities":{"name":"appServicesCapabilities","abstract":"

    Describes the capabilities of app services including what service types are supported and the current state of services.

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)navigationCapability":{"name":"navigationCapability","abstract":"

    Describes the extended capabilities of the onboard navigation system

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)phoneCapability":{"name":"phoneCapability","abstract":"

    Describes the extended capabilities of the module’s phone feature

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)videoStreamingCapability":{"name":"videoStreamingCapability","abstract":"

    Describes the capabilities of the module’s video streaming feature

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSystemCapability.html#/c:objc(cs)SDLSystemCapability(py)remoteControlCapability":{"name":"remoteControlCapability","abstract":"

    Describes the extended capabilities of the module’s remote control feature

    ","parent_name":"SDLSystemCapability"},"Classes/SDLSyncMsgVersion.html#/c:objc(cs)SDLSyncMsgVersion(im)initWithMajorVersion:minorVersion:patchVersion:":{"name":"-initWithMajorVersion:minorVersion:patchVersion:","abstract":"

    Undocumented

    ","parent_name":"SDLSyncMsgVersion"},"Classes/SDLSyncMsgVersion.html#/c:objc(cs)SDLSyncMsgVersion(py)majorVersion":{"name":"majorVersion","abstract":"

    The major version indicates versions that is not-compatible to previous versions

    ","parent_name":"SDLSyncMsgVersion"},"Classes/SDLSyncMsgVersion.html#/c:objc(cs)SDLSyncMsgVersion(py)minorVersion":{"name":"minorVersion","abstract":"

    The minor version indicates a change to a previous version that should still allow to be run on an older version (with limited functionality)

    ","parent_name":"SDLSyncMsgVersion"},"Classes/SDLSyncMsgVersion.html#/c:objc(cs)SDLSyncMsgVersion(py)patchVersion":{"name":"patchVersion","abstract":"

    Allows backward-compatible fixes to the API without increasing the minor version of the interface

    ","parent_name":"SDLSyncMsgVersion"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)gps":{"name":"gps","abstract":"

    The result of requesting to subscribe to the GPSData.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)speed":{"name":"speed","abstract":"

    The result of requesting to subscribe to the vehicle speed in kilometers per hour.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)rpm":{"name":"rpm","abstract":"

    The result of requesting to subscribe to the number of revolutions per minute of the engine.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)fuelLevel":{"name":"fuelLevel","abstract":"

    The result of requesting to subscribe to the fuel level in the tank (percentage)

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    The result of requesting to subscribe to the fuel level state.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)fuelRange":{"name":"fuelRange","abstract":"

    The result of requesting to subscribe to the fuel range.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    The result of requesting to subscribe to the instantaneous fuel consumption in microlitres.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)externalTemperature":{"name":"externalTemperature","abstract":"

    The result of requesting to subscribe to the external temperature in degrees celsius.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)prndl":{"name":"prndl","abstract":"

    The result of requesting to subscribe to the PRNDL status.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)tirePressure":{"name":"tirePressure","abstract":"

    The result of requesting to subscribe to the tireStatus.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)odometer":{"name":"odometer","abstract":"

    The result of requesting to subscribe to the odometer in km.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)beltStatus":{"name":"beltStatus","abstract":"

    The result of requesting to subscribe to the status of the seat belts.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)bodyInformation":{"name":"bodyInformation","abstract":"

    The result of requesting to subscribe to the body information including power modes.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)deviceStatus":{"name":"deviceStatus","abstract":"

    The result of requesting to subscribe to the device status including signal and battery strength.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)driverBraking":{"name":"driverBraking","abstract":"

    The result of requesting to subscribe to the status of the brake pedal.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)wiperStatus":{"name":"wiperStatus","abstract":"

    The result of requesting to subscribe to the status of the wipers.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)headLampStatus":{"name":"headLampStatus","abstract":"

    The result of requesting to subscribe to the status of the head lamps.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)engineOilLife":{"name":"engineOilLife","abstract":"

    The result of requesting to subscribe to the estimated percentage of remaining oil life of the engine.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)engineTorque":{"name":"engineTorque","abstract":"

    The result of requesting to subscribe to the torque value for engine (in Nm) on non-diesel variants.

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    The result of requesting to subscribe to the accelerator pedal position (percentage depressed)

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    The result of requesting to subscribe to the current angle of the steering wheel (in deg)

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)eCallInfo":{"name":"eCallInfo","abstract":"

    The result of requesting to subscribe to the emergency call info

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)airbagStatus":{"name":"airbagStatus","abstract":"

    The result of requesting to subscribe to the airbag status

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    The result of requesting to subscribe to the emergency event

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)clusterModes":{"name":"clusterModes","abstract":"

    The result of requesting to subscribe to the cluster modes

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)myKey":{"name":"myKey","abstract":"

    The result of requesting to subscribe to the myKey status

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    The result of requesting to subscribe to the electronic parking brake status

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)turnSignal":{"name":"turnSignal","abstract":"

    The result of requesting to subscribe to the turn signal

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleDataResponse.html#/c:objc(cs)SDLSubscribeVehicleDataResponse(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    The result of requesting to subscribe to the cloud app vehicle ID

    ","parent_name":"SDLSubscribeVehicleDataResponse"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:wiperStatus:","abstract":"

    Convenience init for subscribing to all possible vehicle data items.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:","abstract":"

    Convenience init for subscribing to all possible vehicle data items.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:wiperStatus:","abstract":"

    Convenience init for subscribing to all possible vehicle data items.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)gps":{"name":"gps","abstract":"

    A boolean value. If true, subscribes GPS data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)speed":{"name":"speed","abstract":"

    A boolean value. If true, subscribes Speed data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)rpm":{"name":"rpm","abstract":"

    A boolean value. If true, subscribes RPM data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)fuelLevel":{"name":"fuelLevel","abstract":"

    A boolean value. If true, subscribes Fuel Level data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    A boolean value. If true, subscribes Fuel Level State data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)fuelRange":{"name":"fuelRange","abstract":"

    A boolean value. If true, subscribes Fuel Range data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    A boolean value. If true, subscribes Instant Fuel Consumption data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)externalTemperature":{"name":"externalTemperature","abstract":"

    A boolean value. If true, subscribes External Temperature data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)prndl":{"name":"prndl","abstract":"

    A boolean value. If true, subscribes PRNDL data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)tirePressure":{"name":"tirePressure","abstract":"

    A boolean value. If true, subscribes Tire Pressure status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)odometer":{"name":"odometer","abstract":"

    A boolean value. If true, subscribes Odometer data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)beltStatus":{"name":"beltStatus","abstract":"

    A boolean value. If true, subscribes Belt Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)bodyInformation":{"name":"bodyInformation","abstract":"

    A boolean value. If true, subscribes Body Information data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)deviceStatus":{"name":"deviceStatus","abstract":"

    A boolean value. If true, subscribes Device Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)driverBraking":{"name":"driverBraking","abstract":"

    A boolean value. If true, subscribes Driver Braking data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)wiperStatus":{"name":"wiperStatus","abstract":"

    A boolean value. If true, subscribes Wiper Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)headLampStatus":{"name":"headLampStatus","abstract":"

    A boolean value. If true, subscribes Head Lamp Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)engineOilLife":{"name":"engineOilLife","abstract":"

    A boolean value. If true, subscribes to Engine Oil Life data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)engineTorque":{"name":"engineTorque","abstract":"

    A boolean value. If true, subscribes Engine Torque data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    A boolean value. If true, subscribes Acc Pedal Position data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    A boolean value. If true, subscribes Steering Wheel Angle data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)eCallInfo":{"name":"eCallInfo","abstract":"

    A boolean value. If true, subscribes eCall Info data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)airbagStatus":{"name":"airbagStatus","abstract":"

    A boolean value. If true, subscribes Airbag Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    A boolean value. If true, subscribes Emergency Event data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    A boolean value. If true, subscribes Cluster Mode Status data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)myKey":{"name":"myKey","abstract":"

    A boolean value. If true, subscribes myKey data.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    A boolean value. If true, subscribes to the electronic parking brake status.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)turnSignal":{"name":"turnSignal","abstract":"

    A boolean value. If true, subscribes to the turn signal status.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeVehicleData.html#/c:objc(cs)SDLSubscribeVehicleData(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    A boolean value. If true, subscribes to the cloud app vehicle ID.

    ","parent_name":"SDLSubscribeVehicleData"},"Classes/SDLSubscribeButton.html#/c:objc(cs)SDLSubscribeButton(im)initWithHandler:":{"name":"-initWithHandler:","abstract":"

    Construct a SDLSubscribeButton with a handler callback when an event occurs.

    ","parent_name":"SDLSubscribeButton"},"Classes/SDLSubscribeButton.html#/c:objc(cs)SDLSubscribeButton(im)initWithButtonName:handler:":{"name":"-initWithButtonName:handler:","abstract":"

    Undocumented

    ","parent_name":"SDLSubscribeButton"},"Classes/SDLSubscribeButton.html#/c:objc(cs)SDLSubscribeButton(py)handler":{"name":"handler","abstract":"

    A handler that will let you know when the button you subscribed to is selected.

    ","parent_name":"SDLSubscribeButton"},"Classes/SDLSubscribeButton.html#/c:objc(cs)SDLSubscribeButton(py)buttonName":{"name":"buttonName","abstract":"

    The name of the button to subscribe to","parent_name":"SDLSubscribeButton"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)touchManager":{"name":"touchManager","abstract":"

    Touch Manager responsible for providing touch event notifications.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)audioManager":{"name":"audioManager","abstract":"

    Audio Manager responsible for managing streaming audio.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)rootViewController":{"name":"rootViewController","abstract":"

    This property is used for SDLCarWindow, the ability to stream any view controller. To start, you must set an initial view controller on SDLStreamingMediaConfiguration rootViewController. After streaming begins, you can replace that view controller with a new root by placing the new view controller into this property.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)focusableItemManager":{"name":"focusableItemManager","abstract":"

    A haptic interface that can be updated to reparse views within the window you’ve provided. Send a SDLDidUpdateProjectionView notification or call the updateInterfaceLayout method to reparse. The output of this haptic interface occurs in the touchManager property where it will call the delegate.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)streamingSupported":{"name":"streamingSupported","abstract":"

    Whether or not video streaming is supported

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)videoConnected":{"name":"videoConnected","abstract":"

    Whether or not the video session is connected.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)videoEncrypted":{"name":"videoEncrypted","abstract":"

    Whether or not the video session is encrypted. This may be different than the requestedEncryptionType.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)audioConnected":{"name":"audioConnected","abstract":"

    Whether or not the audio session is connected.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)audioEncrypted":{"name":"audioEncrypted","abstract":"

    Whether or not the audio session is encrypted. This may be different than the requestedEncryptionType.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)videoStreamingPaused":{"name":"videoStreamingPaused","abstract":"

    Whether or not the video stream is paused due to either the application being backgrounded, the HMI state being either NONE or BACKGROUND, or the video stream not being ready.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)screenSize":{"name":"screenSize","abstract":"

    This is the current screen size of a connected display. This will be the size the video encoder uses to encode the raw image data.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)videoFormat":{"name":"videoFormat","abstract":"

    This is the agreed upon format of video encoder that is in use, or nil if not currently connected.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)supportedFormats":{"name":"supportedFormats","abstract":"

    A list of all supported video formats by this manager

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)pixelBufferPool":{"name":"pixelBufferPool","abstract":"

    The pixel buffer pool reference returned back from an active VTCompressionSessionRef encoder.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(py)requestedEncryptionType":{"name":"requestedEncryptionType","abstract":"

    The requested encryption type when a session attempts to connect. This setting applies to both video and audio sessions.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)initWithConnectionManager:configuration:":{"name":"-initWithConnectionManager:configuration:","abstract":"

    Create a new streaming media manager for navigation and VPM apps with a specified configuration

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)startWithProtocol:":{"name":"-startWithProtocol:","abstract":"

    Start the manager with a completion block that will be called when startup completes. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on SDLManager.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)startAudioWithProtocol:":{"name":"-startAudioWithProtocol:","abstract":"

    Start the audio feature of the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on SDLManager.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)startVideoWithProtocol:":{"name":"-startVideoWithProtocol:","abstract":"

    Start the video feature of the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on SDLManager.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)stop":{"name":"-stop","abstract":"

    Stop the manager. This method is used internally.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)stopAudio":{"name":"-stopAudio","abstract":"

    Stop the audio feature of the manager. This method is used internally.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)stopVideo":{"name":"-stopVideo","abstract":"

    Stop the video feature of the manager. This method is used internally.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)sendVideoData:":{"name":"-sendVideoData:","abstract":"

    This method receives raw image data and will run iOS8+‘s hardware video encoder to turn the data into a video stream, which will then be passed to the connected head unit.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)sendVideoData:presentationTimestamp:":{"name":"-sendVideoData:presentationTimestamp:","abstract":"

    This method receives raw image data and will run iOS8+‘s hardware video encoder to turn the data into a video stream, which will then be passed to the connected head unit.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaManager.html#/c:objc(cs)SDLStreamingMediaManager(im)sendAudioData:":{"name":"-sendAudioData:","abstract":"

    This method receives PCM audio data and will attempt to send that data across to the head unit for immediate playback.

    ","parent_name":"SDLStreamingMediaManager"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)securityManagers":{"name":"securityManagers","abstract":"

    Set security managers which could be used. This is primarily used with video streaming applications to authenticate and perhaps encrypt traffic data.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)maximumDesiredEncryption":{"name":"maximumDesiredEncryption","abstract":"

    What encryption level video/audio streaming should be. The default is SDLStreamingEncryptionFlagAuthenticateAndEncrypt.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)customVideoEncoderSettings":{"name":"customVideoEncoderSettings","abstract":"

    Properties to use for applications that utilize the video encoder for streaming. See VTCompressionProperties.h for more details. For example, you can set kVTCompressionPropertyKey_ExpectedFrameRate to set your framerate. Setting the framerate this way will also set the framerate if you use CarWindow automatic streaming.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)dataSource":{"name":"dataSource","abstract":"

    Usable to change run time video stream setup behavior. Only use this and modify the results if you really know what you’re doing. The head unit defaults are generally good.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)rootViewController":{"name":"rootViewController","abstract":"

    Set the initial view controller your video streaming content is within.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)carWindowRenderingType":{"name":"carWindowRenderingType","abstract":"

    Declares if CarWindow will use layer rendering or view rendering. Defaults to layer rendering.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)enableForcedFramerateSync":{"name":"enableForcedFramerateSync","abstract":"

    When YES, the StreamingMediaManager will run a CADisplayLink with the framerate set to the video encoder settings kVTCompressionPropertyKey_ExpectedFrameRate. This then forces TouchManager (and CarWindow, if used) to sync their callbacks to the framerate. If using CarWindow, this must be YES. If NO, enableSyncedPanning on SDLTouchManager will be set to NO. Defaults to YES.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(py)allowMultipleViewControllerOrientations":{"name":"allowMultipleViewControllerOrientations","abstract":"

    When YES, the StreamingMediaManager will disable its internal checks that the rootViewController only has one supportedOrientation. Having multiple orientations can cause streaming issues. If you wish to disable this check, set it to YES. Defaults to NO.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(im)init":{"name":"-init","abstract":"

    Create an insecure video streaming configuration. No security managers will be provided and the encryption flag will be set to None. If you’d like custom video encoder settings, you can set the property manually.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(im)initWithSecurityManagers:encryptionFlag:videoSettings:dataSource:rootViewController:":{"name":"-initWithSecurityManagers:encryptionFlag:videoSettings:dataSource:rootViewController:","abstract":"

    Manually set all the properties to the streaming media configuration

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(im)initWithSecurityManagers:":{"name":"-initWithSecurityManagers:","abstract":"

    Create a secure configuration for each of the security managers provided.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(cm)secureConfigurationWithSecurityManagers:":{"name":"+secureConfigurationWithSecurityManagers:","abstract":"

    Create a secure configuration for each of the security managers provided.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(cm)insecureConfiguration":{"name":"+insecureConfiguration","abstract":"

    Create an insecure video streaming configuration. No security managers will be provided and the encryption flag will be set to None. If you’d like custom video encoder settings, you can set the property manually. This is equivalent to init.

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(cm)autostreamingInsecureConfigurationWithInitialViewController:":{"name":"+autostreamingInsecureConfigurationWithInitialViewController:","abstract":"

    Create a CarWindow insecure configuration with a view controller

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStreamingMediaConfiguration.html#/c:objc(cs)SDLStreamingMediaConfiguration(cm)autostreamingSecureConfigurationWithSecurityManagers:initialViewController:":{"name":"+autostreamingSecureConfigurationWithSecurityManagers:initialViewController:","abstract":"

    Create a CarWindow secure configuration with a view controller and security managers

    ","parent_name":"SDLStreamingMediaConfiguration"},"Classes/SDLStationIDNumber.html#/c:objc(cs)SDLStationIDNumber(im)initWithCountryCode:fccFacilityId:":{"name":"-initWithCountryCode:fccFacilityId:","abstract":"

    Undocumented

    ","parent_name":"SDLStationIDNumber"},"Classes/SDLStationIDNumber.html#/c:objc(cs)SDLStationIDNumber(py)countryCode":{"name":"countryCode","abstract":"

    @abstract Binary Representation of ITU Country Code. USA Code is 001.

    ","parent_name":"SDLStationIDNumber"},"Classes/SDLStationIDNumber.html#/c:objc(cs)SDLStationIDNumber(py)fccFacilityId":{"name":"fccFacilityId","abstract":"

    @abstract Binary representation of unique facility ID assigned by the FCC","parent_name":"SDLStationIDNumber"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(im)initWithTimeInterval:":{"name":"-initWithTimeInterval:","abstract":"

    Create a time struct with a time interval (time in seconds). Fractions of the second will be eliminated and rounded down.

    ","parent_name":"SDLStartTime"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(im)initWithHours:minutes:seconds:":{"name":"-initWithHours:minutes:seconds:","abstract":"

    Create a time struct with hours, minutes, and seconds

    ","parent_name":"SDLStartTime"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(py)hours":{"name":"hours","abstract":"

    The hour of the media clock

    ","parent_name":"SDLStartTime"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(py)minutes":{"name":"minutes","abstract":"

    The minute of the media clock

    ","parent_name":"SDLStartTime"},"Classes/SDLStartTime.html#/c:objc(cs)SDLStartTime(py)seconds":{"name":"seconds","abstract":"

    The second of the media clock

    ","parent_name":"SDLStartTime"},"Classes/SDLSpeak.html#/c:objc(cs)SDLSpeak(im)initWithTTS:":{"name":"-initWithTTS:","abstract":"

    Undocumented

    ","parent_name":"SDLSpeak"},"Classes/SDLSpeak.html#/c:objc(cs)SDLSpeak(im)initWithTTSChunks:":{"name":"-initWithTTSChunks:","abstract":"

    Undocumented

    ","parent_name":"SDLSpeak"},"Classes/SDLSpeak.html#/c:objc(cs)SDLSpeak(py)ttsChunks":{"name":"ttsChunks","abstract":"

    An array of TTSChunk structs which, taken together, specify the phrase to be spoken

    ","parent_name":"SDLSpeak"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)name":{"name":"name","abstract":"

    The name of this soft button state

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)artwork":{"name":"artwork","abstract":"

    The artwork to be used with this button or nil if it is text-only

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)text":{"name":"text","abstract":"

    The text to be used with this button or nil if it is image-only

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)highlighted":{"name":"highlighted","abstract":"

    Whether or not the button should be highlighted on the UI

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)systemAction":{"name":"systemAction","abstract":"

    A special system action

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(py)softButton":{"name":"softButton","abstract":"

    An SDLSoftButton describing this state

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(im)initWithStateName:text:image:":{"name":"-initWithStateName:text:image:","abstract":"

    Create the soft button state. Either the text or artwork or both may be set.

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonState.html#/c:objc(cs)SDLSoftButtonState(im)initWithStateName:text:artwork:":{"name":"-initWithStateName:text:artwork:","abstract":"

    Create the soft button state. Either the text or artwork or both may be set.

    ","parent_name":"SDLSoftButtonState"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)name":{"name":"name","abstract":"

    The name of this button

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)states":{"name":"states","abstract":"

    All states available to this button

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)currentState":{"name":"currentState","abstract":"

    The name of the current state of this soft button

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)currentStateSoftButton":{"name":"currentStateSoftButton","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(py)eventHandler":{"name":"eventHandler","abstract":"

    The handler to be called when the button is in the current state and is pressed

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)initWithName:states:initialStateName:handler:":{"name":"-initWithName:states:initialStateName:handler:","abstract":"

    Create a multi-state (or single-state, but you should use initWithName:state: instead for that case) soft button. For example, a button that changes its image or text, such as a repeat or shuffle button.

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)initWithName:state:handler:":{"name":"-initWithName:state:handler:","abstract":"

    Create a single-state soft button. For example, a button that brings up a Perform Interaction menu.

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)transitionToStateNamed:":{"name":"-transitionToStateNamed:","abstract":"

    Transition the soft button to another state in the states property. The wrapper considers all transitions valid (assuming a state with that name exists).

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)transitionToNextState":{"name":"-transitionToNextState","abstract":"

    Transition the soft button to the next state of the array set when in the states property

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonObject.html#/c:objc(cs)SDLSoftButtonObject(im)stateWithName:":{"name":"-stateWithName:","abstract":"

    Return a state from the state array with a specific name.

    ","parent_name":"SDLSoftButtonObject"},"Classes/SDLSoftButtonCapabilities.html#/c:objc(cs)SDLSoftButtonCapabilities(py)shortPressAvailable":{"name":"shortPressAvailable","abstract":"

    The button supports a short press.

    ","parent_name":"SDLSoftButtonCapabilities"},"Classes/SDLSoftButtonCapabilities.html#/c:objc(cs)SDLSoftButtonCapabilities(py)longPressAvailable":{"name":"longPressAvailable","abstract":"

    The button supports a LONG press.

    ","parent_name":"SDLSoftButtonCapabilities"},"Classes/SDLSoftButtonCapabilities.html#/c:objc(cs)SDLSoftButtonCapabilities(py)upDownAvailable":{"name":"upDownAvailable","abstract":"

    The button supports button down and button up.

    ","parent_name":"SDLSoftButtonCapabilities"},"Classes/SDLSoftButtonCapabilities.html#/c:objc(cs)SDLSoftButtonCapabilities(py)imageSupported":{"name":"imageSupported","abstract":"

    The button supports referencing a static or dynamic image.

    ","parent_name":"SDLSoftButtonCapabilities"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(im)initWithHandler:":{"name":"-initWithHandler:","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(im)initWithType:text:image:highlighted:buttonId:systemAction:handler:":{"name":"-initWithType:text:image:highlighted:buttonId:systemAction:handler:","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)handler":{"name":"handler","abstract":"

    Undocumented

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)type":{"name":"type","abstract":"

    Describes whether this soft button displays only text, only an image, or both

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)text":{"name":"text","abstract":"

    Optional text to display (if defined as TEXT or BOTH type)

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)image":{"name":"image","abstract":"

    Optional image struct for SoftButton (if defined as IMAGE or BOTH type)

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)isHighlighted":{"name":"isHighlighted","abstract":"

    Displays in an alternate mode, e.g. with a colored background or foreground. Depends on the IVI system.

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)softButtonID":{"name":"softButtonID","abstract":"

    Value which is returned via OnButtonPress / OnButtonEvent

    ","parent_name":"SDLSoftButton"},"Classes/SDLSoftButton.html#/c:objc(cs)SDLSoftButton(py)systemAction":{"name":"systemAction","abstract":"

    Parameter indicating whether selecting a SoftButton shall call a specific system action. This is intended to allow Notifications to bring the callee into full / focus; or in the case of persistent overlays, the overlay can persist when a SoftButton is pressed.

    ","parent_name":"SDLSoftButton"},"Classes/SDLSliderResponse.html#/c:objc(cs)SDLSliderResponse(py)sliderPosition":{"name":"sliderPosition","abstract":"

    The selected position of the slider.

    ","parent_name":"SDLSliderResponse"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(im)initWithNumTicks:position:":{"name":"-initWithNumTicks:position:","abstract":"

    Create an SDLSlider with only the number of ticks and position. Note that this is not enough to get a SUCCESS response. You must supply additional data. See below for required parameters.

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(im)initWithNumTicks:position:sliderHeader:sliderFooter:timeout:":{"name":"-initWithNumTicks:position:sliderHeader:sliderFooter:timeout:","abstract":"

    Create an SDLSlider with all required data and a static footer (or no footer).

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(im)initWithNumTicks:position:sliderHeader:sliderFooters:timeout:":{"name":"-initWithNumTicks:position:sliderHeader:sliderFooters:timeout:","abstract":"

    Create an SDLSlider with all required data and a dynamic footer (or no footer).

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)numTicks":{"name":"numTicks","abstract":"

    Represents a number of selectable items on a horizontal axis

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)position":{"name":"position","abstract":"

    An Initial position of slider control

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)sliderHeader":{"name":"sliderHeader","abstract":"

    A text header to display

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)sliderFooter":{"name":"sliderFooter","abstract":"

    A text footer to display

    ","parent_name":"SDLSlider"},"Classes/SDLSlider.html#/c:objc(cs)SDLSlider(py)timeout":{"name":"timeout","abstract":"

    An App defined timeout in milliseconds

    ","parent_name":"SDLSlider"},"Classes/SDLSingleTireStatus.html#/c:objc(cs)SDLSingleTireStatus(py)status":{"name":"status","parent_name":"SDLSingleTireStatus"},"Classes/SDLSingleTireStatus.html#/c:objc(cs)SDLSingleTireStatus(py)monitoringSystemStatus":{"name":"monitoringSystemStatus","abstract":"

    The status of TPMS for this particular tire

    ","parent_name":"SDLSingleTireStatus"},"Classes/SDLSingleTireStatus.html#/c:objc(cs)SDLSingleTireStatus(py)pressure":{"name":"pressure","abstract":"

    The pressure value of this particular tire in kPa (kilopascals)

    ","parent_name":"SDLSingleTireStatus"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(im)initWithNavigationText1:navigationText2:eta:timeToDestination:totalDistance:turnIcon:nextTurnIcon:distanceToManeuver:distanceToManeuverScale:maneuverComplete:softButtons:":{"name":"-initWithNavigationText1:navigationText2:eta:timeToDestination:totalDistance:turnIcon:nextTurnIcon:distanceToManeuver:distanceToManeuverScale:maneuverComplete:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)navigationText1":{"name":"navigationText1","abstract":"

    The first line of text in a multi-line overlay screen.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)navigationText2":{"name":"navigationText2","abstract":"

    The second line of text in a multi-line overlay screen.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)eta":{"name":"eta","abstract":"

    Estimated Time of Arrival time at final destination

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)timeToDestination":{"name":"timeToDestination","abstract":"

    The amount of time needed to reach the final destination

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)totalDistance":{"name":"totalDistance","abstract":"

    The distance to the final destination

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)turnIcon":{"name":"turnIcon","abstract":"

    An icon to show with the turn description

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)nextTurnIcon":{"name":"nextTurnIcon","abstract":"

    An icon to show with the next turn description

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)distanceToManeuver":{"name":"distanceToManeuver","abstract":"

    Fraction of distance till next maneuver (starting from when AlertManeuver is triggered). Used to calculate progress bar.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)distanceToManeuverScale":{"name":"distanceToManeuverScale","abstract":"

    Distance till next maneuver (starting from) from previous maneuver. Used to calculate progress bar.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)maneuverComplete":{"name":"maneuverComplete","abstract":"

    If and when a maneuver has completed while an AlertManeuver is active, the app must send this value set to TRUE in order to clear the AlertManeuver overlay. If omitted the value will be assumed as FALSE.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShowConstantTBT.html#/c:objc(cs)SDLShowConstantTBT(py)softButtons":{"name":"softButtons","abstract":"

    Three dynamic SoftButtons available (first SoftButton is fixed to Turns). If omitted on supported displays, the currently displayed SoftButton values will not change.

    ","parent_name":"SDLShowConstantTBT"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField2:alignment:":{"name":"-initWithMainField1:mainField2:alignment:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField1Type:mainField2:mainField2Type:alignment:":{"name":"-initWithMainField1:mainField1Type:mainField2:mainField2Type:alignment:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField2:mainField3:mainField4:alignment:":{"name":"-initWithMainField1:mainField2:mainField3:mainField4:alignment:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField1Type:mainField2:mainField2Type:mainField3:mainField3Type:mainField4:mainField4Type:alignment:":{"name":"-initWithMainField1:mainField1Type:mainField2:mainField2Type:mainField3:mainField3Type:mainField4:mainField4Type:alignment:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField2:alignment:statusBar:mediaClock:mediaTrack:":{"name":"-initWithMainField1:mainField2:alignment:statusBar:mediaClock:mediaTrack:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(im)initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaClock:mediaTrack:graphic:softButtons:customPresets:textFieldMetadata:":{"name":"-initWithMainField1:mainField2:mainField3:mainField4:alignment:statusBar:mediaClock:mediaTrack:graphic:softButtons:customPresets:textFieldMetadata:","abstract":"

    Undocumented

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mainField1":{"name":"mainField1","abstract":"

    The text displayed in a single-line display, or in the upper display","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mainField2":{"name":"mainField2","abstract":"

    The text displayed on the second display line of a two-line display

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mainField3":{"name":"mainField3","abstract":"

    The text displayed on the first display line of the second page

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mainField4":{"name":"mainField4","abstract":"

    The text displayed on the second display line of the second page

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)alignment":{"name":"alignment","abstract":"

    The alignment that Specifies how mainField1 and mainField2 text","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)statusBar":{"name":"statusBar","abstract":"

    Text in the Status Bar

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mediaClock":{"name":"mediaClock","abstract":"

    This property is deprecated use SetMediaClockTimer instead.","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)mediaTrack":{"name":"mediaTrack","abstract":"

    The text in the track field

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)graphic":{"name":"graphic","abstract":"

    An image to be shown on supported displays

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)secondaryGraphic":{"name":"secondaryGraphic","abstract":"

    An image to be shown on supported displays

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)softButtons":{"name":"softButtons","abstract":"

    The the Soft buttons defined by the App

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)customPresets":{"name":"customPresets","abstract":"

    The Custom Presets defined by the App

    ","parent_name":"SDLShow"},"Classes/SDLShow.html#/c:objc(cs)SDLShow(py)metadataTags":{"name":"metadataTags","abstract":"

    Text Field Metadata

    ","parent_name":"SDLShow"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)countUpFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:":{"name":"+countUpFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:","abstract":"

    Create a media clock timer that counts up, e.g from 0:00 to 4:18.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)countUpFromStartTime:toEndTime:playPauseIndicator:":{"name":"+countUpFromStartTime:toEndTime:playPauseIndicator:","abstract":"

    Create a media clock timer that counts up, e.g from 0:00 to 4:18.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)countDownFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:":{"name":"+countDownFromStartTimeInterval:toEndTimeInterval:playPauseIndicator:","abstract":"

    Create a media clock timer that counts down, e.g. from 4:18 to 0:00

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)countDownFromStartTime:toEndTime:playPauseIndicator:":{"name":"+countDownFromStartTime:toEndTime:playPauseIndicator:","abstract":"

    Create a media clock timer that counts down, e.g. from 4:18 to 0:00

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)pauseWithPlayPauseIndicator:":{"name":"+pauseWithPlayPauseIndicator:","abstract":"

    Pause an existing (counting up / down) media clock timer

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)updatePauseWithNewStartTimeInterval:endTimeInterval:playPauseIndicator:":{"name":"+updatePauseWithNewStartTimeInterval:endTimeInterval:playPauseIndicator:","abstract":"

    Update a pause time (or pause and update the time) on a media clock timer

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)updatePauseWithNewStartTime:endTime:playPauseIndicator:":{"name":"+updatePauseWithNewStartTime:endTime:playPauseIndicator:","abstract":"

    Update a pause time (or pause and update the time) on a media clock timer

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)resumeWithPlayPauseIndicator:":{"name":"+resumeWithPlayPauseIndicator:","abstract":"

    Resume a paused media clock timer. It resumes at the same time at which it was paused.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(cm)clearWithPlayPauseIndicator:":{"name":"+clearWithPlayPauseIndicator:","abstract":"

    Remove a media clock timer from the screen

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(im)initWithUpdateMode:hours:minutes:seconds:audioStreamingIndicator:":{"name":"-initWithUpdateMode:hours:minutes:seconds:audioStreamingIndicator:","abstract":"

    Undocumented

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(im)initWithUpdateMode:hours:minutes:seconds:":{"name":"-initWithUpdateMode:hours:minutes:seconds:","abstract":"

    Undocumented

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(im)initWithUpdateMode:":{"name":"-initWithUpdateMode:","abstract":"

    Undocumented

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(im)initWithUpdateMode:startTime:endTime:playPauseIndicator:":{"name":"-initWithUpdateMode:startTime:endTime:playPauseIndicator:","abstract":"

    Create a SetMediaClockTimer RPC with all available parameters. It’s recommended to use the specific initializers above.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(py)startTime":{"name":"startTime","abstract":"

    A Start Time with specifying hour, minute, second values

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(py)endTime":{"name":"endTime","abstract":"

    An END time of type SDLStartTime, specifying hour, minute, second values

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(py)updateMode":{"name":"updateMode","abstract":"

    The media clock/timer update mode (COUNTUP/COUNTDOWN/PAUSE/RESUME)

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetMediaClockTimer.html#/c:objc(cs)SDLSetMediaClockTimer(py)audioStreamingIndicator":{"name":"audioStreamingIndicator","abstract":"

    The audio streaming indicator used for a play/pause button.

    ","parent_name":"SDLSetMediaClockTimer"},"Classes/SDLSetInteriorVehicleDataResponse.html#/c:objc(cs)SDLSetInteriorVehicleDataResponse(py)moduleData":{"name":"moduleData","abstract":"

    The new module data for the requested module

    ","parent_name":"SDLSetInteriorVehicleDataResponse"},"Classes/SDLSetInteriorVehicleData.html#/c:objc(cs)SDLSetInteriorVehicleData(im)initWithModuleData:":{"name":"-initWithModuleData:","abstract":"

    Undocumented

    ","parent_name":"SDLSetInteriorVehicleData"},"Classes/SDLSetInteriorVehicleData.html#/c:objc(cs)SDLSetInteriorVehicleData(py)moduleData":{"name":"moduleData","abstract":"

    The module data to set for the requested RC module.

    ","parent_name":"SDLSetInteriorVehicleData"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(im)initWithHelpText:timeoutText:":{"name":"-initWithHelpText:timeoutText:","abstract":"

    Initialize SetGlobalProperties with help text and timeout text

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(im)initWithHelpText:timeoutText:vrHelpTitle:vrHelp:":{"name":"-initWithHelpText:timeoutText:vrHelpTitle:vrHelp:","abstract":"

    Initialize SetGlobalProperties with help text, timeout text, help title, and help items

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(im)initWithHelpText:timeoutText:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:":{"name":"-initWithHelpText:timeoutText:vrHelpTitle:vrHelp:menuTitle:menuIcon:keyboardProperties:","abstract":"

    Initialize SetGlobalProperties with all possible items

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)helpPrompt":{"name":"helpPrompt","abstract":"

    Help prompt for when the user asks for help with an interface prompt

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)timeoutPrompt":{"name":"timeoutPrompt","abstract":"

    Help prompt for when an interface prompt times out

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)vrHelpTitle":{"name":"vrHelpTitle","abstract":"

    Sets a voice recognition Help Title

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)vrHelp":{"name":"vrHelp","abstract":"

    Sets the items listed in the VR help screen used in an interaction started by Push to Talk

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)menuTitle":{"name":"menuTitle","abstract":"

    Text for the menu button label

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)menuIcon":{"name":"menuIcon","abstract":"

    Icon for the menu button

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetGlobalProperties.html#/c:objc(cs)SDLSetGlobalProperties(py)keyboardProperties":{"name":"keyboardProperties","abstract":"

    On-screen keyboard (perform interaction) configuration

    ","parent_name":"SDLSetGlobalProperties"},"Classes/SDLSetDisplayLayoutResponse.html#/c:objc(cs)SDLSetDisplayLayoutResponse(py)displayCapabilities":{"name":"displayCapabilities","abstract":"

    The display capabilities of the new template layout

    ","parent_name":"SDLSetDisplayLayoutResponse"},"Classes/SDLSetDisplayLayoutResponse.html#/c:objc(cs)SDLSetDisplayLayoutResponse(py)buttonCapabilities":{"name":"buttonCapabilities","abstract":"

    The button capabilities of the new template layout

    ","parent_name":"SDLSetDisplayLayoutResponse"},"Classes/SDLSetDisplayLayoutResponse.html#/c:objc(cs)SDLSetDisplayLayoutResponse(py)softButtonCapabilities":{"name":"softButtonCapabilities","abstract":"

    The soft button capabilities of the new template layout

    ","parent_name":"SDLSetDisplayLayoutResponse"},"Classes/SDLSetDisplayLayoutResponse.html#/c:objc(cs)SDLSetDisplayLayoutResponse(py)presetBankCapabilities":{"name":"presetBankCapabilities","abstract":"

    The preset bank capabilities of the new template layout

    ","parent_name":"SDLSetDisplayLayoutResponse"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(im)initWithPredefinedLayout:":{"name":"-initWithPredefinedLayout:","abstract":"

    Undocumented

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(im)initWithLayout:":{"name":"-initWithLayout:","abstract":"

    Undocumented

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(im)initWithPredefinedLayout:dayColorScheme:nightColorScheme:":{"name":"-initWithPredefinedLayout:dayColorScheme:nightColorScheme:","abstract":"

    Undocumented

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(py)displayLayout":{"name":"displayLayout","abstract":"

    A display layout. Predefined or dynamically created screen layout.","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(py)dayColorScheme":{"name":"dayColorScheme","abstract":"

    The color scheme to be used on a head unit using a light or day color scheme. The OEM may only support this theme if their head unit only has a light color scheme.

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetDisplayLayout.html#/c:objc(cs)SDLSetDisplayLayout(py)nightColorScheme":{"name":"nightColorScheme","abstract":"

    The color scheme to be used on a head unit using a dark or night color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.

    ","parent_name":"SDLSetDisplayLayout"},"Classes/SDLSetCloudAppProperties.html#/c:objc(cs)SDLSetCloudAppProperties(im)initWithProperties:":{"name":"-initWithProperties:","abstract":"

    Convenience init.

    ","parent_name":"SDLSetCloudAppProperties"},"Classes/SDLSetCloudAppProperties.html#/c:objc(cs)SDLSetCloudAppProperties(py)properties":{"name":"properties","abstract":"

    The new cloud application properties.

    ","parent_name":"SDLSetCloudAppProperties"},"Classes/SDLSetAppIcon.html#/c:objc(cs)SDLSetAppIcon(im)initWithFileName:":{"name":"-initWithFileName:","abstract":"

    Undocumented

    ","parent_name":"SDLSetAppIcon"},"Classes/SDLSetAppIcon.html#/c:objc(cs)SDLSetAppIcon(py)syncFileName":{"name":"syncFileName","abstract":"

    A file reference name","parent_name":"SDLSetAppIcon"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(im)initWithAddress:addressLines:locationName:locationDescription:phoneNumber:image:deliveryMode:timeStamp:":{"name":"-initWithAddress:addressLines:locationName:locationDescription:phoneNumber:image:deliveryMode:timeStamp:","abstract":"

    Create a SendLocation request with an address object, without Lat/Long coordinates.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(im)initWithLongitude:latitude:locationName:locationDescription:address:phoneNumber:image:":{"name":"-initWithLongitude:latitude:locationName:locationDescription:address:phoneNumber:image:","abstract":"

    Create a SendLocation request with Lat/Long coordinate, not an address object

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(im)initWithLongitude:latitude:locationName:locationDescription:displayAddressLines:phoneNumber:image:deliveryMode:timeStamp:address:":{"name":"-initWithLongitude:latitude:locationName:locationDescription:displayAddressLines:phoneNumber:image:deliveryMode:timeStamp:address:","abstract":"

    Create a SendLocation request with Lat/Long coordinate and an address object and let the nav system decide how to parse it

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)longitudeDegrees":{"name":"longitudeDegrees","abstract":"

    The longitudinal coordinate of the location. Either the latitude / longitude OR the address must be provided.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)latitudeDegrees":{"name":"latitudeDegrees","abstract":"

    The latitudinal coordinate of the location. Either the latitude / longitude OR the address must be provided.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)locationName":{"name":"locationName","abstract":"

    Name / title of intended location

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)locationDescription":{"name":"locationDescription","abstract":"

    Description of the intended location / establishment

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)addressLines":{"name":"addressLines","abstract":"

    Location address for display purposes only.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)phoneNumber":{"name":"phoneNumber","abstract":"

    Phone number of intended location / establishment

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)locationImage":{"name":"locationImage","abstract":"

    Image / icon of intended location

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)deliveryMode":{"name":"deliveryMode","abstract":"

    Mode in which the sendLocation request is sent

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)timeStamp":{"name":"timeStamp","abstract":"

    Arrival time of Location. If multiple SendLocations are sent, this will be used for sorting as well.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendLocation.html#/c:objc(cs)SDLSendLocation(py)address":{"name":"address","abstract":"

    Address to be used for setting destination. Either the latitude / longitude OR the address must be provided.

    ","parent_name":"SDLSendLocation"},"Classes/SDLSendHapticData.html#/c:objc(cs)SDLSendHapticData(im)initWithHapticRectData:":{"name":"-initWithHapticRectData:","abstract":"

    Constructs a new SDLSendHapticData object indicated by the hapticSpatialData parameter

    ","parent_name":"SDLSendHapticData"},"Classes/SDLSendHapticData.html#/c:objc(cs)SDLSendHapticData(py)hapticRectData":{"name":"hapticRectData","abstract":"

    Array of spatial data structures that represent the locations of all user controls present on the HMI. This data should be updated if/when the application presents a new screen. When a request is sent, if successful, it will replace all spatial data previously sent through RPC. If an empty array is sent, the existing spatial data will be cleared

    ","parent_name":"SDLSendHapticData"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(im)initWithId:action:":{"name":"-initWithId:action:","abstract":"

    @abstract Constructs a newly allocated SDLSeatMemoryAction object with id, label (max length 100 chars) and action type

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(im)initWithId:label:action:":{"name":"-initWithId:label:action:","abstract":"

    @abstract Constructs a newly allocated SDLSeatMemoryAction object with id, label (max length 100 chars) and action type

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(py)id":{"name":"id","abstract":"

    @abstract id of the action to be performed.

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(py)label":{"name":"label","abstract":"

    @abstract label of the action to be performed.

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatMemoryAction.html#/c:objc(cs)SDLSeatMemoryAction(py)action":{"name":"action","abstract":"

    @abstract type of action to be performed

    ","parent_name":"SDLSeatMemoryAction"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(im)initWithId:":{"name":"-initWithId:","abstract":"

    Constructs a newly allocated SDLSeatControlData object with cushion and firmness

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(im)initWithId:heatingEnabled:coolingEnable:heatingLevel:coolingLevel:horizontalPostion:verticalPostion:frontVerticalPostion:backVerticalPostion:backTiltAngle:headSupportedHorizontalPostion:headSupportedVerticalPostion:massageEnabled:massageMode:massageCussionFirmness:memory:":{"name":"-initWithId:heatingEnabled:coolingEnable:heatingLevel:coolingLevel:horizontalPostion:verticalPostion:frontVerticalPostion:backVerticalPostion:backTiltAngle:headSupportedHorizontalPostion:headSupportedVerticalPostion:massageEnabled:massageMode:massageCussionFirmness:memory:","abstract":"

    Constructs a newly allocated SDLSeatControlData object with cushion and firmness

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)id":{"name":"id","abstract":"

    @abstract id of seat that is a remote controllable seat.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)heatingEnabled":{"name":"heatingEnabled","abstract":"

    @abstract Whether or not heating is enabled.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)coolingEnabled":{"name":"coolingEnabled","abstract":"

    @abstract Whether or not cooling is enabled.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)heatingLevel":{"name":"heatingLevel","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)coolingLevel":{"name":"coolingLevel","abstract":"

    @abstract cooling level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)horizontalPosition":{"name":"horizontalPosition","abstract":"

    @abstract horizontal Position in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)verticalPosition":{"name":"verticalPosition","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)frontVerticalPosition":{"name":"frontVerticalPosition","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)backVerticalPosition":{"name":"backVerticalPosition","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)backTiltAngle":{"name":"backTiltAngle","abstract":"

    @abstract heating level in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)headSupportHorizontalPosition":{"name":"headSupportHorizontalPosition","abstract":"

    @abstract head Support Horizontal Position in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)headSupportVerticalPosition":{"name":"headSupportVerticalPosition","abstract":"

    @abstract head Support Vertical Position in integer

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)massageEnabled":{"name":"massageEnabled","abstract":"

    @abstract Whether or not massage is enabled.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)massageMode":{"name":"massageMode","abstract":"

    @abstract Array of massage mode data.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)massageCushionFirmness":{"name":"massageCushionFirmness","abstract":"

    @abstract Array of firmness of a cushion.

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlData.html#/c:objc(cs)SDLSeatControlData(py)memory":{"name":"memory","abstract":"

    @abstract type of action to be performed

    ","parent_name":"SDLSeatControlData"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(im)initWithName:":{"name":"-initWithName:","abstract":"

    Undocumented

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(im)initWithName:heatingEnabledAvailable:coolingEnabledAvailable:heatingLevelAvailable:coolingLevelAvailable:horizontalPositionAvailable:verticalPositionAvailable:frontVerticalPositionAvailable:backVerticalPositionAvailable:backTiltAngleAvailable:headSupportHorizontalPositionAvailable:headSupportVerticalPositionAvailable:massageEnabledAvailable:massageModeAvailable:massageCushionFirmnessAvailable:memoryAvailable:":{"name":"-initWithName:heatingEnabledAvailable:coolingEnabledAvailable:heatingLevelAvailable:coolingLevelAvailable:horizontalPositionAvailable:verticalPositionAvailable:frontVerticalPositionAvailable:backVerticalPositionAvailable:backTiltAngleAvailable:headSupportHorizontalPositionAvailable:headSupportVerticalPositionAvailable:massageEnabledAvailable:massageModeAvailable:massageCushionFirmnessAvailable:memoryAvailable:","abstract":"

    Undocumented

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    @abstract The short friendly name of the light control module.","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)heatingEnabledAvailable":{"name":"heatingEnabledAvailable","abstract":"

    @abstract Whether or not heating is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)coolingEnabledAvailable":{"name":"coolingEnabledAvailable","abstract":"

    @abstract Whether or not cooling is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)heatingLevelAvailable":{"name":"heatingLevelAvailable","abstract":"

    @abstract Whether or not heating level is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)coolingLevelAvailable":{"name":"coolingLevelAvailable","abstract":"

    @abstract Whether or not cooling level is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)horizontalPositionAvailable":{"name":"horizontalPositionAvailable","abstract":"

    @abstract Whether or not horizontal Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)verticalPositionAvailable":{"name":"verticalPositionAvailable","abstract":"

    @abstract Whether or not vertical Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)frontVerticalPositionAvailable":{"name":"frontVerticalPositionAvailable","abstract":"

    @abstract Whether or not front Vertical Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)backVerticalPositionAvailable":{"name":"backVerticalPositionAvailable","abstract":"

    @abstract Whether or not back Vertical Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)backTiltAngleAvailable":{"name":"backTiltAngleAvailable","abstract":"

    @abstract Whether or not backTilt Angle Available is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)headSupportHorizontalPositionAvailable":{"name":"headSupportHorizontalPositionAvailable","abstract":"

    @abstract Whether or not head Supports for Horizontal Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)headSupportVerticalPositionAvailable":{"name":"headSupportVerticalPositionAvailable","abstract":"

    @abstract Whether or not head Supports for Vertical Position is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)massageEnabledAvailable":{"name":"massageEnabledAvailable","abstract":"

    @abstract Whether or not massage Enabled is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)massageModeAvailable":{"name":"massageModeAvailable","abstract":"

    @abstract Whether or not massage Mode is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)massageCushionFirmnessAvailable":{"name":"massageCushionFirmnessAvailable","abstract":"

    @abstract Whether or not massage Cushion Firmness is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLSeatControlCapabilities.html#/c:objc(cs)SDLSeatControlCapabilities(py)memoryAvailable":{"name":"memoryAvailable","abstract":"

    @abstract Whether or not memory is Available.

    ","parent_name":"SDLSeatControlCapabilities"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(im)initWithMessage:":{"name":"-initWithMessage:","abstract":"

    Undocumented

    ","parent_name":"SDLScrollableMessage"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(im)initWithMessage:timeout:softButtons:":{"name":"-initWithMessage:timeout:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLScrollableMessage"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(py)scrollableMessageBody":{"name":"scrollableMessageBody","abstract":"

    A Body of text that can include newlines and tabs","parent_name":"SDLScrollableMessage"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(py)timeout":{"name":"timeout","abstract":"

    Gets/Sets an App defined timeout. Indicates how long of a timeout in milliseconds from the","parent_name":"SDLScrollableMessage"},"Classes/SDLScrollableMessage.html#/c:objc(cs)SDLScrollableMessage(py)softButtons":{"name":"softButtons","abstract":"

    Gets/Sets App defined SoftButtons.If omitted on supported displays, only the","parent_name":"SDLScrollableMessage"},"Classes/SDLScreenParams.html#/c:objc(cs)SDLScreenParams(py)resolution":{"name":"resolution","abstract":"

    The resolution of the prescribed screen area

    ","parent_name":"SDLScreenParams"},"Classes/SDLScreenParams.html#/c:objc(cs)SDLScreenParams(py)touchEventAvailable":{"name":"touchEventAvailable","abstract":"

    Types of screen touch events available in screen area

    ","parent_name":"SDLScreenParams"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField1":{"name":"textField1","abstract":"

    The top text field within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField2":{"name":"textField2","abstract":"

    The second text field within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField3":{"name":"textField3","abstract":"

    The third text field within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField4":{"name":"textField4","abstract":"

    The fourth text field within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)mediaTrackTextField":{"name":"mediaTrackTextField","abstract":"

    The media text field available within the media layout. Often less emphasized than textField(1-4)

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)primaryGraphic":{"name":"primaryGraphic","abstract":"

    The primary graphic within a template layout

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)secondaryGraphic":{"name":"secondaryGraphic","abstract":"

    A secondary graphic used in some template layouts

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textAlignment":{"name":"textAlignment","abstract":"

    What alignment textField(1-4) should use

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField1Type":{"name":"textField1Type","abstract":"

    The type of data textField1 describes

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField2Type":{"name":"textField2Type","abstract":"

    The type of data textField2 describes

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField3Type":{"name":"textField3Type","abstract":"

    The type of data textField3 describes

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)textField4Type":{"name":"textField4Type","abstract":"

    The type of data textField4 describes

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)softButtonObjects":{"name":"softButtonObjects","abstract":"

    The current list of soft buttons within a template layout. Set this array to change the displayed soft buttons.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)menu":{"name":"menu","abstract":"

    The current list of menu cells displayed in the app’s menu.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)dynamicMenuUpdatesMode":{"name":"dynamicMenuUpdatesMode","abstract":"

    Change the mode of the dynamic menu updater to be enabled, disabled, or enabled on known compatible head units.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)voiceCommands":{"name":"voiceCommands","abstract":"

    The current list of voice commands available for the user to speak and be recognized by the IVI’s voice recognition engine.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)keyboardConfiguration":{"name":"keyboardConfiguration","abstract":"

    The default keyboard configuration, this can be additionally customized by each SDLKeyboardDelegate.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(py)preloadedChoices":{"name":"preloadedChoices","abstract":"

    Cells will be hashed by their text, image names, and VR command text. When assembling an SDLChoiceSet, you can pull objects from here, or recreate them. The preloaded versions will be used so long as their text, image names, and VR commands are the same.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)initWithConnectionManager:fileManager:":{"name":"-initWithConnectionManager:fileManager:","abstract":"

    Initialize a screen manager

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)startWithCompletionHandler:":{"name":"-startWithCompletionHandler:","abstract":"

    Starts the manager and all sub-managers

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)stop":{"name":"-stop","abstract":"

    Stops the manager.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)beginUpdates":{"name":"-beginUpdates","abstract":"

    Delays all screen updates until endUpdatesWithCompletionHandler: is called.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)endUpdates":{"name":"-endUpdates","abstract":"

    Update text fields with new text set into the text field properties. Pass an empty string \\@"" to clear the text field.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)endUpdatesWithCompletionHandler:":{"name":"-endUpdatesWithCompletionHandler:","abstract":"

    Update text fields with new text set into the text field properties. Pass an empty string \\@"" to clear the text field.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)softButtonObjectNamed:":{"name":"-softButtonObjectNamed:","abstract":"

    Undocumented

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)preloadChoices:withCompletionHandler:":{"name":"-preloadChoices:withCompletionHandler:","abstract":"

    Preload cells to the head unit. This will greatly reduce the time taken to present a choice set. Any already matching a choice already on the head unit will be ignored. You do not need to wait until the completion handler is called to present a choice set containing choices being loaded. The choice set will wait until the preload completes and then immediately present.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)deleteChoices:":{"name":"-deleteChoices:","abstract":"

    Delete loaded cells from the head unit. If the cells don’t exist on the head unit they will be ignored.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)presentChoiceSet:mode:":{"name":"-presentChoiceSet:mode:","abstract":"

    Present a choice set on the head unit with a certain interaction mode. You should present in VR only if the user reached this choice set by using their voice, in Manual only if the user used touch to reach this choice set. Use Both if you’re lazy…for real though, it’s kind of confusing to the user and isn’t recommended.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)presentSearchableChoiceSet:mode:withKeyboardDelegate:":{"name":"-presentSearchableChoiceSet:mode:withKeyboardDelegate:","abstract":"

    Present a choice set on the head unit with a certain interaction mode. You should present in VR only if the user reached this choice set by using their voice, in Manual only if the user used touch to reach this choice set. Use Both if you’re lazy…for real though, it’s kind of confusing to the user and isn’t recommended.

    ","parent_name":"SDLScreenManager"},"Classes/SDLScreenManager.html#/c:objc(cs)SDLScreenManager(im)presentKeyboardWithInitialText:delegate:":{"name":"-presentKeyboardWithInitialText:delegate:","abstract":"

    Present a keyboard-only interface to the user and receive input. The user will be able to input text in the keyboard when in a non-driver distraction situation.

    ","parent_name":"SDLScreenManager"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(im)initWithStationShortName:stationIDNumber:stationLongName:stationLocation:stationMessage:":{"name":"-initWithStationShortName:stationIDNumber:stationLongName:stationLocation:stationMessage:","abstract":"

    Undocumented

    ","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationShortName":{"name":"stationShortName","abstract":"

    @abstract Identifies the 4-alpha-character station call sign","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationIDNumber":{"name":"stationIDNumber","abstract":"

    @abstract Used for network Application.","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationLongName":{"name":"stationLongName","abstract":"

    @abstract Identifies the station call sign or other identifying","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationLocation":{"name":"stationLocation","abstract":"

    @abstract Provides the 3-dimensional geographic station location

    ","parent_name":"SDLSISData"},"Classes/SDLSISData.html#/c:objc(cs)SDLSISData(py)stationMessage":{"name":"stationMessage","abstract":"

    @abstract May be used to convey textual information of general interest","parent_name":"SDLSISData"},"Classes/SDLResetGlobalProperties.html#/c:objc(cs)SDLResetGlobalProperties(im)initWithProperties:":{"name":"-initWithProperties:","abstract":"

    Undocumented

    ","parent_name":"SDLResetGlobalProperties"},"Classes/SDLResetGlobalProperties.html#/c:objc(cs)SDLResetGlobalProperties(py)properties":{"name":"properties","abstract":"

    An array of one or more GlobalProperty enumeration elements","parent_name":"SDLResetGlobalProperties"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(im)initWithClimateControlCapabilities:radioControlCapabilities:buttonCapabilities:":{"name":"-initWithClimateControlCapabilities:radioControlCapabilities:buttonCapabilities:","abstract":"

    Undocumented

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(im)initWithClimateControlCapabilities:radioControlCapabilities:buttonCapabilities:seatControlCapabilities:audioControlCapabilities:hmiSettingsControlCapabilities:lightControlCapabilities:":{"name":"-initWithClimateControlCapabilities:radioControlCapabilities:buttonCapabilities:seatControlCapabilities:audioControlCapabilities:hmiSettingsControlCapabilities:lightControlCapabilities:","abstract":"

    Constructs a newly allocated SDLRemoteControlCapabilities object with given parameters

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)climateControlCapabilities":{"name":"climateControlCapabilities","abstract":"

    If included, the platform supports RC climate controls.","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)radioControlCapabilities":{"name":"radioControlCapabilities","abstract":"

    If included, the platform supports RC radio controls.","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)buttonCapabilities":{"name":"buttonCapabilities","abstract":"

    If included, the platform supports RC button controls with the included button names.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)seatControlCapabilities":{"name":"seatControlCapabilities","abstract":"

    If included, the platform supports seat controls.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)audioControlCapabilities":{"name":"audioControlCapabilities","abstract":"

    If included, the platform supports audio controls.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)hmiSettingsControlCapabilities":{"name":"hmiSettingsControlCapabilities","abstract":"

    If included, the platform supports hmi setting controls.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRemoteControlCapabilities.html#/c:objc(cs)SDLRemoteControlCapabilities(py)lightControlCapabilities":{"name":"lightControlCapabilities","abstract":"

    If included, the platform supports light controls.

    ","parent_name":"SDLRemoteControlCapabilities"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)syncMsgVersion":{"name":"syncMsgVersion","abstract":"

    The RPC spec version supported by the connected IVI system.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)language":{"name":"language","abstract":"

    The currently active VR+TTS language on the module. See Language for options.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)hmiDisplayLanguage":{"name":"hmiDisplayLanguage","abstract":"

    The currently active display language on the module. See Language for options.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)displayCapabilities":{"name":"displayCapabilities","abstract":"

    Contains information about the display for the SDL system to which the application is currently connected.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)buttonCapabilities":{"name":"buttonCapabilities","abstract":"

    Provides information about the capabilities of a SDL HMI button.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)softButtonCapabilities":{"name":"softButtonCapabilities","abstract":"

    Contains information about a SoftButton’s capabilities.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)presetBankCapabilities":{"name":"presetBankCapabilities","abstract":"

    If returned, the platform supports custom on-screen Presets

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)hmiZoneCapabilities":{"name":"hmiZoneCapabilities","abstract":"

    Specifies HMI Zones in the vehicle.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)speechCapabilities":{"name":"speechCapabilities","abstract":"

    Contains information about TTS capabilities on the SDL platform.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)prerecordedSpeech":{"name":"prerecordedSpeech","abstract":"

    Contains information about the speech capabilities on the SDL platform","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)vrCapabilities":{"name":"vrCapabilities","abstract":"

    The VR capabilities of the connected SDL platform.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)audioPassThruCapabilities":{"name":"audioPassThruCapabilities","abstract":"

    Describes different audio type configurations for SDLPerformAudioPassThru, e.g. {8kHz,8-bit,PCM}

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)pcmStreamCapabilities":{"name":"pcmStreamCapabilities","abstract":"

    Describes different audio type configurations for the audio PCM stream service, e.g. {8kHz,8-bit,PCM}

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)vehicleType":{"name":"vehicleType","abstract":"

    Specifies the connected vehicle’s type

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)supportedDiagModes":{"name":"supportedDiagModes","abstract":"

    Specifies the white-list of supported diagnostic modes (0x00-0xFF) capable for DiagnosticMessage requests. If a mode outside this list is requested, it will be rejected.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)hmiCapabilities":{"name":"hmiCapabilities","abstract":"

    Specifies the availability of various SDL features.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)sdlVersion":{"name":"sdlVersion","abstract":"

    The SmartDeviceLink Core version

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)systemSoftwareVersion":{"name":"systemSoftwareVersion","abstract":"

    The software version of the system that implements SmartDeviceLink Core

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterfaceResponse.html#/c:objc(cs)SDLRegisterAppInterfaceResponse(py)iconResumed":{"name":"iconResumed","abstract":"

    Whether or not the app’s icon already existed on the system and was resumed. That means that the icon does not need to be sent by the app.

    ","parent_name":"SDLRegisterAppInterfaceResponse"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithLifecycleConfiguration:":{"name":"-initWithLifecycleConfiguration:","abstract":"

    Convenience init for registering the application with a lifecycle configuration.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithAppName:appId:languageDesired:":{"name":"-initWithAppName:appId:languageDesired:","abstract":"

    Convenience init for registering the application.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:":{"name":"-initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:","abstract":"

    Convenience init for registering the application.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:":{"name":"-initWithAppName:appId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:","abstract":"

    Convenience init for registering the application.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(im)initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme:":{"name":"-initWithAppName:appId:fullAppId:languageDesired:isMediaApp:appTypes:shortAppName:ttsName:vrSynonyms:hmiDisplayLanguageDesired:resumeHash:dayColorScheme:nightColorScheme:","abstract":"

    Convenience init for registering the application with all possible options.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)syncMsgVersion":{"name":"syncMsgVersion","abstract":"

    The version of the SDL interface

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)appName":{"name":"appName","abstract":"

    The mobile application’s name. This name is displayed in the SDL Mobile Applications menu. It also serves as the unique identifier of the application for SmartDeviceLink.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)ttsName":{"name":"ttsName","abstract":"

    TTS string for VR recognition of the mobile application name.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)ngnMediaScreenAppName":{"name":"ngnMediaScreenAppName","abstract":"

    A String representing an abbreviated version of the mobile application’s name (if necessary) that will be displayed on the media screen.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)vrSynonyms":{"name":"vrSynonyms","abstract":"

    Defines additional voice recognition commands

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)isMediaApplication":{"name":"isMediaApplication","abstract":"

    Indicates if the application is a media or a non-media application.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)languageDesired":{"name":"languageDesired","abstract":"

    A Language enumeration indicating what language the application intends to use for user interaction (TTS and VR).

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)hmiDisplayLanguageDesired":{"name":"hmiDisplayLanguageDesired","abstract":"

    An enumeration indicating what language the application intends to use for user interaction (Display).

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)appHMIType":{"name":"appHMIType","abstract":"

    A list of all applicable app types stating which classifications to be given to the app.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)hashID":{"name":"hashID","abstract":"

    ID used to uniquely identify current state of all app data that can persist through connection cycles (e.g. ignition cycles).

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)deviceInfo":{"name":"deviceInfo","abstract":"

    Information about the connecting device

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)appID":{"name":"appID","abstract":"

    ID used to validate app with policy table entries

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)fullAppID":{"name":"fullAppID","abstract":"

    A full UUID appID used to validate app with policy table entries.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)appInfo":{"name":"appInfo","abstract":"

    Information about the application running

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)dayColorScheme":{"name":"dayColorScheme","abstract":"

    The color scheme to be used on a head unit using a light or day color scheme. The OEM may only support this theme if their head unit only has a light color scheme.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRegisterAppInterface.html#/c:objc(cs)SDLRegisterAppInterface(py)nightColorScheme":{"name":"nightColorScheme","abstract":"

    The color scheme to be used on a head unit using a dark or night color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.

    ","parent_name":"SDLRegisterAppInterface"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(im)initWithX:y:width:height:":{"name":"-initWithX:y:width:height:","abstract":"

    Create a Rectangle

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(im)initWithCGRect:":{"name":"-initWithCGRect:","abstract":"

    Create a Rectangle from a CGRect

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(py)x":{"name":"x","abstract":"

    The X-coordinate of the user control

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(py)y":{"name":"y","abstract":"

    The Y-coordinate of the user control

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(py)width":{"name":"width","abstract":"

    The width of the user control’s bounding rectangle

    ","parent_name":"SDLRectangle"},"Classes/SDLRectangle.html#/c:objc(cs)SDLRectangle(py)height":{"name":"height","abstract":"

    The height of the user control’s bounding rectangle

    ","parent_name":"SDLRectangle"},"Classes/SDLReadDIDResponse.html#/c:objc(cs)SDLReadDIDResponse(py)didResult":{"name":"didResult","abstract":"

    Array of requested DID results (with data if available).

    ","parent_name":"SDLReadDIDResponse"},"Classes/SDLReadDID.html#/c:objc(cs)SDLReadDID(im)initWithECUName:didLocation:":{"name":"-initWithECUName:didLocation:","abstract":"

    Undocumented

    ","parent_name":"SDLReadDID"},"Classes/SDLReadDID.html#/c:objc(cs)SDLReadDID(py)ecuName":{"name":"ecuName","abstract":"

    An ID of the vehicle module","parent_name":"SDLReadDID"},"Classes/SDLReadDID.html#/c:objc(cs)SDLReadDID(py)didLocation":{"name":"didLocation","abstract":"

    Raw data from vehicle data DID location(s)","parent_name":"SDLReadDID"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(im)initWithFrequencyInteger:frequencyFraction:band:hdChannel:radioEnable:":{"name":"-initWithFrequencyInteger:frequencyFraction:band:hdChannel:radioEnable:","abstract":"

    Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(im)initWithFrequencyInteger:frequencyFraction:band:hdChannel:radioEnable:hdRadioEnable:":{"name":"-initWithFrequencyInteger:frequencyFraction:band:hdChannel:radioEnable:hdRadioEnable:","abstract":"

    Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)frequencyInteger":{"name":"frequencyInteger","abstract":"

    The integer part of the frequency ie for 101.7 this value should be 101

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)frequencyFraction":{"name":"frequencyFraction","abstract":"

    The fractional part of the frequency for 101.7 is 7

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)band":{"name":"band","abstract":"

    Radio band value

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)rdsData":{"name":"rdsData","abstract":"

    Read only parameter. See RDSData data type for details.

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)availableHDs":{"name":"availableHDs","abstract":"

    number of HD sub-channels if available

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)hdChannel":{"name":"hdChannel","abstract":"

    Current HD sub-channel if available

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)signalStrength":{"name":"signalStrength","abstract":"

    Signal Strength Value

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)signalChangeThreshold":{"name":"signalChangeThreshold","abstract":"

    If the signal strength falls below the set value for this parameter, the radio will tune to an alternative frequency

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)radioEnable":{"name":"radioEnable","abstract":"

    True if the radio is on, false is the radio is off. When the radio is disabled, no data other than radioEnable is included in a GetInteriorVehicleData response

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)state":{"name":"state","abstract":"

    Read only parameter. See RadioState data type for details.

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)hdRadioEnable":{"name":"hdRadioEnable","abstract":"

    True if the hd radio is on, false is the radio is off

    ","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlData.html#/c:objc(cs)SDLRadioControlData(py)sisData":{"name":"sisData","abstract":"

    Read Read-only Station Information Service (SIS) data provides basic information","parent_name":"SDLRadioControlData"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(im)initWithModuleName:radioEnableAvailable:radioBandAvailable:radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:":{"name":"-initWithModuleName:radioEnableAvailable:radioBandAvailable:radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:","abstract":"

    Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(im)initWithModuleName:radioEnableAvailable:radioBandAvailable:radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:hdRadioEnableAvailable:siriusXMRadioAvailable:sisDataAvailable:":{"name":"-initWithModuleName:radioEnableAvailable:radioBandAvailable:radioFrequencyAvailable:hdChannelAvailable:rdsDataAvailable:availableHDsAvailable:stateAvailable:signalStrengthAvailable:signalChangeThresholdAvailable:hdRadioEnableAvailable:siriusXMRadioAvailable:sisDataAvailable:","abstract":"

    Constructs a newly allocated SDLRadioControlCapabilities object with given parameters.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    The short friendly name of the radio control module.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)radioEnableAvailable":{"name":"radioEnableAvailable","abstract":"

    Availability of the control of enable/disable radio.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)radioBandAvailable":{"name":"radioBandAvailable","abstract":"

    Availability of the control of radio band.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)radioFrequencyAvailable":{"name":"radioFrequencyAvailable","abstract":"

    Availability of the control of radio frequency.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)hdChannelAvailable":{"name":"hdChannelAvailable","abstract":"

    Availability of the control of HD radio channel.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)rdsDataAvailable":{"name":"rdsDataAvailable","abstract":"

    Availability of the getting Radio Data System (RDS) data.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)availableHDsAvailable":{"name":"availableHDsAvailable","abstract":"

    Availability of the getting the number of available HD channels.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)stateAvailable":{"name":"stateAvailable","abstract":"

    Availability of the getting the Radio state.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)signalStrengthAvailable":{"name":"signalStrengthAvailable","abstract":"

    Availability of the getting the signal strength.

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)signalChangeThresholdAvailable":{"name":"signalChangeThresholdAvailable","abstract":"

    Availability of the getting the signal Change Threshold

    ","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)hdRadioEnableAvailable":{"name":"hdRadioEnableAvailable","abstract":"

    Availability of the control of enable/disable HD radio.","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)siriusXMRadioAvailable":{"name":"siriusXMRadioAvailable","abstract":"

    Availability of sirius XM radio.","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRadioControlCapabilities.html#/c:objc(cs)SDLRadioControlCapabilities(py)sisDataAvailable":{"name":"sisDataAvailable","abstract":"

    Availability of the getting HD radio Station Information Service (SIS) data.","parent_name":"SDLRadioControlCapabilities"},"Classes/SDLRPCStruct.html#/c:objc(cs)SDLRPCStruct(py)store":{"name":"store","abstract":"

    Undocumented

    ","parent_name":"SDLRPCStruct"},"Classes/SDLRPCStruct.html#/c:objc(cs)SDLRPCStruct(im)initWithDictionary:":{"name":"-initWithDictionary:","abstract":"

    Convenience init

    ","parent_name":"SDLRPCStruct"},"Classes/SDLRPCStruct.html#/c:objc(cs)SDLRPCStruct(im)serializeAsDictionary:":{"name":"-serializeAsDictionary:","abstract":"

    Converts struct to JSON formatted data

    ","parent_name":"SDLRPCStruct"},"Classes/SDLRPCResponseNotification.html#/c:objc(cs)SDLRPCResponseNotification(py)response":{"name":"response","abstract":"

    The response to be included within the userinfo dictionary

    ","parent_name":"SDLRPCResponseNotification"},"Classes/SDLRPCResponseNotification.html#/c:objc(cs)SDLRPCResponseNotification(im)initWithName:object:rpcResponse:":{"name":"-initWithName:object:rpcResponse:","abstract":"

    Create an NSNotification object containing an SDLRPCResponse

    ","parent_name":"SDLRPCResponseNotification"},"Classes/SDLRPCResponseNotification.html#/c:objc(cs)SDLRPCResponseNotification(im)isResponseMemberOfClass:":{"name":"-isResponseMemberOfClass:","abstract":"

    Returns whether or not the containing response is equal to a class, not including subclasses.

    ","parent_name":"SDLRPCResponseNotification"},"Classes/SDLRPCResponseNotification.html#/c:objc(cs)SDLRPCResponseNotification(im)isResponseKindOfClass:":{"name":"-isResponseKindOfClass:","abstract":"

    Returns whether or not the containing response is a kind of class, including subclasses.

    ","parent_name":"SDLRPCResponseNotification"},"Classes/SDLRPCResponse.html#/c:objc(cs)SDLRPCResponse(py)correlationID":{"name":"correlationID","abstract":"

    The correlation id of the corresponding SDLRPCRequest.

    ","parent_name":"SDLRPCResponse"},"Classes/SDLRPCResponse.html#/c:objc(cs)SDLRPCResponse(py)success":{"name":"success","abstract":"

    Whether or not the SDLRPCRequest was successful.

    ","parent_name":"SDLRPCResponse"},"Classes/SDLRPCResponse.html#/c:objc(cs)SDLRPCResponse(py)resultCode":{"name":"resultCode","abstract":"

    The result of the SDLRPCRequest. If the request failed, the result code contains the failure reason.

    ","parent_name":"SDLRPCResponse"},"Classes/SDLRPCResponse.html#/c:objc(cs)SDLRPCResponse(py)info":{"name":"info","abstract":"

    More detailed success or error message.

    ","parent_name":"SDLRPCResponse"},"Classes/SDLRPCRequestNotification.html#/c:objc(cs)SDLRPCRequestNotification(py)request":{"name":"request","abstract":"

    The request to be included in the userinfo dictionary

    ","parent_name":"SDLRPCRequestNotification"},"Classes/SDLRPCRequestNotification.html#/c:objc(cs)SDLRPCRequestNotification(im)initWithName:object:rpcRequest:":{"name":"-initWithName:object:rpcRequest:","abstract":"

    Create an NSNotification object containing an SDLRPCRequest

    ","parent_name":"SDLRPCRequestNotification"},"Classes/SDLRPCRequestNotification.html#/c:objc(cs)SDLRPCRequestNotification(im)isRequestMemberOfClass:":{"name":"-isRequestMemberOfClass:","abstract":"

    Returns whether or not the containing request is equal to a class, not including subclasses.

    ","parent_name":"SDLRPCRequestNotification"},"Classes/SDLRPCRequestNotification.html#/c:objc(cs)SDLRPCRequestNotification(im)isRequestKindOfClass:":{"name":"-isRequestKindOfClass:","abstract":"

    Returns whether or not the containing request is a kind of class, including subclasses.

    ","parent_name":"SDLRPCRequestNotification"},"Classes/SDLRPCRequest.html#/c:objc(cs)SDLRPCRequest(py)correlationID":{"name":"correlationID","abstract":"

    A unique id assigned to message sent to Core. The Correlation ID is used to map a request to its response.

    ","parent_name":"SDLRPCRequest"},"Classes/SDLRPCNotificationNotification.html#/c:objc(cs)SDLRPCNotificationNotification(py)notification":{"name":"notification","abstract":"

    The notification within the userinfo dictionary

    ","parent_name":"SDLRPCNotificationNotification"},"Classes/SDLRPCNotificationNotification.html#/c:objc(cs)SDLRPCNotificationNotification(im)initWithName:object:rpcNotification:":{"name":"-initWithName:object:rpcNotification:","abstract":"

    Create an NSNotification object caontaining an SDLRPCNotification

    ","parent_name":"SDLRPCNotificationNotification"},"Classes/SDLRPCNotificationNotification.html#/c:objc(cs)SDLRPCNotificationNotification(im)isNotificationMemberOfClass:":{"name":"-isNotificationMemberOfClass:","abstract":"

    Returns whether or not the containing notification is equal to a class, not including subclasses.

    ","parent_name":"SDLRPCNotificationNotification"},"Classes/SDLRPCNotificationNotification.html#/c:objc(cs)SDLRPCNotificationNotification(im)isNotificationKindOfClass:":{"name":"-isNotificationKindOfClass:","abstract":"

    Returns whether or not the containing notification is a kind of class, including subclasses.

    ","parent_name":"SDLRPCNotificationNotification"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)initWithName:":{"name":"-initWithName:","abstract":"

    Convenience init

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)getFunctionName":{"name":"-getFunctionName","abstract":"

    Returns the function name.

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)setFunctionName:":{"name":"-setFunctionName:","abstract":"

    Sets the function name.

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)getParameters:":{"name":"-getParameters:","abstract":"

    Returns the value associated with the provided key. If the key does not exist, null is returned.

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(im)setParameters:value:":{"name":"-setParameters:value:","abstract":"

    Sets a key-value pair using the function name as the key.

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(py)bulkData":{"name":"bulkData","abstract":"

    The data in the message

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(py)name":{"name":"name","abstract":"

    The name of the message

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(py)parameters":{"name":"parameters","abstract":"

    The JSON-RPC parameters

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRPCMessage.html#/c:objc(cs)SDLRPCMessage(py)messageType":{"name":"messageType","abstract":"

    The type of data in the message

    ","parent_name":"SDLRPCMessage"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(im)initWithRed:green:blue:":{"name":"-initWithRed:green:blue:","abstract":"

    Create an SDL color object with red / green / blue values between 0-255

    ","parent_name":"SDLRGBColor"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(im)initWithColor:":{"name":"-initWithColor:","abstract":"

    Create an SDL color object with a UIColor object.

    ","parent_name":"SDLRGBColor"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(py)red":{"name":"red","abstract":"

    The red value of the RGB color","parent_name":"SDLRGBColor"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(py)green":{"name":"green","abstract":"

    The green value of the RGB color","parent_name":"SDLRGBColor"},"Classes/SDLRGBColor.html#/c:objc(cs)SDLRGBColor(py)blue":{"name":"blue","abstract":"

    The blue value of the RGB color","parent_name":"SDLRGBColor"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(im)initWithProgramService:radioText:clockText:programIdentification:programType:trafficProgramIdentification:trafficAnnouncementIdentification:region:":{"name":"-initWithProgramService:radioText:clockText:programIdentification:programType:trafficProgramIdentification:trafficAnnouncementIdentification:region:","abstract":"

    Undocumented

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)programService":{"name":"programService","abstract":"

    Program Service Name

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)radioText":{"name":"radioText","abstract":"

    Radio Text

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)clockText":{"name":"clockText","abstract":"

    The clock text in UTC format as YYYY-MM-DDThh:mm:ss.sTZD

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)programIdentification":{"name":"programIdentification","abstract":"

    Program Identification - the call sign for the radio station

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)programType":{"name":"programType","abstract":"

    The program type - The region should be used to differentiate between EU","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)trafficProgramIdentification":{"name":"trafficProgramIdentification","abstract":"

    Traffic Program Identification - Identifies a station that offers traffic

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)trafficAnnouncementIdentification":{"name":"trafficAnnouncementIdentification","abstract":"

    Traffic Announcement Identification - Indicates an ongoing traffic announcement

    ","parent_name":"SDLRDSData"},"Classes/SDLRDSData.html#/c:objc(cs)SDLRDSData(py)region":{"name":"region","abstract":"

    Region

    ","parent_name":"SDLRDSData"},"Classes/SDLPutFileResponse.html#/c:objc(cs)SDLPutFileResponse(py)spaceAvailable":{"name":"spaceAvailable","abstract":"

    Provides the total local space available in SDL Core for the registered app. If the transfer has systemFile enabled, then the value will be set to 0 automatically.

    ","parent_name":"SDLPutFileResponse"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)init":{"name":"-init","abstract":"

    Init

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:":{"name":"-initWithFileName:fileType:","abstract":"

    Convenience init for creating a putfile with a name and file format.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:persistentFile:":{"name":"-initWithFileName:fileType:persistentFile:","abstract":"

    Convenience init for creating a putfile with a name, file format, and persistance.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:persistentFile:systemFile:offset:length:":{"name":"-initWithFileName:fileType:persistentFile:systemFile:offset:length:","abstract":"

    Convenience init for creating a putfile that is part of a multiple frame payload.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:persistentFile:systemFile:offset:length:crc:":{"name":"-initWithFileName:fileType:persistentFile:systemFile:offset:length:crc:","abstract":"

    Convenience init for creating a putfile that is part of a multiple frame payload.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(im)initWithFileName:fileType:persistentFile:systemFile:offset:length:bulkData:":{"name":"-initWithFileName:fileType:persistentFile:systemFile:offset:length:bulkData:","abstract":"

    Convenience init for creating a putfile that is part of a multiple frame payload. A CRC checksum is calculated for the bulk data.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)syncFileName":{"name":"syncFileName","abstract":"

    File reference name

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)fileType":{"name":"fileType","abstract":"

    A FileType value representing a selected file type

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)persistentFile":{"name":"persistentFile","abstract":"

    A value to indicates if the file is meant to persist between sessions / ignition cycles. If set to TRUE, then the system will aim to persist this file through session / cycles. While files with this designation will have priority over others, they are subject to deletion by the system at any time. In the event of automatic deletion by the system, the app will receive a rejection and have to resend the file. If omitted, the value will be set to false.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)systemFile":{"name":"systemFile","abstract":"

    Indicates if the file is meant to be passed through core to elsewhere on the system. If set to TRUE, then the system will instead pass the data thru as it arrives to a predetermined area outside of core.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)offset":{"name":"offset","abstract":"

    Offset in bytes for resuming partial data chunks.

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)length":{"name":"length","abstract":"

    Length in bytes for resuming partial data chunks. If offset is set to 0, then length is the total length of the file to be downloaded

    ","parent_name":"SDLPutFile"},"Classes/SDLPutFile.html#/c:objc(cs)SDLPutFile(py)crc":{"name":"crc","abstract":"

    Additional CRC32 checksum to protect data integrity up to 512 Mbits.

    ","parent_name":"SDLPutFile"},"Classes/SDLPublishAppServiceResponse.html#/c:objc(cs)SDLPublishAppServiceResponse(im)initWithAppServiceRecord:":{"name":"-initWithAppServiceRecord:","abstract":"

    Convenience init.

    ","parent_name":"SDLPublishAppServiceResponse"},"Classes/SDLPublishAppServiceResponse.html#/c:objc(cs)SDLPublishAppServiceResponse(py)appServiceRecord":{"name":"appServiceRecord","abstract":"

    If the request was successful, this object will be the current status of the service record for the published service. This will include the Core supplied service ID.

    ","parent_name":"SDLPublishAppServiceResponse"},"Classes/SDLPublishAppService.html#/c:objc(cs)SDLPublishAppService(im)initWithAppServiceManifest:":{"name":"-initWithAppServiceManifest:","abstract":"

    Convenience init.

    ","parent_name":"SDLPublishAppService"},"Classes/SDLPublishAppService.html#/c:objc(cs)SDLPublishAppService(py)appServiceManifest":{"name":"appServiceManifest","abstract":"

    The manifest of the service that wishes to be published.

    ","parent_name":"SDLPublishAppService"},"Classes/SDLPresetBankCapabilities.html#/c:objc(cs)SDLPresetBankCapabilities(py)onScreenPresetsAvailable":{"name":"onScreenPresetsAvailable","abstract":"

    If Onscreen custom presets are available.

    ","parent_name":"SDLPresetBankCapabilities"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(im)initWithFirstTouch:secondTouch:":{"name":"-initWithFirstTouch:secondTouch:","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)firstTouch":{"name":"firstTouch","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)secondTouch":{"name":"secondTouch","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)distance":{"name":"distance","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)center":{"name":"center","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPinchGesture.html#/c:objc(cs)SDLPinchGesture(py)isValid":{"name":"isValid","abstract":"

    @abstract","parent_name":"SDLPinchGesture"},"Classes/SDLPhoneCapability.html#/c:objc(cs)SDLPhoneCapability(im)initWithDialNumber:":{"name":"-initWithDialNumber:","abstract":"

    Undocumented

    ","parent_name":"SDLPhoneCapability"},"Classes/SDLPhoneCapability.html#/c:objc(cs)SDLPhoneCapability(py)dialNumberEnabled":{"name":"dialNumberEnabled","abstract":"

    Whether or not the DialNumber RPC is enabled.

    ","parent_name":"SDLPhoneCapability"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)startWithCompletionHandler:":{"name":"-startWithCompletionHandler:","abstract":"

    Start the manager with a completion block that will be called when startup completes. This is used internally. To use an SDLPermissionManager, you should use the manager found on SDLManager.

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)stop":{"name":"-stop","abstract":"

    Stop the manager. This method is used internally.

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)isRPCAllowed:":{"name":"-isRPCAllowed:","abstract":"

    Determine if an individual RPC is allowed for the current HMI level

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)groupStatusOfRPCs:":{"name":"-groupStatusOfRPCs:","abstract":"

    Determine if all RPCs are allowed for the current HMI level

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)statusOfRPCs:":{"name":"-statusOfRPCs:","abstract":"

    Retrieve a dictionary with keys that are the passed in RPC names, and objects of an NSNumber specifying if that RPC is currently allowed

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)addObserverForRPCs:groupType:withHandler:":{"name":"-addObserverForRPCs:groupType:withHandler:","abstract":"

    Add an observer for specified RPC names, with a callback that will be called whenever the value changes, as well as immediately with the current status.

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)removeAllObservers":{"name":"-removeAllObservers","abstract":"

    Remove every current observer

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionManager.html#/c:objc(cs)SDLPermissionManager(im)removeObserverForIdentifier:":{"name":"-removeObserverForIdentifier:","abstract":"

    Remove block observers for the specified RPC

    ","parent_name":"SDLPermissionManager"},"Classes/SDLPermissionItem.html#/c:objc(cs)SDLPermissionItem(py)rpcName":{"name":"rpcName","abstract":"

    Name of the individual RPC in the policy table.

    ","parent_name":"SDLPermissionItem"},"Classes/SDLPermissionItem.html#/c:objc(cs)SDLPermissionItem(py)hmiPermissions":{"name":"hmiPermissions","abstract":"

    HMI Permissions for the individual RPC; i.e. which HMI levels may it be used in

    ","parent_name":"SDLPermissionItem"},"Classes/SDLPermissionItem.html#/c:objc(cs)SDLPermissionItem(py)parameterPermissions":{"name":"parameterPermissions","abstract":"

    RPC parameters for the individual RPC

    ","parent_name":"SDLPermissionItem"},"Classes/SDLPerformInteractionResponse.html#/c:objc(cs)SDLPerformInteractionResponse(py)choiceID":{"name":"choiceID","abstract":"

    ID of the choice that was selected in response to PerformInteraction. Only is valid if general result is success:true.

    ","parent_name":"SDLPerformInteractionResponse"},"Classes/SDLPerformInteractionResponse.html#/c:objc(cs)SDLPerformInteractionResponse(py)manualTextEntry":{"name":"manualTextEntry","abstract":"

    Manually entered text selection, e.g. through keyboard. Can be returned in lieu of choiceID, depending on the trigger source.

    ","parent_name":"SDLPerformInteractionResponse"},"Classes/SDLPerformInteractionResponse.html#/c:objc(cs)SDLPerformInteractionResponse(py)triggerSource":{"name":"triggerSource","abstract":"

    A SDLTriggerSource object which will be shown in the HMI. Only is valid if resultCode is SUCCESS.

    ","parent_name":"SDLPerformInteractionResponse"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInteractionChoiceSetId:":{"name":"-initWithInteractionChoiceSetId:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInteractionChoiceSetIdList:":{"name":"-initWithInteractionChoiceSetIdList:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialPrompt:initialText:interactionChoiceSetID:":{"name":"-initWithInitialPrompt:initialText:interactionChoiceSetID:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialPrompt:initialText:interactionChoiceSetID:vrHelp:":{"name":"-initWithInitialPrompt:initialText:interactionChoiceSetID:vrHelp:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:":{"name":"-initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:vrHelp:":{"name":"-initWithInitialPrompt:initialText:interactionChoiceSetIDList:helpPrompt:timeoutPrompt:interactionMode:timeout:vrHelp:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:":{"name":"-initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(im)initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:interactionLayout:":{"name":"-initWithInitialChunks:initialText:interactionChoiceSetIDList:helpChunks:timeoutChunks:interactionMode:timeout:vrHelp:interactionLayout:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)initialText":{"name":"initialText","abstract":"

    The Text that Displayed when the interaction begins. This text may","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)initialPrompt":{"name":"initialPrompt","abstract":"

    An array of one or more TTSChunks that, taken together, specify","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)interactionMode":{"name":"interactionMode","abstract":"

    The Indicates mode that indicate how user selects interaction","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)interactionChoiceSetIDList":{"name":"interactionChoiceSetIDList","abstract":"

    A Vector value representing an Array of one or more Choice","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)helpPrompt":{"name":"helpPrompt","abstract":"

    A Vector which taken together, specify the help phrase to","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)timeoutPrompt":{"name":"timeoutPrompt","abstract":"

    An array of TTSChunks which, taken together, specify the phrase to","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)timeout":{"name":"timeout","abstract":"

    An Integer value representing the amount of time, in milliseconds,","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)vrHelp":{"name":"vrHelp","abstract":"

    A Voice recognition Help, which is a suggested VR Help Items to","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformInteraction.html#/c:objc(cs)SDLPerformInteraction(py)interactionLayout":{"name":"interactionLayout","abstract":"

    Undocumented

    ","parent_name":"SDLPerformInteraction"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(im)initWithSamplingRate:bitsPerSample:audioType:maxDuration:":{"name":"-initWithSamplingRate:bitsPerSample:audioType:maxDuration:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(im)initWithInitialPrompt:audioPassThruDisplayText1:audioPassThruDisplayText2:samplingRate:bitsPerSample:audioType:maxDuration:muteAudio:":{"name":"-initWithInitialPrompt:audioPassThruDisplayText1:audioPassThruDisplayText2:samplingRate:bitsPerSample:audioType:maxDuration:muteAudio:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(im)initWithSamplingRate:bitsPerSample:audioType:maxDuration:audioDataHandler:":{"name":"-initWithSamplingRate:bitsPerSample:audioType:maxDuration:audioDataHandler:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(im)initWithInitialPrompt:audioPassThruDisplayText1:audioPassThruDisplayText2:samplingRate:bitsPerSample:audioType:maxDuration:muteAudio:audioDataHandler:":{"name":"-initWithInitialPrompt:audioPassThruDisplayText1:audioPassThruDisplayText2:samplingRate:bitsPerSample:audioType:maxDuration:muteAudio:audioDataHandler:","abstract":"

    Undocumented

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)initialPrompt":{"name":"initialPrompt","abstract":"

    initial prompt which will be spoken before opening the audio pass","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)audioPassThruDisplayText1":{"name":"audioPassThruDisplayText1","abstract":"

    a line of text displayed during audio capture","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)audioPassThruDisplayText2":{"name":"audioPassThruDisplayText2","abstract":"

    A line of text displayed during audio capture","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)samplingRate":{"name":"samplingRate","abstract":"

    A samplingRate

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)maxDuration":{"name":"maxDuration","abstract":"

    the maximum duration of audio recording in milliseconds

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)bitsPerSample":{"name":"bitsPerSample","abstract":"

    the quality the audio is recorded - 8 bit or 16 bit

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)audioType":{"name":"audioType","abstract":"

    an audioType

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)muteAudio":{"name":"muteAudio","abstract":"

    a Boolean value representing if the current audio source should be","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAudioPassThru.html#/c:objc(cs)SDLPerformAudioPassThru(py)audioDataHandler":{"name":"audioDataHandler","abstract":"

    A handler that will be called whenever an onAudioPassThru notification is received.

    ","parent_name":"SDLPerformAudioPassThru"},"Classes/SDLPerformAppServiceInteractionResponse.html#/c:objc(cs)SDLPerformAppServiceInteractionResponse(im)initWithServiceSpecificResult:":{"name":"-initWithServiceSpecificResult:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLPerformAppServiceInteractionResponse"},"Classes/SDLPerformAppServiceInteractionResponse.html#/c:objc(cs)SDLPerformAppServiceInteractionResponse(py)serviceSpecificResult":{"name":"serviceSpecificResult","abstract":"

    The service can provide specific result strings to the consumer through this param.

    ","parent_name":"SDLPerformAppServiceInteractionResponse"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(im)initWithServiceUri:serviceID:originApp:":{"name":"-initWithServiceUri:serviceID:originApp:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(im)initWithServiceUri:serviceID:originApp:requestServiceActive:":{"name":"-initWithServiceUri:serviceID:originApp:requestServiceActive:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(py)serviceUri":{"name":"serviceUri","abstract":"

    Fully qualified URI based on a predetermined scheme provided by the app service. SDL makes no guarantee that this URI is correct.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(py)serviceID":{"name":"serviceID","abstract":"

    The service ID that the app consumer wishes to send this URI.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(py)originApp":{"name":"originApp","abstract":"

    This string is the appID of the app requesting the app service provider take the specific action.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLPerformAppServiceInteraction.html#/c:objc(cs)SDLPerformAppServiceInteraction(py)requestServiceActive":{"name":"requestServiceActive","abstract":"

    This flag signals the requesting consumer would like this service to become the active primary service of the destination’s type.

    ","parent_name":"SDLPerformAppServiceInteraction"},"Classes/SDLParameterPermissions.html#/c:objc(cs)SDLParameterPermissions(py)allowed":{"name":"allowed","abstract":"

    A set of all parameters that are permitted for this given RPC.

    ","parent_name":"SDLParameterPermissions"},"Classes/SDLParameterPermissions.html#/c:objc(cs)SDLParameterPermissions(py)userDisallowed":{"name":"userDisallowed","abstract":"

    A set of all parameters that are prohibited for this given RPC.

    ","parent_name":"SDLParameterPermissions"},"Classes/SDLOnWayPointChange.html#/c:objc(cs)SDLOnWayPointChange(py)waypoints":{"name":"waypoints","abstract":"

    Location address for display purposes only

    ","parent_name":"SDLOnWayPointChange"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)gps":{"name":"gps","abstract":"

    The car current GPS coordinates

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)speed":{"name":"speed","abstract":"

    The vehicle speed in kilometers per hour

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)rpm":{"name":"rpm","abstract":"

    The number of revolutions per minute of the engine.

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)fuelLevel":{"name":"fuelLevel","abstract":"

    The fuel level in the tank (percentage)

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    The fuel level state

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)fuelRange":{"name":"fuelRange","abstract":"

    The estimate range in KM the vehicle can travel based on fuel level and consumption

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    The instantaneous fuel consumption in microlitres

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)externalTemperature":{"name":"externalTemperature","abstract":"

    The external temperature in degrees celsius.

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)vin":{"name":"vin","abstract":"

    The Vehicle Identification Number

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)prndl":{"name":"prndl","abstract":"

    The current gear shift state of the user’s vehicle

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)tirePressure":{"name":"tirePressure","abstract":"

    The current pressure warnings for the user’s vehicle

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)odometer":{"name":"odometer","abstract":"

    Odometer reading in km

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)beltStatus":{"name":"beltStatus","abstract":"

    The status of the seat belts

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)bodyInformation":{"name":"bodyInformation","abstract":"

    The body information including power modes

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)deviceStatus":{"name":"deviceStatus","abstract":"

    The IVI system status including signal and battery strength

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)driverBraking":{"name":"driverBraking","abstract":"

    The status of the brake pedal

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)wiperStatus":{"name":"wiperStatus","abstract":"

    The status of the wipers

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)headLampStatus":{"name":"headLampStatus","abstract":"

    Status of the head lamps

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)engineOilLife":{"name":"engineOilLife","abstract":"

    The estimated percentage (0% - 100%) of remaining oil life of the engine

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)engineTorque":{"name":"engineTorque","abstract":"

    Torque value for engine (in Nm) on non-diesel variants

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    Accelerator pedal position (percentage depressed)

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    Current angle of the steering wheel (in deg)

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)eCallInfo":{"name":"eCallInfo","abstract":"

    Emergency Call notification and confirmation data

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)airbagStatus":{"name":"airbagStatus","abstract":"

    The status of the air bags

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    Information related to an emergency event (and if it occurred)

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    The status modes of the cluster

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)myKey":{"name":"myKey","abstract":"

    Information related to the MyKey feature

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    The status of the electronic parking brake

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)turnSignal":{"name":"turnSignal","abstract":"

    The status of the turn signal

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnVehicleData.html#/c:objc(cs)SDLOnVehicleData(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    The cloud app vehicle ID

    ","parent_name":"SDLOnVehicleData"},"Classes/SDLOnTouchEvent.html#/c:objc(cs)SDLOnTouchEvent(py)type":{"name":"type","abstract":"

    The type of touch event.

    ","parent_name":"SDLOnTouchEvent"},"Classes/SDLOnTouchEvent.html#/c:objc(cs)SDLOnTouchEvent(py)event":{"name":"event","abstract":"

    List of all individual touches involved in this event.

    ","parent_name":"SDLOnTouchEvent"},"Classes/SDLOnTBTClientState.html#/c:objc(cs)SDLOnTBTClientState(py)state":{"name":"state","abstract":"

    Current State of TBT client

    ","parent_name":"SDLOnTBTClientState"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)requestType":{"name":"requestType","abstract":"

    The type of system request.

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)requestSubType":{"name":"requestSubType","abstract":"

    A request subType used when the requestType is OEM_SPECIFIC.

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)url":{"name":"url","abstract":"

    Optional URL for HTTP requests. If blank, the binary data shall be forwarded to the app. If not blank, the binary data shall be forwarded to the url with a provided timeout in seconds.

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)timeout":{"name":"timeout","abstract":"

    Optional timeout for HTTP requests Required if a URL is provided

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)fileType":{"name":"fileType","abstract":"

    Optional file type (meant for HTTP file requests).

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)offset":{"name":"offset","abstract":"

    Optional offset in bytes for resuming partial data chunks

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemRequest.html#/c:objc(cs)SDLOnSystemRequest(py)length":{"name":"length","abstract":"

    Optional length in bytes for resuming partial data chunks

    ","parent_name":"SDLOnSystemRequest"},"Classes/SDLOnSystemCapabilityUpdated.html#/c:objc(cs)SDLOnSystemCapabilityUpdated(im)initWithSystemCapability:":{"name":"-initWithSystemCapability:","abstract":"

    Convenience init for required parameters

    ","parent_name":"SDLOnSystemCapabilityUpdated"},"Classes/SDLOnSystemCapabilityUpdated.html#/c:objc(cs)SDLOnSystemCapabilityUpdated(py)systemCapability":{"name":"systemCapability","abstract":"

    The system capability that has been updated.

    ","parent_name":"SDLOnSystemCapabilityUpdated"},"Classes/SDLOnSyncPData.html#/c:objc(cs)SDLOnSyncPData(py)URL":{"name":"URL","abstract":"

    Undocumented

    ","parent_name":"SDLOnSyncPData"},"Classes/SDLOnSyncPData.html#/c:objc(cs)SDLOnSyncPData(py)Timeout":{"name":"Timeout","abstract":"

    Undocumented

    ","parent_name":"SDLOnSyncPData"},"Classes/SDLOnRCStatus.html#/c:objc(cs)SDLOnRCStatus(py)allocatedModules":{"name":"allocatedModules","abstract":"

    @abstract Contains a list (zero or more) of module types that","parent_name":"SDLOnRCStatus"},"Classes/SDLOnRCStatus.html#/c:objc(cs)SDLOnRCStatus(py)freeModules":{"name":"freeModules","abstract":"

    @abstract Contains a list (zero or more) of module types that are free to access for the application.

    ","parent_name":"SDLOnRCStatus"},"Classes/SDLOnRCStatus.html#/c:objc(cs)SDLOnRCStatus(py)allowed":{"name":"allowed","abstract":"

    Issued by SDL to notify the application about remote control status change on SDL","parent_name":"SDLOnRCStatus"},"Classes/SDLOnPermissionsChange.html#/c:objc(cs)SDLOnPermissionsChange(py)permissionItem":{"name":"permissionItem","abstract":"

    Describes change in permissions for a given set of RPCs

    ","parent_name":"SDLOnPermissionsChange"},"Classes/SDLOnLockScreenStatus.html#/c:objc(cs)SDLOnLockScreenStatus(py)driverDistractionStatus":{"name":"driverDistractionStatus","abstract":"

    Get the current driver distraction status(i.e. whether driver distraction rules are in effect, or not)

    ","parent_name":"SDLOnLockScreenStatus"},"Classes/SDLOnLockScreenStatus.html#/c:objc(cs)SDLOnLockScreenStatus(py)userSelected":{"name":"userSelected","abstract":"

    Get user selection status for the application (has the app been selected via hmi or voice command)

    ","parent_name":"SDLOnLockScreenStatus"},"Classes/SDLOnLockScreenStatus.html#/c:objc(cs)SDLOnLockScreenStatus(py)lockScreenStatus":{"name":"lockScreenStatus","abstract":"

    Indicates if the lockscreen should be required, optional or off

    ","parent_name":"SDLOnLockScreenStatus"},"Classes/SDLOnLockScreenStatus.html#/c:objc(cs)SDLOnLockScreenStatus(py)hmiLevel":{"name":"hmiLevel","abstract":"

    Get HMILevel in effect for the application

    ","parent_name":"SDLOnLockScreenStatus"},"Classes/SDLOnLanguageChange.html#/c:objc(cs)SDLOnLanguageChange(py)language":{"name":"language","abstract":"

    Current SDL voice engine (VR+TTS) language

    ","parent_name":"SDLOnLanguageChange"},"Classes/SDLOnLanguageChange.html#/c:objc(cs)SDLOnLanguageChange(py)hmiDisplayLanguage":{"name":"hmiDisplayLanguage","abstract":"

    Current display language

    ","parent_name":"SDLOnLanguageChange"},"Classes/SDLOnKeyboardInput.html#/c:objc(cs)SDLOnKeyboardInput(py)event":{"name":"event","abstract":"

    The type of keyboard input

    ","parent_name":"SDLOnKeyboardInput"},"Classes/SDLOnKeyboardInput.html#/c:objc(cs)SDLOnKeyboardInput(py)data":{"name":"data","abstract":"

    The current keyboard string input from the user

    ","parent_name":"SDLOnKeyboardInput"},"Classes/SDLOnInteriorVehicleData.html#/c:objc(cs)SDLOnInteriorVehicleData(py)moduleData":{"name":"moduleData","abstract":"

    The subscribed module data that changed

    ","parent_name":"SDLOnInteriorVehicleData"},"Classes/SDLOnHashChange.html#/c:objc(cs)SDLOnHashChange(py)hashID":{"name":"hashID","abstract":"

    Calculated hash ID to be referenced during RegisterAppInterface request.

    ","parent_name":"SDLOnHashChange"},"Classes/SDLOnHMIStatus.html#/c:objc(cs)SDLOnHMIStatus(py)hmiLevel":{"name":"hmiLevel","abstract":"

    SDLHMILevel in effect for the application

    ","parent_name":"SDLOnHMIStatus"},"Classes/SDLOnHMIStatus.html#/c:objc(cs)SDLOnHMIStatus(py)audioStreamingState":{"name":"audioStreamingState","abstract":"

    Current state of audio streaming for the application. When this parameter has a value of NOT_AUDIBLE, the application must stop streaming audio to SDL.

    ","parent_name":"SDLOnHMIStatus"},"Classes/SDLOnHMIStatus.html#/c:objc(cs)SDLOnHMIStatus(py)videoStreamingState":{"name":"videoStreamingState","abstract":"

    Current availablility of video streaming for the application. When this parameter is NOT_STREAMABLE, the application must stop video streaming to SDL.

    ","parent_name":"SDLOnHMIStatus"},"Classes/SDLOnHMIStatus.html#/c:objc(cs)SDLOnHMIStatus(py)systemContext":{"name":"systemContext","abstract":"

    Whether a user-initiated interaction is in-progress (VRSESSION or MENU), or not (MAIN)

    ","parent_name":"SDLOnHMIStatus"},"Classes/SDLOnEncodedSyncPData.html#/c:objc(cs)SDLOnEncodedSyncPData(py)data":{"name":"data","abstract":"

    Contains base64 encoded string of SyncP packets.

    ","parent_name":"SDLOnEncodedSyncPData"},"Classes/SDLOnEncodedSyncPData.html#/c:objc(cs)SDLOnEncodedSyncPData(py)URL":{"name":"URL","abstract":"

    If blank, the SyncP data shall be forwarded to the app. If not blank, the SyncP data shall be forwarded to the provided URL.

    ","parent_name":"SDLOnEncodedSyncPData"},"Classes/SDLOnEncodedSyncPData.html#/c:objc(cs)SDLOnEncodedSyncPData(py)Timeout":{"name":"Timeout","abstract":"

    If blank, the SyncP data shall be forwarded to the app. If not blank, the SyncP data shall be forwarded with the provided timeout in seconds.

    ","parent_name":"SDLOnEncodedSyncPData"},"Classes/SDLOnDriverDistraction.html#/c:objc(cs)SDLOnDriverDistraction(py)state":{"name":"state","abstract":"

    The driver distraction state (i.e. whether driver distraction rules are in effect, or not)

    ","parent_name":"SDLOnDriverDistraction"},"Classes/SDLOnCommand.html#/c:objc(cs)SDLOnCommand(py)cmdID":{"name":"cmdID","abstract":"

    The command ID of the command the user selected. This is the command ID value provided by the application in the SDLAddCommand operation that created the command.

    ","parent_name":"SDLOnCommand"},"Classes/SDLOnCommand.html#/c:objc(cs)SDLOnCommand(py)triggerSource":{"name":"triggerSource","abstract":"

    Indicates whether command was selected via voice or via a menu selection (using the OK button).

    ","parent_name":"SDLOnCommand"},"Classes/SDLOnButtonPress.html#/c:objc(cs)SDLOnButtonPress(py)buttonName":{"name":"buttonName","abstract":"

    The button’s name

    ","parent_name":"SDLOnButtonPress"},"Classes/SDLOnButtonPress.html#/c:objc(cs)SDLOnButtonPress(py)buttonPressMode":{"name":"buttonPressMode","abstract":"

    Indicates whether this is a LONG or SHORT button press event

    ","parent_name":"SDLOnButtonPress"},"Classes/SDLOnButtonPress.html#/c:objc(cs)SDLOnButtonPress(py)customButtonID":{"name":"customButtonID","abstract":"

    If ButtonName is CUSTOM_BUTTON, this references the integer ID passed by a custom button. (e.g. softButton ID)

    ","parent_name":"SDLOnButtonPress"},"Classes/SDLOnButtonEvent.html#/c:objc(cs)SDLOnButtonEvent(py)buttonName":{"name":"buttonName","abstract":"

    The name of the button

    ","parent_name":"SDLOnButtonEvent"},"Classes/SDLOnButtonEvent.html#/c:objc(cs)SDLOnButtonEvent(py)buttonEventMode":{"name":"buttonEventMode","abstract":"

    Indicates whether this is an UP or DOWN event

    ","parent_name":"SDLOnButtonEvent"},"Classes/SDLOnButtonEvent.html#/c:objc(cs)SDLOnButtonEvent(py)customButtonID":{"name":"customButtonID","abstract":"

    If ButtonName is CUSTOM_BUTTON, this references the integer ID passed by a custom button. (e.g. softButton ID)

    ","parent_name":"SDLOnButtonEvent"},"Classes/SDLOnAppServiceData.html#/c:objc(cs)SDLOnAppServiceData(im)initWithServiceData:":{"name":"-initWithServiceData:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLOnAppServiceData"},"Classes/SDLOnAppServiceData.html#/c:objc(cs)SDLOnAppServiceData(py)serviceData":{"name":"serviceData","abstract":"

    The updated app service data.

    ","parent_name":"SDLOnAppServiceData"},"Classes/SDLOnAppInterfaceUnregistered.html#/c:objc(cs)SDLOnAppInterfaceUnregistered(py)reason":{"name":"reason","abstract":"

    The reason application’s interface was terminated

    ","parent_name":"SDLOnAppInterfaceUnregistered"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(im)initWithSubThoroughfare:thoroughfare:locality:administrativeArea:postalCode:countryCode:":{"name":"-initWithSubThoroughfare:thoroughfare:locality:administrativeArea:postalCode:countryCode:","abstract":"

    Undocumented

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(im)initWithSubThoroughfare:thoroughfare:locality:administrativeArea:postalCode:countryCode:countryName:subAdministrativeArea:subLocality:":{"name":"-initWithSubThoroughfare:thoroughfare:locality:administrativeArea:postalCode:countryCode:countryName:subAdministrativeArea:subLocality:","abstract":"

    Undocumented

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)countryName":{"name":"countryName","abstract":"

    Name of the country (localized)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)countryCode":{"name":"countryCode","abstract":"

    countryCode of the country(ISO 3166-2)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)postalCode":{"name":"postalCode","abstract":"

    postalCode of location (PLZ, ZIP, PIN, CAP etc.)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)administrativeArea":{"name":"administrativeArea","abstract":"

    Portion of country (e.g. state)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)subAdministrativeArea":{"name":"subAdministrativeArea","abstract":"

    Portion of administrativeArea (e.g. county)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)locality":{"name":"locality","abstract":"

    Hypernym for city/village

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)subLocality":{"name":"subLocality","abstract":"

    Hypernym for district

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)thoroughfare":{"name":"thoroughfare","abstract":"

    Hypernym for street, road etc.

    ","parent_name":"SDLOasisAddress"},"Classes/SDLOasisAddress.html#/c:objc(cs)SDLOasisAddress(py)subThoroughfare":{"name":"subThoroughfare","abstract":"

    Portion of thoroughfare (e.g. house number)

    ","parent_name":"SDLOasisAddress"},"Classes/SDLNotificationConstants.html#/c:objc(cs)SDLNotificationConstants(cm)allResponseNames":{"name":"+allResponseNames","abstract":"

    All of the possible SDL RPC Response notification names

    ","parent_name":"SDLNotificationConstants"},"Classes/SDLNotificationConstants.html#/c:objc(cs)SDLNotificationConstants(cm)allButtonEventNotifications":{"name":"+allButtonEventNotifications","abstract":"

    All of the possible SDL Button event notification names

    ","parent_name":"SDLNotificationConstants"},"Classes/SDLNavigationServiceManifest.html#/c:objc(cs)SDLNavigationServiceManifest(im)initWithAcceptsWayPoints:":{"name":"-initWithAcceptsWayPoints:","abstract":"

    Convenience init.

    ","parent_name":"SDLNavigationServiceManifest"},"Classes/SDLNavigationServiceManifest.html#/c:objc(cs)SDLNavigationServiceManifest(py)acceptsWayPoints":{"name":"acceptsWayPoints","abstract":"

    Informs the subscriber if this service can actually accept way points.

    ","parent_name":"SDLNavigationServiceManifest"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(im)initWithTimestamp:":{"name":"-initWithTimestamp:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(im)initWithTimestamp:origin:destination:destinationETA:instructions:nextInstructionETA:nextInstructionDistance:nextInstructionDistanceScale:prompt:":{"name":"-initWithTimestamp:origin:destination:destinationETA:instructions:nextInstructionETA:nextInstructionDistance:nextInstructionDistanceScale:prompt:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)timestamp":{"name":"timestamp","abstract":"

    This is the timestamp of when the data was generated. This is to ensure any time or distance given in the data can accurately be adjusted if necessary.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)origin":{"name":"origin","abstract":"

    The start location.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)destination":{"name":"destination","abstract":"

    The final destination location.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)destinationETA":{"name":"destinationETA","abstract":"

    The estimated time of arrival at the final destination location.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)instructions":{"name":"instructions","abstract":"

    This array should be ordered with all remaining instructions. The start of this array should always contain the next instruction.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)nextInstructionETA":{"name":"nextInstructionETA","abstract":"

    The estimated time of arrival at the next destination.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)nextInstructionDistance":{"name":"nextInstructionDistance","abstract":"

    The distance to this instruction from current location. This should only be updated ever .1 unit of distance. For more accuracy the consumer can use the GPS location of itself and the next instruction.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)nextInstructionDistanceScale":{"name":"nextInstructionDistanceScale","abstract":"

    Distance till next maneuver (starting from) from previous maneuver.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationServiceData.html#/c:objc(cs)SDLNavigationServiceData(py)prompt":{"name":"prompt","abstract":"

    This is a prompt message that should be conveyed to the user through either display or voice (TTS). This param will change often as it should represent the following: approaching instruction, post instruction, alerts that affect the current navigation session, etc.

    ","parent_name":"SDLNavigationServiceData"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(im)initWithLocationDetails:action:":{"name":"-initWithLocationDetails:action:","abstract":"

    Convenience init for required parameters

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(im)initWithLocationDetails:action:eta:bearing:junctionType:drivingSide:details:image:":{"name":"-initWithLocationDetails:action:eta:bearing:junctionType:drivingSide:details:image:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)locationDetails":{"name":"locationDetails","abstract":"

    The location details.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)action":{"name":"action","abstract":"

    The navigation action.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)eta":{"name":"eta","abstract":"

    The estimated time of arrival.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)bearing":{"name":"bearing","abstract":"

    The angle at which this instruction takes place. For example, 0 would mean straight, <=45 is bearing right, >= 135 is sharp right, between 45 and 135 is a regular right, and 180 is a U-Turn, etc.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)junctionType":{"name":"junctionType","abstract":"

    The navigation junction type.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)drivingSide":{"name":"drivingSide","abstract":"

    Used to infer which side of the road this instruction takes place. For a U-Turn (action=TURN, bearing=180) this will determine which direction the turn should take place.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)details":{"name":"details","abstract":"

    This is a string representation of this instruction, used to display instructions to the users. This is not intended to be read aloud to the users, see the param prompt in NavigationServiceData for that.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationInstruction.html#/c:objc(cs)SDLNavigationInstruction(py)image":{"name":"image","abstract":"

    An image representation of this instruction.

    ","parent_name":"SDLNavigationInstruction"},"Classes/SDLNavigationCapability.html#/c:objc(cs)SDLNavigationCapability(im)initWithSendLocation:waypoints:":{"name":"-initWithSendLocation:waypoints:","abstract":"

    Undocumented

    ","parent_name":"SDLNavigationCapability"},"Classes/SDLNavigationCapability.html#/c:objc(cs)SDLNavigationCapability(py)sendLocationEnabled":{"name":"sendLocationEnabled","abstract":"

    Whether or not the SendLocation RPC is enabled.

    ","parent_name":"SDLNavigationCapability"},"Classes/SDLNavigationCapability.html#/c:objc(cs)SDLNavigationCapability(py)getWayPointsEnabled":{"name":"getWayPointsEnabled","abstract":"

    Whether or not Waypoint related RPCs are enabled.

    ","parent_name":"SDLNavigationCapability"},"Classes/SDLMyKey.html#/c:objc(cs)SDLMyKey(py)e911Override":{"name":"e911Override","abstract":"

    Indicates whether e911 override is on. References signal MyKey_e911Override_St. See VehicleDataStatus.

    ","parent_name":"SDLMyKey"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithRadioControlData:":{"name":"-initWithRadioControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with radio control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithClimateControlData:":{"name":"-initWithClimateControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with climate control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithAudioControlData:":{"name":"-initWithAudioControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with audio control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithLightControlData:":{"name":"-initWithLightControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with light control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithHMISettingsControlData:":{"name":"-initWithHMISettingsControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with hmi settings data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(im)initWithSeatControlData:":{"name":"-initWithSeatControlData:","abstract":"

    Constructs a newly allocated SDLModuleData object with seat control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)moduleType":{"name":"moduleType","abstract":"

    The moduleType indicates which type of data should be changed and identifies which data object exists in this struct.

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)radioControlData":{"name":"radioControlData","abstract":"

    The radio control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)climateControlData":{"name":"climateControlData","abstract":"

    The climate control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)seatControlData":{"name":"seatControlData","abstract":"

    The seat control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)audioControlData":{"name":"audioControlData","abstract":"

    The audio control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)lightControlData":{"name":"lightControlData","abstract":"

    The light control data

    ","parent_name":"SDLModuleData"},"Classes/SDLModuleData.html#/c:objc(cs)SDLModuleData(py)hmiSettingsControlData":{"name":"hmiSettingsControlData","abstract":"

    The hmi control data

    ","parent_name":"SDLModuleData"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(im)initWithTextFieldTypes:mainField2:":{"name":"-initWithTextFieldTypes:mainField2:","abstract":"

    Constructs a newly allocated SDLMetadataType object with NSArrays

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(im)initWithTextFieldTypes:mainField2:mainField3:mainField4:":{"name":"-initWithTextFieldTypes:mainField2:mainField3:mainField4:","abstract":"

    Undocumented

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(py)mainField1":{"name":"mainField1","abstract":"

    The type of data contained in the mainField1 text field.

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(py)mainField2":{"name":"mainField2","abstract":"

    The type of data contained in the mainField2 text field.

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(py)mainField3":{"name":"mainField3","abstract":"

    The type of data contained in the mainField3 text field.

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMetadataTags.html#/c:objc(cs)SDLMetadataTags(py)mainField4":{"name":"mainField4","abstract":"

    The type of data contained in the mainField4 text field.

    ","parent_name":"SDLMetadataTags"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(im)initWithMenuName:":{"name":"-initWithMenuName:","abstract":"

    Undocumented

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(im)initWithMenuName:parentId:position:":{"name":"-initWithMenuName:parentId:position:","abstract":"

    Undocumented

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(py)parentID":{"name":"parentID","abstract":"

    The unique ID of an existing submenu to which a command will be added

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(py)position":{"name":"position","abstract":"

    The position within the items of the parent Command Menu

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuParams.html#/c:objc(cs)SDLMenuParams(py)menuName":{"name":"menuName","abstract":"

    The menu name which appears in menu, representing this command

    ","parent_name":"SDLMenuParams"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)title":{"name":"title","abstract":"

    The cell’s text to be displayed

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)icon":{"name":"icon","abstract":"

    The cell’s icon to be displayed

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)voiceCommands":{"name":"voiceCommands","abstract":"

    The strings the user can say to activate this voice command

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)handler":{"name":"handler","abstract":"

    The handler that will be called when the command is activated

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(py)subCells":{"name":"subCells","abstract":"

    If this is non-nil, this cell will be a sub-menu button, displaying the subcells in a menu when pressed.

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(im)initWithTitle:icon:voiceCommands:handler:":{"name":"-initWithTitle:icon:voiceCommands:handler:","abstract":"

    Create a menu cell that has no subcells.

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(im)initWithTitle:subCells:":{"name":"-initWithTitle:subCells:","abstract":"

    Create a menu cell that has subcells and when selected will go into a deeper part of the menu

    ","parent_name":"SDLMenuCell"},"Classes/SDLMenuCell.html#/c:objc(cs)SDLMenuCell(im)initWithTitle:icon:subCells:":{"name":"-initWithTitle:icon:subCells:","abstract":"

    Create a menu cell that has subcells and when selected will go into a deeper part of the menu

    ","parent_name":"SDLMenuCell"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(im)initWithMediaType:mediaTitle:mediaArtist:mediaAlbum:playlistName:isExplicit:trackPlaybackProgress:trackPlaybackDuration:queuePlaybackProgress:queuePlaybackDuration:queueCurrentTrackNumber:queueTotalTrackCount:":{"name":"-initWithMediaType:mediaTitle:mediaArtist:mediaAlbum:playlistName:isExplicit:trackPlaybackProgress:trackPlaybackDuration:queuePlaybackProgress:queuePlaybackDuration:queueCurrentTrackNumber:queueTotalTrackCount:","abstract":"

    Convenience init

    ","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)mediaType":{"name":"mediaType","abstract":"

    The type of the currently playing or paused track.

    ","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)mediaTitle":{"name":"mediaTitle","abstract":"

    Music: The name of the current track","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)mediaArtist":{"name":"mediaArtist","abstract":"

    Music: The name of the current album artist","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)mediaAlbum":{"name":"mediaAlbum","abstract":"

    Music: The name of the current album","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)playlistName":{"name":"playlistName","abstract":"

    Music: The name of the playlist or radio station, if the user is playing from a playlist, otherwise, Null","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)isExplicit":{"name":"isExplicit","abstract":"

    Whether or not the content currently playing (e.g. the track, episode, or book) contains explicit content.

    ","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)trackPlaybackProgress":{"name":"trackPlaybackProgress","abstract":"

    Music: The current progress of the track in seconds","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)trackPlaybackDuration":{"name":"trackPlaybackDuration","abstract":"

    Music: The total duration of the track in seconds","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)queuePlaybackProgress":{"name":"queuePlaybackProgress","abstract":"

    Music: The current progress of the playback queue in seconds","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)queuePlaybackDuration":{"name":"queuePlaybackDuration","abstract":"

    Music: The total duration of the playback queue in seconds","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)queueCurrentTrackNumber":{"name":"queueCurrentTrackNumber","abstract":"

    Music: The current number (1 based) of the track in the playback queue","parent_name":"SDLMediaServiceData"},"Classes/SDLMediaServiceData.html#/c:objc(cs)SDLMediaServiceData(py)queueTotalTrackCount":{"name":"queueTotalTrackCount","abstract":"

    Music: The total number of tracks in the playback queue","parent_name":"SDLMediaServiceData"},"Classes/SDLMassageModeData.html#/c:objc(cs)SDLMassageModeData(im)initWithMassageMode:massageZone:":{"name":"-initWithMassageMode:massageZone:","abstract":"

    @abstract Constructs a newly allocated SDLMassageModeData object with massageMode and massageZone

    ","parent_name":"SDLMassageModeData"},"Classes/SDLMassageModeData.html#/c:objc(cs)SDLMassageModeData(py)massageMode":{"name":"massageMode","abstract":"

    @abstract mode of a massage zone

    ","parent_name":"SDLMassageModeData"},"Classes/SDLMassageModeData.html#/c:objc(cs)SDLMassageModeData(py)massageZone":{"name":"massageZone","abstract":"

    @abstract zone of a multi-contour massage seat.

    ","parent_name":"SDLMassageModeData"},"Classes/SDLMassageCushionFirmness.html#/c:objc(cs)SDLMassageCushionFirmness(im)initWithMassageCushion:firmness:":{"name":"-initWithMassageCushion:firmness:","abstract":"

    Constructs a newly allocated SDLMassageCushionFirmness object with cushion and firmness

    ","parent_name":"SDLMassageCushionFirmness"},"Classes/SDLMassageCushionFirmness.html#/c:objc(cs)SDLMassageCushionFirmness(py)cushion":{"name":"cushion","abstract":"

    @abstract cushion of a multi-contour massage seat.

    ","parent_name":"SDLMassageCushionFirmness"},"Classes/SDLMassageCushionFirmness.html#/c:objc(cs)SDLMassageCushionFirmness(py)firmness":{"name":"firmness","abstract":"

    @abstract zone of a multi-contour massage seat.

    ","parent_name":"SDLMassageCushionFirmness"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)configuration":{"name":"configuration","abstract":"

    The configuration the manager was set up with.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)hmiLevel":{"name":"hmiLevel","abstract":"

    The current HMI level of the running app.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)audioStreamingState":{"name":"audioStreamingState","abstract":"

    The current audio streaming state of the running app.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)systemContext":{"name":"systemContext","abstract":"

    The current system context of the running app.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)fileManager":{"name":"fileManager","abstract":"

    The file manager to be used by the running app.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)permissionManager":{"name":"permissionManager","abstract":"

    The permission manager monitoring RPC permissions.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)streamManager":{"name":"streamManager","abstract":"

    The streaming media manager to be used for starting video sessions.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)screenManager":{"name":"screenManager","abstract":"

    The screen manager for sending UI related RPCs.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)systemCapabilityManager":{"name":"systemCapabilityManager","abstract":"

    Centralized manager for retrieving all system capabilities.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)registerResponse":{"name":"registerResponse","abstract":"

    The response of a register call after it has been received.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)authToken":{"name":"authToken","abstract":"

    The auth token, if received. This should be used to log into a user account. Primarily used for cloud apps with companion app stores.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)delegate":{"name":"delegate","abstract":"

    The manager’s delegate.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)pendingRPCTransactions":{"name":"pendingRPCTransactions","abstract":"

    The currently pending RPC request send transactions

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(py)proxy":{"name":"proxy","abstract":"

    Undocumented

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)initWithConfiguration:delegate:":{"name":"-initWithConfiguration:delegate:","abstract":"

    Initialize the manager with a configuration. Call startWithHandler to begin waiting for a connection.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)startWithReadyHandler:":{"name":"-startWithReadyHandler:","abstract":"

    Start the manager, which will tell it to start looking for a connection. Once one does, it will automatically run the setup process and call the readyBlock when done.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)stop":{"name":"-stop","abstract":"

    Stop the manager, it will disconnect if needed and no longer look for a connection. You probably don’t need to call this method ever.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendRPC:":{"name":"-sendRPC:","abstract":"

    Send an RPC of type Response, Notification or Request. Responses and notifications sent to Core do not a response back from Core. Each request sent to Core does get a response, so if you need the response and/or error, call sendRequest:withResponseHandler: instead.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendRequest:":{"name":"-sendRequest:","abstract":"

    Send an RPC request and don’t bother with the response or error. If you need the response or error, call sendRequest:withCompletionHandler: instead.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendRequest:withResponseHandler:":{"name":"-sendRequest:withResponseHandler:","abstract":"

    Send an RPC request and set a completion handler that will be called with the response when the response returns.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendRequests:progressHandler:completionHandler:":{"name":"-sendRequests:progressHandler:completionHandler:","abstract":"

    Send all of the requests given as quickly as possible, but in order. Call the completionHandler after all requests have either failed or given a response.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)sendSequentialRequests:progressHandler:completionHandler:":{"name":"-sendSequentialRequests:progressHandler:completionHandler:","abstract":"

    Send all of the requests one at a time, with the next one going out only after the previous one has received a response. Call the completionHandler after all requests have either failed or given a response.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)subscribeToRPC:withBlock:":{"name":"-subscribeToRPC:withBlock:","abstract":"

    Subscribe to callbacks about a particular RPC request, notification, or response with a block callback.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)subscribeToRPC:withObserver:selector:":{"name":"-subscribeToRPC:withObserver:selector:","abstract":"

    Subscribe to callbacks about a particular RPC request, notification, or response with a selector callback.

    ","parent_name":"SDLManager"},"Classes/SDLManager.html#/c:objc(cs)SDLManager(im)unsubscribeFromRPC:withObserver:":{"name":"-unsubscribeFromRPC:withObserver:","abstract":"

    Unsubscribe to callbacks about a particular RPC request, notification, or response.

    ","parent_name":"SDLManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)modules":{"name":"modules","abstract":"

    Active log modules

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)targets":{"name":"targets","abstract":"

    Active log targets

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)filters":{"name":"filters","abstract":"

    Active log filters

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)globalLogLevel":{"name":"globalLogLevel","abstract":"

    Any modules that do not have an explicitly specified level will by default use this log level

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)formatType":{"name":"formatType","abstract":"

    Active log format

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)asynchronous":{"name":"asynchronous","abstract":"

    Whether or not verbose, debug, and warning logs are logged asynchronously. If logs are performed async, then some may be missed in the event of a terminating signal such as an exception, but performance is improved and your code will not be slowed by logging.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)errorsAsynchronous":{"name":"errorsAsynchronous","abstract":"

    Whether or not error logs are logged asynchronously. If logs are performed async, then some may be missed in the event of a terminating signal such as an exception, but performance is improved and your code will not be slowed by logging.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(py)disableAssertions":{"name":"disableAssertions","abstract":"

    Whether or not assert logs will fire assertions in DEBUG mode. Assertions are always disabled in RELEASE builds. If assertions are disabled, only an error log will fire instead. Defaults to NO.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cpy)dateFormatter":{"name":"dateFormatter","abstract":"

    Active date formatter

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cpy)logQueue":{"name":"logQueue","abstract":"

    The queue asynchronously logged logs are logged on. Say that 10 times fast.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)sharedManager":{"name":"+sharedManager","abstract":"

    The singleton object

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)setConfiguration:":{"name":"+setConfiguration:","abstract":"

    Sets a configuration to be used by the log manager’s sharedManager. This is generally for internal use and you should set your configuration using SDLManager’s startWithConfiguration: method.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)setConfiguration:":{"name":"-setConfiguration:","abstract":"

    Sets a configuration to be used by the log manager. This is generally for internal use and you should set your configuration using SDLManager’s startWithConfiguration: method.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)logWithLevel:timestamp:file:functionName:line:queue:formatMessage:":{"name":"+logWithLevel:timestamp:file:functionName:line:queue:formatMessage:","abstract":"

    Log to the sharedManager’s active log targets. This is used internally to log. If you want to create a log, you should use macros such as SDLLogD.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)logWithLevel:timestamp:file:functionName:line:queue:formatMessage:":{"name":"-logWithLevel:timestamp:file:functionName:line:queue:formatMessage:","abstract":"

    Log to this log manager’s active log targets. This is used internally to log. If you want to create a log, you should use macros such as SDLLogD.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)logWithLevel:timestamp:file:functionName:line:queue:message:":{"name":"+logWithLevel:timestamp:file:functionName:line:queue:message:","abstract":"

    Log to this sharedManager’s active log targets. This is used internally to log. If you want to create a log, you should use macros such as SDLLogD.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)logWithLevel:timestamp:file:functionName:line:queue:message:":{"name":"-logWithLevel:timestamp:file:functionName:line:queue:message:","abstract":"

    Log to this log manager’s active log targets. This is used internally to log. If you want to create a log, you should use macros such as SDLLogD.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)logBytes:direction:timestamp:file:functionName:line:queue:":{"name":"+logBytes:direction:timestamp:file:functionName:line:queue:","abstract":"

    Log to this sharedManager’s active log targets. This is used internally to log.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)logBytes:direction:timestamp:file:functionName:line:queue:":{"name":"-logBytes:direction:timestamp:file:functionName:line:queue:","abstract":"

    Log to this manager’s active log targets. This is used internally to log.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(cm)logAssertWithTimestamp:file:functionName:line:queue:formatMessage:":{"name":"+logAssertWithTimestamp:file:functionName:line:queue:formatMessage:","abstract":"

    Log an error to the sharedManager’s active log targets and assert. This is used internally to log.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogManager.html#/c:objc(cs)SDLLogManager(im)logAssertWithTimestamp:file:functionName:line:queue:formatMessage:":{"name":"-logAssertWithTimestamp:file:functionName:line:queue:formatMessage:","abstract":"

    Log an error to this manager’s active log targets and assert. This is used internally to log.

    ","parent_name":"SDLLogManager"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(py)filter":{"name":"filter","abstract":"

    Undocumented

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(im)initWithCustomFilter:":{"name":"-initWithCustomFilter:","abstract":"

    Create a new filter with a custom filter block. The filter block will take a log model and return a BOOL of pass / fail.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByDisallowingString:caseSensitive:":{"name":"+filterByDisallowingString:caseSensitive:","abstract":"

    Returns a filter that only allows logs not containing the passed string within their message.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByAllowingString:caseSensitive:":{"name":"+filterByAllowingString:caseSensitive:","abstract":"

    Returns a filter that only allows logs containing the passed string within their message.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByDisallowingRegex:":{"name":"+filterByDisallowingRegex:","abstract":"

    Returns a filter that only allows logs not passing the passed regex against their message.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByAllowingRegex:":{"name":"+filterByAllowingRegex:","abstract":"

    Returns a filter that only allows logs passing the passed regex against their message.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByDisallowingModules:":{"name":"+filterByDisallowingModules:","abstract":"

    Returns a filter that only allows logs not within the specified file modules to be logged.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByAllowingModules:":{"name":"+filterByAllowingModules:","abstract":"

    Returns a filter that only allows logs of the specified file modules to be logged.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByDisallowingFileNames:":{"name":"+filterByDisallowingFileNames:","abstract":"

    Returns a filter that only allows logs not within the specified files to be logged.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFilter.html#/c:objc(cs)SDLLogFilter(cm)filterByAllowingFileNames:":{"name":"+filterByAllowingFileNames:","abstract":"

    Returns a filter that only allows logs within the specified files to be logged.

    ","parent_name":"SDLLogFilter"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(py)name":{"name":"name","abstract":"

    The name of the this module, e.g. Transport

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(py)files":{"name":"files","abstract":"

    All of the files contained within this module. When a log is logged, the __FILE__ (in Obj-C) or #file (in Swift) is automatically captured and checked to see if any module has a file in this set that matches. If it does, it will be logged using the module’s log level and the module’s name will be printed in the formatted log.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(py)logLevel":{"name":"logLevel","abstract":"

    The custom level of the log. This is SDLLogLevelDefault (whatever the current global log level is) by default.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(im)init":{"name":"-init","abstract":"

    This method is unavailable and may not be used.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(im)initWithName:files:level:":{"name":"-initWithName:files:level:","abstract":"

    Returns an initialized SDLLogFileModule that contains a custom name, set of files, and associated log level.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(im)initWithName:files:":{"name":"-initWithName:files:","abstract":"

    Returns an initialized SDLLogFileModule that contains a custom name and set of files. The logging level is the same as the current global logging file by using SDLLogLevelDefault.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(cm)moduleWithName:files:":{"name":"+moduleWithName:files:","abstract":"

    Returns an initialized SDLLogFileModule that contains a custom name and set of files. The logging level is the same as the current global logging file by using SDLLogLevelDefault.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogFileModule.html#/c:objc(cs)SDLLogFileModule(im)containsFile:":{"name":"-containsFile:","abstract":"

    Returns whether or not this module contains a given file.

    ","parent_name":"SDLLogFileModule"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)modules":{"name":"modules","abstract":"

    Any custom logging modules used by the developer’s code. Defaults to none.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)targets":{"name":"targets","abstract":"

    Where the logs will attempt to output. Defaults to Console.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)filters":{"name":"filters","abstract":"

    What log filters will run over this session. Defaults to none.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)formatType":{"name":"formatType","abstract":"

    How detailed of logs will be output. Defaults to Default.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)asynchronous":{"name":"asynchronous","abstract":"

    Whether or not logs will be run on a separate queue, asynchronously, allowing the following code to run before the log completes. Or if it will occur synchronously, which will prevent logs from being missed, but will slow down surrounding code. Defaults to YES.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)errorsAsynchronous":{"name":"errorsAsynchronous","abstract":"

    Whether or not error logs will be dispatched to loggers asynchronously. Defaults to NO.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)disableAssertions":{"name":"disableAssertions","abstract":"

    Whether or not assert logs will fire assertions in DEBUG mode. Assertions are always disabled in RELEASE builds. If assertions are disabled, only an error log will fire instead. Defaults to NO.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(py)globalLogLevel":{"name":"globalLogLevel","abstract":"

    Any modules that do not have an explicitly specified level will by default use the global log level. Defaults to Error.","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(cm)defaultConfiguration":{"name":"+defaultConfiguration","abstract":"

    A default logger for production. This sets the format type to Default, the log level to Error, and only enables the ASL logger.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLogConfiguration.html#/c:objc(cs)SDLLogConfiguration(cm)debugConfiguration":{"name":"+debugConfiguration","abstract":"

    A debug logger for use in development. This sets the format type to Detailed, the log level to Debug, and enables the Console and ASL loggers.

    ","parent_name":"SDLLogConfiguration"},"Classes/SDLLockScreenViewController.html#/c:objc(cs)SDLLockScreenViewController(py)appIcon":{"name":"appIcon","abstract":"

    The app’s icon. This will be set by the lock screen configuration.

    ","parent_name":"SDLLockScreenViewController"},"Classes/SDLLockScreenViewController.html#/c:objc(cs)SDLLockScreenViewController(py)vehicleIcon":{"name":"vehicleIcon","abstract":"

    The vehicle’s designated icon. This will be set by the lock screen manager when it is notified that a lock screen icon has been downloaded.

    ","parent_name":"SDLLockScreenViewController"},"Classes/SDLLockScreenViewController.html#/c:objc(cs)SDLLockScreenViewController(py)backgroundColor":{"name":"backgroundColor","abstract":"

    The designated background color set in the lock screen configuration, or the default SDL gray-blue.

    ","parent_name":"SDLLockScreenViewController"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)showInOptionalState":{"name":"showInOptionalState","abstract":"

    Whether or not the lock screen should be shown in the lock screen optional state. Defaults to false.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)enableAutomaticLockScreen":{"name":"enableAutomaticLockScreen","abstract":"

    If YES, the lock screen should be managed by SDL and automatically engage when necessary. If NO, then the lock screen will never be engaged.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)backgroundColor":{"name":"backgroundColor","abstract":"

    The background color of the lock screen. This could be a branding color, or leave at the default for a dark blue-gray.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)appIcon":{"name":"appIcon","abstract":"

    Your app icon as it will appear on the lock screen.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(py)customViewController":{"name":"customViewController","abstract":"

    A custom view controller that the lock screen will manage the presentation of.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(cm)disabledConfiguration":{"name":"+disabledConfiguration","abstract":"

    Use this configuration if you wish to manage a lock screen yourself. This may be useful if the automatic presentation feature of SDLLockScreenManager is failing for some reason.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(cm)enabledConfiguration":{"name":"+enabledConfiguration","abstract":"

    Use this configuration for the basic default lock screen. A custom app icon will not be used.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(cm)enabledConfigurationWithAppIcon:backgroundColor:":{"name":"+enabledConfigurationWithAppIcon:backgroundColor:","abstract":"

    Use this configuration to provide a custom lock screen icon and a custom background color, or nil if you wish to use the default background color. This will use the default lock screen layout.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLockScreenConfiguration.html#/c:objc(cs)SDLLockScreenConfiguration(cm)enabledConfigurationWithViewController:":{"name":"+enabledConfigurationWithViewController:","abstract":"

    Use this configuration if you wish to provide your own view controller for the lock screen. This view controller’s presentation and dismissal will still be managed by the lock screen manager. Note that you may subclass SDLLockScreenViewController and pass it here to continue to have the vehicle icon set to your view controller by the manager.

    ","parent_name":"SDLLockScreenConfiguration"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(im)initWithCoordinate:":{"name":"-initWithCoordinate:","abstract":"

    Convenience init for location coordinate.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(im)initWithCoordinate:locationName:addressLines:locationDescription:phoneNumber:locationImage:searchAddress:":{"name":"-initWithCoordinate:locationName:addressLines:locationDescription:phoneNumber:locationImage:searchAddress:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)coordinate":{"name":"coordinate","abstract":"

    Latitude/Longitude of the location

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)locationName":{"name":"locationName","abstract":"

    Name of location.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)addressLines":{"name":"addressLines","abstract":"

    Location address for display purposes only.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)locationDescription":{"name":"locationDescription","abstract":"

    Description intended location / establishment.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)phoneNumber":{"name":"phoneNumber","abstract":"

    Phone number of location / establishment.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)locationImage":{"name":"locationImage","abstract":"

    Image / icon of intended location.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationDetails.html#/c:objc(cs)SDLLocationDetails(py)searchAddress":{"name":"searchAddress","abstract":"

    Address to be used by navigation engines for search.

    ","parent_name":"SDLLocationDetails"},"Classes/SDLLocationCoordinate.html#/c:objc(cs)SDLLocationCoordinate(im)initWithLatitudeDegrees:longitudeDegrees:":{"name":"-initWithLatitudeDegrees:longitudeDegrees:","abstract":"

    Convenience init for location coordinates

    ","parent_name":"SDLLocationCoordinate"},"Classes/SDLLocationCoordinate.html#/c:objc(cs)SDLLocationCoordinate(py)latitudeDegrees":{"name":"latitudeDegrees","abstract":"

    Latitude of the location

    ","parent_name":"SDLLocationCoordinate"},"Classes/SDLLocationCoordinate.html#/c:objc(cs)SDLLocationCoordinate(py)longitudeDegrees":{"name":"longitudeDegrees","abstract":"

    Latitude of the location

    ","parent_name":"SDLLocationCoordinate"},"Classes/SDLListFilesResponse.html#/c:objc(cs)SDLListFilesResponse(py)filenames":{"name":"filenames","abstract":"

    An array of all filenames resident on the module for the given registered app. If omitted, then no files currently reside on the system.

    ","parent_name":"SDLListFilesResponse"},"Classes/SDLListFilesResponse.html#/c:objc(cs)SDLListFilesResponse(py)spaceAvailable":{"name":"spaceAvailable","abstract":"

    Provides the total local space available on the module for the registered app.

    ","parent_name":"SDLListFilesResponse"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(im)initWithId:status:":{"name":"-initWithId:status:","abstract":"

    Constructs a newly allocated SDLLightState object with given parameters

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(im)initWithId:status:density:color:":{"name":"-initWithId:status:density:color:","abstract":"

    Constructs a newly allocated SDLLightState object with given parameters

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(im)initWithId:lightStatus:lightDensity:lightColor:":{"name":"-initWithId:lightStatus:lightDensity:lightColor:","abstract":"

    Constructs a newly allocated SDLLightState object with given parameters

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(py)id":{"name":"id","abstract":"

    @abstract The name of a light or a group of lights

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(py)status":{"name":"status","abstract":"

    @abstract Reflects the status of Light.

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(py)density":{"name":"density","abstract":"

    @abstract Reflects the density of Light.

    ","parent_name":"SDLLightState"},"Classes/SDLLightState.html#/c:objc(cs)SDLLightState(py)color":{"name":"color","abstract":"

    @abstract Reflects the color of Light.

    ","parent_name":"SDLLightState"},"Classes/SDLLightControlData.html#/c:objc(cs)SDLLightControlData(im)initWithLightStates:":{"name":"-initWithLightStates:","abstract":"

    Constructs a newly allocated SDLLightControlData object with lightState

    ","parent_name":"SDLLightControlData"},"Classes/SDLLightControlData.html#/c:objc(cs)SDLLightControlData(py)lightState":{"name":"lightState","abstract":"

    @abstract An array of LightNames and their current or desired status.","parent_name":"SDLLightControlData"},"Classes/SDLLightControlCapabilities.html#/c:objc(cs)SDLLightControlCapabilities(im)initWithModuleName:supportedLights:":{"name":"-initWithModuleName:supportedLights:","abstract":"

    Constructs a newly allocated SDLLightControlCapabilities object with given parameters

    ","parent_name":"SDLLightControlCapabilities"},"Classes/SDLLightControlCapabilities.html#/c:objc(cs)SDLLightControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    @abstract The short friendly name of the light control module.","parent_name":"SDLLightControlCapabilities"},"Classes/SDLLightControlCapabilities.html#/c:objc(cs)SDLLightControlCapabilities(py)supportedLights":{"name":"supportedLights","abstract":"

    @abstract An array of available LightCapabilities that are controllable.

    ","parent_name":"SDLLightControlCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(im)initWithName:":{"name":"-initWithName:","abstract":"

    Constructs a newly allocated SDLLightCapabilities object with the name of the light or group of lights

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(im)initWithName:densityAvailable:colorAvailable:statusAvailable:":{"name":"-initWithName:densityAvailable:colorAvailable:statusAvailable:","abstract":"

    Constructs a newly allocated SDLLightCapabilities object with given parameters

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(py)name":{"name":"name","abstract":"

    @abstract The name of a light or a group of lights

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(py)densityAvailable":{"name":"densityAvailable","abstract":"

    @abstract Indicates if the light’s density can be set remotely (similar to a dimmer).

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(py)colorAvailable":{"name":"colorAvailable","abstract":"

    @abstract Indicates if the light’s color can be set remotely by using the RGB color space.

    ","parent_name":"SDLLightCapabilities"},"Classes/SDLLightCapabilities.html#/c:objc(cs)SDLLightCapabilities(py)statusAvailable":{"name":"statusAvailable","abstract":"

    @abstract Indicates if the status (ON/OFF) can be set remotely.","parent_name":"SDLLightCapabilities"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(py)appName":{"name":"appName","abstract":"

    The full name of the app to that the configuration should be updated to.

    ","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(py)shortAppName":{"name":"shortAppName","abstract":"

    An abbrevited application name that will be used on the app launching screen if the full one would be truncated.

    ","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(py)ttsName":{"name":"ttsName","abstract":"

    A Text to Speech String for voice recognition of the mobile application name.

    ","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(py)voiceRecognitionCommandNames":{"name":"voiceRecognitionCommandNames","abstract":"

    Additional voice recognition commands. May not interfere with any other app name or global commands.

    ","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfigurationUpdate.html#/c:objc(cs)SDLLifecycleConfigurationUpdate(im)initWithAppName:shortAppName:ttsName:voiceRecognitionCommandNames:":{"name":"-initWithAppName:shortAppName:ttsName:voiceRecognitionCommandNames:","abstract":"

    Initializes and returns a newly allocated lifecycle configuration update object with the specified app data.","parent_name":"SDLLifecycleConfigurationUpdate"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(cm)defaultConfigurationWithAppName:appId:":{"name":"+defaultConfigurationWithAppName:appId:","abstract":"

    A production configuration that runs using IAP. Additional functionality should be customized on the properties.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(cm)defaultConfigurationWithAppName:fullAppId:":{"name":"+defaultConfigurationWithAppName:fullAppId:","abstract":"

    A production configuration that runs using IAP. Additional functionality should be customized on the properties.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(cm)debugConfigurationWithAppName:appId:ipAddress:port:":{"name":"+debugConfigurationWithAppName:appId:ipAddress:port:","abstract":"

    A debug configuration that runs using TCP. Additional functionality should be customized on the properties.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(cm)debugConfigurationWithAppName:fullAppId:ipAddress:port:":{"name":"+debugConfigurationWithAppName:fullAppId:ipAddress:port:","abstract":"

    A debug configuration that runs using TCP. Additional functionality should be customized on the properties.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)tcpDebugMode":{"name":"tcpDebugMode","abstract":"

    Whether or not debug mode is enabled

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)tcpDebugIPAddress":{"name":"tcpDebugIPAddress","abstract":"

    The ip address at which the library will look for a server

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)tcpDebugPort":{"name":"tcpDebugPort","abstract":"

    The port at which the library will look for a server

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)appName":{"name":"appName","abstract":"

    The full name of the app

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)appId":{"name":"appId","abstract":"

    The app id. This must be the same as the app id received from the SDL developer portal.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)fullAppId":{"name":"fullAppId","abstract":"

    The full app id. This must be the same as the full app id received from the SDL developer portal.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)resumeHash":{"name":"resumeHash","abstract":"

    A hash id which should be passed to the remote system in the RegisterAppInterface

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)isMedia":{"name":"isMedia","abstract":"

    This is an automatically set based on the app type

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)appType":{"name":"appType","abstract":"

    The application type

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)additionalAppTypes":{"name":"additionalAppTypes","abstract":"

    Additional application types beyond appType

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)language":{"name":"language","abstract":"

    The default language to use

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)languagesSupported":{"name":"languagesSupported","abstract":"

    An array of all the supported languages

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)appIcon":{"name":"appIcon","abstract":"

    The application icon to be used on an app launching screen

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)shortAppName":{"name":"shortAppName","abstract":"

    An abbrevited application name that will be used on the app launching screen if the full one would be truncated

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)ttsName":{"name":"ttsName","abstract":"

    A Text to Speech String for voice recognition of the mobile application name.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)voiceRecognitionCommandNames":{"name":"voiceRecognitionCommandNames","abstract":"

    Additional voice recognition commands. May not interfere with any other app name or global commands.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)dayColorScheme":{"name":"dayColorScheme","abstract":"

    The color scheme to use when the head unit is in a light / day situation.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)nightColorScheme":{"name":"nightColorScheme","abstract":"

    The color scheme to use when the head unit is in a dark / night situation.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)minimumProtocolVersion":{"name":"minimumProtocolVersion","abstract":"

    The minimum protocol version that will be permitted to connect. This defaults to 1.0.0. If the protocol version of the head unit connected is below this version, the app will disconnect with an EndService protocol message and will not register.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLLifecycleConfiguration.html#/c:objc(cs)SDLLifecycleConfiguration(py)minimumRPCVersion":{"name":"minimumRPCVersion","abstract":"

    The minimum RPC version that will be permitted to connect. This defaults to 1.0.0. If the RPC version of the head unit connected is below this version, an UnregisterAppInterface will be sent.

    ","parent_name":"SDLLifecycleConfiguration"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(im)initWithLanguage:layout:keypressMode:limitedCharacterList:autoCompleteText:":{"name":"-initWithLanguage:layout:keypressMode:limitedCharacterList:autoCompleteText:","abstract":"

    Undocumented

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)language":{"name":"language","abstract":"

    The keyboard language

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)keyboardLayout":{"name":"keyboardLayout","abstract":"

    Desired keyboard layout

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)keypressMode":{"name":"keypressMode","abstract":"

    Desired keypress mode.

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)limitedCharacterList":{"name":"limitedCharacterList","abstract":"

    Array of keyboard characters to enable. All omitted characters will be greyed out (disabled) on the keyboard. If omitted, the entire keyboard will be enabled.

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLKeyboardProperties.html#/c:objc(cs)SDLKeyboardProperties(py)autoCompleteText":{"name":"autoCompleteText","abstract":"

    Allows an app to prepopulate the text field with a suggested or completed entry as the user types

    ","parent_name":"SDLKeyboardProperties"},"Classes/SDLImageResolution.html#/c:objc(cs)SDLImageResolution(py)resolutionWidth":{"name":"resolutionWidth","abstract":"

    Resolution width

    ","parent_name":"SDLImageResolution"},"Classes/SDLImageResolution.html#/c:objc(cs)SDLImageResolution(py)resolutionHeight":{"name":"resolutionHeight","abstract":"

    Resolution height

    ","parent_name":"SDLImageResolution"},"Classes/SDLImageResolution.html#/c:objc(cs)SDLImageResolution(im)initWithWidth:height:":{"name":"-initWithWidth:height:","abstract":"

    Undocumented

    ","parent_name":"SDLImageResolution"},"Classes/SDLImageField.html#/c:objc(cs)SDLImageField(py)name":{"name":"name","abstract":"

    The name that identifies the field.

    ","parent_name":"SDLImageField"},"Classes/SDLImageField.html#/c:objc(cs)SDLImageField(py)imageTypeSupported":{"name":"imageTypeSupported","abstract":"

    The image types that are supported in this field.

    ","parent_name":"SDLImageField"},"Classes/SDLImageField.html#/c:objc(cs)SDLImageField(py)imageResolution":{"name":"imageResolution","abstract":"

    The image resolution of this field

    ","parent_name":"SDLImageField"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithName:ofType:":{"name":"-initWithName:ofType:","abstract":"

    Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithName:ofType:isTemplate:":{"name":"-initWithName:ofType:isTemplate:","abstract":"

    Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithName:":{"name":"-initWithName:","abstract":"

    Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithName:isTemplate:":{"name":"-initWithName:isTemplate:","abstract":"

    Convenience init for displaying a dynamic image. The image must be uploaded to SDL Core before being displayed.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithStaticImageValue:":{"name":"-initWithStaticImageValue:","abstract":"

    Convenience init for displaying a static image. Static images are already on-board SDL Core and can be used by providing the image’s value.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(im)initWithStaticIconName:":{"name":"-initWithStaticIconName:","abstract":"

    Convenience init for displaying a static image. Static images are already on-board SDL Core and can be used by providing the image’s value.

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(py)value":{"name":"value","abstract":"

    The static hex icon value or the binary image file name identifier (sent by SDLPutFile)

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(py)imageType":{"name":"imageType","abstract":"

    Describes whether the image is static or dynamic

    ","parent_name":"SDLImage"},"Classes/SDLImage.html#/c:objc(cs)SDLImage(py)isTemplate":{"name":"isTemplate","abstract":"

    Indicates that this image can be (re)colored by the HMI to best fit the current color scheme.

    ","parent_name":"SDLImage"},"Classes/SDLHeadLampStatus.html#/c:objc(cs)SDLHeadLampStatus(py)lowBeamsOn":{"name":"lowBeamsOn","abstract":"

    Low beams are on or off.

    ","parent_name":"SDLHeadLampStatus"},"Classes/SDLHeadLampStatus.html#/c:objc(cs)SDLHeadLampStatus(py)highBeamsOn":{"name":"highBeamsOn","abstract":"

    High beams are on or off

    ","parent_name":"SDLHeadLampStatus"},"Classes/SDLHeadLampStatus.html#/c:objc(cs)SDLHeadLampStatus(py)ambientLightSensorStatus":{"name":"ambientLightSensorStatus","abstract":"

    Status of the ambient light senser

    ","parent_name":"SDLHeadLampStatus"},"Classes/SDLHapticRect.html#/c:objc(cs)SDLHapticRect(im)initWithId:rect:":{"name":"-initWithId:rect:","abstract":"

    Undocumented

    ","parent_name":"SDLHapticRect"},"Classes/SDLHapticRect.html#/c:objc(cs)SDLHapticRect(py)id":{"name":"id","abstract":"

    A user control spatial identifier

    ","parent_name":"SDLHapticRect"},"Classes/SDLHapticRect.html#/c:objc(cs)SDLHapticRect(py)rect":{"name":"rect","abstract":"

    The position of the haptic rectangle to be highlighted. The center of this rectangle will be touched when a press occurs.

    ","parent_name":"SDLHapticRect"},"Classes/SDLHMISettingsControlData.html#/c:objc(cs)SDLHMISettingsControlData(im)initWithDisplaymode:temperatureUnit:distanceUnit:":{"name":"-initWithDisplaymode:temperatureUnit:distanceUnit:","abstract":"

    Constructs a newly allocated SDLHMISettingsControlCapabilities object with given parameters

    ","parent_name":"SDLHMISettingsControlData"},"Classes/SDLHMISettingsControlData.html#/c:objc(cs)SDLHMISettingsControlData(py)displayMode":{"name":"displayMode","abstract":"

    @abstract Display the Display Mode used HMI setting

    ","parent_name":"SDLHMISettingsControlData"},"Classes/SDLHMISettingsControlData.html#/c:objc(cs)SDLHMISettingsControlData(py)temperatureUnit":{"name":"temperatureUnit","abstract":"

    @abstract Display the temperature unit used HMI setting

    ","parent_name":"SDLHMISettingsControlData"},"Classes/SDLHMISettingsControlData.html#/c:objc(cs)SDLHMISettingsControlData(py)distanceUnit":{"name":"distanceUnit","abstract":"

    @abstract Display the distance unit used HMI setting

    ","parent_name":"SDLHMISettingsControlData"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(im)initWithModuleName:":{"name":"-initWithModuleName:","abstract":"

    Constructs a newly allocated SDLHMISettingsControlCapabilities object with moduleName

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(im)initWithModuleName:distanceUnitAvailable:temperatureUnitAvailable:displayModeUnitAvailable:":{"name":"-initWithModuleName:distanceUnitAvailable:temperatureUnitAvailable:displayModeUnitAvailable:","abstract":"

    Constructs a newly allocated SDLHMISettingsControlCapabilities object with given parameters

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    @abstract The short friendly name of the hmi setting module.","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(py)distanceUnitAvailable":{"name":"distanceUnitAvailable","abstract":"

    @abstract Availability of the control of distance unit.

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(py)temperatureUnitAvailable":{"name":"temperatureUnitAvailable","abstract":"

    @abstract Availability of the control of temperature unit.

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMISettingsControlCapabilities.html#/c:objc(cs)SDLHMISettingsControlCapabilities(py)displayModeUnitAvailable":{"name":"displayModeUnitAvailable","abstract":"

    @abstract Availability of the control of HMI display mode.

    ","parent_name":"SDLHMISettingsControlCapabilities"},"Classes/SDLHMIPermissions.html#/c:objc(cs)SDLHMIPermissions(py)allowed":{"name":"allowed","abstract":"

    A set of all HMI levels that are permitted for this given RPC

    ","parent_name":"SDLHMIPermissions"},"Classes/SDLHMIPermissions.html#/c:objc(cs)SDLHMIPermissions(py)userDisallowed":{"name":"userDisallowed","abstract":"

    A set of all HMI levels that are prohibited for this given RPC

    ","parent_name":"SDLHMIPermissions"},"Classes/SDLHMICapabilities.html#/c:objc(cs)SDLHMICapabilities(py)navigation":{"name":"navigation","abstract":"

    Availability of built in Nav. True: Available, False: Not Available

    ","parent_name":"SDLHMICapabilities"},"Classes/SDLHMICapabilities.html#/c:objc(cs)SDLHMICapabilities(py)phoneCall":{"name":"phoneCall","abstract":"

    Availability of built in phone. True: Available, False: Not Available

    ","parent_name":"SDLHMICapabilities"},"Classes/SDLHMICapabilities.html#/c:objc(cs)SDLHMICapabilities(py)videoStreaming":{"name":"videoStreaming","abstract":"

    Availability of built in video streaming. True: Available, False: Not Available

    ","parent_name":"SDLHMICapabilities"},"Classes/SDLGetWayPointsResponse.html#/c:objc(cs)SDLGetWayPointsResponse(py)waypoints":{"name":"waypoints","abstract":"

    Provides additional human readable info regarding the result.

    ","parent_name":"SDLGetWayPointsResponse"},"Classes/SDLGetWayPoints.html#/c:objc(cs)SDLGetWayPoints(im)initWithType:":{"name":"-initWithType:","abstract":"

    Undocumented

    ","parent_name":"SDLGetWayPoints"},"Classes/SDLGetWayPoints.html#/c:objc(cs)SDLGetWayPoints(py)waypointType":{"name":"waypointType","abstract":"

    To request for either the destination","parent_name":"SDLGetWayPoints"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)gps":{"name":"gps","abstract":"

    The car current GPS coordinates

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)speed":{"name":"speed","abstract":"

    The vehicle speed in kilometers per hour

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)rpm":{"name":"rpm","abstract":"

    The number of revolutions per minute of the engine.

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)fuelLevel":{"name":"fuelLevel","abstract":"

    The fuel level in the tank (percentage)

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    The fuel level state

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)fuelRange":{"name":"fuelRange","abstract":"

    The estimate range in KM the vehicle can travel based on fuel level and consumption

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    The instantaneous fuel consumption in microlitres

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)externalTemperature":{"name":"externalTemperature","abstract":"

    The external temperature in degrees celsius.

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)vin":{"name":"vin","abstract":"

    The Vehicle Identification Number

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)prndl":{"name":"prndl","abstract":"

    The current gear shift state of the user’s vehicle

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)tirePressure":{"name":"tirePressure","abstract":"

    The current pressure warnings for the user’s vehicle

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)odometer":{"name":"odometer","abstract":"

    Odometer reading in km

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)beltStatus":{"name":"beltStatus","abstract":"

    The status of the seat belts

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)bodyInformation":{"name":"bodyInformation","abstract":"

    The body information including power modes

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)deviceStatus":{"name":"deviceStatus","abstract":"

    The IVI system status including signal and battery strength

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)driverBraking":{"name":"driverBraking","abstract":"

    The status of the brake pedal

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)wiperStatus":{"name":"wiperStatus","abstract":"

    The status of the wipers

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)headLampStatus":{"name":"headLampStatus","abstract":"

    Status of the head lamps

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)engineOilLife":{"name":"engineOilLife","abstract":"

    The estimated percentage (0% - 100%) of remaining oil life of the engine

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)engineTorque":{"name":"engineTorque","abstract":"

    Torque value for engine (in Nm) on non-diesel variants

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    Accelerator pedal position (percentage depressed)

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    Current angle of the steering wheel (in deg)

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)eCallInfo":{"name":"eCallInfo","abstract":"

    Emergency Call notification and confirmation data

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)airbagStatus":{"name":"airbagStatus","abstract":"

    The status of the air bags

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    Information related to an emergency event (and if it occurred)

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    The status modes of the cluster

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)myKey":{"name":"myKey","abstract":"

    Information related to the MyKey feature

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    The status of the electronic parking brake

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)turnSignal":{"name":"turnSignal","abstract":"

    The status of the turn signal

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleDataResponse.html#/c:objc(cs)SDLGetVehicleDataResponse(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    The cloud app vehicle ID

    ","parent_name":"SDLGetVehicleDataResponse"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:vin:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:emergencyEvent:engineTorque:externalTemperature:fuelLevel:fuelLevelState:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:vin:wiperStatus:","abstract":"

    Convenience init for getting data for all possible vehicle data items.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:vin:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:vin:wiperStatus:","abstract":"

    Convenience init for getting data for all possible vehicle data items.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(im)initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:vin:wiperStatus:":{"name":"-initWithAccelerationPedalPosition:airbagStatus:beltStatus:bodyInformation:cloudAppVehicleID:clusterModeStatus:deviceStatus:driverBraking:eCallInfo:electronicParkBrakeStatus:emergencyEvent:engineOilLife:engineTorque:externalTemperature:fuelLevel:fuelLevelState:fuelRange:gps:headLampStatus:instantFuelConsumption:myKey:odometer:prndl:rpm:speed:steeringWheelAngle:tirePressure:turnSignal:vin:wiperStatus:","abstract":"

    Convenience init for getting data for all possible vehicle data items.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)gps":{"name":"gps","abstract":"

    A boolean value. If true, requests GPS data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)speed":{"name":"speed","abstract":"

    A boolean value. If true, requests Speed data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)rpm":{"name":"rpm","abstract":"

    A boolean value. If true, requests RPM data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)fuelLevel":{"name":"fuelLevel","abstract":"

    A boolean value. If true, requests Fuel Level data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)fuelLevel_State":{"name":"fuelLevel_State","abstract":"

    A boolean value. If true, requests Fuel Level State data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)fuelRange":{"name":"fuelRange","abstract":"

    A boolean value. If true, requests Fuel Range data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)instantFuelConsumption":{"name":"instantFuelConsumption","abstract":"

    A boolean value. If true, requests Instant Fuel Consumption data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)externalTemperature":{"name":"externalTemperature","abstract":"

    A boolean value. If true, requests External Temperature data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)vin":{"name":"vin","abstract":"

    A boolean value. If true, requests the Vehicle Identification Number.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)prndl":{"name":"prndl","abstract":"

    A boolean value. If true, requests PRNDL data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)tirePressure":{"name":"tirePressure","abstract":"

    A boolean value. If true, requests Tire Pressure data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)odometer":{"name":"odometer","abstract":"

    A boolean value. If true, requests Odometer data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)beltStatus":{"name":"beltStatus","abstract":"

    A boolean value. If true, requests Belt Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)bodyInformation":{"name":"bodyInformation","abstract":"

    A boolean value. If true, requests Body Information data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)deviceStatus":{"name":"deviceStatus","abstract":"

    A boolean value. If true, requests Device Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)driverBraking":{"name":"driverBraking","abstract":"

    A boolean value. If true, requests Driver Braking data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)wiperStatus":{"name":"wiperStatus","abstract":"

    A boolean value. If true, requests Wiper Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)headLampStatus":{"name":"headLampStatus","abstract":"

    A boolean value. If true, requests Head Lamp Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)engineOilLife":{"name":"engineOilLife","abstract":"

    A boolean value. If true, requests Engine Oil Life data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)engineTorque":{"name":"engineTorque","abstract":"

    A boolean value. If true, requests Engine Torque data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)accPedalPosition":{"name":"accPedalPosition","abstract":"

    A boolean value. If true, requests Acc Pedal Position data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)steeringWheelAngle":{"name":"steeringWheelAngle","abstract":"

    A boolean value. If true, requests Steering Wheel Angle data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)eCallInfo":{"name":"eCallInfo","abstract":"

    A boolean value. If true, requests Emergency Call Info data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)airbagStatus":{"name":"airbagStatus","abstract":"

    A boolean value. If true, requests Air Bag Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)emergencyEvent":{"name":"emergencyEvent","abstract":"

    A boolean value. If true, requests Emergency Event (if it occurred) data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)clusterModeStatus":{"name":"clusterModeStatus","abstract":"

    A boolean value. If true, requests Cluster Mode Status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)myKey":{"name":"myKey","abstract":"

    A boolean value. If true, requests MyKey data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)electronicParkBrakeStatus":{"name":"electronicParkBrakeStatus","abstract":"

    A boolean value. If true, requests Electronic Parking Brake status data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)turnSignal":{"name":"turnSignal","abstract":"

    A boolean value. If true, requests Turn Signal data.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetVehicleData.html#/c:objc(cs)SDLGetVehicleData(py)cloudAppVehicleID":{"name":"cloudAppVehicleID","abstract":"

    A boolean value. If true, requests the Cloud App Vehicle ID.

    ","parent_name":"SDLGetVehicleData"},"Classes/SDLGetSystemCapabilityResponse.html#/c:objc(cs)SDLGetSystemCapabilityResponse(py)systemCapability":{"name":"systemCapability","abstract":"

    The requested system capability, of the type that was sent in the request

    ","parent_name":"SDLGetSystemCapabilityResponse"},"Classes/SDLGetSystemCapability.html#/c:objc(cs)SDLGetSystemCapability(im)initWithType:":{"name":"-initWithType:","abstract":"

    Convenience init

    ","parent_name":"SDLGetSystemCapability"},"Classes/SDLGetSystemCapability.html#/c:objc(cs)SDLGetSystemCapability(im)initWithType:subscribe:":{"name":"-initWithType:subscribe:","abstract":"

    Convenience init

    ","parent_name":"SDLGetSystemCapability"},"Classes/SDLGetSystemCapability.html#/c:objc(cs)SDLGetSystemCapability(py)systemCapabilityType":{"name":"systemCapabilityType","abstract":"

    The type of system capability to get more information on

    ","parent_name":"SDLGetSystemCapability"},"Classes/SDLGetSystemCapability.html#/c:objc(cs)SDLGetSystemCapability(py)subscribe":{"name":"subscribe","abstract":"

    Flag to subscribe to updates of the supplied service capability type. If true, the requester will be subscribed. If false, the requester will not be subscribed and be removed as a subscriber if it was previously subscribed.

    ","parent_name":"SDLGetSystemCapability"},"Classes/SDLGetInteriorVehicleDataResponse.html#/c:objc(cs)SDLGetInteriorVehicleDataResponse(py)moduleData":{"name":"moduleData","abstract":"

    The requested data

    ","parent_name":"SDLGetInteriorVehicleDataResponse"},"Classes/SDLGetInteriorVehicleDataResponse.html#/c:objc(cs)SDLGetInteriorVehicleDataResponse(py)isSubscribed":{"name":"isSubscribed","abstract":"

    It is a conditional-mandatory parameter: must be returned in case subscribe parameter was present in the related request.

    ","parent_name":"SDLGetInteriorVehicleDataResponse"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(im)initWithModuleType:":{"name":"-initWithModuleType:","abstract":"

    Undocumented

    ","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(im)initAndSubscribeToModuleType:":{"name":"-initAndSubscribeToModuleType:","abstract":"

    Undocumented

    ","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(im)initAndUnsubscribeToModuleType:":{"name":"-initAndUnsubscribeToModuleType:","abstract":"

    Undocumented

    ","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(py)moduleType":{"name":"moduleType","abstract":"

    The type of a RC module to retrieve module data from the vehicle.

    ","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetInteriorVehicleData.html#/c:objc(cs)SDLGetInteriorVehicleData(py)subscribe":{"name":"subscribe","abstract":"

    If subscribe is true, the head unit will register onInteriorVehicleData notifications for the requested moduelType.","parent_name":"SDLGetInteriorVehicleData"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(im)initWithOffset:length:fileType:crc:":{"name":"-initWithOffset:length:fileType:crc:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(py)offset":{"name":"offset","abstract":"

    Optional offset in bytes for resuming partial data chunks.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(py)length":{"name":"length","abstract":"

    Optional length in bytes for resuming partial data chunks. If offset is set to 0, then length is the total length of the file to be downloaded.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(py)fileType":{"name":"fileType","abstract":"

    File type that is being sent in response.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFileResponse.html#/c:objc(cs)SDLGetFileResponse(py)crc":{"name":"crc","abstract":"

    Additional CRC32 checksum to protect data integrity up to 512 Mbits.

    ","parent_name":"SDLGetFileResponse"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(im)initWithFileName:":{"name":"-initWithFileName:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(im)initWithFileName:appServiceId:fileType:":{"name":"-initWithFileName:appServiceId:fileType:","abstract":"

    Convenience init for sending a small file.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(im)initWithFileName:appServiceId:fileType:offset:length:":{"name":"-initWithFileName:appServiceId:fileType:offset:length:","abstract":"

    Convenience init for sending a large file in multiple data chunks.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)fileName":{"name":"fileName","abstract":"

    File name that should be retrieved.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)appServiceId":{"name":"appServiceId","abstract":"

    ID of the service that should have uploaded the requested file.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)fileType":{"name":"fileType","abstract":"

    Selected file type.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)offset":{"name":"offset","abstract":"

    Optional offset in bytes for resuming partial data chunks.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetFile.html#/c:objc(cs)SDLGetFile(py)length":{"name":"length","abstract":"

    Optional length in bytes for resuming partial data chunks. If offset is set to 0, then length is the total length of the file to be downloaded.

    ","parent_name":"SDLGetFile"},"Classes/SDLGetDTCsResponse.html#/c:objc(cs)SDLGetDTCsResponse(py)ecuHeader":{"name":"ecuHeader","abstract":"

    2 byte ECU Header for DTC response (as defined in VHR_Layout_Specification_DTCs.pdf)

    ","parent_name":"SDLGetDTCsResponse"},"Classes/SDLGetDTCsResponse.html#/c:objc(cs)SDLGetDTCsResponse(py)dtc":{"name":"dtc","abstract":"

    Array of all reported DTCs on module (ecuHeader contains information if list is truncated). Each DTC is represented by 4 bytes (3 bytes of data and 1 byte status as defined in VHR_Layout_Specification_DTCs.pdf).

    ","parent_name":"SDLGetDTCsResponse"},"Classes/SDLGetDTCs.html#/c:objc(cs)SDLGetDTCs(im)initWithECUName:":{"name":"-initWithECUName:","abstract":"

    Undocumented

    ","parent_name":"SDLGetDTCs"},"Classes/SDLGetDTCs.html#/c:objc(cs)SDLGetDTCs(im)initWithECUName:mask:":{"name":"-initWithECUName:mask:","abstract":"

    Undocumented

    ","parent_name":"SDLGetDTCs"},"Classes/SDLGetDTCs.html#/c:objc(cs)SDLGetDTCs(py)ecuName":{"name":"ecuName","abstract":"

    a name of the module to receive the DTC form","parent_name":"SDLGetDTCs"},"Classes/SDLGetDTCs.html#/c:objc(cs)SDLGetDTCs(py)dtcMask":{"name":"dtcMask","abstract":"

    DTC Mask Byte to be sent in diagnostic request to module. NSNumber* dtcMask Minvalue:0; Maxvalue:255

    ","parent_name":"SDLGetDTCs"},"Classes/SDLGetCloudAppPropertiesResponse.html#/c:objc(cs)SDLGetCloudAppPropertiesResponse(im)initWithProperties:":{"name":"-initWithProperties:","abstract":"

    Convenience init.

    ","parent_name":"SDLGetCloudAppPropertiesResponse"},"Classes/SDLGetCloudAppPropertiesResponse.html#/c:objc(cs)SDLGetCloudAppPropertiesResponse(py)properties":{"name":"properties","abstract":"

    The requested cloud application properties.

    ","parent_name":"SDLGetCloudAppPropertiesResponse"},"Classes/SDLGetCloudAppProperties.html#/c:objc(cs)SDLGetCloudAppProperties(im)initWithAppID:":{"name":"-initWithAppID:","abstract":"

    Convenience init.

    ","parent_name":"SDLGetCloudAppProperties"},"Classes/SDLGetCloudAppProperties.html#/c:objc(cs)SDLGetCloudAppProperties(py)appID":{"name":"appID","abstract":"

    The id of the cloud app.

    ","parent_name":"SDLGetCloudAppProperties"},"Classes/SDLGetAppServiceDataResponse.html#/c:objc(cs)SDLGetAppServiceDataResponse(im)initWithAppServiceData:":{"name":"-initWithAppServiceData:","abstract":"

    Convenience init.

    ","parent_name":"SDLGetAppServiceDataResponse"},"Classes/SDLGetAppServiceDataResponse.html#/c:objc(cs)SDLGetAppServiceDataResponse(py)serviceData":{"name":"serviceData","abstract":"

    Contains all the current data of the app service.

    ","parent_name":"SDLGetAppServiceDataResponse"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(im)initWithAppServiceType:":{"name":"-initWithAppServiceType:","abstract":"

    Convenience init for service type.

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(im)initAndSubscribeToAppServiceType:":{"name":"-initAndSubscribeToAppServiceType:","abstract":"

    Convenience init for subscribing to a service type.

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(im)initAndUnsubscribeToAppServiceType:":{"name":"-initAndUnsubscribeToAppServiceType:","abstract":"

    Convenience init for unsubscribing to a service type

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(py)serviceType":{"name":"serviceType","abstract":"

    The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGetAppServiceData.html#/c:objc(cs)SDLGetAppServiceData(py)subscribe":{"name":"subscribe","abstract":"

    If true, the consumer is requesting to subscribe to all future updates from the service publisher. If false, the consumer doesn’t wish to subscribe and should be unsubscribed if it was previously subscribed.

    ","parent_name":"SDLGetAppServiceData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)longitudeDegrees":{"name":"longitudeDegrees","abstract":"

    longitude degrees

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)latitudeDegrees":{"name":"latitudeDegrees","abstract":"

    latitude degrees

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcYear":{"name":"utcYear","abstract":"

    utc year

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcMonth":{"name":"utcMonth","abstract":"

    utc month

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcDay":{"name":"utcDay","abstract":"

    utc day

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcHours":{"name":"utcHours","abstract":"

    utc hours

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcMinutes":{"name":"utcMinutes","abstract":"

    utc minutes

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)utcSeconds":{"name":"utcSeconds","abstract":"

    utc seconds

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)compassDirection":{"name":"compassDirection","abstract":"

    Optional, Potential Compass Directions

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)pdop":{"name":"pdop","abstract":"

    The 3D positional dilution of precision.

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)hdop":{"name":"hdop","abstract":"

    The horizontal dilution of precision

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)vdop":{"name":"vdop","abstract":"

    the vertical dilution of precision

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)actual":{"name":"actual","abstract":"

    What the coordinates are based on

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)satellites":{"name":"satellites","abstract":"

    The number of satellites in view

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)dimension":{"name":"dimension","abstract":"

    The supported dimensions of the GPS

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)altitude":{"name":"altitude","abstract":"

    Altitude in meters

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)heading":{"name":"heading","abstract":"

    Heading based on the GPS data.

    ","parent_name":"SDLGPSData"},"Classes/SDLGPSData.html#/c:objc(cs)SDLGPSData(py)speed":{"name":"speed","abstract":"

    Speed in KPH

    ","parent_name":"SDLGPSData"},"Classes/SDLFunctionID.html#/c:objc(cs)SDLFunctionID(cm)sharedInstance":{"name":"+sharedInstance","abstract":"

    Undocumented

    ","parent_name":"SDLFunctionID"},"Classes/SDLFunctionID.html#/c:objc(cs)SDLFunctionID(im)functionNameForId:":{"name":"-functionNameForId:","abstract":"

    Undocumented

    ","parent_name":"SDLFunctionID"},"Classes/SDLFunctionID.html#/c:objc(cs)SDLFunctionID(im)functionIdForName:":{"name":"-functionIdForName:","abstract":"

    Undocumented

    ","parent_name":"SDLFunctionID"},"Classes/SDLFuelRange.html#/c:objc(cs)SDLFuelRange(py)type":{"name":"type","abstract":"

    The vehicle’s fuel type

    ","parent_name":"SDLFuelRange"},"Classes/SDLFuelRange.html#/c:objc(cs)SDLFuelRange(py)range":{"name":"range","abstract":"

    The estimate range in KM the vehicle can travel based on fuel level and consumption.

    ","parent_name":"SDLFuelRange"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(py)artworkRetryCount":{"name":"artworkRetryCount","abstract":"

    Defines the number of times the file manager will attempt to reupload SDLArtwork files in the event of a failed upload to Core.

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(py)fileRetryCount":{"name":"fileRetryCount","abstract":"

    Defines the number of times the file manager will attempt to reupload general SDLFiles in the event of a failed upload to Core.

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(cm)defaultConfiguration":{"name":"+defaultConfiguration","abstract":"

    Creates a default file manager configuration.

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(im)init":{"name":"-init","abstract":"

    Use defaultConfiguration instead

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManagerConfiguration.html#/c:objc(cs)SDLFileManagerConfiguration(im)initWithArtworkRetryCount:fileRetryCount:":{"name":"-initWithArtworkRetryCount:fileRetryCount:","abstract":"

    Creates a file manager configuration with customized upload retry counts.

    ","parent_name":"SDLFileManagerConfiguration"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)remoteFileNames":{"name":"remoteFileNames","abstract":"

    A set of all names of files known on the remote head unit. Known files can be used or deleted on the remote system.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)bytesAvailable":{"name":"bytesAvailable","abstract":"

    The number of bytes still available for files for this app.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)currentState":{"name":"currentState","abstract":"

    The state of the file manager.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)pendingTransactions":{"name":"pendingTransactions","abstract":"

    The currently pending transactions (Upload, Delete, and List Files) in the file manager

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(py)suspended":{"name":"suspended","abstract":"

    Whether or not the file manager is suspended. If suspended, the file manager can continue to queue uploads and deletes, but will not actually perform any of those until it is no longer suspended. This can be used for throttling down the file manager if other, important operations are taking place over the accessory connection.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)init":{"name":"-init","abstract":"

    Initialize the class…or not, since this method is unavailable. Dependencies must be injected using initWithConnectionManager:

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)initWithConnectionManager:":{"name":"-initWithConnectionManager:","abstract":"

    Creates a new file manager with a specified connection manager

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)initWithConnectionManager:configuration:":{"name":"-initWithConnectionManager:configuration:","abstract":"

    Creates a new file manager with a specified connection manager and configuration

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)startWithCompletionHandler:":{"name":"-startWithCompletionHandler:","abstract":"

    The manager stars up and attempts to fetch its initial list and transfer initial files.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)stop":{"name":"-stop","abstract":"

    Cancels all file manager operations and deletes all associated data.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)hasUploadedFile:":{"name":"-hasUploadedFile:","abstract":"

    Check if the remote system contains a file

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)deleteRemoteFileWithName:completionHandler:":{"name":"-deleteRemoteFileWithName:completionHandler:","abstract":"

    Delete a file stored on the remote system

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)deleteRemoteFilesWithNames:completionHandler:":{"name":"-deleteRemoteFilesWithNames:completionHandler:","abstract":"

    Deletes an array of files on the remote file system. The files are deleted in the order in which they are added to the array, with the first file to be deleted at index 0. The delete queue is sequential, meaning that once a delete request is sent to Core, the queue waits until a response is received from Core before the next the next delete request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadFile:completionHandler:":{"name":"-uploadFile:completionHandler:","abstract":"

    Upload a file to the remote file system. If a file with the [SDLFile name] already exists, this will overwrite that file. If you do not want that to happen, check remoteFileNames before uploading, or change allowOverwrite to NO.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadFiles:progressHandler:completionHandler:":{"name":"-uploadFiles:progressHandler:completionHandler:","abstract":"

    Uploads an array of files to the remote file system. The files will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadFiles:completionHandler:":{"name":"-uploadFiles:completionHandler:","abstract":"

    Uploads an array of files to the remote file system. The files will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadArtwork:completionHandler:":{"name":"-uploadArtwork:completionHandler:","abstract":"

    Uploads an artwork file to the remote file system and returns the name of the uploaded artwork once completed. If an artwork with the same name is already on the remote system, the artwork is not uploaded and the artwork name is simply returned.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadArtworks:completionHandler:":{"name":"-uploadArtworks:completionHandler:","abstract":"

    Uploads an array of artworks to the remote file system. The artworks will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(im)uploadArtworks:progressHandler:completionHandler:":{"name":"-uploadArtworks:progressHandler:completionHandler:","abstract":"

    Uploads an array of artworks to the remote file system. The artworks will be uploaded in the order in which they are added to the array, with the first file to be uploaded at index 0. The upload queue is sequential, meaning that once a upload request is sent to Core, the queue waits until a response is received from Core before the next the next upload request is sent.

    ","parent_name":"SDLFileManager"},"Classes/SDLFileManager.html#/c:objc(cs)SDLFileManager(cm)temporaryFileDirectory":{"name":"+temporaryFileDirectory","abstract":"

    A URL to the directory where temporary files are stored. When an SDLFile is created with NSData, it writes to a temporary file until the file manager finishes uploading it.

    ","parent_name":"SDLFileManager"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)persistent":{"name":"persistent","abstract":"

    Whether or not the file should persist on disk between car ignition cycles.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)overwrite":{"name":"overwrite","abstract":"

    Whether or not the file should overwrite an existing file on the remote disk with the same name.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)name":{"name":"name","abstract":"

    The name the file should be stored under on the remote disk. This is how the file will be referenced in all later calls.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)fileURL":{"name":"fileURL","abstract":"

    The url the local file is stored at while waiting to push it to the remote system. If the data has not been passed to the file URL, this will be nil.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)data":{"name":"data","abstract":"

    The binary data of the SDLFile. If initialized with data, this will be a relatively quick call, but if initialized with a file URL, this is a rather expensive call the first time. The data will be cached in RAM after the first call.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)fileSize":{"name":"fileSize","abstract":"

    The size of the binary data of the SDLFile.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)fileType":{"name":"fileType","abstract":"

    The system will attempt to determine the type of file that you have passed in. It will default to BINARY if it does not recognize the file type or the file type is not supported by SDL.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)inputStream":{"name":"inputStream","abstract":"

    A stream to pull binary data from a SDLFile. The stream only pulls required data from the file on disk or in memory. This reduces memory usage while uploading a large file to the remote system as each chunk of data can be released immediately after it is uploaded.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(py)isStaticIcon":{"name":"isStaticIcon","abstract":"

    Describes whether or not this file is represented by static icon data. The head unit will present its representation of the static icon concept when sent this data.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(im)init":{"name":"-init","abstract":"

    Undocumented

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(im)initWithFileURL:name:persistent:":{"name":"-initWithFileURL:name:persistent:","abstract":"

    The designated initializer for an SDL File. The only major property that is not set using this is overwrite, which defaults to NO.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(cm)persistentFileAtFileURL:name:":{"name":"+persistentFileAtFileURL:name:","abstract":"

    Create an SDL file using a local file URL.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(cm)fileAtFileURL:name:":{"name":"+fileAtFileURL:name:","abstract":"

    Create an SDL file using a local file URL.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(im)initWithData:name:fileExtension:persistent:":{"name":"-initWithData:name:fileExtension:persistent:","abstract":"

    Create an SDL file using raw data. It is strongly preferred to pass a file URL instead of data, as it is currently held in memory until the file is sent.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(cm)persistentFileWithData:name:fileExtension:":{"name":"+persistentFileWithData:name:fileExtension:","abstract":"

    Create an SDL file using raw data. It is strongly preferred to pass a file URL instead of data, as it is currently held in memory until the file is sent.

    ","parent_name":"SDLFile"},"Classes/SDLFile.html#/c:objc(cs)SDLFile(cm)fileWithData:name:fileExtension:":{"name":"+fileWithData:name:fileExtension:","abstract":"

    Create an SDL file using raw data. It is strongly preferred to pass a file URL instead of data, as it is currently held in memory until the file is sent.

    ","parent_name":"SDLFile"},"Classes/SDLEqualizerSettings.html#/c:objc(cs)SDLEqualizerSettings(im)initWithChannelId:channelSetting:":{"name":"-initWithChannelId:channelSetting:","abstract":"

    Undocumented

    ","parent_name":"SDLEqualizerSettings"},"Classes/SDLEqualizerSettings.html#/c:objc(cs)SDLEqualizerSettings(py)channelName":{"name":"channelName","abstract":"

    @abstract Read-only channel / frequency name","parent_name":"SDLEqualizerSettings"},"Classes/SDLEqualizerSettings.html#/c:objc(cs)SDLEqualizerSettings(py)channelSetting":{"name":"channelSetting","abstract":"

    @abstract Reflects the setting, from 0%-100%.

    ","parent_name":"SDLEqualizerSettings"},"Classes/SDLEqualizerSettings.html#/c:objc(cs)SDLEqualizerSettings(py)channelId":{"name":"channelId","abstract":"

    @abstract id of the channel.

    ","parent_name":"SDLEqualizerSettings"},"Classes/SDLEncodedSyncPData.html#/c:objc(cs)SDLEncodedSyncPData(py)data":{"name":"data","abstract":"

    Contains base64 encoded string of SyncP packets.

    ","parent_name":"SDLEncodedSyncPData"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)emergencyEventType":{"name":"emergencyEventType","abstract":"

    References signal VedsEvntType_D_Ltchd. See EmergencyEventType.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)fuelCutoffStatus":{"name":"fuelCutoffStatus","abstract":"

    References signal RCM_FuelCutoff. See FuelCutoffStatus.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)rolloverEvent":{"name":"rolloverEvent","abstract":"

    References signal VedsEvntRoll_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)maximumChangeVelocity":{"name":"maximumChangeVelocity","abstract":"

    References signal VedsMaxDeltaV_D_Ltchd. Change in velocity in KPH.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLEmergencyEvent.html#/c:objc(cs)SDLEmergencyEvent(py)multipleEvents":{"name":"multipleEvents","abstract":"

    References signal VedsMultiEvnt_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLEmergencyEvent"},"Classes/SDLECallInfo.html#/c:objc(cs)SDLECallInfo(py)eCallNotificationStatus":{"name":"eCallNotificationStatus","abstract":"

    References signal eCallNotification_4A. See VehicleDataNotificationStatus.

    ","parent_name":"SDLECallInfo"},"Classes/SDLECallInfo.html#/c:objc(cs)SDLECallInfo(py)auxECallNotificationStatus":{"name":"auxECallNotificationStatus","abstract":"

    References signal eCallNotification. See VehicleDataNotificationStatus.

    ","parent_name":"SDLECallInfo"},"Classes/SDLECallInfo.html#/c:objc(cs)SDLECallInfo(py)eCallConfirmationStatus":{"name":"eCallConfirmationStatus","abstract":"

    References signal eCallConfirmation. See ECallConfirmationStatus.

    ","parent_name":"SDLECallInfo"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)displayType":{"name":"displayType","abstract":"

    The type of display

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)displayName":{"name":"displayName","abstract":"

    The name of the connected display

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)textFields":{"name":"textFields","abstract":"

    An array of SDLTextField structures, each of which describes a field in the HMI which the application can write to using operations such as SDLShow, SDLSetMediaClockTimer, etc.

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)imageFields":{"name":"imageFields","abstract":"

    An array of SDLImageField elements

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)mediaClockFormats":{"name":"mediaClockFormats","abstract":"

    An array of SDLMediaClockFormat elements, defining the valid string formats used in specifying the contents of the media clock field

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)graphicSupported":{"name":"graphicSupported","abstract":"

    The display’s persistent screen supports.

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)templatesAvailable":{"name":"templatesAvailable","abstract":"

    Number of presets the screen supports

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)screenParams":{"name":"screenParams","abstract":"

    A set of all parameters related to a prescribed screen area (e.g. for video / touch input)

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDisplayCapabilities.html#/c:objc(cs)SDLDisplayCapabilities(py)numCustomPresetsAvailable":{"name":"numCustomPresetsAvailable","abstract":"

    The number of on-screen custom presets available (if any); otherwise omitted

    ","parent_name":"SDLDisplayCapabilities"},"Classes/SDLDialNumber.html#/c:objc(cs)SDLDialNumber(im)initWithNumber:":{"name":"-initWithNumber:","abstract":"

    Undocumented

    ","parent_name":"SDLDialNumber"},"Classes/SDLDialNumber.html#/c:objc(cs)SDLDialNumber(py)number":{"name":"number","abstract":"

    Up to 40 character string representing the phone number. All characters stripped except for ‘0’-‘9’, ‘*’, ‘#’, ‘,’, ‘;’, and ‘+’

    ","parent_name":"SDLDialNumber"},"Classes/SDLDiagnosticMessageResponse.html#/c:objc(cs)SDLDiagnosticMessageResponse(py)messageDataResult":{"name":"messageDataResult","abstract":"

    Array of bytes comprising CAN message result.

    ","parent_name":"SDLDiagnosticMessageResponse"},"Classes/SDLDiagnosticMessage.html#/c:objc(cs)SDLDiagnosticMessage(im)initWithTargetId:length:data:":{"name":"-initWithTargetId:length:data:","abstract":"

    Undocumented

    ","parent_name":"SDLDiagnosticMessage"},"Classes/SDLDiagnosticMessage.html#/c:objc(cs)SDLDiagnosticMessage(py)targetID":{"name":"targetID","abstract":"

    Name of target ECU

    ","parent_name":"SDLDiagnosticMessage"},"Classes/SDLDiagnosticMessage.html#/c:objc(cs)SDLDiagnosticMessage(py)messageLength":{"name":"messageLength","abstract":"

    Length of message (in bytes)

    ","parent_name":"SDLDiagnosticMessage"},"Classes/SDLDiagnosticMessage.html#/c:objc(cs)SDLDiagnosticMessage(py)messageData":{"name":"messageData","abstract":"

    Array of bytes comprising CAN message.

    ","parent_name":"SDLDiagnosticMessage"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)voiceRecOn":{"name":"voiceRecOn","abstract":"

    Indicates whether the voice recognition is on or off

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)btIconOn":{"name":"btIconOn","abstract":"

    Indicates whether the bluetooth connection established

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)callActive":{"name":"callActive","abstract":"

    Indicates whether a call is being active

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)phoneRoaming":{"name":"phoneRoaming","abstract":"

    Indicates whether the phone is in roaming mode

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)textMsgAvailable":{"name":"textMsgAvailable","abstract":"

    Indicates whether a textmessage is available

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)battLevelStatus":{"name":"battLevelStatus","abstract":"

    Battery level status

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)stereoAudioOutputMuted":{"name":"stereoAudioOutputMuted","abstract":"

    The status of the stereo audio output channel

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)monoAudioOutputMuted":{"name":"monoAudioOutputMuted","abstract":"

    The status of the mono audio output channel

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)signalLevelStatus":{"name":"signalLevelStatus","abstract":"

    Signal level status

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)primaryAudioSource":{"name":"primaryAudioSource","abstract":"

    The current primary audio source of SDL (if selected).

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceStatus.html#/c:objc(cs)SDLDeviceStatus(py)eCallEventActive":{"name":"eCallEventActive","abstract":"

    Indicates if an emergency call is active

    ","parent_name":"SDLDeviceStatus"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(cm)currentDevice":{"name":"+currentDevice","abstract":"

    Undocumented

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)hardware":{"name":"hardware","abstract":"

    Device model

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)firmwareRev":{"name":"firmwareRev","abstract":"

    Device firmware version

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)os":{"name":"os","abstract":"

    Device OS

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)osVersion":{"name":"osVersion","abstract":"

    Device OS version

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)carrier":{"name":"carrier","abstract":"

    Device mobile carrier

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeviceInfo.html#/c:objc(cs)SDLDeviceInfo(py)maxNumberRFCOMMPorts":{"name":"maxNumberRFCOMMPorts","abstract":"

    Number of bluetooth RFCOMM ports available.

    ","parent_name":"SDLDeviceInfo"},"Classes/SDLDeleteSubMenu.html#/c:objc(cs)SDLDeleteSubMenu(im)initWithId:":{"name":"-initWithId:","abstract":"

    Undocumented

    ","parent_name":"SDLDeleteSubMenu"},"Classes/SDLDeleteSubMenu.html#/c:objc(cs)SDLDeleteSubMenu(py)menuID":{"name":"menuID","abstract":"

    the MenuID that identifies the SDLSubMenu to be delete","parent_name":"SDLDeleteSubMenu"},"Classes/SDLDeleteInteractionChoiceSet.html#/c:objc(cs)SDLDeleteInteractionChoiceSet(im)initWithId:":{"name":"-initWithId:","abstract":"

    Undocumented

    ","parent_name":"SDLDeleteInteractionChoiceSet"},"Classes/SDLDeleteInteractionChoiceSet.html#/c:objc(cs)SDLDeleteInteractionChoiceSet(py)interactionChoiceSetID":{"name":"interactionChoiceSetID","abstract":"

    a unique ID that identifies the Choice Set","parent_name":"SDLDeleteInteractionChoiceSet"},"Classes/SDLDeleteFileResponse.html#/c:objc(cs)SDLDeleteFileResponse(py)spaceAvailable":{"name":"spaceAvailable","abstract":"

    The remaining available space for your application to store data on the remote system.

    ","parent_name":"SDLDeleteFileResponse"},"Classes/SDLDeleteFile.html#/c:objc(cs)SDLDeleteFile(im)initWithFileName:":{"name":"-initWithFileName:","abstract":"

    Undocumented

    ","parent_name":"SDLDeleteFile"},"Classes/SDLDeleteFile.html#/c:objc(cs)SDLDeleteFile(py)syncFileName":{"name":"syncFileName","abstract":"

    a file reference name","parent_name":"SDLDeleteFile"},"Classes/SDLDeleteCommand.html#/c:objc(cs)SDLDeleteCommand(im)initWithId:":{"name":"-initWithId:","abstract":"

    Undocumented

    ","parent_name":"SDLDeleteCommand"},"Classes/SDLDeleteCommand.html#/c:objc(cs)SDLDeleteCommand(py)cmdID":{"name":"cmdID","abstract":"

    the Command ID that identifies the Command to be deleted from Command Menu","parent_name":"SDLDeleteCommand"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(im)initWithHour:minute:":{"name":"-initWithHour:minute:","abstract":"

    Undocumented

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(im)initWithHour:minute:second:millisecond:":{"name":"-initWithHour:minute:second:millisecond:","abstract":"

    Undocumented

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(im)initWithHour:minute:second:millisecond:day:month:year:":{"name":"-initWithHour:minute:second:millisecond:day:month:year:","abstract":"

    Undocumented

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(im)initWithHour:minute:second:millisecond:day:month:year:timezoneMinuteOffset:timezoneHourOffset:":{"name":"-initWithHour:minute:second:millisecond:day:month:year:timezoneMinuteOffset:timezoneHourOffset:","abstract":"

    Undocumented

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)millisecond":{"name":"millisecond","abstract":"

    Milliseconds part of time

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)second":{"name":"second","abstract":"

    Seconds part of time

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)minute":{"name":"minute","abstract":"

    Minutes part of time

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)hour":{"name":"hour","abstract":"

    Hour part of time

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)day":{"name":"day","abstract":"

    Day of the month

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)month":{"name":"month","abstract":"

    Month of the year

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)year":{"name":"year","abstract":"

    The year in YYYY format

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)timezoneMinuteOffset":{"name":"timezoneMinuteOffset","abstract":"

    Time zone offset in Min with regard to UTC

    ","parent_name":"SDLDateTime"},"Classes/SDLDateTime.html#/c:objc(cs)SDLDateTime(py)timezoneHourOffset":{"name":"timezoneHourOffset","abstract":"

    Time zone offset in Hours with regard to UTC

    ","parent_name":"SDLDateTime"},"Classes/SDLDIDResult.html#/c:objc(cs)SDLDIDResult(py)resultCode":{"name":"resultCode","abstract":"

    Individual DID result code.

    ","parent_name":"SDLDIDResult"},"Classes/SDLDIDResult.html#/c:objc(cs)SDLDIDResult(py)didLocation":{"name":"didLocation","abstract":"

    Location of raw data from vehicle data DID

    ","parent_name":"SDLDIDResult"},"Classes/SDLDIDResult.html#/c:objc(cs)SDLDIDResult(py)data":{"name":"data","abstract":"

    Raw DID-based data returned for requested element.

    ","parent_name":"SDLDIDResult"},"Classes/SDLCreateInteractionChoiceSet.html#/c:objc(cs)SDLCreateInteractionChoiceSet(im)initWithId:choiceSet:":{"name":"-initWithId:choiceSet:","abstract":"

    Undocumented

    ","parent_name":"SDLCreateInteractionChoiceSet"},"Classes/SDLCreateInteractionChoiceSet.html#/c:objc(cs)SDLCreateInteractionChoiceSet(py)interactionChoiceSetID":{"name":"interactionChoiceSetID","abstract":"

    A unique ID that identifies the Choice Set

    ","parent_name":"SDLCreateInteractionChoiceSet"},"Classes/SDLCreateInteractionChoiceSet.html#/c:objc(cs)SDLCreateInteractionChoiceSet(py)choiceSet":{"name":"choiceSet","abstract":"

    Array of choices, which the user can select by menu or voice recognition

    ","parent_name":"SDLCreateInteractionChoiceSet"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)lifecycleConfig":{"name":"lifecycleConfig","abstract":"

    The lifecycle configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)lockScreenConfig":{"name":"lockScreenConfig","abstract":"

    The lock screen configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)loggingConfig":{"name":"loggingConfig","abstract":"

    The log configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)streamingMediaConfig":{"name":"streamingMediaConfig","abstract":"

    The streaming media configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(py)fileManagerConfig":{"name":"fileManagerConfig","abstract":"

    The file manager configuration.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(im)initWithLifecycle:lockScreen:logging:":{"name":"-initWithLifecycle:lockScreen:logging:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen and logging configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(im)initWithLifecycle:lockScreen:logging:fileManager:":{"name":"-initWithLifecycle:lockScreen:logging:fileManager:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and file manager configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(cm)configurationWithLifecycle:lockScreen:logging:":{"name":"+configurationWithLifecycle:lockScreen:logging:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen and logging configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(cm)configurationWithLifecycle:lockScreen:logging:fileManager:":{"name":"+configurationWithLifecycle:lockScreen:logging:fileManager:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and file manager configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(im)initWithLifecycle:lockScreen:logging:streamingMedia:":{"name":"-initWithLifecycle:lockScreen:logging:streamingMedia:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and streaming media configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(im)initWithLifecycle:lockScreen:logging:streamingMedia:fileManager:":{"name":"-initWithLifecycle:lockScreen:logging:streamingMedia:fileManager:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media and file manager configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(cm)configurationWithLifecycle:lockScreen:logging:streamingMedia:":{"name":"+configurationWithLifecycle:lockScreen:logging:streamingMedia:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and streaming media configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLConfiguration.html#/c:objc(cs)SDLConfiguration(cm)configurationWithLifecycle:lockScreen:logging:streamingMedia:fileManager:":{"name":"+configurationWithLifecycle:lockScreen:logging:streamingMedia:fileManager:","abstract":"

    Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media and file manager configurations.

    ","parent_name":"SDLConfiguration"},"Classes/SDLClusterModeStatus.html#/c:objc(cs)SDLClusterModeStatus(py)powerModeActive":{"name":"powerModeActive","abstract":"

    References signal PowerMode_UB.

    ","parent_name":"SDLClusterModeStatus"},"Classes/SDLClusterModeStatus.html#/c:objc(cs)SDLClusterModeStatus(py)powerModeQualificationStatus":{"name":"powerModeQualificationStatus","abstract":"

    References signal PowerModeQF. See PowerModeQualificationStatus.

    ","parent_name":"SDLClusterModeStatus"},"Classes/SDLClusterModeStatus.html#/c:objc(cs)SDLClusterModeStatus(py)carModeStatus":{"name":"carModeStatus","abstract":"

    References signal CarMode. See CarMode.

    ","parent_name":"SDLClusterModeStatus"},"Classes/SDLClusterModeStatus.html#/c:objc(cs)SDLClusterModeStatus(py)powerModeStatus":{"name":"powerModeStatus","abstract":"

    References signal PowerMode. See PowerMode.

    ","parent_name":"SDLClusterModeStatus"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(im)initWithAppID:":{"name":"-initWithAppID:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(im)initWithAppID:nicknames:enabled:authToken:cloudTransportType:hybridAppPreference:endpoint:":{"name":"-initWithAppID:nicknames:enabled:authToken:cloudTransportType:hybridAppPreference:endpoint:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)nicknames":{"name":"nicknames","abstract":"

    An array of app names a cloud app is allowed to register with. If included in a SetCloudAppProperties request, this value will overwrite the existing nicknames field in the app policies section of the policy table.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)appID":{"name":"appID","abstract":"

    The id of the cloud app.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)enabled":{"name":"enabled","abstract":"

    If true, the cloud app will appear in the HMI’s app list; if false, the cloud app will not appear in the HMI’s app list.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)authToken":{"name":"authToken","abstract":"

    Used to authenticate websocket connection on app activation.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)cloudTransportType":{"name":"cloudTransportType","abstract":"

    Specifies the connection type Core should use. Currently the ones that work in SDL Core are WS or WSS, but an OEM can implement their own transport adapter to handle different values.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)hybridAppPreference":{"name":"hybridAppPreference","abstract":"

    Specifies the user preference to use the cloud app version or mobile app version when both are available.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLCloudAppProperties.html#/c:objc(cs)SDLCloudAppProperties(py)endpoint":{"name":"endpoint","abstract":"

    The websocket endpoint.

    ","parent_name":"SDLCloudAppProperties"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(im)initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone:dualModeEnable:acMaxEnable:ventilationMode:":{"name":"-initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone:dualModeEnable:acMaxEnable:ventilationMode:","abstract":"

    Undocumented

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(im)initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone:dualModeEnable:acMaxEnable:ventilationMode:heatedSteeringWheelEnable:heatedWindshieldEnable:heatedRearWindowEnable:heatedMirrorsEnable:":{"name":"-initWithFanSpeed:desiredTemperature:acEnable:circulateAirEnable:autoModeEnable:defrostZone:dualModeEnable:acMaxEnable:ventilationMode:heatedSteeringWheelEnable:heatedWindshieldEnable:heatedRearWindowEnable:heatedMirrorsEnable:","abstract":"

    Undocumented

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)fanSpeed":{"name":"fanSpeed","abstract":"

    Speed of Fan in integer

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)currentTemperature":{"name":"currentTemperature","abstract":"

    The Current Temperature in SDLTemperature

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)desiredTemperature":{"name":"desiredTemperature","abstract":"

    Desired Temperature in SDLTemperature

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)acEnable":{"name":"acEnable","abstract":"

    Represents if AC is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)circulateAirEnable":{"name":"circulateAirEnable","abstract":"

    Represents if circulation of air is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)autoModeEnable":{"name":"autoModeEnable","abstract":"

    Represents if auto mode is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)defrostZone":{"name":"defrostZone","abstract":"

    Represents the kind of defrost zone

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)dualModeEnable":{"name":"dualModeEnable","abstract":"

    Represents if dual mode is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)acMaxEnable":{"name":"acMaxEnable","abstract":"

    Represents if ac max is enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)ventilationMode":{"name":"ventilationMode","abstract":"

    Represents the kind of Ventilation zone

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)heatedSteeringWheelEnable":{"name":"heatedSteeringWheelEnable","abstract":"

    @abstract value false means disabled/turn off, value true means enabled/turn on.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)heatedWindshieldEnable":{"name":"heatedWindshieldEnable","abstract":"

    @abstract value false means disabled, value true means enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)heatedRearWindowEnable":{"name":"heatedRearWindowEnable","abstract":"

    @abstract value false means disabled, value true means enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlData.html#/c:objc(cs)SDLClimateControlData(py)heatedMirrorsEnable":{"name":"heatedMirrorsEnable","abstract":"

    @abstract Value false means disabled, value true means enabled.

    ","parent_name":"SDLClimateControlData"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(im)initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable:dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable:":{"name":"-initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable:dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable:","abstract":"

    Undocumented

    ","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(im)initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable:dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable:heatedSteeringWheelAvailable:heatedWindshieldAvailable:heatedRearWindowAvailable:heatedMirrorsAvailable:":{"name":"-initWithModuleName:fanSpeedAvailable:desiredTemperatureAvailable:acEnableAvailable:acMaxEnableAvailable:circulateAirAvailable:autoModeEnableAvailable:dualModeEnableAvailable:defrostZoneAvailable:ventilationModeAvailable:heatedSteeringWheelAvailable:heatedWindshieldAvailable:heatedRearWindowAvailable:heatedMirrorsAvailable:","abstract":"

    Undocumented

    ","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)moduleName":{"name":"moduleName","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)fanSpeedAvailable":{"name":"fanSpeedAvailable","abstract":"

    Availability of the control of fan speed.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)desiredTemperatureAvailable":{"name":"desiredTemperatureAvailable","abstract":"

    Availability of the control of desired temperature.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)acEnableAvailable":{"name":"acEnableAvailable","abstract":"

    Availability of the control of turn on/off AC.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)acMaxEnableAvailable":{"name":"acMaxEnableAvailable","abstract":"

    Availability of the control of enable/disable air conditioning is ON on the maximum level.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)circulateAirEnableAvailable":{"name":"circulateAirEnableAvailable","abstract":"

    Availability of the control of enable/disable circulate Air mode.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)autoModeEnableAvailable":{"name":"autoModeEnableAvailable","abstract":"

    Availability of the control of enable/disable auto mode.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)dualModeEnableAvailable":{"name":"dualModeEnableAvailable","abstract":"

    Availability of the control of enable/disable dual mode.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)defrostZoneAvailable":{"name":"defrostZoneAvailable","abstract":"

    Availability of the control of defrost zones.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)defrostZone":{"name":"defrostZone","abstract":"

    A set of all defrost zones that are controllable.

    ","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)ventilationModeAvailable":{"name":"ventilationModeAvailable","abstract":"

    Availability of the control of air ventilation mode.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)ventilationMode":{"name":"ventilationMode","abstract":"

    A set of all ventilation modes that are controllable.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)heatedSteeringWheelAvailable":{"name":"heatedSteeringWheelAvailable","abstract":"

    @abstract Availability of the control (enable/disable) of heated Steering Wheel.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)heatedWindshieldAvailable":{"name":"heatedWindshieldAvailable","abstract":"

    @abstract Availability of the control (enable/disable) of heated Windshield.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)heatedRearWindowAvailable":{"name":"heatedRearWindowAvailable","abstract":"

    @abstract Availability of the control (enable/disable) of heated Rear Window.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLClimateControlCapabilities.html#/c:objc(cs)SDLClimateControlCapabilities(py)heatedMirrorsAvailable":{"name":"heatedMirrorsAvailable","abstract":"

    @abstract Availability of the control (enable/disable) of heated Mirrors.","parent_name":"SDLClimateControlCapabilities"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(cpy)defaultTimeout":{"name":"defaultTimeout","abstract":"

    Set this to change the default timeout for all choice sets. If a timeout is not set on an individual choice set object (or if it is set to 0.0), then it will use this timeout instead. See timeout for more details. If this is not set by you, it will default to 10 seconds.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(cpy)defaultLayout":{"name":"defaultLayout","abstract":"

    Set this to change the default layout for all choice sets. If a layout is not set on an individual choice set object, then it will use this layout instead. See layout for more details. If this is not set by you, it will default to SDLChoiceSetLayoutList.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)title":{"name":"title","abstract":"

    Maps to PerformInteraction.initialText. The title of the choice set, and/or the initial text on a keyboard prompt.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)initialPrompt":{"name":"initialPrompt","abstract":"

    Maps to PerformInteraction.initialPrompt. The initial prompt spoken to the user at the start of an interaction.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)layout":{"name":"layout","abstract":"

    Maps to PerformInteraction.interactionLayout. Whether the presented choices are arranged as a set of tiles or a list.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)timeout":{"name":"timeout","abstract":"

    Maps to PerformInteraction.timeout. This applies only to a manual selection (not a voice selection, which has its timeout handled by the system). Defaults to defaultTimeout.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)timeoutPrompt":{"name":"timeoutPrompt","abstract":"

    Maps to PerformInteraction.timeoutPrompt. This text is spoken when a VR interaction times out. If this set is presented in a manual (non-voice) only interaction, this will be ignored.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)helpPrompt":{"name":"helpPrompt","abstract":"

    Maps to PerformInteraction.helpPrompt. This is the spoken string when a user speaks help when the interaction is occurring.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)helpList":{"name":"helpList","abstract":"

    Maps to PerformInteraction.vrHelp. This is a list of help text presented to the user when they are in a voice recognition interaction from your choice set of options. If this set is presented in a touch only interaction, this will be ignored.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)delegate":{"name":"delegate","abstract":"

    The delegate of this choice set, called when the user interacts with it.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(py)choices":{"name":"choices","abstract":"

    The choices to be displayed to the user within this choice set. These choices could match those already preloaded via SDLScreenManager preloadChoices:withCompletionHandler:.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(im)initWithTitle:delegate:choices:":{"name":"-initWithTitle:delegate:choices:","abstract":"

    Initialize with a title, delegate, and choices. It will use the default timeout and layout, all other properties (such as prompts) will be nil.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(im)initWithTitle:delegate:layout:timeout:initialPromptString:timeoutPromptString:helpPromptString:vrHelpList:choices:":{"name":"-initWithTitle:delegate:layout:timeout:initialPromptString:timeoutPromptString:helpPromptString:vrHelpList:choices:","abstract":"

    Initializer with all possible properties.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceSet.html#/c:objc(cs)SDLChoiceSet(im)initWithTitle:delegate:layout:timeout:initialPrompt:timeoutPrompt:helpPrompt:vrHelpList:choices:":{"name":"-initWithTitle:delegate:layout:timeout:initialPrompt:timeoutPrompt:helpPrompt:vrHelpList:choices:","abstract":"

    Initializer with all possible properties.

    ","parent_name":"SDLChoiceSet"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)text":{"name":"text","abstract":"

    Maps to Choice.menuName. The primary text of the cell. Duplicates within an SDLChoiceSet are not permitted and will result in the SDLChoiceSet failing to initialize.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)secondaryText":{"name":"secondaryText","abstract":"

    Maps to Choice.secondaryText. Optional secondary text of the cell, if available. Duplicates within an SDLChoiceSet are permitted.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)tertiaryText":{"name":"tertiaryText","abstract":"

    Maps to Choice.tertiaryText. Optional tertitary text of the cell, if available. Duplicates within an SDLChoiceSet are permitted.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)voiceCommands":{"name":"voiceCommands","abstract":"

    Maps to Choice.vrCommands. Optional voice commands the user can speak to activate the cell. If not set and the head unit requires it, this will be set to the number in the list that this item appears. However, this would be a very poor experience for a user if the choice set is presented as a voice only interaction or both interaction mode. Therefore, consider not setting this only when you know the choice set will be presented as a touch only interaction.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)artwork":{"name":"artwork","abstract":"

    Maps to Choice.image. Optional image for the cell. This will be uploaded before the cell is used when the cell is preloaded or presented for the first time.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(py)secondaryArtwork":{"name":"secondaryArtwork","abstract":"

    Maps to Choice.secondaryImage. Optional secondary image for the cell. This will be uploaded before the cell is used when the cell is preloaded or presented for the first time.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(im)init":{"name":"-init","abstract":"

    Initialize the cell with nothing. This is unavailable

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(im)initWithText:":{"name":"-initWithText:","abstract":"

    Initialize the cell with text and nothing else.

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(im)initWithText:artwork:voiceCommands:":{"name":"-initWithText:artwork:voiceCommands:","abstract":"

    Initialize the cell with text, optional artwork, and optional voice commands

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoiceCell.html#/c:objc(cs)SDLChoiceCell(im)initWithText:secondaryText:tertiaryText:voiceCommands:artwork:secondaryArtwork:":{"name":"-initWithText:secondaryText:tertiaryText:voiceCommands:artwork:secondaryArtwork:","abstract":"

    Initialize the cell with all optional items

    ","parent_name":"SDLChoiceCell"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(im)initWithId:menuName:vrCommands:":{"name":"-initWithId:menuName:vrCommands:","abstract":"

    Undocumented

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(im)initWithId:menuName:vrCommands:image:secondaryText:secondaryImage:tertiaryText:":{"name":"-initWithId:menuName:vrCommands:image:secondaryText:secondaryImage:tertiaryText:","abstract":"

    Undocumented

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)choiceID":{"name":"choiceID","abstract":"

    The application-scoped identifier that uniquely identifies this choice

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)menuName":{"name":"menuName","abstract":"

    Text which appears in menu, representing this choice

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)vrCommands":{"name":"vrCommands","abstract":"

    VR synonyms for this choice

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)image":{"name":"image","abstract":"

    The image of the choice

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)secondaryText":{"name":"secondaryText","abstract":"

    Secondary text to display; e.g. address of POI in a search result entry

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)tertiaryText":{"name":"tertiaryText","abstract":"

    Tertiary text to display; e.g. distance to POI for a search result entry

    ","parent_name":"SDLChoice"},"Classes/SDLChoice.html#/c:objc(cs)SDLChoice(py)secondaryImage":{"name":"secondaryImage","abstract":"

    Secondary image for choice

    ","parent_name":"SDLChoice"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(im)initWithLanguage:hmiDisplayLanguage:":{"name":"-initWithLanguage:hmiDisplayLanguage:","abstract":"

    Undocumented

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(im)initWithLanguage:hmiDisplayLanguage:appName:ttsName:ngnMediaScreenAppName:vrSynonyms:":{"name":"-initWithLanguage:hmiDisplayLanguage:appName:ttsName:ngnMediaScreenAppName:vrSynonyms:","abstract":"

    Undocumented

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)language":{"name":"language","abstract":"

    The language the app wants to change to

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)hmiDisplayLanguage":{"name":"hmiDisplayLanguage","abstract":"

    HMI display language

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)appName":{"name":"appName","abstract":"

    Request a new app name registration

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)ttsName":{"name":"ttsName","abstract":"

    Request a new TTSName registration.

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)ngnMediaScreenAppName":{"name":"ngnMediaScreenAppName","abstract":"

    Request a new app short name registration

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLChangeRegistration.html#/c:objc(cs)SDLChangeRegistration(py)vrSynonyms":{"name":"vrSynonyms","abstract":"

    Request a new VR synonyms registration

    ","parent_name":"SDLChangeRegistration"},"Classes/SDLCarWindowViewController.html#/c:objc(cs)SDLCarWindowViewController(py)supportedOrientation":{"name":"supportedOrientation","abstract":"

    The supported interface orientation you wish to use. Defaults to MaskPortrait.

    ","parent_name":"SDLCarWindowViewController"},"Classes/SDLButtonPress.html#/c:objc(cs)SDLButtonPress(im)initWithButtonName:moduleType:":{"name":"-initWithButtonName:moduleType:","abstract":"

    Undocumented

    ","parent_name":"SDLButtonPress"},"Classes/SDLButtonPress.html#/c:objc(cs)SDLButtonPress(py)moduleType":{"name":"moduleType","abstract":"

    The module where the button should be pressed.

    ","parent_name":"SDLButtonPress"},"Classes/SDLButtonPress.html#/c:objc(cs)SDLButtonPress(py)buttonName":{"name":"buttonName","abstract":"

    The name of supported RC climate or radio button.

    ","parent_name":"SDLButtonPress"},"Classes/SDLButtonPress.html#/c:objc(cs)SDLButtonPress(py)buttonPressMode":{"name":"buttonPressMode","abstract":"

    Indicates whether this is a LONG or SHORT button press event.

    ","parent_name":"SDLButtonPress"},"Classes/SDLButtonCapabilities.html#/c:objc(cs)SDLButtonCapabilities(py)name":{"name":"name","parent_name":"SDLButtonCapabilities"},"Classes/SDLButtonCapabilities.html#/c:objc(cs)SDLButtonCapabilities(py)shortPressAvailable":{"name":"shortPressAvailable","abstract":"

    A NSNumber value indicates whether the button supports a SHORT press

    ","parent_name":"SDLButtonCapabilities"},"Classes/SDLButtonCapabilities.html#/c:objc(cs)SDLButtonCapabilities(py)longPressAvailable":{"name":"longPressAvailable","abstract":"

    A NSNumber value indicates whether the button supports a LONG press

    ","parent_name":"SDLButtonCapabilities"},"Classes/SDLButtonCapabilities.html#/c:objc(cs)SDLButtonCapabilities(py)upDownAvailable":{"name":"upDownAvailable","abstract":"

    A NSNumber value indicates whether the button supports button down and button up

    ","parent_name":"SDLButtonCapabilities"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)parkBrakeActive":{"name":"parkBrakeActive","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)ignitionStableStatus":{"name":"ignitionStableStatus","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)ignitionStatus":{"name":"ignitionStatus","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)driverDoorAjar":{"name":"driverDoorAjar","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)passengerDoorAjar":{"name":"passengerDoorAjar","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)rearLeftDoorAjar":{"name":"rearLeftDoorAjar","parent_name":"SDLBodyInformation"},"Classes/SDLBodyInformation.html#/c:objc(cs)SDLBodyInformation(py)rearRightDoorAjar":{"name":"rearRightDoorAjar","parent_name":"SDLBodyInformation"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)driverBeltDeployed":{"name":"driverBeltDeployed","abstract":"

    References signal VedsDrvBelt_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)passengerBeltDeployed":{"name":"passengerBeltDeployed","abstract":"

    References signal VedsPasBelt_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)passengerBuckleBelted":{"name":"passengerBuckleBelted","abstract":"

    References signal VedsRw1PasBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)driverBuckleBelted":{"name":"driverBuckleBelted","abstract":"

    References signal VedsRw1DrvBckl_D_Ltchd. See VehicleDataEventStatus

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)leftRow2BuckleBelted":{"name":"leftRow2BuckleBelted","abstract":"

    References signal VedsRw2lBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)passengerChildDetected":{"name":"passengerChildDetected","abstract":"

    References signal VedsRw1PasChld_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)rightRow2BuckleBelted":{"name":"rightRow2BuckleBelted","abstract":"

    References signal VedsRw2rBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)middleRow2BuckleBelted":{"name":"middleRow2BuckleBelted","abstract":"

    References signal VedsRw2mBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)middleRow3BuckleBelted":{"name":"middleRow3BuckleBelted","abstract":"

    References signal VedsRw3mBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)leftRow3BuckleBelted":{"name":"leftRow3BuckleBelted","abstract":"

    References signal VedsRw3lBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)rightRow3BuckleBelted":{"name":"rightRow3BuckleBelted","abstract":"

    References signal VedsRw3rBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)leftRearInflatableBelted":{"name":"leftRearInflatableBelted","abstract":"

    References signal VedsRw2lRib_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)rightRearInflatableBelted":{"name":"rightRearInflatableBelted","abstract":"

    References signal VedsRw2rRib_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)middleRow1BeltDeployed":{"name":"middleRow1BeltDeployed","abstract":"

    References signal VedsRw1mBelt_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLBeltStatus.html#/c:objc(cs)SDLBeltStatus(py)middleRow1BuckleBelted":{"name":"middleRow1BuckleBelted","abstract":"

    References signal VedsRw1mBckl_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLBeltStatus"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(py)delegate":{"name":"delegate","abstract":"

    The delegate describing when files are done playing or any errors that occur

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(py)playing":{"name":"playing","abstract":"

    Whether or not we are currently playing audio

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(py)queue":{"name":"queue","abstract":"

    The queue of audio files that will be played in sequence

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)init":{"name":"-init","abstract":"

    Init should only occur with dependencies. use initWithManager:

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)initWithManager:":{"name":"-initWithManager:","abstract":"

    Create an audio stream manager with a reference to the parent stream manager.

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)pushWithFileURL:":{"name":"-pushWithFileURL:","abstract":"

    Push a new file URL onto the queue after converting it into the correct PCM format for streaming binary data. Call playNextWhenReady to start playing the next completed pushed file.

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)pushWithData:":{"name":"-pushWithData:","abstract":"

    Push a new audio buffer onto the queue. Call playNextWhenReady to start playing the pushed audio buffer.

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)playNextWhenReady":{"name":"-playNextWhenReady","abstract":"

    Play the next item in the queue. If an item is currently playing, it will continue playing and this item will begin playing after it is completed.

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioStreamManager.html#/c:objc(cs)SDLAudioStreamManager(im)stop":{"name":"-stop","abstract":"

    Stop playing the queue after the current item completes and clear the queue. If nothing is playing, the queue will be cleared.

    ","parent_name":"SDLAudioStreamManager"},"Classes/SDLAudioPassThruCapabilities.html#/c:objc(cs)SDLAudioPassThruCapabilities(py)samplingRate":{"name":"samplingRate","abstract":"

    The sampling rate for AudioPassThru

    ","parent_name":"SDLAudioPassThruCapabilities"},"Classes/SDLAudioPassThruCapabilities.html#/c:objc(cs)SDLAudioPassThruCapabilities(py)bitsPerSample":{"name":"bitsPerSample","abstract":"

    The sample depth in bit for AudioPassThru

    ","parent_name":"SDLAudioPassThruCapabilities"},"Classes/SDLAudioPassThruCapabilities.html#/c:objc(cs)SDLAudioPassThruCapabilities(py)audioType":{"name":"audioType","abstract":"

    The audiotype for AudioPassThru

    ","parent_name":"SDLAudioPassThruCapabilities"},"Classes/SDLAudioFile.html#/c:objc(cs)SDLAudioFile(py)inputFileURL":{"name":"inputFileURL","abstract":"

    If initialized with a file URL, the file URL it came from

    ","parent_name":"SDLAudioFile"},"Classes/SDLAudioFile.html#/c:objc(cs)SDLAudioFile(py)outputFileURL":{"name":"outputFileURL","abstract":"

    If initialized with a file URL, where the transcoder should produce the transcoded PCM audio file

    ","parent_name":"SDLAudioFile"},"Classes/SDLAudioFile.html#/c:objc(cs)SDLAudioFile(py)estimatedDuration":{"name":"estimatedDuration","abstract":"

    In seconds. UINT32_MAX if unknown.

    ","parent_name":"SDLAudioFile"},"Classes/SDLAudioFile.html#/c:objc(cs)SDLAudioFile(py)data":{"name":"data","abstract":"

    The PCM audio data to be transferred and played

    ","parent_name":"SDLAudioFile"},"Classes/SDLAudioFile.html#/c:objc(cs)SDLAudioFile(py)fileSize":{"name":"fileSize","abstract":"

    The size of the PCM audio data in bytes

    ","parent_name":"SDLAudioFile"},"Classes/SDLAudioFile.html#/c:objc(cs)SDLAudioFile(im)initWithInputFileURL:outputFileURL:estimatedDuration:":{"name":"-initWithInputFileURL:outputFileURL:estimatedDuration:","abstract":"

    Initialize an audio file to be queued and played

    ","parent_name":"SDLAudioFile"},"Classes/SDLAudioFile.html#/c:objc(cs)SDLAudioFile(im)initWithData:":{"name":"-initWithData:","abstract":"

    Initialize a buffer of PCM audio data to be queued and played

    ","parent_name":"SDLAudioFile"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(im)initWithSource:keepContext:volume:equalizerSettings:":{"name":"-initWithSource:keepContext:volume:equalizerSettings:","abstract":"

    Constructs a newly allocated SDLAudioControlData object with given parameters

    ","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(py)source":{"name":"source","abstract":"

    @abstract In a getter response or a notification,","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(py)keepContext":{"name":"keepContext","abstract":"

    @abstract This parameter shall not be present in any getter responses or notifications.","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(py)volume":{"name":"volume","abstract":"

    @abstract Reflects the volume of audio, from 0%-100%.

    ","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlData.html#/c:objc(cs)SDLAudioControlData(py)equalizerSettings":{"name":"equalizerSettings","abstract":"

    @abstract Defines the list of supported channels (band) and their current/desired settings on HMI

    ","parent_name":"SDLAudioControlData"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(im)initWithModuleName:":{"name":"-initWithModuleName:","abstract":"

    Constructs a newly allocated SDLAudioControlCapabilities object with audio control module name (max 100 chars)

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(im)initWithModuleName:sourceAvailable:keepContextAvailable:volumeAvailable:equalizerAvailable:equalizerMaxChannelID:":{"name":"-initWithModuleName:sourceAvailable:keepContextAvailable:volumeAvailable:equalizerAvailable:equalizerMaxChannelID:","abstract":"

    Constructs a newly allocated SDLAudioControlCapabilities object with given parameters

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)moduleName":{"name":"moduleName","abstract":"

    @abstract The short friendly name of the audio control module.","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)sourceAvailable":{"name":"sourceAvailable","abstract":"

    @abstract Availability of the control of audio source.

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)keepContextAvailable":{"name":"keepContextAvailable","abstract":"

    Availability of the keepContext parameter.

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)volumeAvailable":{"name":"volumeAvailable","abstract":"

    @abstract Availability of the control of audio volume.

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)equalizerAvailable":{"name":"equalizerAvailable","abstract":"

    @abstract Availability of the control of Equalizer Settings.

    ","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLAudioControlCapabilities.html#/c:objc(cs)SDLAudioControlCapabilities(py)equalizerMaxChannelId":{"name":"equalizerMaxChannelId","abstract":"

    @abstract Must be included if equalizerAvailable=true,","parent_name":"SDLAudioControlCapabilities"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(py)isTemplate":{"name":"isTemplate","abstract":"

    Describes whether or not the image is a template that can be (re)colored by the SDL HMI. To make the artwork a template, set the UIImages rendering mode to UIImageRenderingModeAlwaysTemplate. In order for templates to work successfully, the icon must be one solid color with a clear background. The artwork should be created using the PNG image format.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(py)imageRPC":{"name":"imageRPC","abstract":"

    The Image RPC representing this artwork. Generally for use internally, you should instead pass an artwork to a Screen Manager method.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)artworkWithImage:name:asImageFormat:":{"name":"+artworkWithImage:name:asImageFormat:","abstract":"

    Convenience helper to create an ephemeral artwork from an image.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)artworkWithImage:asImageFormat:":{"name":"+artworkWithImage:asImageFormat:","abstract":"

    Convenience helper to create an ephemeral artwork from an image. A unique name will be assigned to the image. This name is a string representation of the image’s data which is created by hashing the data using the MD5 algorithm.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)artworkWithStaticIcon:":{"name":"+artworkWithStaticIcon:","abstract":"

    Create an SDLArtwork that represents a static icon. This can only be passed to the screen manager; passing this directly to the file manager will fail.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)persistentArtworkWithImage:name:asImageFormat:":{"name":"+persistentArtworkWithImage:name:asImageFormat:","abstract":"

    Convenience helper to create a persistent artwork from an image.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(cm)persistentArtworkWithImage:asImageFormat:":{"name":"+persistentArtworkWithImage:asImageFormat:","abstract":"

    Convenience helper to create a persistent artwork from an image. A unique name will be assigned to the image. This name is a string representation of the image’s data which is created by hashing the data using the MD5 algorithm.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(im)initWithImage:name:persistent:asImageFormat:":{"name":"-initWithImage:name:persistent:asImageFormat:","abstract":"

    Create a file for transmission to the remote system from a UIImage.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(im)initWithImage:persistent:asImageFormat:":{"name":"-initWithImage:persistent:asImageFormat:","abstract":"

    Create a file for transmission to the remote system from a UIImage. A unique name will be assigned to the image. This name is a string representation of the image’s data which is created by hashing the data using the MD5 algorithm.

    ","parent_name":"SDLArtwork"},"Classes/SDLArtwork.html#/c:objc(cs)SDLArtwork(im)initWithStaticIcon:":{"name":"-initWithStaticIcon:","abstract":"

    Create an SDLArtwork that represents a static icon. This can only be passed to the screen manager; passing this directly to the file manager will fail.

    ","parent_name":"SDLArtwork"},"Classes/SDLAppServicesCapabilities.html#/c:objc(cs)SDLAppServicesCapabilities(im)initWithAppServices:":{"name":"-initWithAppServices:","abstract":"

    Convenience init.

    ","parent_name":"SDLAppServicesCapabilities"},"Classes/SDLAppServicesCapabilities.html#/c:objc(cs)SDLAppServicesCapabilities(py)appServices":{"name":"appServices","abstract":"

    An array of currently available services. If this is an update to the capability the affected services will include an update reason in that item.

    ","parent_name":"SDLAppServicesCapabilities"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(im)initWithServiceID:serviceManifest:servicePublished:serviceActive:":{"name":"-initWithServiceID:serviceManifest:servicePublished:serviceActive:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(py)serviceID":{"name":"serviceID","abstract":"

    A unique ID tied to this specific service record. The ID is supplied by the module that services publish themselves.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(py)serviceManifest":{"name":"serviceManifest","abstract":"

    Manifest for the service that this record is for.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(py)servicePublished":{"name":"servicePublished","abstract":"

    If true, the service is published and available. If false, the service has likely just been unpublished, and should be considered unavailable.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceRecord.html#/c:objc(cs)SDLAppServiceRecord(py)serviceActive":{"name":"serviceActive","abstract":"

    If true, the service is the active primary service of the supplied service type. It will receive all potential RPCs that are passed through to that service type. If false, it is not the primary service of the supplied type. See servicePublished for its availability.

    ","parent_name":"SDLAppServiceRecord"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithAppServiceType:":{"name":"-initWithAppServiceType:","abstract":"

    Convenience init for serviceType.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithMediaServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:":{"name":"-initWithMediaServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:","abstract":"

    Convenience init for a media service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithWeatherServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:weatherServiceManifest:":{"name":"-initWithWeatherServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:weatherServiceManifest:","abstract":"

    Convenience init for a weather service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithNavigationServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:navigationServiceManifest:":{"name":"-initWithNavigationServiceName:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:navigationServiceManifest:","abstract":"

    Convenience init for a navigation service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(im)initWithServiceName:serviceType:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:weatherServiceManifest:navigationServiceManifest:":{"name":"-initWithServiceName:serviceType:serviceIcon:allowAppConsumers:rpcSpecVersion:handledRPCs:mediaServiceManifest:weatherServiceManifest:navigationServiceManifest:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)serviceName":{"name":"serviceName","abstract":"

    Unique name of this service.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)serviceType":{"name":"serviceType","abstract":"

    The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)serviceIcon":{"name":"serviceIcon","abstract":"

    The file name of the icon to be associated with this service. Most likely the same as the appIcon.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)allowAppConsumers":{"name":"allowAppConsumers","abstract":"

    If true, app service consumers beyond the IVI system will be able to access this service. If false, only the IVI system will be able consume the service. If not provided, it is assumed to be false.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)rpcSpecVersion":{"name":"rpcSpecVersion","abstract":"

    This is the max RPC Spec version the app service understands. This is important during the RPC passthrough functionality. If not included, it is assumed the max version of the module is acceptable.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)handledRPCs":{"name":"handledRPCs","abstract":"

    This field contains the Function IDs for the RPCs that this service intends to handle correctly. This means the service will provide meaningful responses. See FunctionID for enum equivalent values. This parameter is an integer to allow for new function IDs to be used by apps on older versions of SDL Core.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)mediaServiceManifest":{"name":"mediaServiceManifest","abstract":"

    A media service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)weatherServiceManifest":{"name":"weatherServiceManifest","abstract":"

    A weather service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceManifest.html#/c:objc(cs)SDLAppServiceManifest(py)navigationServiceManifest":{"name":"navigationServiceManifest","abstract":"

    A navigation service manifest.

    ","parent_name":"SDLAppServiceManifest"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithAppServiceType:serviceId:":{"name":"-initWithAppServiceType:serviceId:","abstract":"

    Convenience init for service type and service id.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithMediaServiceData:serviceId:":{"name":"-initWithMediaServiceData:serviceId:","abstract":"

    Convenience init for media service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithWeatherServiceData:serviceId:":{"name":"-initWithWeatherServiceData:serviceId:","abstract":"

    Convenience init for weather service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithNavigationServiceData:serviceId:":{"name":"-initWithNavigationServiceData:serviceId:","abstract":"

    Convenience init for navigation service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(im)initWithAppServiceType:serviceId:mediaServiceData:weatherServiceData:navigationServiceData:":{"name":"-initWithAppServiceType:serviceId:mediaServiceData:weatherServiceData:navigationServiceData:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)serviceType":{"name":"serviceType","abstract":"

    The type of service that is to be offered by this app. See AppServiceType for known enum equivalent types. Parameter is a string to allow for new service types to be used by apps on older versions of SDL Core.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)serviceId":{"name":"serviceId","abstract":"

    A unique ID tied to this specific service record. The ID is supplied by the module that services publish themselves.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)mediaServiceData":{"name":"mediaServiceData","abstract":"

    The media service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)weatherServiceData":{"name":"weatherServiceData","abstract":"

    The weather service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceData.html#/c:objc(cs)SDLAppServiceData(py)navigationServiceData":{"name":"navigationServiceData","abstract":"

    The navigation service data.

    ","parent_name":"SDLAppServiceData"},"Classes/SDLAppServiceCapability.html#/c:objc(cs)SDLAppServiceCapability(im)initWithUpdatedAppServiceRecord:":{"name":"-initWithUpdatedAppServiceRecord:","abstract":"

    Convenience init for required parameters.

    ","parent_name":"SDLAppServiceCapability"},"Classes/SDLAppServiceCapability.html#/c:objc(cs)SDLAppServiceCapability(im)initWithUpdateReason:updatedAppServiceRecord:":{"name":"-initWithUpdateReason:updatedAppServiceRecord:","abstract":"

    Convenience init for all parameters.

    ","parent_name":"SDLAppServiceCapability"},"Classes/SDLAppServiceCapability.html#/c:objc(cs)SDLAppServiceCapability(py)updateReason":{"name":"updateReason","abstract":"

    Only included in OnSystemCapbilityUpdated. Update reason for this service record.

    ","parent_name":"SDLAppServiceCapability"},"Classes/SDLAppServiceCapability.html#/c:objc(cs)SDLAppServiceCapability(py)updatedAppServiceRecord":{"name":"updatedAppServiceRecord","abstract":"

    Service record for a specific app service provider.

    ","parent_name":"SDLAppServiceCapability"},"Classes/SDLAppInfo.html#/c:objc(cs)SDLAppInfo(cm)currentAppInfo":{"name":"+currentAppInfo","abstract":"

    Undocumented

    ","parent_name":"SDLAppInfo"},"Classes/SDLAppInfo.html#/c:objc(cs)SDLAppInfo(py)appDisplayName":{"name":"appDisplayName","abstract":"

    The name displayed for the mobile application on the mobile device (can differ from the app name set in the initial RAI request).

    ","parent_name":"SDLAppInfo"},"Classes/SDLAppInfo.html#/c:objc(cs)SDLAppInfo(py)appBundleID":{"name":"appBundleID","abstract":"

    The AppBundleID of an iOS application or package name of the Android application. This supports App Launch strategies for each platform.

    ","parent_name":"SDLAppInfo"},"Classes/SDLAppInfo.html#/c:objc(cs)SDLAppInfo(py)appVersion":{"name":"appVersion","abstract":"

    Represents the build version number of this particular mobile app.

    ","parent_name":"SDLAppInfo"},"Classes/SDLAlertResponse.html#/c:objc(cs)SDLAlertResponse(py)tryAgainTime":{"name":"tryAgainTime","abstract":"

    Undocumented

    ","parent_name":"SDLAlertResponse"},"Classes/SDLAlertManeuver.html#/c:objc(cs)SDLAlertManeuver(im)initWithTTS:softButtons:":{"name":"-initWithTTS:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlertManeuver"},"Classes/SDLAlertManeuver.html#/c:objc(cs)SDLAlertManeuver(im)initWithTTSChunks:softButtons:":{"name":"-initWithTTSChunks:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlertManeuver"},"Classes/SDLAlertManeuver.html#/c:objc(cs)SDLAlertManeuver(py)ttsChunks":{"name":"ttsChunks","abstract":"

    An array of text chunks.

    ","parent_name":"SDLAlertManeuver"},"Classes/SDLAlertManeuver.html#/c:objc(cs)SDLAlertManeuver(py)softButtons":{"name":"softButtons","abstract":"

    An arry of soft buttons. If omitted on supported displays, only the system defined Close SoftButton shall be displayed.

    ","parent_name":"SDLAlertManeuver"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithAlertText1:alertText2:duration:":{"name":"-initWithAlertText1:alertText2:duration:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithAlertText1:alertText2:alertText3:":{"name":"-initWithAlertText1:alertText2:alertText3:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithAlertText1:alertText2:alertText3:duration:":{"name":"-initWithAlertText1:alertText2:alertText3:duration:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithAlertText1:alertText2:alertText3:duration:softButtons:":{"name":"-initWithAlertText1:alertText2:alertText3:duration:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTS:playTone:":{"name":"-initWithTTS:playTone:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTS:alertText1:alertText2:playTone:duration:":{"name":"-initWithTTS:alertText1:alertText2:playTone:duration:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTS:alertText1:alertText2:alertText3:playTone:duration:":{"name":"-initWithTTS:alertText1:alertText2:alertText3:playTone:duration:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTSChunks:playTone:":{"name":"-initWithTTSChunks:playTone:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTSChunks:alertText1:alertText2:alertText3:playTone:softButtons:":{"name":"-initWithTTSChunks:alertText1:alertText2:alertText3:playTone:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(im)initWithTTSChunks:alertText1:alertText2:alertText3:playTone:duration:softButtons:":{"name":"-initWithTTSChunks:alertText1:alertText2:alertText3:playTone:duration:softButtons:","abstract":"

    Undocumented

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)alertText1":{"name":"alertText1","abstract":"

    The String to be displayed in the first field of the display during the Alert

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)alertText2":{"name":"alertText2","abstract":"

    The String to be displayed in the second field of the display during the Alert

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)alertText3":{"name":"alertText3","abstract":"

    the String to be displayed in the third field of the display during the Alert","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)ttsChunks":{"name":"ttsChunks","abstract":"

    An array which, taken together, specify what is to be spoken to the user

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)duration":{"name":"duration","abstract":"

    The duration of the displayed portion of the alert, in milliseconds.

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)playTone":{"name":"playTone","abstract":"

    Whether the alert tone should be played before the TTS (if any) is spoken.

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)progressIndicator":{"name":"progressIndicator","abstract":"

    If supported on the given platform, the alert GUI will include some sort of animation indicating that loading of a feature is progressing. e.g. a spinning wheel or hourglass, etc.

    ","parent_name":"SDLAlert"},"Classes/SDLAlert.html#/c:objc(cs)SDLAlert(py)softButtons":{"name":"softButtons","abstract":"

    App defined SoftButtons.

    ","parent_name":"SDLAlert"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)driverAirbagDeployed":{"name":"driverAirbagDeployed","abstract":"

    References signal VedsDrvBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)driverSideAirbagDeployed":{"name":"driverSideAirbagDeployed","abstract":"

    References signal VedsDrvSideBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)driverCurtainAirbagDeployed":{"name":"driverCurtainAirbagDeployed","abstract":"

    References signal VedsDrvCrtnBag_D_Ltchd. See VehicleDataEventStatus

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)passengerAirbagDeployed":{"name":"passengerAirbagDeployed","abstract":"

    References signal VedsPasBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)passengerCurtainAirbagDeployed":{"name":"passengerCurtainAirbagDeployed","abstract":"

    References signal VedsPasCrtnBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)driverKneeAirbagDeployed":{"name":"driverKneeAirbagDeployed","abstract":"

    References signal VedsKneeDrvBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)passengerSideAirbagDeployed":{"name":"passengerSideAirbagDeployed","abstract":"

    References signal VedsPasSideBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAirbagStatus.html#/c:objc(cs)SDLAirbagStatus(py)passengerKneeAirbagDeployed":{"name":"passengerKneeAirbagDeployed","abstract":"

    References signal VedsKneePasBag_D_Ltchd. See VehicleDataEventStatus.

    ","parent_name":"SDLAirbagStatus"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(im)initWithId:menuName:":{"name":"-initWithId:menuName:","abstract":"

    Undocumented

    ","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(im)initWithId:menuName:position:":{"name":"-initWithId:menuName:position:","abstract":"

    Undocumented

    ","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(im)initWithId:menuName:menuIcon:position:":{"name":"-initWithId:menuName:menuIcon:position:","abstract":"

    Undocumented

    ","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(py)menuID":{"name":"menuID","abstract":"

    a Menu ID that identifies a sub menu","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(py)position":{"name":"position","abstract":"

    a position of menu","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(py)menuName":{"name":"menuName","abstract":"

    a menuName which is displayed representing this submenu item","parent_name":"SDLAddSubMenu"},"Classes/SDLAddSubMenu.html#/c:objc(cs)SDLAddSubMenu(py)menuIcon":{"name":"menuIcon","abstract":"

    An image that is displayed alongside this submenu item

    ","parent_name":"SDLAddSubMenu"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithHandler:":{"name":"-initWithHandler:","abstract":"

    Constructs a SDLAddCommand with a handler callback when an event occurs.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:handler:":{"name":"-initWithId:vrCommands:handler:","abstract":"

    Convenience init for creating a voice command menu item.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:menuName:handler:":{"name":"-initWithId:vrCommands:menuName:handler:","abstract":"

    Convenience init for creating a menu item with text.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:handler:":{"name":"-initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:handler:","abstract":"

    Convenience init for creating a menu item with text and a custom icon.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:iconIsTemplate:handler:":{"name":"-initWithId:vrCommands:menuName:parentId:position:iconValue:iconType:iconIsTemplate:handler:","abstract":"

    Convenience init for creating a menu item with text and a custom icon.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(im)initWithId:vrCommands:menuName:parentId:position:icon:handler:":{"name":"-initWithId:vrCommands:menuName:parentId:position:icon:handler:","abstract":"

    Convenience init for creating a menu item with text and a custom icon.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)handler":{"name":"handler","abstract":"

    A handler that will let you know when the button you created is subscribed.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)cmdID":{"name":"cmdID","abstract":"

    A unique id that identifies the command.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)menuParams":{"name":"menuParams","abstract":"

    A SDLMenuParams pointer which defines the command and how it is added to the command menu.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)vrCommands":{"name":"vrCommands","abstract":"

    An array of strings to be used as VR synonyms for this command.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html#/c:objc(cs)SDLAddCommand(py)cmdIcon":{"name":"cmdIcon","abstract":"

    Image struct containing a static or dynamic icon.

    ","parent_name":"SDLAddCommand"},"Classes/SDLAddCommand.html":{"name":"SDLAddCommand","abstract":"

    This class will add a command to the application’s Command Menu

    "},"Classes.html#/c:objc(cs)SDLAddCommandResponse":{"name":"SDLAddCommandResponse","abstract":"

    Response to SDLAddCommand

    "},"Classes/SDLAddSubMenu.html":{"name":"SDLAddSubMenu","abstract":"

    Add a SDLSubMenu to the Command Menu"},"Classes.html#/c:objc(cs)SDLAddSubMenuResponse":{"name":"SDLAddSubMenuResponse","abstract":"

    Response to SDLAddSubMenu

    "},"Classes/SDLAirbagStatus.html":{"name":"SDLAirbagStatus","abstract":"

    A vehicle data status struct for airbags

    "},"Classes/SDLAlert.html":{"name":"SDLAlert","abstract":"

    Shows an alert which typically consists of text-to-speech message and text on the display. At least either alertText1, alertText2 or TTSChunks need to be provided.

    "},"Classes/SDLAlertManeuver.html":{"name":"SDLAlertManeuver","abstract":"

    Shows a SDLShowConstantTBT message with an optional voice command. This message is shown as an overlay over the display’s base screen.

    "},"Classes.html#/c:objc(cs)SDLAlertManeuverResponse":{"name":"SDLAlertManeuverResponse","abstract":"

    Response to SDLAlertManeuver

    "},"Classes/SDLAlertResponse.html":{"name":"SDLAlertResponse","abstract":"

    Response to SDLAlert

    "},"Classes/SDLAppInfo.html":{"name":"SDLAppInfo","abstract":"

    A struct used in register app interface. Contains detailed information about the registered application.

    "},"Classes/SDLAppServiceCapability.html":{"name":"SDLAppServiceCapability","abstract":"

    Undocumented

    "},"Classes/SDLAppServiceData.html":{"name":"SDLAppServiceData","abstract":"

    Undocumented

    "},"Classes/SDLAppServiceManifest.html":{"name":"SDLAppServiceManifest","abstract":"

    This manifest contains all the information necessary for the service to be published, activated, and allow consumers to interact with it

    "},"Classes/SDLAppServiceRecord.html":{"name":"SDLAppServiceRecord","abstract":"

    Undocumented

    "},"Classes/SDLAppServicesCapabilities.html":{"name":"SDLAppServicesCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLArtwork.html":{"name":"SDLArtwork","abstract":"

    Undocumented

    "},"Classes/SDLAudioControlCapabilities.html":{"name":"SDLAudioControlCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLAudioControlData.html":{"name":"SDLAudioControlData","abstract":"

    Undocumented

    "},"Classes/SDLAudioFile.html":{"name":"SDLAudioFile","abstract":"

    Undocumented

    "},"Classes/SDLAudioPassThruCapabilities.html":{"name":"SDLAudioPassThruCapabilities","abstract":"

    Describes different audio type configurations for SDLPerformAudioPassThru, e.g. {8kHz,8-bit,PCM}

    "},"Classes/SDLAudioStreamManager.html":{"name":"SDLAudioStreamManager","abstract":"

    Undocumented

    "},"Classes/SDLBeltStatus.html":{"name":"SDLBeltStatus","abstract":"

    Vehicle data struct for the seat belt status

    "},"Classes/SDLBodyInformation.html":{"name":"SDLBodyInformation","abstract":"

    The body information including power modes.

    "},"Classes/SDLButtonCapabilities.html":{"name":"SDLButtonCapabilities","abstract":"

    Provides information about the capabilities of a SDL HMI button.

    "},"Classes/SDLButtonPress.html":{"name":"SDLButtonPress","abstract":"

    This RPC allows a remote control type mobile application to simulate a hardware button press event.

    "},"Classes.html#/c:objc(cs)SDLButtonPressResponse":{"name":"SDLButtonPressResponse","abstract":"

    Response to SDLButtonPress

    "},"Classes/SDLCarWindowViewController.html":{"name":"SDLCarWindowViewController","abstract":"

    Note that if this is embedded in a UINavigationController and UITabBarController, it will not lock orientation. You must lock your container controller to a specific orientation.

    "},"Classes/SDLChangeRegistration.html":{"name":"SDLChangeRegistration","abstract":"

    If the app recognizes during the app registration that the SDL HMI language (voice/TTS and/or display) does not match the app language, the app will be able (but does not need) to change this registration with changeRegistration prior to app being brought into focus.

    "},"Classes.html#/c:objc(cs)SDLChangeRegistrationResponse":{"name":"SDLChangeRegistrationResponse","abstract":"

    Response to SDLChangeRegistrations

    "},"Classes/SDLChoice.html":{"name":"SDLChoice","abstract":"

    A choice is an option which a user can select either via the menu or via voice recognition (VR) during an application initiated interaction.

    "},"Classes/SDLChoiceCell.html":{"name":"SDLChoiceCell","abstract":"

    Undocumented

    "},"Classes/SDLChoiceSet.html":{"name":"SDLChoiceSet","abstract":"

    Undocumented

    "},"Classes/SDLClimateControlCapabilities.html":{"name":"SDLClimateControlCapabilities","abstract":"

    Contains information about a climate control module’s capabilities.

    "},"Classes/SDLClimateControlData.html":{"name":"SDLClimateControlData","abstract":"

    The current information for the Climate Remote Control Module

    "},"Classes/SDLCloudAppProperties.html":{"name":"SDLCloudAppProperties","abstract":"

    Undocumented

    "},"Classes/SDLClusterModeStatus.html":{"name":"SDLClusterModeStatus","abstract":"

    A vehicle data struct for the cluster mode and power status

    "},"Classes/SDLConfiguration.html":{"name":"SDLConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLCreateInteractionChoiceSet.html":{"name":"SDLCreateInteractionChoiceSet","abstract":"

    Creates a Choice Set which can be used in subsequent SDLPerformInteraction Operations.

    "},"Classes.html#/c:objc(cs)SDLCreateInteractionChoiceSetResponse":{"name":"SDLCreateInteractionChoiceSetResponse","abstract":"

    Response to SDLCreateInteractionChoiceSet has been called

    "},"Classes/SDLDIDResult.html":{"name":"SDLDIDResult","abstract":"

    A vehicle data struct

    "},"Classes/SDLDateTime.html":{"name":"SDLDateTime","abstract":"

    A struct referenced in SendLocation for an absolute date

    "},"Classes/SDLDeleteCommand.html":{"name":"SDLDeleteCommand","abstract":"

    Removes a command from the Command Menu"},"Classes.html#/c:objc(cs)SDLDeleteCommandResponse":{"name":"SDLDeleteCommandResponse","abstract":"

    Response to SDLDeleteCommand

    "},"Classes/SDLDeleteFile.html":{"name":"SDLDeleteFile","abstract":"

    Used to delete a file resident on the SDL module in the app’s local cache."},"Classes/SDLDeleteFileResponse.html":{"name":"SDLDeleteFileResponse","abstract":"

    Response to SDLDeleteFile

    "},"Classes/SDLDeleteInteractionChoiceSet.html":{"name":"SDLDeleteInteractionChoiceSet","abstract":"

    Deletes an existing Choice Set identified by the parameter"},"Classes.html#/c:objc(cs)SDLDeleteInteractionChoiceSetResponse":{"name":"SDLDeleteInteractionChoiceSetResponse","abstract":"

    SDLDeleteInteractionChoiceSetResponse is sent, when SDLDeleteInteractionChoiceSet has been called

    "},"Classes/SDLDeleteSubMenu.html":{"name":"SDLDeleteSubMenu","abstract":"

    Deletes a submenu from the Command Menu"},"Classes.html#/c:objc(cs)SDLDeleteSubMenuResponse":{"name":"SDLDeleteSubMenuResponse","abstract":"

    Response to SDLDeleteSubMenu

    "},"Classes/SDLDeviceInfo.html":{"name":"SDLDeviceInfo","abstract":"

    Various information about connecting device. Referenced in RegisterAppInterface

    "},"Classes/SDLDeviceStatus.html":{"name":"SDLDeviceStatus","abstract":"

    Describes the status related to a connected mobile device or SDL and if or how it is represented in the vehicle.

    "},"Classes/SDLDiagnosticMessage.html":{"name":"SDLDiagnosticMessage","abstract":"

    Non periodic vehicle diagnostic request

    "},"Classes/SDLDiagnosticMessageResponse.html":{"name":"SDLDiagnosticMessageResponse","abstract":"

    Response to SDLDiagnosticMessage

    "},"Classes/SDLDialNumber.html":{"name":"SDLDialNumber","abstract":"

    This RPC is used to tell the head unit to use bluetooth to dial a phone number using the phone.

    "},"Classes.html#/c:objc(cs)SDLDialNumberResponse":{"name":"SDLDialNumberResponse","abstract":"

    The response to SDLDialNumber

    "},"Classes/SDLDisplayCapabilities.html":{"name":"SDLDisplayCapabilities","abstract":"

    Contains information about the display for the SDL system to which the application is currently connected.

    "},"Classes/SDLECallInfo.html":{"name":"SDLECallInfo","abstract":"

    A vehicle data struct for emergency call information

    "},"Classes/SDLEmergencyEvent.html":{"name":"SDLEmergencyEvent","abstract":"

    A vehicle data struct for an emergency event

    "},"Classes/SDLEncodedSyncPData.html":{"name":"SDLEncodedSyncPData","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLEncodedSyncPDataResponse":{"name":"SDLEncodedSyncPDataResponse","abstract":"

    The response to SDLEncodedSyncPData

    "},"Classes.html#/c:objc(cs)SDLEndAudioPassThru":{"name":"SDLEndAudioPassThru","abstract":"

    When this request is invoked, the audio capture stops

    "},"Classes.html#/c:objc(cs)SDLEndAudioPassThruResponse":{"name":"SDLEndAudioPassThruResponse","abstract":"

    Response to SDLEndAudioPassThru

    "},"Classes/SDLEqualizerSettings.html":{"name":"SDLEqualizerSettings","abstract":"

    Defines the each Equalizer channel settings.

    "},"Classes/SDLFile.html":{"name":"SDLFile","abstract":"

    Undocumented

    "},"Classes/SDLFileManager.html":{"name":"SDLFileManager","abstract":"

    The SDLFileManager is an RPC manager for the remote file system. After it starts, it will attempt to communicate with the remote file system to get the names of all files. Deleting and Uploading will them queue these changes as transactions. If a delete succeeds, the local list of remote files will remove that file name, and likewise, if an upload succeeds, the local list of remote files will now include that file name.

    "},"Classes/SDLFileManagerConfiguration.html":{"name":"SDLFileManagerConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLFuelRange.html":{"name":"SDLFuelRange","abstract":"

    Describes the distance a vehicle can travel with the current level of fuel.

    "},"Classes/SDLFunctionID.html":{"name":"SDLFunctionID","abstract":"

    Undocumented

    "},"Classes/SDLGPSData.html":{"name":"SDLGPSData","abstract":"

    Describes the GPS data. Not all data will be available on all carlines.

    "},"Classes.html#/c:objc(cs)SDLGenericResponse":{"name":"SDLGenericResponse","abstract":"

    Generic Response is sent when the name of a received request is unknown. It is only used in case of an error. It will have an INVALID_DATA result code.

    "},"Classes/SDLGetAppServiceData.html":{"name":"SDLGetAppServiceData","abstract":"

    This request asks the module for current data related to the specific service. It also includes an option to subscribe to that service for future updates.

    "},"Classes/SDLGetAppServiceDataResponse.html":{"name":"SDLGetAppServiceDataResponse","abstract":"

    Undocumented

    "},"Classes/SDLGetCloudAppProperties.html":{"name":"SDLGetCloudAppProperties","abstract":"

    RPC used to get the current properties of a cloud application.

    "},"Classes/SDLGetCloudAppPropertiesResponse.html":{"name":"SDLGetCloudAppPropertiesResponse","abstract":"

    The response to GetCloudAppProperties

    "},"Classes/SDLGetDTCs.html":{"name":"SDLGetDTCs","abstract":"

    This RPC allows to request diagnostic module trouble codes from a certain"},"Classes/SDLGetDTCsResponse.html":{"name":"SDLGetDTCsResponse","abstract":"

    Response to SDLGetDTCs

    "},"Classes/SDLGetFile.html":{"name":"SDLGetFile","abstract":"

    This request is sent to the module to retrieve a file.

    "},"Classes/SDLGetFileResponse.html":{"name":"SDLGetFileResponse","abstract":"

    Undocumented

    "},"Classes/SDLGetInteriorVehicleData.html":{"name":"SDLGetInteriorVehicleData","abstract":"

    Reads the current status value of specified remote control module (type)."},"Classes/SDLGetInteriorVehicleDataResponse.html":{"name":"SDLGetInteriorVehicleDataResponse","abstract":"

    A response to SDLGetInteriorVehicleData

    "},"Classes/SDLGetSystemCapability.html":{"name":"SDLGetSystemCapability","abstract":"

    Undocumented

    "},"Classes/SDLGetSystemCapabilityResponse.html":{"name":"SDLGetSystemCapabilityResponse","abstract":"

    Response to SDLGetSystemCapability

    "},"Classes/SDLGetVehicleData.html":{"name":"SDLGetVehicleData","abstract":"

    Requests current values of specific published vehicle data items.

    "},"Classes/SDLGetVehicleDataResponse.html":{"name":"SDLGetVehicleDataResponse","abstract":"

    Response to SDLGetVehicleData

    "},"Classes/SDLGetWayPoints.html":{"name":"SDLGetWayPoints","abstract":"

    Undocumented

    "},"Classes/SDLGetWayPointsResponse.html":{"name":"SDLGetWayPointsResponse","abstract":"

    Response to SDLGetWayPoints

    "},"Classes/SDLHMICapabilities.html":{"name":"SDLHMICapabilities","abstract":"

    Undocumented

    "},"Classes/SDLHMIPermissions.html":{"name":"SDLHMIPermissions","abstract":"

    Defining sets of HMI levels, which are permitted or prohibited for a given RPC.

    "},"Classes/SDLHMISettingsControlCapabilities.html":{"name":"SDLHMISettingsControlCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLHMISettingsControlData.html":{"name":"SDLHMISettingsControlData","abstract":"

    Corresponds to HMI_SETTINGS ModuleType

    "},"Classes/SDLHapticRect.html":{"name":"SDLHapticRect","abstract":"

    Defines spatial for each user control object for video streaming application

    "},"Classes/SDLHeadLampStatus.html":{"name":"SDLHeadLampStatus","abstract":"

    Vehicle data struct for status of head lamps

    "},"Classes/SDLImage.html":{"name":"SDLImage","abstract":"

    Specifies which image shall be used e.g. in SDLAlerts or on SDLSoftbuttons provided the display supports it.

    "},"Classes/SDLImageField.html":{"name":"SDLImageField","abstract":"

    A struct used in DisplayCapabilities describing the capability of an image field

    "},"Classes/SDLImageResolution.html":{"name":"SDLImageResolution","abstract":"

    The resolution of an image

    "},"Classes/SDLKeyboardProperties.html":{"name":"SDLKeyboardProperties","abstract":"

    Configuration of on-screen keyboard (if available)

    "},"Classes/SDLLifecycleConfiguration.html":{"name":"SDLLifecycleConfiguration","abstract":"

    Configuration options for SDLManager

    "},"Classes/SDLLifecycleConfigurationUpdate.html":{"name":"SDLLifecycleConfigurationUpdate","abstract":"

    Configuration update options for SDLManager. This class can be used to update the lifecycle configuration in"},"Classes/SDLLightCapabilities.html":{"name":"SDLLightCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLLightControlCapabilities.html":{"name":"SDLLightControlCapabilities","abstract":"

    Undocumented

    "},"Classes/SDLLightControlData.html":{"name":"SDLLightControlData","abstract":"

    Undocumented

    "},"Classes/SDLLightState.html":{"name":"SDLLightState","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLListFiles":{"name":"SDLListFiles","abstract":"

    Requests the current list of resident filenames for the registered app. Not"},"Classes/SDLListFilesResponse.html":{"name":"SDLListFilesResponse","abstract":"

    Response to SDLListFiles

    "},"Classes/SDLLocationCoordinate.html":{"name":"SDLLocationCoordinate","abstract":"

    Describes a coordinate on earth

    "},"Classes/SDLLocationDetails.html":{"name":"SDLLocationDetails","abstract":"

    Describes a location, including its coordinate, name, etc. Used in WayPoints.

    "},"Classes/SDLLockScreenConfiguration.html":{"name":"SDLLockScreenConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLLockScreenViewController.html":{"name":"SDLLockScreenViewController","abstract":"

    Undocumented

    "},"Classes/SDLLogConfiguration.html":{"name":"SDLLogConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLLogFileModule.html":{"name":"SDLLogFileModule","abstract":"

    Undocumented

    "},"Classes/SDLLogFilter.html":{"name":"SDLLogFilter","abstract":"

    Undocumented

    "},"Classes/SDLLogManager.html":{"name":"SDLLogManager","abstract":"

    This is the central manager of logging. A developer should not have to interact with this class, it is exclusively used internally.

    "},"Classes.html#/c:objc(cs)SDLLogTargetAppleSystemLog":{"name":"SDLLogTargetAppleSystemLog","abstract":"

    The Apple System Log target is an iOS 2.0+ compatible log target that logs to both the Console and to the System Log.

    "},"Classes.html#/c:objc(cs)SDLLogTargetFile":{"name":"SDLLogTargetFile","abstract":"

    The File log will log to a text file on the iPhone in Documents/smartdevicelink/log/#appName##datetime##.log. It will log up to 3 logs which will rollover.

    "},"Classes.html#/c:objc(cs)SDLLogTargetOSLog":{"name":"SDLLogTargetOSLog","abstract":"

    OS_LOG is an iOS 10+ only logging system that logs to the Console and the Apple system console. This is an improved replacement for Apple SysLog (SDLLogTargetAppleSystemLog).

    "},"Classes/SDLManager.html":{"name":"SDLManager","abstract":"

    Undocumented

    "},"Classes/SDLMassageCushionFirmness.html":{"name":"SDLMassageCushionFirmness","abstract":"

    The intensity or firmness of a cushion.

    "},"Classes/SDLMassageModeData.html":{"name":"SDLMassageModeData","abstract":"

    Specify the mode of a massage zone.

    "},"Classes/SDLMediaServiceData.html":{"name":"SDLMediaServiceData","abstract":"

    This data is related to what a media service should provide.

    "},"Classes.html#/c:objc(cs)SDLMediaServiceManifest":{"name":"SDLMediaServiceManifest","abstract":"

    A media service manifest.

    "},"Classes/SDLMenuCell.html":{"name":"SDLMenuCell","abstract":"

    Undocumented

    "},"Classes/SDLMenuParams.html":{"name":"SDLMenuParams","abstract":"

    Used when adding a sub menu to an application menu or existing sub menu.

    "},"Classes/SDLMetadataTags.html":{"name":"SDLMetadataTags","abstract":"

    Undocumented

    "},"Classes/SDLModuleData.html":{"name":"SDLModuleData","abstract":"

    Describes a remote control module’s data

    "},"Classes/SDLMyKey.html":{"name":"SDLMyKey","abstract":"

    Vehicle Data struct

    "},"Classes/SDLNavigationCapability.html":{"name":"SDLNavigationCapability","abstract":"

    Extended capabilities for an onboard navigation system

    "},"Classes/SDLNavigationInstruction.html":{"name":"SDLNavigationInstruction","abstract":"

    Undocumented

    "},"Classes/SDLNavigationServiceData.html":{"name":"SDLNavigationServiceData","abstract":"

    Undocumented

    "},"Classes/SDLNavigationServiceManifest.html":{"name":"SDLNavigationServiceManifest","abstract":"

    Undocumented

    "},"Classes/SDLNotificationConstants.html":{"name":"SDLNotificationConstants","abstract":"

    Undocumented

    "},"Classes/SDLOasisAddress.html":{"name":"SDLOasisAddress","abstract":"

    Struct used in SendLocation describing an address

    "},"Classes/SDLOnAppInterfaceUnregistered.html":{"name":"SDLOnAppInterfaceUnregistered","abstract":"

    Notifies an application that its interface registration has been terminated. This means that all SDL resources associated with the application are discarded, including the Command Menu, Choice Sets, button subscriptions, etc.

    "},"Classes/SDLOnAppServiceData.html":{"name":"SDLOnAppServiceData","abstract":"

    This notification includes the data that is updated from the specific service.

    "},"Classes.html#/c:objc(cs)SDLOnAudioPassThru":{"name":"SDLOnAudioPassThru","abstract":"

    Binary data is in binary part of hybrid msg.

    "},"Classes/SDLOnButtonEvent.html":{"name":"SDLOnButtonEvent","abstract":"

    Notifies application that user has depressed or released a button to which"},"Classes/SDLOnButtonPress.html":{"name":"SDLOnButtonPress","abstract":"

    Notifies application of button press events for buttons to which the application is subscribed. SDL supports two button press events defined as follows:

    "},"Classes/SDLOnCommand.html":{"name":"SDLOnCommand","abstract":"

    This is called when a command was selected via VR after pressing the PTT button, or selected from the menu after pressing the MENU button.

    "},"Classes/SDLOnDriverDistraction.html":{"name":"SDLOnDriverDistraction","abstract":"

    Notifies the application of the current driver distraction state (whether driver distraction rules are in effect, or not).

    "},"Classes/SDLOnEncodedSyncPData.html":{"name":"SDLOnEncodedSyncPData","abstract":"

    Callback including encoded data of any SyncP packets that SYNC needs to send back to the mobile device. Legacy / v1 Protocol implementation; responds to EncodedSyncPData. *** DEPRECATED ***

    "},"Classes/SDLOnHMIStatus.html":{"name":"SDLOnHMIStatus"},"Classes/SDLOnHashChange.html":{"name":"SDLOnHashChange","abstract":"

    Notification containing an updated hashID which can be used over connection cycles (i.e. loss of connection, ignition cycles, etc.). Sent after initial registration and subsequently after any change in the calculated hash of all persisted app data.

    "},"Classes/SDLOnInteriorVehicleData.html":{"name":"SDLOnInteriorVehicleData","abstract":"

    Notifications when subscribed vehicle data changes.

    "},"Classes/SDLOnKeyboardInput.html":{"name":"SDLOnKeyboardInput","abstract":"

    Sent when a keyboard presented by a PerformInteraction has a keyboard input.

    "},"Classes/SDLOnLanguageChange.html":{"name":"SDLOnLanguageChange","abstract":"

    Provides information to what language the SDL HMI language was changed

    "},"Classes/SDLOnLockScreenStatus.html":{"name":"SDLOnLockScreenStatus","abstract":"

    To help prevent driver distraction, any SmartDeviceLink application is required to implement a lockscreen that must be enforced while the application is active on the system while the vehicle is in motion.

    "},"Classes/SDLOnPermissionsChange.html":{"name":"SDLOnPermissionsChange","abstract":"

    Provides update to app of which sets of functions are available

    "},"Classes/SDLOnRCStatus.html":{"name":"SDLOnRCStatus","abstract":"

    OnRCStatus notifications to all registered mobile applications and the HMI whenever"},"Classes/SDLOnSyncPData.html":{"name":"SDLOnSyncPData","abstract":"

    DEPRECATED

    "},"Classes/SDLOnSystemCapabilityUpdated.html":{"name":"SDLOnSystemCapabilityUpdated","abstract":"

    A notification to inform the connected device that a specific system capability has changed.

    "},"Classes/SDLOnSystemRequest.html":{"name":"SDLOnSystemRequest","abstract":"

    An asynchronous request from the system for specific data from the device or the cloud or response to a request from the device or cloud Binary data can be included in hybrid part of message for some requests (such as Authentication request responses)

    "},"Classes/SDLOnTBTClientState.html":{"name":"SDLOnTBTClientState","abstract":"

    Provides applications with notifications specific to the current TBT client status on the module

    "},"Classes/SDLOnTouchEvent.html":{"name":"SDLOnTouchEvent","abstract":"

    Notifies about touch events on the screen’s prescribed area during video streaming

    "},"Classes/SDLOnVehicleData.html":{"name":"SDLOnVehicleData","abstract":"

    Callback for the periodic and non periodic vehicle data read function.

    "},"Classes/SDLOnWayPointChange.html":{"name":"SDLOnWayPointChange","abstract":"

    Notification which provides the entire LocationDetails when there is a change to any waypoints or destination.

    "},"Classes/SDLParameterPermissions.html":{"name":"SDLParameterPermissions","abstract":"

    Defining sets of parameters, which are permitted or prohibited for a given RPC.

    "},"Classes/SDLPerformAppServiceInteraction.html":{"name":"SDLPerformAppServiceInteraction","abstract":"

    App service providers will likely have different actions exposed to the module and app service consumers. It will be difficult to standardize these actions by RPC versions and can easily become stale. Therefore, we introduce a best-effort attempt to take actions on a service.

    "},"Classes/SDLPerformAppServiceInteractionResponse.html":{"name":"SDLPerformAppServiceInteractionResponse","abstract":"

    Undocumented

    "},"Classes/SDLPerformAudioPassThru.html":{"name":"SDLPerformAudioPassThru","abstract":"

    This will open an audio pass thru session. By doing so the app can receive"},"Classes.html#/c:objc(cs)SDLPerformAudioPassThruResponse":{"name":"SDLPerformAudioPassThruResponse","abstract":"

    Response to SDLPerformAudioPassThru

    "},"Classes/SDLPerformInteraction.html":{"name":"SDLPerformInteraction","abstract":"

    Performs an application-initiated interaction in which the user can select a"},"Classes/SDLPerformInteractionResponse.html":{"name":"SDLPerformInteractionResponse","abstract":"

    PerformInteraction Response is sent, when SDLPerformInteraction has been called

    "},"Classes/SDLPermissionItem.html":{"name":"SDLPermissionItem","abstract":"

    Undocumented

    "},"Classes/SDLPermissionManager.html":{"name":"SDLPermissionManager","abstract":"

    Undocumented

    "},"Classes/SDLPhoneCapability.html":{"name":"SDLPhoneCapability","abstract":"

    Extended capabilities of the module’s phone feature

    "},"Classes/SDLPinchGesture.html":{"name":"SDLPinchGesture","abstract":"

    Undocumented

    "},"Classes/SDLPresetBankCapabilities.html":{"name":"SDLPresetBankCapabilities","abstract":"

    Contains information about on-screen preset capabilities.

    "},"Classes/SDLPublishAppService.html":{"name":"SDLPublishAppService","abstract":"

    Registers a service offered by this app on the module.

    "},"Classes/SDLPublishAppServiceResponse.html":{"name":"SDLPublishAppServiceResponse","abstract":"

    Undocumented

    "},"Classes/SDLPutFile.html":{"name":"SDLPutFile","abstract":"

    Used to push a binary data onto the SDL module from a mobile device, such as icons and album art.

    "},"Classes/SDLPutFileResponse.html":{"name":"SDLPutFileResponse","abstract":"

    Response to SDLPutFile

    "},"Classes/SDLRDSData.html":{"name":"SDLRDSData","abstract":"

    Include the data defined in Radio Data System, which is a communications protocol standard for embedding small amounts of digital information in conventional FM radio broadcasts.

    "},"Classes/SDLRGBColor.html":{"name":"SDLRGBColor","abstract":"

    Undocumented

    "},"Classes/SDLRPCMessage.html":{"name":"SDLRPCMessage","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLRPCNotification":{"name":"SDLRPCNotification","abstract":"

    An RPC sent from the head unit to the app about some data change, such as a button was pressed

    "},"Classes/SDLRPCNotificationNotification.html":{"name":"SDLRPCNotificationNotification","abstract":"

    An NSNotification object that makes retrieving internal SDLRPCNotification data easier

    "},"Classes/SDLRPCRequest.html":{"name":"SDLRPCRequest","abstract":"

    Undocumented

    "},"Classes/SDLRPCRequestNotification.html":{"name":"SDLRPCRequestNotification","abstract":"

    A NSNotification object that makes retrieving internal SDLRPCRequest data easier

    "},"Classes/SDLRPCResponse.html":{"name":"SDLRPCResponse","abstract":"

    Undocumented

    "},"Classes/SDLRPCResponseNotification.html":{"name":"SDLRPCResponseNotification","abstract":"

    A NSNotification object that makes retrieving internal SDLRPCResponse data easier

    "},"Classes/SDLRPCStruct.html":{"name":"SDLRPCStruct","abstract":"

    Undocumented

    "},"Classes/SDLRadioControlCapabilities.html":{"name":"SDLRadioControlCapabilities","abstract":"

    Contains information about a radio control module’s capabilities.

    "},"Classes/SDLRadioControlData.html":{"name":"SDLRadioControlData","abstract":"

    Include information (both read-only and changeable data) about a remote control radio module.

    "},"Classes/SDLReadDID.html":{"name":"SDLReadDID","abstract":"

    Non periodic vehicle data read request. This is an RPC to get diagnostics"},"Classes/SDLReadDIDResponse.html":{"name":"SDLReadDIDResponse","abstract":"

    A response to ReadDID

    "},"Classes/SDLRectangle.html":{"name":"SDLRectangle","abstract":"

    A struct describing a rectangle

    "},"Classes/SDLRegisterAppInterface.html":{"name":"SDLRegisterAppInterface","abstract":"

    Registers the application’s interface with SDL. The RegisterAppInterface RPC declares the properties of the app, including the messaging interface version, the app name, etc. The mobile application must establish its interface registration with SDL before any other interaction with SDL can take place. The registration lasts until it is terminated either by the application calling the SDLUnregisterAppInterface method, or by SDL sending an SDLOnAppInterfaceUnregistered notification, or by loss of the underlying transport connection, or closing of the underlying message transmission protocol RPC session.

    "},"Classes/SDLRegisterAppInterfaceResponse.html":{"name":"SDLRegisterAppInterfaceResponse","abstract":"

    Response to SDLRegisterAppInterface

    "},"Classes/SDLRemoteControlCapabilities.html":{"name":"SDLRemoteControlCapabilities","abstract":"

    Capabilities of the remote control feature

    "},"Classes/SDLResetGlobalProperties.html":{"name":"SDLResetGlobalProperties","abstract":"

    Resets the passed global properties to their default values as defined by"},"Classes.html#/c:objc(cs)SDLResetGlobalPropertiesResponse":{"name":"SDLResetGlobalPropertiesResponse","abstract":"

    Response to ResetGlobalProperties

    "},"Classes/SDLSISData.html":{"name":"SDLSISData","abstract":"

    HD radio Station Information Service (SIS) data.

    "},"Classes/SDLScreenManager.html":{"name":"SDLScreenManager","abstract":"

    Undocumented

    "},"Classes/SDLScreenParams.html":{"name":"SDLScreenParams","abstract":"

    A struct in DisplayCapabilities describing parameters related to a video / touch input area

    "},"Classes/SDLScrollableMessage.html":{"name":"SDLScrollableMessage","abstract":"

    Creates a full screen overlay containing a large block of formatted text that"},"Classes.html#/c:objc(cs)SDLScrollableMessageResponse":{"name":"SDLScrollableMessageResponse","abstract":"

    Response to SDLScrollableMessage

    "},"Classes/SDLSeatControlCapabilities.html":{"name":"SDLSeatControlCapabilities","abstract":"

    Include information about a seat control capabilities.

    "},"Classes/SDLSeatControlData.html":{"name":"SDLSeatControlData","abstract":"

    Seat control data corresponds to SEAT ModuleType.

    "},"Classes/SDLSeatMemoryAction.html":{"name":"SDLSeatMemoryAction","abstract":"

    Specify the action to be performed.

    "},"Classes/SDLSendHapticData.html":{"name":"SDLSendHapticData","abstract":"

    Sends the spatial data gathered from SDLCarWindow or VirtualDisplayEncoder to the HMI. This data will be utilized by the HMI to determine how and when haptic events should occur.

    "},"Classes.html#/c:objc(cs)SDLSendHapticDataResponse":{"name":"SDLSendHapticDataResponse","abstract":"

    Response to SDLSendHapticData

    "},"Classes/SDLSendLocation.html":{"name":"SDLSendLocation","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLSendLocationResponse":{"name":"SDLSendLocationResponse","abstract":"

    Response to SDLSendLocation

    "},"Classes/SDLSetAppIcon.html":{"name":"SDLSetAppIcon","abstract":"

    Used to set existing local file on SDL as the app’s icon. Not supported on"},"Classes.html#/c:objc(cs)SDLSetAppIconResponse":{"name":"SDLSetAppIconResponse","abstract":"

    Response to SDLSetAppIcon

    "},"Classes/SDLSetCloudAppProperties.html":{"name":"SDLSetCloudAppProperties","abstract":"

    RPC used to enable/disable a cloud application and set authentication data

    "},"Classes.html#/c:objc(cs)SDLSetCloudAppPropertiesResponse":{"name":"SDLSetCloudAppPropertiesResponse","abstract":"

    The response to SetCloudAppProperties

    "},"Classes/SDLSetDisplayLayout.html":{"name":"SDLSetDisplayLayout","abstract":"

    Used to set an alternate display layout. If not sent, default screen for"},"Classes/SDLSetDisplayLayoutResponse.html":{"name":"SDLSetDisplayLayoutResponse","abstract":"

    Response to SDLSetDisplayLayout

    "},"Classes/SDLSetGlobalProperties.html":{"name":"SDLSetGlobalProperties","abstract":"

    Sets global property values

    "},"Classes.html#/c:objc(cs)SDLSetGlobalPropertiesResponse":{"name":"SDLSetGlobalPropertiesResponse","abstract":"

    Response to SDLSetGlobalProperties

    "},"Classes/SDLSetInteriorVehicleData.html":{"name":"SDLSetInteriorVehicleData","abstract":"

    This RPC allows a remote control type mobile application to"},"Classes/SDLSetInteriorVehicleDataResponse.html":{"name":"SDLSetInteriorVehicleDataResponse","abstract":"

    Response to SDLSetInteriorVehicleData

    "},"Classes/SDLSetMediaClockTimer.html":{"name":"SDLSetMediaClockTimer","abstract":"

    Sets the media clock/timer value and the update method (e.g.count-up,"},"Classes.html#/c:objc(cs)SDLSetMediaClockTimerResponse":{"name":"SDLSetMediaClockTimerResponse","abstract":"

    Response to SDLSetMediaClockTimer

    "},"Classes/SDLShow.html":{"name":"SDLShow","abstract":"

    Updates the application’s display text area, regardless of whether or not"},"Classes/SDLShowConstantTBT.html":{"name":"SDLShowConstantTBT","abstract":"

    This RPC is used to update the user with navigation information for the constantly shown screen (base screen), but also for the alert maneuver screen.

    "},"Classes.html#/c:objc(cs)SDLShowConstantTBTResponse":{"name":"SDLShowConstantTBTResponse","abstract":"

    Response to SDLShowConstantTBT

    "},"Classes.html#/c:objc(cs)SDLShowResponse":{"name":"SDLShowResponse","abstract":"

    Response to SDLShow

    "},"Classes/SDLSingleTireStatus.html":{"name":"SDLSingleTireStatus","abstract":"

    Tire pressure status of a single tire.

    "},"Classes/SDLSlider.html":{"name":"SDLSlider","abstract":"

    Creates a full screen or pop-up overlay (depending on platform) with a single user controlled slider

    "},"Classes/SDLSliderResponse.html":{"name":"SDLSliderResponse","abstract":"

    Response to SDLSlider

    "},"Classes/SDLSoftButton.html":{"name":"SDLSoftButton","abstract":"

    Describes an on-screen button which may be presented in various contexts, e.g. templates or alerts

    "},"Classes/SDLSoftButtonCapabilities.html":{"name":"SDLSoftButtonCapabilities","abstract":"

    Contains information about a SoftButton’s capabilities.

    "},"Classes/SDLSoftButtonObject.html":{"name":"SDLSoftButtonObject","abstract":"

    A soft button wrapper object that is capable of storing and switching between states

    "},"Classes/SDLSoftButtonState.html":{"name":"SDLSoftButtonState","abstract":"

    Undocumented

    "},"Classes/SDLSpeak.html":{"name":"SDLSpeak","abstract":"

    Speaks a phrase over the vehicle audio system using SDL’s TTS (text-to-speech) engine. The provided text to be spoken can be simply a text phrase, or it can consist of phoneme specifications to direct SDL’s TTS engine to speak a speech-sculpted phrase.

    "},"Classes.html#/c:objc(cs)SDLSpeakResponse":{"name":"SDLSpeakResponse","abstract":"

    Response to SDLSpeak

    "},"Classes/SDLStartTime.html":{"name":"SDLStartTime","abstract":"

    Describes the hour, minute and second values used to set the media clock.

    "},"Classes/SDLStationIDNumber.html":{"name":"SDLStationIDNumber","abstract":"

    Describes the hour, minute and second values used to set the media clock.

    "},"Classes/SDLStreamingMediaConfiguration.html":{"name":"SDLStreamingMediaConfiguration","abstract":"

    Undocumented

    "},"Classes/SDLStreamingMediaManager.html":{"name":"SDLStreamingMediaManager","abstract":"

    Undocumented

    "},"Classes/SDLSubscribeButton.html":{"name":"SDLSubscribeButton","abstract":"

    Establishes a subscription to button notifications for HMI buttons. Buttons"},"Classes.html#/c:objc(cs)SDLSubscribeButtonResponse":{"name":"SDLSubscribeButtonResponse","abstract":"

    Response to SDLSubscribeButton

    "},"Classes/SDLSubscribeVehicleData.html":{"name":"SDLSubscribeVehicleData","abstract":"

    Subscribes to specific published vehicle data items. The data will be only sent if it has changed. The application will be notified by the onVehicleData notification whenever new data is available. The update rate is dependent on sensors, vehicle architecture and vehicle type.

    "},"Classes/SDLSubscribeVehicleDataResponse.html":{"name":"SDLSubscribeVehicleDataResponse","abstract":"

    Response to SDLSubscribeVehicleData

    "},"Classes.html#/c:objc(cs)SDLSubscribeWayPoints":{"name":"SDLSubscribeWayPoints","abstract":"

    A SDLSubscribeWaypoints can be sent to subscribe"},"Classes.html#/c:objc(cs)SDLSubscribeWayPointsResponse":{"name":"SDLSubscribeWayPointsResponse","abstract":"

    Response to SubscribeWayPoints

    "},"Classes/SDLSyncMsgVersion.html":{"name":"SDLSyncMsgVersion","abstract":"

    Specifies the version number of the SDL V4 interface. This is used by both the application and SDL to declare what interface version each is using.

    "},"Classes.html#/c:objc(cs)SDLSyncPData":{"name":"SDLSyncPData","abstract":"

    Undocumented

    "},"Classes.html#/c:objc(cs)SDLSyncPDataResponse":{"name":"SDLSyncPDataResponse","abstract":"

    Response to SyncPData

    "},"Classes/SDLSystemCapability.html":{"name":"SDLSystemCapability","abstract":"

    The systemCapabilityType indicates which type of data should be changed and identifies which data object exists in this struct. For example, if the SystemCapability Type is NAVIGATION then a navigationCapability should exist.

    "},"Classes/SDLSystemCapabilityManager.html":{"name":"SDLSystemCapabilityManager","abstract":"

    A manager that handles updating and subscribing to SDL capabilities.

    "},"Classes/SDLSystemRequest.html":{"name":"SDLSystemRequest","abstract":"

    Undocumented

    "},"Classes/SDLTTSChunk.html":{"name":"SDLTTSChunk","abstract":"

    Specifies what is to be spoken. This can be simply a text phrase, which SDL will speak according to its own rules. It can also be phonemes from either the Microsoft SAPI phoneme set, or from the LHPLUS phoneme set. It can also be a pre-recorded sound in WAV format (either developer-defined, or provided by the SDL platform).

    "},"Classes/SDLTemperature.html":{"name":"SDLTemperature","abstract":"

    Struct representing a temperature.

    "},"Classes/SDLTemplateColorScheme.html":{"name":"SDLTemplateColorScheme","abstract":"

    Undocumented

    "},"Classes/SDLTextField.html":{"name":"SDLTextField","abstract":"

    Struct defining the characteristics of a displayed field on the HMI.

    "},"Classes/SDLTireStatus.html":{"name":"SDLTireStatus","abstract":"

    Struct used in Vehicle Data; the status and pressure of the tires.

    "},"Classes/SDLTouch.html":{"name":"SDLTouch","abstract":"

    Undocumented

    "},"Classes/SDLTouchCoord.html":{"name":"SDLTouchCoord","abstract":"

    The coordinate of a touch, used in a touch event

    "},"Classes/SDLTouchEvent.html":{"name":"SDLTouchEvent","abstract":"

    A touch which occurred on the IVI system during projection

    "},"Classes/SDLTouchEventCapabilities.html":{"name":"SDLTouchEventCapabilities","abstract":"

    The capabilities of touches during projection applications

    "},"Classes/SDLTouchManager.html":{"name":"SDLTouchManager","abstract":"

    Undocumented

    "},"Classes/SDLTurn.html":{"name":"SDLTurn","abstract":"

    A struct used in UpdateTurnList for Turn-by-Turn navigation applications

    "},"Classes.html#/c:objc(cs)SDLUnregisterAppInterface":{"name":"SDLUnregisterAppInterface","abstract":"

    Terminates an application’s interface registration. This causes SDL® to"},"Classes.html#/c:objc(cs)SDLUnregisterAppInterfaceResponse":{"name":"SDLUnregisterAppInterfaceResponse","abstract":"

    Response to UnregisterAppInterface

    "},"Classes/SDLUnsubscribeButton.html":{"name":"SDLUnsubscribeButton","abstract":"

    Deletes a subscription to button notifications for the specified button. For"},"Classes.html#/c:objc(cs)SDLUnsubscribeButtonResponse":{"name":"SDLUnsubscribeButtonResponse","abstract":"

    Response to UnsubscribeButton

    "},"Classes/SDLUnsubscribeVehicleData.html":{"name":"SDLUnsubscribeVehicleData","abstract":"

    This function is used to unsubscribe the notifications from the"},"Classes/SDLUnsubscribeVehicleDataResponse.html":{"name":"SDLUnsubscribeVehicleDataResponse","abstract":"

    Response to UnsubscribeVehicleData

    "},"Classes.html#/c:objc(cs)SDLUnsubscribeWayPoints":{"name":"SDLUnsubscribeWayPoints","abstract":"

    Request to unsubscribe from navigation WayPoints and Destination

    "},"Classes.html#/c:objc(cs)SDLUnsubscribeWayPointsResponse":{"name":"SDLUnsubscribeWayPointsResponse","abstract":"

    Response to UnsubscribeWayPoints

    "},"Classes/SDLUpdateTurnList.html":{"name":"SDLUpdateTurnList","abstract":"

    Updates the list of next maneuvers, which can be requested by the user pressing the softbutton

    "},"Classes.html#/c:objc(cs)SDLUpdateTurnListResponse":{"name":"SDLUpdateTurnListResponse","abstract":"

    Response to UpdateTurnList

    "},"Classes/SDLVehicleDataResult.html":{"name":"SDLVehicleDataResult","abstract":"

    Individual published data request result

    "},"Classes/SDLVehicleType.html":{"name":"SDLVehicleType","abstract":"

    Describes the type of vehicle the mobile phone is connected with.

    "},"Classes/SDLVersion.html":{"name":"SDLVersion","abstract":"

    Undocumented

    "},"Classes/SDLVideoStreamingCapability.html":{"name":"SDLVideoStreamingCapability","abstract":"

    Contains information about this system’s video streaming capabilities

    "},"Classes/SDLVideoStreamingFormat.html":{"name":"SDLVideoStreamingFormat","abstract":"

    An available format for video streaming in projection applications

    "},"Classes/SDLVoiceCommand.html":{"name":"SDLVoiceCommand","abstract":"

    Undocumented

    "},"Classes/SDLVRHelpItem.html":{"name":"SDLVRHelpItem","abstract":"

    A help item for voice commands, used locally in interaction lists and globally

    "},"Classes/SDLWeatherAlert.html":{"name":"SDLWeatherAlert","abstract":"

    Undocumented

    "},"Classes/SDLWeatherData.html":{"name":"SDLWeatherData","abstract":"

    Undocumented

    "},"Classes/SDLWeatherServiceData.html":{"name":"SDLWeatherServiceData","abstract":"

    This data is related to what a weather service would provide.

    "},"Classes/SDLWeatherServiceManifest.html":{"name":"SDLWeatherServiceManifest","abstract":"

    A weather service manifest.

    "},"Categories/NSString(SDLEnum).html#/c:objc(cs)NSString(im)isEqualToEnum:":{"name":"-isEqualToEnum:","abstract":"

    Returns whether or not two enums are equal.

    ","parent_name":"NSString(SDLEnum)"},"Categories/NSString(SDLEnum).html":{"name":"NSString(SDLEnum)","abstract":"

    Undocumented

    "},"Categories.html":{"name":"Categories","abstract":"

    The following categories are available globally.

    "},"Classes.html":{"name":"Classes","abstract":"

    The following classes are available globally.

    "},"Constants.html":{"name":"Constants","abstract":"

    The following constants are available globally.

    "},"Enums.html":{"name":"Enumerations","abstract":"

    The following enumerations are available globally.

    "},"Protocols.html":{"name":"Protocols","abstract":"

    The following protocols are available globally.

    "},"Type Definitions.html":{"name":"Type Definitions","abstract":"

    The following type definitions are available globally.

    "}} \ No newline at end of file diff --git a/docs/undocumented.json b/docs/undocumented.json index a76a61f97..cc2b7d2e8 100644 --- a/docs/undocumented.json +++ b/docs/undocumented.json @@ -217,6 +217,13 @@ "symbol_kind": "sourcekitten.source.lang.objc.decl.class", "warning": "undocumented" }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAudioFile.h", + "line": 13, + "symbol": "SDLAudioFile", + "symbol_kind": "sourcekitten.source.lang.objc.decl.class", + "warning": "undocumented" + }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAudioStreamManager.h", "line": 19, @@ -602,6 +609,13 @@ "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", "warning": "undocumented" }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLErrorConstants.h", + "line": 127, + "symbol": "SDLChoiceSetManagerError.SDLChoiceSetManagerErrorInvalidState", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLFile.h", "line": 16, @@ -1029,6 +1043,13 @@ "symbol_kind": "sourcekitten.source.lang.objc.decl.property", "warning": "undocumented" }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLManager.h", + "line": 184, + "symbol": "SDLRPCUpdatedBlock", + "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", + "warning": "undocumented" + }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLManagerDelegate.h", "line": 19, @@ -1050,6 +1071,62 @@ "symbol_kind": "sourcekitten.source.lang.objc.decl.class", "warning": "undocumented" }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLMenuManagerConstants.h", + "line": 19, + "symbol": "SDLDynamicMenuUpdatesMode.SDLDynamicMenuUpdatesModeForceOn", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLMenuManagerConstants.h", + "line": 20, + "symbol": "SDLDynamicMenuUpdatesMode.SDLDynamicMenuUpdatesModeForceOff", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLMenuManagerConstants.h", + "line": 21, + "symbol": "SDLDynamicMenuUpdatesMode.SDLDynamicMenuUpdatesModeOnWithCompatibility", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLMenuManagerConstants.h", + "line": 24, + "symbol": "MenuCellState", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLMenuManagerConstants.h", + "line": 24, + "symbol": "MenuCellState", + "symbol_kind": "sourcekitten.source.lang.objc.decl.typedef", + "warning": "undocumented" + }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLMenuManagerConstants.h", + "line": 25, + "symbol": "MenuCellState.MenuCellStateDelete", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLMenuManagerConstants.h", + "line": 26, + "symbol": "MenuCellState.MenuCellStateAdd", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, + { + "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLMenuManagerConstants.h", + "line": 27, + "symbol": "MenuCellState.MenuCellStateKeep", + "symbol_kind": "sourcekitten.source.lang.objc.decl.enumcase", + "warning": "undocumented" + }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLMenuParams.h", "line": 17, @@ -2996,27 +3073,6 @@ "symbol_kind": "sourcekitten.source.lang.objc.decl.class", "warning": "undocumented" }, - { - "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLRPCMessage.h", - "line": 11, - "symbol": "SDLRPCMessage.function", - "symbol_kind": "sourcekitten.source.lang.objc.decl.ivar", - "warning": "undocumented" - }, - { - "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLRPCMessage.h", - "line": 12, - "symbol": "SDLRPCMessage.parameters", - "symbol_kind": "sourcekitten.source.lang.objc.decl.ivar", - "warning": "undocumented" - }, - { - "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLRPCMessage.h", - "line": 13, - "symbol": "SDLRPCMessage.messageType", - "symbol_kind": "sourcekitten.source.lang.objc.decl.ivar", - "warning": "undocumented" - }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLRPCMessageType.h", "line": 14, @@ -3061,9 +3117,9 @@ }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLRPCStruct.h", - "line": 12, + "line": 13, "symbol": "SDLRPCStruct.store", - "symbol_kind": "sourcekitten.source.lang.objc.decl.ivar", + "symbol_kind": "sourcekitten.source.lang.objc.decl.property", "warning": "undocumented" }, { @@ -3096,14 +3152,14 @@ }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLScreenManager.h", - "line": 44, + "line": 45, "symbol": "SDLScreenManager", "symbol_kind": "sourcekitten.source.lang.objc.decl.class", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLScreenManager.h", - "line": 214, + "line": 226, "symbol": "SDLScreenManager.-softButtonObjectNamed:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" @@ -4830,13 +4886,6 @@ "symbol_kind": "sourcekitten.source.lang.objc.decl.class", "warning": "undocumented" }, - { - "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLSystemCapabilityManager.h", - "line": 44, - "symbol": "SDLSystemCapabilityManager", - "symbol_kind": "sourcekitten.source.lang.objc.decl.class", - "warning": "undocumented" - }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLSystemRequest.h", "line": 16,