Expand Minimize Picture-in-picture Power Device Status Voice Recognition Skip Back Skip Forward Minus Plus Play Search
Documentation
Sidebar

Classes Reference

Section Contents

Overview

The following classes are available globally.

SDLAddCommand

This class will add a command to the application’s Command Menu

A command will be added to the end of the list of elements in the Command Menu under the following conditions:

  1. When a SDLAddCommand is added with no SDLMenuParams value provided.
  2. When a SDLMenuParams value is provided with a SDLMenuParam.position value greater than or equal to the number of menu items currently defined in the menu specified by the SDLMenuParam.parentID value.

The set of choices which the application builds using SDLAddCommand can be a mixture of:

  1. Choices having only VR synonym definitions, but no SDLMenuParams definitions
  2. Choices having only SDLMenuParams definitions, but no VR synonym definitions
  3. Choices having both SDLMenuParams and VR synonym definitions

HMILevel needs to be FULL, LIMITED or BACKGROUD @since SDL 1.0

See

SDLDeleteCommand, SDLAddSubMenu, SDLDeleteSubMenu
See more

Objective-C

@interface SDLAddCommand : SDLRPCRequest

Swift

class SDLAddCommand : SDLRPCRequest

SDLAddCommandResponse

Response to SDLAddCommand

Since SmartDeviceLink 1.0

Objective-C

@interface SDLAddCommandResponse : SDLRPCResponse

Swift

class SDLAddCommandResponse : SDLRPCResponse

SDLAddSubMenu

Add a SDLSubMenu to the Command Menu

A SDLSubMenu can only be added to the Top Level Menu (i.e.a SDLSubMenu cannot be added to a SDLSubMenu), and may only contain commands as children

HMILevel needs to be FULL, LIMITED or BACKGROUD

Since SmartDeviceLink 1.0
see SDLDeleteSubMenu SDLAddCommand SDLDeleteCommand

See more

Objective-C

@interface SDLAddSubMenu : SDLRPCRequest

Swift

class SDLAddSubMenu : SDLRPCRequest

SDLAddSubMenuResponse

Response to SDLAddSubMenu

Since SmartDeviceLink 1.0

Objective-C

@interface SDLAddSubMenuResponse : SDLRPCResponse

Swift

class SDLAddSubMenuResponse : SDLRPCResponse

SDLAirbagStatus

A vehicle data status struct for airbags

See more

Objective-C

@interface SDLAirbagStatus : SDLRPCStruct

Swift

class SDLAirbagStatus : SDLRPCStruct

SDLAlert

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.

  • The displayed portion of the SDLAlert, if any, will persist until the specified timeout has elapsed, or the SDLAlert is preempted
  • An SDLAlert will preempt (abort) any SmartDeviceLink Operation that is in-progress, except an already-in-progress SDLAlert
  • An SDLAlert cannot be preempted by any SmartDeviceLink Operation
  • An SDLAlert can be preempted by a user action (button push)
  • An SDLAlert will fail if it is issued while another SDLAlert is in progress
  • Although each Alert parameter is optional, in fact each SDLAlert request must supply at least one of the following parameters:
    • alertText1
    • alertText2
    • alertText3
    • ttsChunks

HMILevel needs to be FULL or LIMITED.
If the app has been granted function group Notification the SDLHMILevel can also be BACKGROUND

@since SDL 1.0

See more

Objective-C

@interface SDLAlert : SDLRPCRequest

Swift

class SDLAlert : SDLRPCRequest

SDLAlertManeuver

Shows a SDLShowConstantTBT message with an optional voice command. This message is shown as an overlay over the display’s base screen.

@since SmartDeviceLink 1.0

See more

Objective-C

@interface SDLAlertManeuver : SDLRPCRequest

Swift

class SDLAlertManeuver : SDLRPCRequest

SDLAlertManeuverResponse

Response to SDLAlertManeuver

@since SmartDeviceLink 1.0

Objective-C

@interface SDLAlertManeuverResponse : SDLRPCResponse

Swift

class SDLAlertManeuverResponse : SDLRPCResponse

SDLAlertResponse

Response to SDLAlert

@since SDL 1.0

See more

Objective-C

@interface SDLAlertResponse : SDLRPCResponse

Swift

class SDLAlertResponse : SDLRPCResponse

SDLAppInfo

A struct used in register app interface. Contains detailed information about the registered application.

See more

Objective-C

@interface SDLAppInfo : SDLRPCStruct

Swift

class SDLAppInfo : SDLRPCStruct

SDLArtwork

Undocumented

See more

Objective-C

@interface SDLArtwork : SDLFile

/**
 *  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 `UIImage`s 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.
 *
 *  @discussion An image should be templated if it is intended to be used as an icon in a button or menu.
 */
@property (assign, nonatomic, readonly) BOOL isTemplate;

/**
 *  Convenience helper to create an ephemeral artwork from an image.
 *
 *  This is an ephemeral file, it will not be persisted through sessions / ignition cycles. Any files that you do not *know* you will use in future sessions should be created through this method. For example, album / artist artwork should be ephemeral.
 *
 *  Persistent files should be created using `persistentArtworkWithImage:name:asImageFormat:`
 *
 *  @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
 *
 *  @param image       The UIImage to be sent to the remote head unit
 *  @param name        The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
 *  @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
 *
 *  @return An instance of this class to be passed to the file manager.
 */
+ (instancetype)artworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to false");

/**
 *  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.
 *
 *  This is an ephemeral file, it will not be persisted through sessions / ignition cycles. Any files that you do not *know* you will use in future sessions should be created through this method. For example, album / artist artwork should be ephemeral.
 *
 *  Persistent files should be created using `persistentArtworkWithImage:name:asImageFormat:`
 *
 *  @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
 *
 *  @param image       The UIImage to be sent to the remote head unit
 *  @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
 *
 *  @return An instance of this class to be passed to the file manager.
 */
+ (instancetype)artworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to false");

/**
 *  Convenience helper to create a persistent artwork from an image.
 *
 *  This is a persistent file, it will be persisted through sessions / ignition cycles. You will only have a limited space for all files, so be sure to only persist files that are required for all or most sessions. For example, menu artwork should be persistent.
 *
 *  Ephemeral files should be created using `ephemeralArtworkWithImage:name:asImageFormat:`
 *
 *  @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
 *
 *  @param image       The UIImage to be sent to the remote head unit
 *  @param name        The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
 *  @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
 *
 *  @return An instance of this class to be passed to the file manager.
 */
+ (instancetype)persistentArtworkWithImage:(UIImage *)image name:(NSString *)name asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to true");

/**
 *  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.
 *
 *  This is a persistent file, it will be persisted through sessions / ignition cycles. You will only have a limited space for all files, so be sure to only persist files that are required for all or most sessions. For example, menu artwork should be persistent.
 *
 *  Ephemeral files should be created using `ephemeralArtworkWithImage:name:asImageFormat:`
 *
 *  @warning It is strongly recommended to pass the file url using an SDLFile initializer instead of the image. If you pass the UIImage, it is loaded into memory, and will be dumped to a temporary file. This will create a duplicate file. *Only pass a UIImage if the image is not stored on disk*.
 *
 *  @param image       The UIImage to be sent to the remote head unit
 *  @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
 *
 *  @return An instance of this class to be passed to the file manager.
 */
+ (instancetype)persistentArtworkWithImage:(UIImage *)image asImageFormat:(SDLArtworkImageFormat)imageFormat NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to true");

/**
 *  Create a file for transmission to the remote system from a UIImage.
 *
 *  @param image       The UIImage to be sent to the remote head unit
 *  @param name        The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
 *  @param persistent  Whether or not the artwork should be persistent.
 *  @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
 *
 *  @return An instance of this class to be passed to the file manager.
 */
- (instancetype)initWithImage:(UIImage *)image name:(NSString *)name persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat;

/**
 *  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.

 *  @param image       The UIImage to be sent to the remote head unit
 *  @param persistent  Whether or not the artwork should be persistent.
 *  @param imageFormat Whether the image should be converted to a PNG or JPG before transmission. Images with transparency or few colors should be PNGs. Images with many colors should be JPGs.
 *
 *  @return An instance of this class to be passed to the file manager.
 */
- (instancetype)initWithImage:(UIImage *)image persistent:(BOOL)persistent asImageFormat:(SDLArtworkImageFormat)imageFormat;

@end

Swift

class SDLArtwork : SDLFile

SDLAudioControlCapabilities

Undocumented

See more

Objective-C

@interface SDLAudioControlCapabilities : SDLRPCStruct

/**
 Constructs a newly allocated SDLAudioControlCapabilities object with audio control module name (max 100 chars)

 @param name The short friendly name of the audio control module.
 @return An instance of the SDLAudioControlCapabilities class.
 */
- (instancetype)initWithModuleName:(NSString *)name;

/**
  Constructs a newly allocated SDLAudioControlCapabilities object with given parameters

 @param name The short friendly name of the audio control module.
 @param sourceAvailable Availability of the control of audio source.
 @param volumeAvailable Availability of the volume of audio source.
 @param equalizerAvailable Availability of the equalizer of audio source.
 @param equalizerMaxChannelID Equalizer channel ID (between 1-100).
 @return An instance of the SDLAudioControlCapabilities class.
 */
- (instancetype)initWithModuleName:(NSString *)name sourceAvailable:(nullable NSNumber<SDLBool> *)sourceAvailable keepContextAvailable:(nullable NSNumber<SDLBool> *)keepContextAvailable volumeAvailable:(nullable NSNumber<SDLBool> *)volumeAvailable equalizerAvailable:(nullable NSNumber<SDLBool> *)equalizerAvailable equalizerMaxChannelID:(nullable NSNumber<SDLInt> *)equalizerMaxChannelID;

/**
 * @abstract The short friendly name of the audio control module.
 * It should not be used to identify a module by mobile application.
 *
 * Required, Max String length 100 chars
 */
@property (strong, nonatomic) NSString *moduleName;

/**
 * @abstract Availability of the control of audio source.
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *sourceAvailable;

/**
 Availability of the keepContext parameter.

 Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *keepContextAvailable;

/**
 * @abstract Availability of the control of audio volume.
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *volumeAvailable;

/**
 * @abstract Availability of the control of Equalizer Settings.
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *equalizerAvailable;

/**
 * @abstract Must be included if equalizerAvailable=true,
 * and assume all IDs starting from 1 to this value are valid
 *
 * Optional, Integer 1 - 100
 */
@property (nullable, strong, nonatomic) NSNumber<SDLInt> *equalizerMaxChannelId;

@end

Swift

class SDLAudioControlCapabilities : SDLRPCStruct

SDLAudioControlData

Undocumented

See more

Objective-C

@interface SDLAudioControlData : SDLRPCStruct


/**
 Constructs a newly allocated SDLAudioControlData object with given parameters

 @param source current primary audio source of the system.
 @param keepContext Whether or not application's context is changed.
 @param volume Reflects the volume of audio.
 @param equalizerSettings list of supported Equalizer channels.
 @return An instance of the SDLAudioControlData class.
 */
- (instancetype)initWithSource:(nullable SDLPrimaryAudioSource)source keepContext:(nullable NSNumber<SDLBool> *)keepContext volume:(nullable NSNumber<SDLInt> *)volume equalizerSettings:(nullable NSArray<SDLEqualizerSettings *> *)equalizerSettings;

/**
 * @abstract   In a getter response or a notification,
 * it is the current primary audio source of the system.
 * In a setter request, it is the target audio source that the system shall switch to.
 * If the value is MOBILE_APP, the system shall switch to the mobile media app that issues the setter RPC.
 *
 * Optional, SDLPrimaryAudioSource
 */
@property (nullable, strong, nonatomic) SDLPrimaryAudioSource source;

/**
 * @abstract This parameter shall not be present in any getter responses or notifications.
 * This parameter is optional in a setter request. The default value is false.
 * If it is true, the system not only changes the audio source but also brings the default
 * infotainment system UI associated with the audio source to foreground and set the application to background.
 * If it is false, the system changes the audio source, but keeps the current application's context.
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *keepContext;

/**
 * @abstract Reflects the volume of audio, from 0%-100%.
 *
 * Required, Integer 1 - 100
 */
@property (nullable, strong, nonatomic) NSNumber<SDLInt> *volume;

/**
 * @abstract Defines the list of supported channels (band) and their current/desired settings on HMI
 *
 * Required, Array of SDLEqualizerSettings with minSize:1 maxSize:100
 */
@property (nullable, strong, nonatomic) NSArray<SDLEqualizerSettings *> *equalizerSettings;

@end

Swift

class SDLAudioControlData : SDLRPCStruct

SDLAudioPassThruCapabilities

Describes different audio type configurations for SDLPerformAudioPassThru, e.g. {8kHz,8-bit,PCM}

Since SmartDeviceLink 2.0

See more

Objective-C

@interface SDLAudioPassThruCapabilities : SDLRPCStruct

Swift

class SDLAudioPassThruCapabilities : SDLRPCStruct

SDLAudioStreamManager

Undocumented

See more

Objective-C

@interface SDLAudioStreamManager : NSObject

/**
 The delegate describing when files are done playing or any errors that occur
 */
@property (weak, nonatomic) id<SDLAudioStreamManagerDelegate> delegate;

/**
 Whether or not we are currently playing audio
 */
@property (assign, nonatomic, readonly, getter=isPlaying) BOOL playing;

/**
 The queue of audio files that will be played in sequence
 */
@property (copy, nonatomic, readonly) NSArray<SDLAudioFile *> *queue;

/**
 Init should only occur with dependencies. use `initWithManager:`

 @return A failure
 */
- (instancetype)init NS_UNAVAILABLE;

/**
 Create an audio stream manager with a reference to the parent stream manager.

 @warning For internal use

 @param streamManager The parent stream manager
 @return The audio stream manager
 */
- (instancetype)initWithManager:(id<SDLStreamingAudioManagerType>)streamManager NS_DESIGNATED_INITIALIZER;

/**
 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.

 @note This happens on a serial background thread and will provide an error callback using the delegate if the conversion fails.

 @param fileURL File URL to convert
 */
- (void)pushWithFileURL:(NSURL *)fileURL;

/**
 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.

 When complete, this will callback on the delegate.
 */
- (void)playNextWhenReady;

/**
 Stop playing the queue after the current item completes and clear the queue. If nothing is playing, the queue will be cleared.
 */
- (void)stop;

@end

Swift

class SDLAudioStreamManager : NSObject

SDLBeltStatus

Vehicle data struct for the seat belt status

See more

Objective-C

@interface SDLBeltStatus : SDLRPCStruct

Swift

class SDLBeltStatus : SDLRPCStruct

SDLBodyInformation

The body information including power modes.

See more

Objective-C

@interface SDLBodyInformation : SDLRPCStruct

Swift

class SDLBodyInformation : SDLRPCStruct

SDLButtonCapabilities

Provides information about the capabilities of a SDL HMI button.

@since SDL 1.0

See more

Objective-C

@interface SDLButtonCapabilities : SDLRPCStruct

Swift

class SDLButtonCapabilities : SDLRPCStruct

SDLButtonPress

This RPC allows a remote control type mobile application to simulate a hardware button press event.

See more

Objective-C

@interface SDLButtonPress : SDLRPCRequest

Swift

class SDLButtonPress : SDLRPCRequest

SDLButtonPressResponse

Response to SDLButtonPress

Objective-C

@interface SDLButtonPressResponse : SDLRPCResponse

Swift

class SDLButtonPressResponse : SDLRPCResponse

SDLCarWindowViewController

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.

See more

Objective-C

@interface SDLCarWindowViewController : UIViewController

Swift

class SDLCarWindowViewController : UIViewController

SDLChangeRegistration

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.

Any HMILevel allowed

@since SDL 2.0

See more

Objective-C

@interface SDLChangeRegistration : SDLRPCRequest

Swift

class SDLChangeRegistration : SDLRPCRequest

SDLChangeRegistrationResponse

Response to SDLChangeRegistrations

@since SDL 2.0

Objective-C

@interface SDLChangeRegistrationResponse : SDLRPCResponse

Swift

class SDLChangeRegistrationResponse : SDLRPCResponse

SDLChoice

A choice is an option which a user can select either via the menu or via voice recognition (VR) during an application initiated interaction.

Since SmartDeviceLink 1.0

See more

Objective-C

@interface SDLChoice : SDLRPCStruct

Swift

class SDLChoice : SDLRPCStruct

SDLChoiceCell

Undocumented

See more

Objective-C

@interface SDLChoiceCell: NSObject

/**
 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.
 */
@property (copy, nonatomic, readonly) NSString *text;

/**
 Maps to Choice.secondaryText. Optional secondary text of the cell, if available. Duplicates within an `SDLChoiceSet` are permitted.
 */
@property (copy, nonatomic, readonly, nullable) NSString *secondaryText;

/**
 Maps to Choice.tertiaryText. Optional tertitary text of the cell, if available. Duplicates within an `SDLChoiceSet` are permitted.
 */
@property (copy, nonatomic, readonly, nullable) NSString *tertiaryText;

/**
 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.
 */
@property (copy, nonatomic, readonly, nullable) NSArray<NSString *> *voiceCommands;

/**
 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.
 */
@property (strong, nonatomic, readonly, nullable) SDLArtwork *artwork;

/**
 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.
 */
@property (strong, nonatomic, readonly, nullable) SDLArtwork *secondaryArtwork;

/**
 Initialize the cell with nothing. This is unavailable

 @return A crash, probably
 */
- (instancetype)init NS_UNAVAILABLE;

/**
 Initialize the cell with text and nothing else.

 @param text The primary text of the cell.
 @return The cell
 */
- (instancetype)initWithText:(NSString *)text;

/**
 Initialize the cell with text, optional artwork, and optional voice commands

 @param text The primary text of the cell
 @param artwork The primary artwork of the cell
 @param voiceCommands Strings that can be spoken by the user to activate this cell in a voice or both interaction mode
 @return The cell
 */
- (instancetype)initWithText:(NSString *)text artwork:(nullable SDLArtwork *)artwork voiceCommands:(nullable NSArray<NSString *> *)voiceCommands;

/**
 Initialize the cell with all optional items

 @param text The primary text
 @param secondaryText The secondary text
 @param tertiaryText The tertiary text
 @param voiceCommands Strings that can be spoken by the user to activate this cell in a voice or both interaction mode
 @param artwork The primary artwork
 @param secondaryArtwork The secondary artwork
 @return The cell
 */
- (instancetype)initWithText:(NSString *)text secondaryText:(nullable NSString *)secondaryText tertiaryText:(nullable NSString *)tertiaryText voiceCommands:(nullable NSArray<NSString *> *)voiceCommands artwork:(nullable SDLArtwork *)artwork secondaryArtwork:(nullable SDLArtwork *)secondaryArtwork;

@end

Swift

class SDLChoiceCell : NSObject

SDLChoiceSet

Undocumented

See more

Objective-C

@interface SDLChoiceSet: NSObject

/**
 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.
 */
@property (class, assign, nonatomic) NSTimeInterval defaultTimeout;

/**
 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`.
 */
@property (class, assign, nonatomic) SDLChoiceSetLayout defaultLayout;

/**
 Maps to PerformInteraction.initialText. The title of the choice set, and/or the initial text on a keyboard prompt.
 */
@property (copy, nonatomic) NSString *title;

/**
 Maps to PerformInteraction.initialPrompt. The initial prompt spoken to the user at the start of an interaction.
 */
@property (copy, nonatomic, nullable) NSArray<SDLTTSChunk *> *initialPrompt;

/**
 Maps to PerformInteraction.interactionLayout. Whether the presented choices are arranged as a set of tiles or a list.
 */
@property (assign, nonatomic) SDLChoiceSetLayout layout;

/**
 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`.
 */
@property (assign, nonatomic) NSTimeInterval timeout;

/**
 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.
 */
@property (copy, nonatomic, nullable) NSArray<SDLTTSChunk *> *timeoutPrompt;

/**
 Maps to PerformInteraction.helpPrompt. This is the spoken string when a user speaks "help" when the interaction is occurring.
 */
@property (copy, nonatomic, nullable) NSArray<SDLTTSChunk *> *helpPrompt;

/**
 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.

 @note that while SDLVRHelpItem's position will be automatically set based on position in the array, the image will need to uploaded by you before use using SDLFileManager.
 */
@property (copy, nonatomic, nullable) NSArray<SDLVRHelpItem *> *helpList;

/**
 The delegate of this choice set, called when the user interacts with it.
 */
@property (weak, nonatomic) id<SDLChoiceSetDelegate> delegate;

/**
 The choices to be displayed to the user within this choice set. These choices could match those already preloaded via `SDLScreenManager preloadChoices:withCompletionHandler:`.

 This is limited to 100 items. If you attempt to set more than 100 items, the set will not have any items (this array will be empty).
 */
@property (copy, nonatomic) NSArray<SDLChoiceCell *> *choices;

/**
 Initialize with a title, delegate, and choices. It will use the default timeout and layout, all other properties (such as prompts) will be `nil`.

 @param title The choice set's title
 @param delegate The choice set delegate called after the user has interacted with your choice set
 @param choices The choices to be displayed to the user for interaction
 @return The choice set
 */
- (instancetype)initWithTitle:(NSString *)title delegate:(id<SDLChoiceSetDelegate>)delegate choices:(NSArray<SDLChoiceCell *> *)choices;

/**
 Initializer with all possible properties.

 @param title The choice set's title
 @param delegate The choice set delegate called after the user has interacted with your choice set
 @param layout The layout of choice options (Manual/touch only)
 @param timeout The timeout of a touch interaction (Manual/touch only)
 @param initialPrompt A voice prompt spoken to the user when this set is displayed
 @param timeoutPrompt A voice prompt spoken to the user when the set times out (Voice only)
 @param helpPrompt A voice prompt spoken to the user when the user asks for "help"
 @param helpList A table list of text and images shown to the user during a voice recognition session for this choice set (Voice only)
 @param choices The list of choices presented to the user either as a manual/touch interaction or via the user's voice
 @return The choice set
 */
- (instancetype)initWithTitle:(NSString *)title delegate:(id<SDLChoiceSetDelegate>)delegate layout:(SDLChoiceSetLayout)layout timeout:(NSTimeInterval)timeout initialPromptString:(nullable NSString *)initialPrompt timeoutPromptString:(nullable NSString *)timeoutPrompt helpPromptString:(nullable NSString *)helpPrompt vrHelpList:(nullable NSArray<SDLVRHelpItem *> *)helpList choices:(NSArray<SDLChoiceCell *> *)choices;

/**
 Initializer with all possible properties.

 @param title The choice set's title
 @param delegate The choice set delegate called after the user has interacted with your choice set
 @param layout The layout of choice options (Manual/touch only)
 @param timeout The timeout of a touch interaction (Manual/touch only)
 @param initialPrompt A voice prompt spoken to the user when this set is displayed
 @param timeoutPrompt A voice prompt spoken to the user when the set times out (Voice only)
 @param helpPrompt A voice prompt spoken to the user when the user asks for "help"
 @param helpList A table list of text and images shown to the user during a voice recognition session for this choice set (Voice only)
 @param choices The list of choices presented to the user either as a manual/touch interaction or via the user's voice
 @return The choice set
 */
- (instancetype)initWithTitle:(NSString *)title delegate:(id<SDLChoiceSetDelegate>)delegate layout:(SDLChoiceSetLayout)layout timeout:(NSTimeInterval)timeout initialPrompt:(nullable NSArray<SDLTTSChunk *> *)initialPrompt timeoutPrompt:(nullable NSArray<SDLTTSChunk *> *)timeoutPrompt helpPrompt:(nullable NSArray<SDLTTSChunk *> *)helpPrompt vrHelpList:(nullable NSArray<SDLVRHelpItem *> *)helpList choices:(NSArray<SDLChoiceCell *> *)choices;

@end

Swift

class SDLChoiceSet : NSObject

SDLClimateControlCapabilities

Contains information about a climate control module’s capabilities.

See more

Objective-C

@interface SDLClimateControlCapabilities : SDLRPCStruct

Swift

class SDLClimateControlCapabilities : SDLRPCStruct

SDLClimateControlData

The current information for the Climate Remote Control Module

See more

Objective-C

@interface SDLClimateControlData : SDLRPCStruct

Swift

class SDLClimateControlData : SDLRPCStruct

SDLClusterModeStatus

A vehicle data struct for the cluster mode and power status

See more

Objective-C

@interface SDLClusterModeStatus : SDLRPCStruct

Swift

class SDLClusterModeStatus : SDLRPCStruct

SDLConfiguration

Undocumented

See more

Objective-C

@interface SDLConfiguration : NSObject <NSCopying>

/**
 *  The lifecycle configuration.
 */
@property (copy, nonatomic, readonly) SDLLifecycleConfiguration *lifecycleConfig;

/**
 *  The lock screen configuration.
 */
@property (copy, nonatomic, readonly) SDLLockScreenConfiguration *lockScreenConfig;

/**
 *  The log configuration.
 */
@property (copy, nonatomic, readonly) SDLLogConfiguration *loggingConfig;

/**
 *  The streaming media configuration.
 */
@property (copy, nonatomic, readonly) SDLStreamingMediaConfiguration *streamingMediaConfig;

/**
 *  The file manager configuration.
 */
@property (copy, nonatomic, readonly) SDLFileManagerConfiguration *fileManagerConfig;

/**
 *  Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen and logging configurations.
 *
 *  @param lifecycleConfig      The lifecycle configuration to be used.
 *  @param lockScreenConfig     The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
 *  @param logConfig            The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
 *  @return                     The configuration
 */
- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:fileManager: instead");

/**
 *  Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and file manager configurations.
 *
 *  @param lifecycleConfig      The lifecycle configuration to be used.
 *  @param lockScreenConfig     The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
 *  @param logConfig            The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
 *  @param fileManagerConfig    The file manager configuration to be used or `defaultConfiguration` if nil.
 *  @return                     The configuration
 */
- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig;

/**
 *  Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen and logging configurations.
 *
 *  @param lifecycleConfig      The lifecycle configuration to be used.
 *  @param lockScreenConfig     The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
 *  @param logConfig            The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
 *  @return                     The configuration
 */
+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig __deprecated_msg("Use configurationWithLifecycle:lockScreen:logging:fileManager: instead") NS_SWIFT_UNAVAILABLE("Use an initializer instead");

/**
 *  Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and file manager configurations.
 *
 *  @param lifecycleConfig      The lifecycle configuration to be used.
 *  @param lockScreenConfig     The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
 *  @param logConfig            The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
 *  @param fileManagerConfig    The file manager configuration to be used or `defaultConfiguration` if nil.
 *  @return                     The configuration
 */
+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig NS_SWIFT_UNAVAILABLE("Use an initializer instead");

/**
 *  Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and streaming media configurations.
 *
 *  @param lifecycleConfig      The lifecycle configuration to be used.
 *  @param lockScreenConfig     The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
 *  @param logConfig            The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
 *  @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
 *  @return                     The configuration
 */
- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig __deprecated_msg("Use initWithLifecycle:lockScreen:logging:streamingMedia:fileManager: instead");

/**
 *  Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media and file manager configurations.
 *
 *  @param lifecycleConfig      The lifecycle configuration to be used.
 *  @param lockScreenConfig     The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
 *  @param logConfig            The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
 *  @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
 *  @param fileManagerConfig    The file manager configuration to be used or `defaultConfiguration` if nil.
 *  @return                     The configuration
 */
- (instancetype)initWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig;

/**
 *  Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging and streaming media configurations.
 *
 *  @param lifecycleConfig      The lifecycle configuration to be used.
 *  @param lockScreenConfig     The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
 *  @param logConfig            The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
 *  @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
 *  @return                     The configuration
 */
+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig __deprecated_msg("Use configurationWithLifecycle:lockScreen:logging:streamingMedia:fileManager: instead") NS_SWIFT_UNAVAILABLE("Use an initializer instead");

/**
 *  Creates a new configuration to be passed to the SDLManager with custom lifecycle, lock screen, logging, streaming media and file manager configurations.
 *
 *  @param lifecycleConfig      The lifecycle configuration to be used.
 *  @param lockScreenConfig     The lockscreen configuration to be used. If nil, the `enabledConfiguration` will be used.
 *  @param logConfig            The logging configuration to be used. If nil, the `defaultConfiguration` will be used.
 *  @param streamingMediaConfig The streaming media configuration to be used or nil if not used.
 *  @param fileManagerConfig    The file manager configuration to be used or `defaultConfiguration` if nil.
 *  @return                     The configuration
 */
+ (instancetype)configurationWithLifecycle:(SDLLifecycleConfiguration *)lifecycleConfig lockScreen:(nullable SDLLockScreenConfiguration *)lockScreenConfig logging:(nullable SDLLogConfiguration *)logConfig streamingMedia:(nullable SDLStreamingMediaConfiguration *)streamingMediaConfig fileManager:(nullable SDLFileManagerConfiguration *)fileManagerConfig NS_SWIFT_UNAVAILABLE("Use an initializer instead");

@end

Swift

class SDLConfiguration : NSObject, NSCopying

SDLCreateInteractionChoiceSet

Creates a Choice Set which can be used in subsequent SDLPerformInteraction Operations.

HMILevel needs to be FULL, LIMITED or BACKGROUND

Before a perform interaction is sent you MUST wait for the success from the CreateInteractionChoiceSet RPC.

If you do not wait the system may not recognize the first utterance from the user.

@since SDL 1.0

See

SDLDeleteInteractionChoiceSet SDLPerformInteraction
See more

Objective-C

@interface SDLCreateInteractionChoiceSet : SDLRPCRequest

Swift

class SDLCreateInteractionChoiceSet : SDLRPCRequest

SDLCreateInteractionChoiceSetResponse

Response to SDLCreateInteractionChoiceSet has been called

Since SmartDeviceLink 1.0

Objective-C

@interface SDLCreateInteractionChoiceSetResponse : SDLRPCResponse

Swift

class SDLCreateInteractionChoiceSetResponse : SDLRPCResponse

SDLDIDResult

A vehicle data struct

See more

Objective-C

@interface SDLDIDResult : SDLRPCStruct

Swift

class SDLDIDResult : SDLRPCStruct

SDLDateTime

A struct referenced in SendLocation for an absolute date

See more

Objective-C

@interface SDLDateTime : SDLRPCStruct

Swift

class SDLDateTime : SDLRPCStruct

SDLDeleteCommand

Removes a command from the Command Menu

HMI Status Requirements:
HMILevel: FULL, LIMITED or BACKGROUND
AudioStreamingState: N/A
SystemContext: Should not be attempted when VRSESSION or MENU

Since SmartDeviceLink 1.0
see SDLAddCommand SDLAddSubMenu SDLDeleteSubMenu

See more

Objective-C

@interface SDLDeleteCommand : SDLRPCRequest

Swift

class SDLDeleteCommand : SDLRPCRequest

SDLDeleteCommandResponse

Response to SDLDeleteCommand

Since SmartDeviceLink 1.0

Objective-C

@interface SDLDeleteCommandResponse : SDLRPCResponse

Swift

class SDLDeleteCommandResponse : SDLRPCResponse

SDLDeleteFile

Used to delete a file resident on the SDL module in the app’s local cache. Not supported on first generation SDL vehicles

Since SmartDeviceLink 2.0
see SDLPutFile SDLListFiles

See more

Objective-C

@interface SDLDeleteFile : SDLRPCRequest

Swift

class SDLDeleteFile : SDLRPCRequest

SDLDeleteFileResponse

Response to SDLDeleteFile

Since SmartDeviceLink 2.0

See more

Objective-C

@interface SDLDeleteFileResponse : SDLRPCResponse

Swift

class SDLDeleteFileResponse : SDLRPCResponse

SDLDeleteInteractionChoiceSet

Deletes an existing Choice Set identified by the parameter interactionChoiceSetID. If the specified interactionChoiceSetID is currently in use by an active SDLPerformInteraction this call to delete the Choice Set will fail returning an IN_USE resultCode

Function Group: Base

HMILevel needs to be FULL, LIMITED or BACKGROUD

Since SmartDeviceLink 1.0
see SDLCreateInteractionChoiceSet SDLPerformInteraction

See more

Objective-C

@interface SDLDeleteInteractionChoiceSet : SDLRPCRequest

Swift

class SDLDeleteInteractionChoiceSet : SDLRPCRequest

SDLDeleteInteractionChoiceSetResponse

SDLDeleteInteractionChoiceSetResponse is sent, when SDLDeleteInteractionChoiceSet has been called

Since SmartDeviceLink 1.0

Objective-C

@interface SDLDeleteInteractionChoiceSetResponse : SDLRPCResponse

Swift

class SDLDeleteInteractionChoiceSetResponse : SDLRPCResponse

SDLDeleteSubMenu

Deletes a submenu from the Command Menu

Notes: When an app deletes a submenu that has child commands, those child commands are also deleted

HMILevel needs to be FULL, LIMITED or BACKGROUND

Since SmartDeviceLink 1.0
see SDLAddCommand SDLAddSubMenu SDLDeleteCommand

See more

Objective-C

@interface SDLDeleteSubMenu : SDLRPCRequest

Swift

class SDLDeleteSubMenu : SDLRPCRequest

SDLDeleteSubMenuResponse

Response to SDLDeleteSubMenu

Since SmartDeviceLink 1.0

Objective-C

@interface SDLDeleteSubMenuResponse : SDLRPCResponse

Swift

class SDLDeleteSubMenuResponse : SDLRPCResponse

SDLDeviceInfo

Various information about connecting device. Referenced in RegisterAppInterface

See more

Objective-C

@interface SDLDeviceInfo : SDLRPCStruct

Swift

class SDLDeviceInfo : SDLRPCStruct

SDLDeviceStatus

Describes the status related to a connected mobile device or SDL and if or how it is represented in the vehicle.

@since SDL 2.0

See more

Objective-C

@interface SDLDeviceStatus : SDLRPCStruct

Swift

class SDLDeviceStatus : SDLRPCStruct

SDLDiagnosticMessage

Non periodic vehicle diagnostic request

@since SDL 3.0

See more

Objective-C

@interface SDLDiagnosticMessage : SDLRPCRequest

Swift

class SDLDiagnosticMessage : SDLRPCRequest

SDLDiagnosticMessageResponse

Response to SDLDiagnosticMessage

Since SmartDeviceLink 3.0

See more

Objective-C

@interface SDLDiagnosticMessageResponse : SDLRPCResponse

Swift

class SDLDiagnosticMessageResponse : SDLRPCResponse

SDLDialNumber

This RPC is used to tell the head unit to use bluetooth to dial a phone number using the phone.

@since SDL 4.0

See more

Objective-C

@interface SDLDialNumber : SDLRPCRequest

Swift

class SDLDialNumber : SDLRPCRequest

SDLDialNumberResponse

The response to SDLDialNumber

@since SDL 4.0

Objective-C

@interface SDLDialNumberResponse : SDLRPCResponse

Swift

class SDLDialNumberResponse : SDLRPCResponse

SDLDisplayCapabilities

Contains information about the display for the SDL system to which the application is currently connected.

@since SDL 1.0

See more

Objective-C

@interface SDLDisplayCapabilities : SDLRPCStruct

Swift

class SDLDisplayCapabilities : SDLRPCStruct

SDLECallInfo

A vehicle data struct for emergency call information

See more

Objective-C

@interface SDLECallInfo : SDLRPCStruct

Swift

class SDLECallInfo : SDLRPCStruct

SDLEmergencyEvent

A vehicle data struct for an emergency event

See more

Objective-C

@interface SDLEmergencyEvent : SDLRPCStruct

Swift

class SDLEmergencyEvent : SDLRPCStruct

SDLEncodedSyncPData

Undocumented

See more

Objective-C

@interface SDLEncodedSyncPData : SDLRPCRequest

/**
 *  Contains base64 encoded string of SyncP packets.
 *
 *  Required, Array length 1 - 100, String length 1 - 1,000,000
 *
 *  @see SDLTTSChunk
 */
@property (strong, nonatomic) NSArray<NSString *> *data;

@end

Swift

class SDLEncodedSyncPData : SDLRPCRequest

SDLEncodedSyncPDataResponse

The response to SDLEncodedSyncPData

DEPRECATED

Objective-C

@interface SDLEncodedSyncPDataResponse : SDLRPCResponse

Swift

class SDLEncodedSyncPDataResponse : SDLRPCResponse

SDLEndAudioPassThru

When this request is invoked, the audio capture stops

Function Group: AudioPassThru

HMILevel needs to be FULL, LIMITED or BACKGROUND

Since SmartDeviceLink 2.0
see SDLPerformAudioPassThru

Objective-C

@interface SDLEndAudioPassThru : SDLRPCRequest

Swift

class SDLEndAudioPassThru : SDLRPCRequest

SDLEndAudioPassThruResponse

Response to SDLEndAudioPassThru

Since SmartDeviceLink 2.0

Objective-C

@interface SDLEndAudioPassThruResponse : SDLRPCResponse

Swift

class SDLEndAudioPassThruResponse : SDLRPCResponse

SDLEqualizerSettings

Defines the each Equalizer channel settings.

See more

Objective-C

@interface SDLEqualizerSettings : SDLRPCStruct

Swift

class SDLEqualizerSettings : SDLRPCStruct

SDLFile

Undocumented

See more

Objective-C

@interface SDLFile : NSObject <NSCopying>

/**
 *  Whether or not the file should persist on disk between car ignition cycles.
 */
@property (assign, nonatomic, readonly, getter=isPersistent) BOOL persistent;

/**
 *  Whether or not the file should overwrite an existing file on the remote disk with the same name.
 */
@property (assign, nonatomic) BOOL overwrite;

/**
 *  The name the file should be stored under on the remote disk. This is how the file will be referenced in all later calls.
 */
@property (copy, nonatomic, readonly) NSString *name;

/**
 *  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.
 */
@property (copy, nonatomic, readonly, nullable) NSURL *fileURL;

/**
 *  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.
 */
@property (copy, nonatomic, readonly) NSData *data;

/**
 *  The size of the binary data of the SDLFile.
 */
@property (nonatomic, readonly) unsigned long long fileSize;

/**
 *  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.
 */
@property (strong, nonatomic, readonly) SDLFileType fileType;

/**
 * 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.
 */
@property (nonatomic, readonly) NSInputStream *inputStream;

- (instancetype)init NS_UNAVAILABLE;

/**
 *  The designated initializer for an SDL File. The only major property that is not set using this is "overwrite", which defaults to NO.
 *
 *  @param url        The file URL pointing to the local data that will be pushed to the remote system.
 *  @param name       The name that the file will be stored under on the remote system and how it will be referenced from the local system. The max file name length may vary based on remote filesystem limitations.
 *  @param persistent Whether or not the file will persist between ignition cycles.
 *
 *  @return An SDLFile object.
 */
- (instancetype)initWithFileURL:(NSURL *)url name:(NSString *)name persistent:(BOOL)persistent NS_DESIGNATED_INITIALIZER;

/**
 *  Create an SDL file using a local file URL.
 *
 *  This is a persistent file, it will be persisted through sessions / ignition cycles. You will only have a limited space for all files, so be sure to only persist files that are required for all or most sessions. For example, menu artwork should be persistent.
 *
 *  Ephemeral files should be created using ephemeralFileAtURL:name:
 *
 *  @warning If this is not a readable file, this will return nil
 *
 *  @param url The url to the file that should be uploaded.
 *  @param name The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote filesystem limitations.
 *
 *  @return An instance of this class, or nil if a readable file at the path could not be found.
 */
+ (instancetype)persistentFileAtFileURL:(NSURL *)url name:(NSString *)name NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to true");

/**
 *  Create an SDL file using a local file URL.
 *
 *  This is an ephemeral file, it will not be persisted through sessions / ignition cycles. Any files that you do not *know* you will use in future sessions should be created through this method. For example, album / artist artwork should be ephemeral.
 *
 *  Persistent files should be created using persistentFileAtURL:name:
 *
 *  @warning If this is not a readable file, this will return nil
 *
 *  @param url The url to the file on disk that will be uploaded
 *  @param name The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
 *
 *  @return An instance of this class, or nil if a readable file at the url could not be found.
 */
+ (instancetype)fileAtFileURL:(NSURL *)url name:(NSString *)name;

/**
 *  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.
 *
 *  @param data         The raw data to be used for the file
 *  @param name         The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
 *  @param extension    The file extension. For example "png". Currently supported file extensions are: "bmp", "jpg", "jpeg", "png", "wav", "mp3", "aac", "json". All others will be sent as binary files.
 *  @param persistent   Whether or not the remote file with this data should be persistent
 *
 *  @return An instance of this class
 */
- (instancetype)initWithData:(NSData *)data name:(NSString *)name fileExtension:(NSString *)extension persistent:(BOOL)persistent NS_DESIGNATED_INITIALIZER;

/**
 *  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.
 *
 *  This is a persistent file, it will be persisted through sessions / ignition cycles. You will only have a limited space for all files, so be sure to only persist files that are required for all or most sessions. For example, menu artwork should be persistent.
 *
 *  @param data         The raw data to be used for the file
 *  @param name         The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
 *  @param extension    The file extension. For example "png". Currently supported file extensions are: "bmp", "jpg", "jpeg", "png", "wav", "mp3", "aac", "json". All others will be sent as binary files.
 *
 *  @return An instance of this class
 */
+ (instancetype)persistentFileWithData:(NSData *)data name:(NSString *)name fileExtension:(NSString *)extension NS_SWIFT_UNAVAILABLE("Use the standard initializer and set persistant to true");

/**
 *  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.
 *
 *  This is an ephemeral file, it will not be persisted through sessions / ignition cycles. Any files that you do not *know* you will use in future sessions should be created through this method. For example, album / artist artwork should be ephemeral.
 *
 *  @param data         The raw data to be used for the file
 *  @param name         The name of the file that will be used to reference the file in the future (for example on the remote file system). The max file name length may vary based on remote file system limitations.
 *  @param extension    The file extension. For example "png". Currently supported file extensions are: "bmp", "jpg", "jpeg", "png", "wav", "mp3", "aac", "json". All others will be sent as binary files.
 *
 *  @return An instance of this class
 */
+ (instancetype)fileWithData:(NSData *)data name:(NSString *)name fileExtension:(NSString *)extension;

@end

Swift

class SDLFile : NSObject, NSCopying

SDLFileManager

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.

See more

Objective-C

@interface SDLFileManager : NSObject

Swift

class SDLFileManager : NSObject

SDLFileManagerConfiguration

Undocumented

See more

Objective-C

@interface SDLFileManagerConfiguration : NSObject <NSCopying>

/**
 *  Defines the number of times the file manager will attempt to reupload `SDLArtwork` files in the event of a failed upload to Core.
 *
 *  Defaults to 1. To disable reuploads, set to 0.
 */
@property (assign, nonatomic) UInt8 artworkRetryCount;

/**
 *  Defines the number of times the file manager will attempt to reupload general `SDLFile`s in the event of a failed upload to Core.
 *
 *  Defaults to 1. To disable reuploads, set to 0.
 */
@property (assign, nonatomic) UInt8 fileRetryCount;

/**
 *  Creates a default file manager configuration.
 *
 *  @return A default configuration that may be customized.
 */
+ (instancetype)defaultConfiguration;

/**
 Use `defaultConfiguration` instead
 */
- (instancetype)init NS_UNAVAILABLE;

/**
 *  Creates a file manager configuration with customized upload retry counts.
 *
 *  @return The configuration
 */
- (instancetype)initWithArtworkRetryCount:(UInt8)artworkRetryCount fileRetryCount:(UInt8)fileRetryCount;

@end

Swift

class SDLFileManagerConfiguration : NSObject, NSCopying

SDLFuelRange

Describes the distance a vehicle can travel with the current level of fuel.

See more

Objective-C

@interface SDLFuelRange : SDLRPCStruct

Swift

class SDLFuelRange : SDLRPCStruct

SDLGPSData

Describes the GPS data. Not all data will be available on all carlines.

@since SDL 2.0

See more

Objective-C

@interface SDLGPSData : SDLRPCStruct

Swift

class SDLGPSData : SDLRPCStruct

SDLGenericResponse

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.

Objective-C

@interface SDLGenericResponse : SDLRPCResponse

Swift

class SDLGenericResponse : SDLRPCResponse

SDLGetDTCs

This RPC allows to request diagnostic module trouble codes from a certain vehicle module

Function Group: ProprietaryData

HMILevel needs to be FULL, LIMITED or BACKGROUND

See more

Objective-C

@interface SDLGetDTCs : SDLRPCRequest

Swift

class SDLGetDTCs : SDLRPCRequest

SDLGetDTCsResponse

Response to SDLGetDTCs

Since SmartDeviceLink 2.0

See more

Objective-C

@interface SDLGetDTCsResponse : SDLRPCResponse

Swift

class SDLGetDTCsResponse : SDLRPCResponse

SDLGetInteriorVehicleData

Reads the current status value of specified remote control module (type). When subscribe is true, subscribes for specific remote control module data items. When subscribe is false, unsubscribes for specific remote control module data items. Once subscribed, the application will be notified by the onInteriorVehicleData RPC notification whenever new data is available for the module.

See more

Objective-C

@interface SDLGetInteriorVehicleData : SDLRPCRequest

Swift

class SDLGetInteriorVehicleData : SDLRPCRequest

SDLGetInteriorVehicleDataResponse

A response to SDLGetInteriorVehicleData

See more

Objective-C

@interface SDLGetInteriorVehicleDataResponse : SDLRPCResponse

Swift

class SDLGetInteriorVehicleDataResponse : SDLRPCResponse

SDLGetSystemCapability

Undocumented

See more

Objective-C

@interface SDLGetSystemCapability : SDLRPCRequest

- (instancetype)initWithType:(SDLSystemCapabilityType)type;

/**
 They type of capability you'd like to receive in the response.

 Mandatory
 */
@property (strong, nonatomic) SDLSystemCapabilityType systemCapabilityType;

@end

Swift

class SDLGetSystemCapability : SDLRPCRequest

SDLGetSystemCapabilityResponse

Response to SDLGetSystemCapability

See more

Objective-C

@interface SDLGetSystemCapabilityResponse : SDLRPCResponse

Swift

class SDLGetSystemCapabilityResponse : SDLRPCResponse

SDLGetVehicleData

Requests current values of specific published vehicle data items.

Function Group: Location, VehicleInfo and DrivingChara HMILevel needs to be FULL, LIMITED or BACKGROUND Since SmartDeviceLink 2.0 See SDLSubscribeVehicleData, SDLUnsubscribeVehicleData

See more

Objective-C

@interface SDLGetVehicleData : SDLRPCRequest

Swift

class SDLGetVehicleData : SDLRPCRequest

SDLGetVehicleDataResponse

Response to SDLGetVehicleData

Since SmartDeviceLink 2.0

See more

Objective-C

@interface SDLGetVehicleDataResponse : SDLRPCResponse

Swift

class SDLGetVehicleDataResponse : SDLRPCResponse

SDLGetWayPoints

Undocumented

See more

Objective-C

@interface SDLGetWayPoints : SDLRPCRequest

- (instancetype)initWithType:(SDLWayPointType)type;

/**
 * To request for either the destination
 * only or for all waypoints including destination
 *
 * Required
 */
@property (nullable, strong, nonatomic) SDLWayPointType waypointType;

@end

Swift

class SDLGetWayPoints : SDLRPCRequest

SDLGetWayPointsResponse

Response to SDLGetWayPoints

See more

Objective-C

@interface SDLGetWayPointsResponse : SDLRPCResponse

Swift

class SDLGetWayPointsResponse : SDLRPCResponse

SDLHMICapabilities

Undocumented

See more

Objective-C

@interface SDLHMICapabilities : SDLRPCStruct

/**
 Availability of built in Nav. True: Available, False: Not Available
 
 Boolean value. Optional.
 */
@property (nullable, copy, nonatomic) NSNumber<SDLBool> *navigation;

/**
 Availability of built in phone. True: Available, False: Not Available
 
 Boolean value. Optional.
 */
@property (nullable, copy, nonatomic) NSNumber<SDLBool> *phoneCall;

/**
 Availability of built in video streaming. True: Available, False: Not Available

 Boolean value. Optional.
 */
@property (nullable, copy, nonatomic) NSNumber<SDLBool> *videoStreaming;

@end

Swift

class SDLHMICapabilities : SDLRPCStruct

SDLHMIPermissions

Defining sets of HMI levels, which are permitted or prohibited for a given RPC.

@since SDL 2.0

See more

Objective-C

@interface SDLHMIPermissions : SDLRPCStruct

Swift

class SDLHMIPermissions : SDLRPCStruct

SDLHMISettingsControlCapabilities

Undocumented

See more

Objective-C

@interface SDLHMISettingsControlCapabilities : SDLRPCStruct

/**
 Constructs a newly allocated SDLHMISettingsControlCapabilities object with moduleName

 @param moduleName The short friendly name of the hmi setting module

 @return An instance of the SDLHMISettingsControlCapabilities class
 */
- (instancetype)initWithModuleName:(NSString *)moduleName;

/**
 Constructs a newly allocated SDLHMISettingsControlCapabilities object with given parameters

 @param moduleName The short friendly name of the hmi setting module
 @param distanceUnitAvailable Availability of the control of distance unit.
 @param temperatureUnitAvailable Availability of the control of temperature unit.
 @param displayModeUnitAvailable Availability of the control of displayMode unit.

 @return An instance of the SDLHMISettingsControlCapabilities class
 */
- (instancetype)initWithModuleName:(NSString *)moduleName distanceUnitAvailable:(BOOL)distanceUnitAvailable temperatureUnitAvailable:(BOOL)temperatureUnitAvailable displayModeUnitAvailable:(BOOL)displayModeUnitAvailable;

/**
 * @abstract The short friendly name of the hmi setting module.
 * It should not be used to identify a module by mobile application.
 *
 * Required, Max String length 100 chars
 */
@property (strong, nonatomic) NSString *moduleName;

/**
 * @abstract Availability of the control of distance unit.
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *distanceUnitAvailable;

/**
 * @abstract Availability of the control of temperature unit.
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *temperatureUnitAvailable;

/**
 * @abstract  Availability of the control of HMI display mode.
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *displayModeUnitAvailable;

@end

Swift

class SDLHMISettingsControlCapabilities : SDLRPCStruct

SDLHMISettingsControlData

Corresponds to HMI_SETTINGS ModuleType

See more

Objective-C

@interface SDLHMISettingsControlData : SDLRPCStruct

Swift

class SDLHMISettingsControlData : SDLRPCStruct

SDLHapticRect

Defines spatial for each user control object for video streaming application

See more

Objective-C

@interface SDLHapticRect : SDLRPCStruct

Swift

class SDLHapticRect : SDLRPCStruct

SDLHeadLampStatus

Vehicle data struct for status of head lamps

See more

Objective-C

@interface SDLHeadLampStatus : SDLRPCStruct

Swift

class SDLHeadLampStatus : SDLRPCStruct

SDLImage

Specifies which image shall be used e.g. in SDLAlerts or on SDLSoftbuttons provided the display supports it.

@since SDL 2.0

See more

Objective-C

@interface SDLImage : SDLRPCStruct

Swift

class SDLImage : SDLRPCStruct

SDLImageField

A struct used in DisplayCapabilities describing the capability of an image field

See more

Objective-C

@interface SDLImageField : SDLRPCStruct

Swift

class SDLImageField : SDLRPCStruct

SDLImageResolution

The resolution of an image

See more

Objective-C

@interface SDLImageResolution : SDLRPCStruct

Swift

class SDLImageResolution : SDLRPCStruct

SDLKeyboardProperties

Configuration of on-screen keyboard (if available)

See more

Objective-C

@interface SDLKeyboardProperties : SDLRPCStruct

Swift

class SDLKeyboardProperties : SDLRPCStruct

SDLLifecycleConfiguration

Configuration options for SDLManager

See more

Objective-C

@interface SDLLifecycleConfiguration : NSObject <NSCopying>

Swift

class SDLLifecycleConfiguration : NSObject, NSCopying

SDLLifecycleConfigurationUpdate

Configuration update options for SDLManager. This class can be used to update the lifecycle configuration in cases the language of the head unit changes or does not match the app language.

See more

Objective-C

@interface SDLLifecycleConfigurationUpdate : NSObject

Swift

class SDLLifecycleConfigurationUpdate : NSObject

SDLLightCapabilities

Undocumented

See more

Objective-C

@interface SDLLightCapabilities : SDLRPCStruct

/**
 Constructs a newly allocated SDLLightCapabilities object with the name of the light or group of lights

 @param name The name of a light or a group of lights
 @return An instance of the SDLLightCapabilities class
 */
- (instancetype)initWithName:(SDLLightName)name;

/**
 Constructs a newly allocated SDLLightCapabilities object with given parameters

 @param name The name of a light or a group of lights
 @param densityAvailable light's density can be set remotely
 @param colorAvailable Light's color can be set remotely by using the RGB color space
 @param statusAvailable whether status is available

 @return An instance of the SDLLightCapabilities class
 */
- (instancetype)initWithName:(SDLLightName)name densityAvailable:(BOOL)densityAvailable colorAvailable:(BOOL)colorAvailable statusAvailable:(BOOL)statusAvailable;

/**
 * @abstract The name of a light or a group of lights
 *
 * Required, SDLLightName
 */
@property (strong, nonatomic) SDLLightName name;

/**
 * @abstract  Indicates if the light's density can be set remotely (similar to a dimmer).
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *densityAvailable;

/**
 * @abstract Indicates if the light's color can be set remotely by using the RGB color space.
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *colorAvailable;

/**
 * @abstract Indicates if the status (ON/OFF) can be set remotely.
 * App shall not use read-only values (RAMP_UP/RAMP_DOWN/UNKNOWN/INVALID) in a setInteriorVehicleData request.
 *
 * Optional, Boolean
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *statusAvailable;

@end

Swift

class SDLLightCapabilities : SDLRPCStruct

SDLLightControlCapabilities

Undocumented

See more

Objective-C

@interface SDLLightControlCapabilities : SDLRPCStruct

/**
 Constructs a newly allocated SDLLightControlCapabilities object with given parameters


 @param moduleName friendly name of the light control module
 @param supportedLights array of available LightCapabilities
 @return An instance of the SDLLightControlCapabilities class
 */
- (instancetype)initWithModuleName:(NSString *)moduleName supportedLights:(NSArray<SDLLightCapabilities *> *)supportedLights;

/**
 * @abstract  The short friendly name of the light control module.
 * It should not be used to identify a module by mobile application.
 *
 * Required, Max String length 100 chars
 */
@property (strong, nonatomic) NSString *moduleName;

/**
 * @abstract  An array of available LightCapabilities that are controllable.
 *
 * Required, NSArray of type SDLLightCapabilities minsize="1" maxsize="100"
 */
@property (strong, nonatomic) NSArray<SDLLightCapabilities *> *supportedLights;


@end

Swift

class SDLLightControlCapabilities : SDLRPCStruct

SDLLightControlData

Undocumented

See more

Objective-C

@interface SDLLightControlData : SDLRPCStruct

/**
 Constructs a newly allocated SDLLightControlData object with lightState

 @param lightState An array of LightNames and their current or desired status
 @return An instance of the SDLLightControlData class
 */
- (instancetype)initWithLightStates:(NSArray<SDLLightState *> *)lightState;

/**
 * @abstract An array of LightNames and their current or desired status.
 * Status of the LightNames that are not listed in the array shall remain unchanged.
 *
 * Required, NSArray of type SDLLightState minsize="1" maxsize="100"
 */
@property (strong, nonatomic) NSArray<SDLLightState *> *lightState;

@end

Swift

class SDLLightControlData : SDLRPCStruct

SDLLightState

Undocumented

See more

Objective-C

@interface SDLLightState : SDLRPCStruct

/**
 Constructs a newly allocated SDLLightState object with given parameters

 @param id The name of a light or a group of lights
 @param status Reflects the status of Light.
 @return An instance of the SDLLightState class
 */
- (instancetype)initWithId:(SDLLightName)id status:(SDLLightStatus)status;

/**
 Constructs a newly allocated SDLLightState object with given parameters

 @param id The name of a light or a group of lights
 @param status Reflects the status of Light.
 @param density Reflects the density of Light.
 @param color Reflects the color of Light.
 @return An instance of the SDLLightState class
 */
- (instancetype)initWithId:(SDLLightName)id status:(SDLLightStatus)status density:(double)density color:(SDLRGBColor *)color;

/**
 Constructs a newly allocated SDLLightState object with given parameters

 @param id The name of a light or a group of lights
 @param lightStatus Reflects the status of Light.
 @param lightDensity Reflects the density of Light.
 @param lightColor Reflects the color of Light.
 @return An instance of the SDLLightState class
 */
- (instancetype)initWithId:(SDLLightName)id lightStatus:(SDLLightStatus)lightStatus lightDensity:(double)lightDensity lightColor:(UIColor *)lightColor;

/**
 * @abstract The name of a light or a group of lights
 *
 * Required, SDLLightName
 */
@property (strong, nonatomic) SDLLightName id;

/**
 * @abstract Reflects the status of Light.
 *
 * Required, SDLLightStatus
 */
@property (strong, nonatomic) SDLLightStatus status;

/**
 * @abstract Reflects the density of Light.
 *
 * Optional, Float type with minValue: 0 maxValue:1
 */
@property (nullable, copy, nonatomic) NSNumber<SDLFloat> *density;

/**
 * @abstract Reflects the color of Light.
 *
 * Optional, SDLLightStatus
 */
@property (nullable, strong, nonatomic) SDLRGBColor *color;

@end

Swift

class SDLLightState : SDLRPCStruct

SDLListFiles

Requests the current list of resident filenames for the registered app. Not supported on First generation SDL vehicles

Since SmartDeviceLink 2.0

Objective-C

@interface SDLListFiles : SDLRPCRequest

Swift

class SDLListFiles : SDLRPCRequest

SDLListFilesResponse

Response to SDLListFiles

Since SmartDeviceLink 2.0

See more

Objective-C

@interface SDLListFilesResponse : SDLRPCResponse

Swift

class SDLListFilesResponse : SDLRPCResponse

SDLLocationCoordinate

Describes a coordinate on earth

See more

Objective-C

@interface SDLLocationCoordinate : SDLRPCStruct

Swift

class SDLLocationCoordinate : SDLRPCStruct

SDLLocationDetails

Describes a location, including its coordinate, name, etc. Used in WayPoints.

See more

Objective-C

@interface SDLLocationDetails : SDLRPCStruct

Swift

class SDLLocationDetails : SDLRPCStruct

SDLLockScreenConfiguration

Undocumented

See more

Objective-C

@interface SDLLockScreenConfiguration : NSObject <NSCopying>

/**
 *  Whether or not the lock screen should be shown in the "lock screen optional" state. Defaults to false.
 *
 *  @discussion In order for the "lock screen optional" state to occur, the following must be true:
 *  1. The app should have received at least 1 driver distraction notification (i.e. a `OnDriverDistraction` notification) from SDL Core. Older versions of Core did not send a notification immediately on connection.
 *  2. The driver is not distracted (i.e. the last `OnDriverDistraction` notification received was for a driver distraction state off).
 *  3. The `hmiLevel` can not be `NONE`.
 *  4. If the `hmiLevel` is currently `BACKGROUND` then the previous `hmiLevel` should have been `FULL` or `LIMITED` (i.e. the user should have interacted with app before it was backgrounded).
 */
@property (assign, nonatomic) BOOL showInOptionalState;

/**
 *  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.
 */
@property (assign, nonatomic, readonly) BOOL enableAutomaticLockScreen;

/**
 *  The background color of the lock screen. This could be a branding color, or leave at the default for a dark blue-gray.
 */
@property (copy, nonatomic, readonly) UIColor *backgroundColor;

/**
 *  Your app icon as it will appear on the lock screen.
 */
@property (copy, nonatomic, readonly, nullable) UIImage *appIcon;

/**
 *  A custom view controller that the lock screen will manage the presentation of.
 */
@property (strong, nonatomic, readonly, nullable) UIViewController *customViewController;

- (instancetype)init NS_UNAVAILABLE;

/**
 *  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.
 *
 *  @return The configuration
 */
+ (instancetype)disabledConfiguration;

/**
 *  Use this configuration for the basic default lock screen. A custom app icon will not be used.
 *
 *  @return The configuration
 */
+ (instancetype)enabledConfiguration;

/**
 *  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.
 *
 *  @param lockScreenAppIcon         The app icon to be shown on the lock screen
 *  @param lockScreenBackgroundColor The color of the lock screen background
 *
 *  @return The configuration
 */
+ (instancetype)enabledConfigurationWithAppIcon:(UIImage *)lockScreenAppIcon backgroundColor:(nullable UIColor *)lockScreenBackgroundColor;

/**
 *  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.
 *
 *  @param viewController The view controller to be managed
 *
 *  @return The configuration
 */
+ (instancetype)enabledConfigurationWithViewController:(UIViewController *)viewController;

@end

Swift

class SDLLockScreenConfiguration : NSObject, NSCopying

SDLLockScreenViewController

Undocumented

See more

Objective-C

@interface SDLLockScreenViewController : UIViewController

/**
 *  The app's icon. This will be set by the lock screen configuration.
 */
@property (copy, nonatomic, nullable) UIImage *appIcon;

/**
 *  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.
 */
@property (copy, nonatomic, nullable) UIImage *vehicleIcon;

/**
 *  The designated background color set in the lock screen configuration, or the default SDL gray-blue.
 */
@property (copy, nonatomic, nullable) UIColor *backgroundColor;

@end

Swift

class SDLLockScreenViewController : UIViewController

SDLLogConfiguration

Undocumented

See more

Objective-C

@interface SDLLogConfiguration : NSObject <NSCopying>

/**
 Any custom logging modules used by the developer's code. Defaults to none.
 */
@property (copy, nonatomic) NSSet<SDLLogFileModule *> *modules;

/**
 Where the logs will attempt to output. Defaults to Console.
 */
@property (copy, nonatomic) NSSet<id<SDLLogTarget>> *targets;

/**
 What log filters will run over this session. Defaults to none.
 */
@property (copy, nonatomic) NSSet<SDLLogFilter *> *filters;

/**
 How detailed of logs will be output. Defaults to Default.
 */
@property (assign, nonatomic) SDLLogFormatType formatType;

/**
 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.
 */
@property (assign, nonatomic, getter=isAsynchronous) BOOL asynchronous;

/**
 Whether or not error logs will be dispatched to loggers asynchronously. Defaults to NO.
 */
@property (assign, nonatomic, getter=areErrorsAsynchronous) BOOL errorsAsynchronous;

/**
 Any modules that do not have an explicitly specified level will by default use the global log level. Defaults to Error.
 Do not specify Default for this parameter.
 */
@property (assign, nonatomic) SDLLogLevel globalLogLevel;


/**
 A default logger for production. This sets the format type to Default, the log level to Error, and only enables the ASL logger.

 @return A default configuration that may be customized.
 */
+ (instancetype)defaultConfiguration;

/**
 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.

 @return A debug configuration that may be customized.
 */
+ (instancetype)debugConfiguration;

@end

Swift

class SDLLogConfiguration : NSObject, NSCopying

SDLLogFileModule

Undocumented

See more

Objective-C

@interface SDLLogFileModule : NSObject

/**
 The name of the this module, e.g. "Transport"
 */
@property (copy, nonatomic, readonly) NSString *name;

/**
 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.
 */
@property (copy, nonatomic, readonly) NSSet<NSString *> *files;

/**
 The custom level of the log. This is `SDLLogLevelDefault` (whatever the current global log level is) by default.
 */
@property (assign, nonatomic) SDLLogLevel logLevel;

/**
 This method is unavailable and may not be used.

 @return Always returns nil
 */
- (instancetype)init NS_UNAVAILABLE;

/**
 Returns an initialized `SDLLogFileModule` that contains a custom name, set of files, and associated log level.

 @param name The name of this module. This will be used when printing a formatted log for a file within this module e.g. "Transport".
 @param files The files this module covers. This should correspond to a `__FILE__` or `#file` call for use when comparing a log to this module. Any log originating in a file contained in this set will then use this module's log level and print the module name.
 @param level The custom logging level logs originating in files contained in this log module will use. For example, if the global level is `SDLLogLevelError` and this module is configured to `SDLLogLevelVerbose`, all logs originating from files within this module will be logged, not merely error logs.
 @return An initialized `SDLLogFileModule`
 */
- (instancetype)initWithName:(NSString *)name files:(NSSet<NSString *> *)files level:(SDLLogLevel)level NS_DESIGNATED_INITIALIZER;

/**
 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`.

 @param name The name of this module. This will be used when printing a formatted log for a file within this module e.g. "Transport".
 @param files The files this module covers. This should correspond to a `__FILE__` or `#file` call for use when comparing a log to this module. Any log originating in a file contained in this set will then use this module's log level and print the module name.
 @return An initialized `SDLLogFileModule`
 */
- (instancetype)initWithName:(NSString *)name files:(NSSet<NSString *> *)files;

/**
 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`.

 @param name The name of this module. This will be used when printing a formatted log for a file within this module e.g. "Transport".
 @param files The files this module covers. This should correspond to a `__FILE__` or `#file` call for use when comparing a log to this module. Any log originating in a file contained in this set will then use this module's log level and print the module name.
 @return An initialized `SDLLogFileModule`
 */
+ (instancetype)moduleWithName:(NSString *)name files:(NSSet<NSString *> *)files;

/**
 Returns whether or not this module contains a given file.

 @param fileName The file name to check
 @return A BOOL, YES if this module contains the given file.
 */
- (BOOL)containsFile:(NSString *)fileName;

@end

Swift

class SDLLogFileModule : NSObject

SDLLogFilter

Undocumented

See more

Objective-C

@interface SDLLogFilter : NSObject

@property (strong, nonatomic, readonly) SDLLogFilterBlock filter;

- (instancetype)init NS_UNAVAILABLE;

/**
 Create a new filter with a custom filter block. The filter block will take a log model and return a BOOL of pass / fail.

 @param filter The custom filter to be used
 @return An instance of SDLLogFilter
 */
- (instancetype)initWithCustomFilter:(SDLLogFilterBlock)filter NS_DESIGNATED_INITIALIZER;

/**
 Returns a filter that only allows logs not containing the passed string within their message.

 @param string The string, which, if present in the message of the log, will prevent the log from being logged.
 @param caseSensitive Whether or not `string` should be checked as case sensitive against the log's message.
 @return A filter that may be passed into the `logConfiguration`.
 */
+ (SDLLogFilter *)filterByDisallowingString:(NSString *)string caseSensitive:(BOOL)caseSensitive;

/**
 Returns a filter that only allows logs containing the passed string within their message.

 @param string The string, which, if present in the message of the log, will allow the log to be logged.
 @param caseSensitive Whether or not `string` should be checked as case sensitive against the log's message.
 @return A filter that may be passed into the `logConfiguration`.
 */
+ (SDLLogFilter *)filterByAllowingString:(NSString *)string caseSensitive:(BOOL)caseSensitive;

/**
 Returns a filter that only allows logs not passing the passed regex against their message.

 @param regex The regex, which, if it matches the message of the log, will prevent the log from being logged.
 @return A filter that may be passed into the `logConfiguration`.
 */
+ (SDLLogFilter *)filterByDisallowingRegex:(NSRegularExpression *)regex;

/**
 Returns a filter that only allows logs passing the passed regex against their message.

 @param regex The regex, which, if it matches the message of the log, will allow the log to be logged.
 @return A filter that may be passed into the `logConfiguration`.
 */
+ (SDLLogFilter *)filterByAllowingRegex:(NSRegularExpression *)regex;

/**
 Returns a filter that only allows logs not within the specified file modules to be logged.

 @param modules A set of module names. If any match, they will not be logged.
 @return A filter that may be passed into the `logConfiguration`.
 */
+ (SDLLogFilter *)filterByDisallowingModules:(NSSet<NSString *> *)modules;

/**
 Returns a filter that only allows logs of the specified file modules to be logged.

 @param modules A set of module names. If any match, they will not be logged.
 @return A filter that may be passed into the `logConfiguration`.
 */
+ (SDLLogFilter *)filterByAllowingModules:(NSSet<NSString *> *)modules;

/**
 Returns a filter that only allows logs not within the specified files to be logged.

 @param fileNames If a log matches any of the passed files, the log will not be logged.
 @return A filter that may be passed into the `logConfiguration`.
 */
+ (SDLLogFilter *)filterByDisallowingFileNames:(NSSet<NSString *> *)fileNames;

/**
 Returns a filter that only allows logs within the specified files to be logged.

 @param fileNames If a log matches any of the passed files, the log will be logged.
 @return A filter that may be passed into the `logConfiguration`.
 */
+ (SDLLogFilter *)filterByAllowingFileNames:(NSSet<NSString *> *)fileNames;

@end

Swift

class SDLLogFilter : NSObject

SDLLogManager

This is the central manager of logging. A developer should not have to interact with this class, it is exclusively used internally.

See more

Objective-C

@interface SDLLogManager : NSObject

Swift

class SDLLogManager : NSObject

SDLLogTargetAppleSystemLog

The Apple System Log target is an iOS 2.0+ compatible log target that logs to both the Console and to the System Log.

Objective-C

@interface SDLLogTargetAppleSystemLog : NSObject <SDLLogTarget>

Swift

class SDLLogTargetAppleSystemLog : NSObject, SDLLogTarget

SDLLogTargetFile

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.

Objective-C

@interface SDLLogTargetFile : NSObject <SDLLogTarget>

Swift

class SDLLogTargetFile : NSObject, SDLLogTarget

SDLLogTargetOSLog

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).

https://developer.apple.com/reference/os/logging

Objective-C

@interface SDLLogTargetOSLog : NSObject <SDLLogTarget>

Swift

class SDLLogTargetOSLog : NSObject, SDLLogTarget

SDLManager

Undocumented

See more

Objective-C

@interface SDLManager : NSObject

/**
 *  The configuration the manager was set up with.
 */
@property (copy, nonatomic, readonly) SDLConfiguration *configuration;

/**
 *  The current HMI level of the running app.
 */
@property (copy, nonatomic, readonly, nullable) SDLHMILevel hmiLevel;

/**
 *  The current audio streaming state of the running app.
 */
@property (copy, nonatomic, readonly) SDLAudioStreamingState audioStreamingState;

/**
 *  The current system context of the running app.
 */
@property (copy, nonatomic, readonly) SDLSystemContext systemContext;

/**
 *  The file manager to be used by the running app.
 */
@property (strong, nonatomic, readonly) SDLFileManager *fileManager;

/**
 *  The permission manager monitoring RPC permissions.
 */
@property (strong, nonatomic, readonly) SDLPermissionManager *permissionManager;

/**
 *  The streaming media manager to be used for starting video sessions.
 */
@property (strong, nonatomic, readonly, nullable) SDLStreamingMediaManager *streamManager;

/**
 *  The screen manager for sending UI related RPCs.
 */
@property (strong, nonatomic, readonly) SDLScreenManager *screenManager;

/**
 *  Centralized manager for retrieving all system capabilities.
 */
@property (strong, nonatomic, readonly) SDLSystemCapabilityManager *systemCapabilityManager;

/**
 *  The response of a register call after it has been received.
 */
@property (strong, nonatomic, readonly, nullable) SDLRegisterAppInterfaceResponse *registerResponse;

/**
 *  The manager's delegate.
 */
@property (weak, nonatomic, nullable) id<SDLManagerDelegate> delegate;

/**
 The currently pending RPC request send transactions
 */
@property (copy, nonatomic, readonly) NSArray<__kindof NSOperation *> *pendingRPCTransactions;

/**
 * Deprecated internal proxy object. This should only be accessed when the Manager is READY. This property may go to nil at any time.
 * The only reason to use this is to access the `putFileStream:withRequest:` method. All other functionality exists on managers in 4.3. This will be removed in 5.0 and the functionality replicated on `SDLFileManager`.
 */
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
@property (strong, nonatomic, readonly, nullable) SDLProxy *proxy;
#pragma clang diagnostic pop


#pragma mark Lifecycle

/**
 *  Initialize the manager with a configuration. Call `startWithHandler` to begin waiting for a connection.
 *
 *  @param configuration Your app's unique configuration for setup.
 *  @param delegate An optional delegate to be notified of hmi level changes and startup and shutdown. It is recommended that you implement this.
 *
 *  @return An instance of SDLManager
 */
- (instancetype)initWithConfiguration:(SDLConfiguration *)configuration delegate:(nullable id<SDLManagerDelegate>)delegate NS_DESIGNATED_INITIALIZER;

/**
 *  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.
 *
 *  @param readyHandler The block called when the manager is ready to be used or an error occurs while attempting to become ready.
 */
- (void)startWithReadyHandler:(SDLManagerReadyBlock)readyHandler NS_SWIFT_NAME(start(readyHandler:));

/**
 *  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.
 *  
 *  If you do call this method, you must wait for SDLManagerDelegate's managerDidDisconnect callback to call startWithReadyHandler:.
 */
- (void)stop;


#pragma mark Manually Send RPC Requests

/**
 *  Send an RPC request and don't bother with the response or error. If you need the response or error, call sendRequest:withCompletionHandler: instead.
 *
 *  @param request The RPC request to send
 */
- (void)sendRequest:(SDLRPCRequest *)request;

/**
 *  Send an RPC request and set a completion handler that will be called with the response when the response returns.
 *
 *  @param request The RPC request to send
 *  @param handler The handler that will be called when the response returns
 */
- (void)sendRequest:(SDLRPCRequest *)request withResponseHandler:(nullable SDLResponseHandler)handler NS_SWIFT_NAME(send(request:responseHandler:));

/**
 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.

 @param requests The requests to be sent
 @param progressHandler A handler called every time a response is received
 @param completionHandler A handler to call when all requests have been responded to
 */
- (void)sendRequests:(NSArray<SDLRPCRequest *> *)requests progressHandler:(nullable SDLMultipleAsyncRequestProgressHandler)progressHandler completionHandler:(nullable SDLMultipleRequestCompletionHandler)completionHandler;

/**
 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.

 @param requests The requests to be sent
 @param progressHandler A handler called every time a response is received. Return NO to cancel any requests that have not yet been sent, YES to continue sending requests.
 @param completionHandler A handler to call when all requests have been responded to
 */
- (void)sendSequentialRequests:(NSArray<SDLRPCRequest *> *)requests progressHandler:(nullable SDLMultipleSequentialRequestProgressHandler)progressHandler completionHandler:(nullable SDLMultipleRequestCompletionHandler)completionHandler NS_SWIFT_NAME(sendSequential(requests:progressHandler:completionHandler:));

@end

Swift

class SDLManager : NSObject

SDLMassageCushionFirmness

The intensity or firmness of a cushion.

See more

Objective-C

@interface SDLMassageCushionFirmness : SDLRPCStruct

Swift

class SDLMassageCushionFirmness : SDLRPCStruct

SDLMassageModeData

Specify the mode of a massage zone.

See more

Objective-C

@interface SDLMassageModeData : SDLRPCStruct

Swift

class SDLMassageModeData : SDLRPCStruct

SDLMenuCell

Undocumented

See more

Objective-C

@interface SDLMenuCell : NSObject

/**
 The cell's text to be displayed
 */
@property (copy, nonatomic, readonly) NSString *title;

/**
 The cell's icon to be displayed
 */
@property (strong, nonatomic, readonly, nullable) SDLArtwork *icon;

/**
 The strings the user can say to activate this voice command
 */
@property (copy, nonatomic, readonly, nullable) NSArray<NSString *> *voiceCommands;

/**
 The handler that will be called when the command is activated
 */
@property (copy, nonatomic, readonly, nullable) SDLMenuCellSelectionHandler handler;

/**
 If this is non-nil, this cell will be a sub-menu button, displaying the subcells in a menu when pressed.
 */
@property (copy, nonatomic, readonly, nullable) NSArray<SDLMenuCell *> *subCells;

/**
 Create a menu cell that has no subcells.

 @param title The cell's primary text
 @param icon The cell's image
 @param voiceCommands Voice commands that will activate the menu cell
 @param handler The code that will be run when the menu cell is selected
 @return The menu cell
 */
- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon voiceCommands:(nullable NSArray<NSString *> *)voiceCommands handler:(SDLMenuCellSelectionHandler)handler;

/**
 Create a menu cell that has subcells and when selected will go into a deeper part of the menu

 @param title The cell's primary text
 @param subCells The subcells that will appear when the cell is selected
 @return The menu cell
 */
- (instancetype)initWithTitle:(NSString *)title subCells:(NSArray<SDLMenuCell *> *)subCells __deprecated_msg(("Use initWithTitle:icon:subcells: instead"));

/**
 Create a menu cell that has subcells and when selected will go into a deeper part of the menu

 @param title The cell's primary text
 @param icon The cell's image
 @param subCells The subcells that will appear when the cell is selected
 @return The menu cell
 */
- (instancetype)initWithTitle:(NSString *)title icon:(nullable SDLArtwork *)icon subCells:(NSArray<SDLMenuCell *> *)subCells;

@end

Swift

class SDLMenuCell : NSObject

SDLMenuParams

Used when adding a sub menu to an application menu or existing sub menu.

@since SDL 1.0

See more

Objective-C

@interface SDLMenuParams : SDLRPCStruct

Swift

class SDLMenuParams : SDLRPCStruct

SDLMetadataTags

Undocumented

See more

Objective-C

@interface SDLMetadataTags : SDLRPCStruct

/**
 Constructs a newly allocated SDLMetadataType object with NSArrays
 */
- (instancetype)initWithTextFieldTypes:(nullable NSArray<SDLMetadataType> *)mainField1 mainField2:(nullable NSArray<SDLMetadataType> *)mainField2;

- (instancetype)initWithTextFieldTypes:(nullable NSArray<SDLMetadataType> *)mainField1 mainField2:(nullable NSArray<SDLMetadataType> *)mainField2 mainField3:(nullable NSArray<SDLMetadataType> *)mainField3 mainField4:(nullable NSArray<SDLMetadataType> *)mainField4;

/**
 The type of data contained in the "mainField1" text field.

 minsize= 0, maxsize= 5

 Optional
 */
@property (nullable, strong, nonatomic) NSArray<SDLMetadataType> *mainField1;

/**
 The type of data contained in the "mainField2" text field.

 minsize= 0, maxsize= 5

 Optional
 */
@property (nullable, strong, nonatomic) NSArray<SDLMetadataType> *mainField2;

/**
 The type of data contained in the "mainField3" text field.

 minsize= 0, maxsize= 5

 Optional
 */
@property (nullable, strong, nonatomic) NSArray<SDLMetadataType> *mainField3;

/**
 The type of data contained in the "mainField4" text field.

 minsize= 0, maxsize= 5

 Optional
 */
@property (nullable, strong, nonatomic) NSArray<SDLMetadataType> *mainField4;

@end

Swift

class SDLMetadataTags : SDLRPCStruct

SDLModuleData

Describes a remote control module’s data

See more

Objective-C

@interface SDLModuleData : SDLRPCStruct

Swift

class SDLModuleData : SDLRPCStruct

SDLMyKey

Vehicle Data struct

See more

Objective-C

@interface SDLMyKey : SDLRPCStruct

Swift

class SDLMyKey : SDLRPCStruct

SDLNavigationCapability

Extended capabilities for an onboard navigation system

See more

Objective-C

@interface SDLNavigationCapability : SDLRPCStruct

Swift

class SDLNavigationCapability : SDLRPCStruct

SDLNotificationConstants

Undocumented

See more

Objective-C

@interface SDLNotificationConstants : NSObject

/**
 All of the possible SDL RPC Response notification names

 @return The names
 */
+ (NSArray<SDLNotificationName> *)allResponseNames;

/**
 All of the possible SDL Button event notification names

 @return The names
 */
+ (NSArray<SDLNotificationName> *)allButtonEventNotifications;

@end

Swift

class SDLNotificationConstants : NSObject

SDLOasisAddress

Struct used in SendLocation describing an address

See more

Objective-C

@interface SDLOasisAddress : SDLRPCStruct

Swift

class SDLOasisAddress : SDLRPCStruct

SDLOnAppInterfaceUnregistered

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.

For more information about SDL resources related to an interface registration, see SDLRegisterAppInterface.

@since SDL 1.0

See

SDLRegisterAppInterface
See more

Objective-C

@interface SDLOnAppInterfaceUnregistered : SDLRPCNotification

Swift

class SDLOnAppInterfaceUnregistered : SDLRPCNotification

SDLOnAudioPassThru

Binary data is in binary part of hybrid msg.

HMILevel must be:

  • BACKGROUND, FULL, LIMITED

Objective-C

@interface SDLOnAudioPassThru : SDLRPCNotification

Swift

class SDLOnAudioPassThru : SDLRPCNotification

SDLOnButtonEvent

Notifies application that user has depressed or released a button to which the application has subscribed.

Further information about button events and button-presses can be found at SDLSubscribeButton.

HMI Status Requirements:

HMILevel:

  • The application will receive SDLOnButtonEvent notifications for all subscribed buttons when HMILevel is FULL.

  • The application will receive SDLOnButtonEvent notifications for subscribed media buttons when HMILevel is LIMITED.

  • Media buttons include SEEKLEFT, SEEKRIGHT, TUNEUP, TUNEDOWN, and PRESET_0-PRESET_9.

  • The application will not receive SDLOnButtonEvent notification when HMILevel is BACKGROUND.

AudioStreamingState:

  • Any

SystemContext:

  • MAIN, VR. In MENU, only PRESET buttons.

  • In VR, pressing any subscribable button will cancel VR.

  • See

    SDLSubscribeButton

    @since SDL 1.0

    See more

    Objective-C

    @interface SDLOnButtonEvent : SDLRPCNotification

    Swift

    class SDLOnButtonEvent : SDLRPCNotification

    SDLOnButtonPress

    Notifies application of button press events for buttons to which the application is subscribed. SDL supports two button press events defined as follows:

    SHORT - Occurs when a button is depressed, then released within two seconds. The event is considered to occur immediately after the button is released.

    LONG - Occurs when a button is depressed and held for two seconds or more. The event is considered to occur immediately after the two second threshold has been crossed, before the button is released.

    HMI Status Requirements:

    HMILevel:

    The application will receive OnButtonPress notifications for all subscribed buttons when HMILevel is FULL.

    The application will receive OnButtonPress notifications for subscribed media buttons when HMILevel is LIMITED. Media buttons include SEEKLEFT, SEEKRIGHT, TUNEUP, TUNEDOWN, and PRESET_0-PRESET_9.

    The application will not receive OnButtonPress notification when HMILevel is BACKGROUND or NONE.

    AudioStreamingState: Any

    SystemContext: MAIN, VR. In MENU, only PRESET buttons. In VR, pressing any subscribable button will cancel VR.

    @since SDL 1.0

    See more

    Objective-C

    @interface SDLOnButtonPress : SDLRPCNotification

    Swift

    class SDLOnButtonPress : SDLRPCNotification

    SDLOnCommand

    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.

    Note: The sequence of SDLOnHMIStatus and SDLOnCommand notifications for user-initiated interactions is indeterminate.

    @since SDL 1.0

    See

    SDLAddCommand SDLDeleteCommand SDLDeleteSubMenu
    See more

    Objective-C

    @interface SDLOnCommand : SDLRPCNotification

    Swift

    class SDLOnCommand : SDLRPCNotification

    SDLOnDriverDistraction

    Notifies the application of the current driver distraction state (whether driver distraction rules are in effect, or not).

    HMI Status Requirements:

    HMILevel: Can be sent with FULL, LIMITED or BACKGROUND

    AudioStreamingState: Any

    SystemContext: Any

    @since SDL 1.0

    See more

    Objective-C

    @interface SDLOnDriverDistraction : SDLRPCNotification

    Swift

    class SDLOnDriverDistraction : SDLRPCNotification

    SDLOnEncodedSyncPData

    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 ***

    See more

    Objective-C

    @interface SDLOnEncodedSyncPData : SDLRPCNotification

    Swift

    class SDLOnEncodedSyncPData : SDLRPCNotification

    SDLOnHMIStatus

    • Notifies an application that HMI conditions have changed for the application. This indicates whether the application can speak phrases, display text, perform interactions, receive button presses and events, stream audio, etc. This notification will be sent to the application when there has been a change in any one or several of the indicated states (SDLHMILevel, SDLAudioStreamingState or SDLSystemContext) for the application.

    All three values are, in principle, independent of each other (though there may be some relationships). A value for one parameter should not be interpreted from the value of another parameter.

    There are no guarantees about the timeliness or latency of the SDLOnHMIStatus notification. Therefore, for example, information such as SDLAudioStreamingState may not indicate that the audio stream became inaudible to the user exactly when the SDLOnHMIStatus notification was received.

    @since SDL 1.0

    See more

    Objective-C

    @interface SDLOnHMIStatus : SDLRPCNotification

    Swift

    class SDLOnHMIStatus : SDLRPCNotification

    SDLOnHashChange

    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.

    See more

    Objective-C

    @interface SDLOnHashChange : SDLRPCNotification

    Swift

    class SDLOnHashChange : SDLRPCNotification

    SDLOnInteriorVehicleData

    Notifications when subscribed vehicle data changes.

    See: SDLSubscribeVehicleData

    See more

    Objective-C

    @interface SDLOnInteriorVehicleData : SDLRPCNotification

    Swift

    class SDLOnInteriorVehicleData : SDLRPCNotification

    SDLOnKeyboardInput

    Sent when a keyboard presented by a PerformInteraction has a keyboard input.

    See more

    Objective-C

    @interface SDLOnKeyboardInput : SDLRPCNotification

    Swift

    class SDLOnKeyboardInput : SDLRPCNotification

    SDLOnLanguageChange

    Provides information to what language the SDL HMI language was changed

    @since SDL 2.0

    See more

    Objective-C

    @interface SDLOnLanguageChange : SDLRPCNotification

    Swift

    class SDLOnLanguageChange : SDLRPCNotification

    SDLOnLockScreenStatus

    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.

    This lockscreen must perform the following:

    Limit all application control usability from the mobile device with a full-screen static image overlay or separate view.

    For simplicity, the OnLockScreenStatus RPC will be provided via the onOnLockScreenNotification call back. The call back will include the LockScreenStatus enum which indicates if the lockscreen is required, optional or not required.

    The call back also includes details regarding the current HMI_Status level, driver distraction status and user selection status of the application.

    See more

    Objective-C

    @interface SDLOnLockScreenStatus : SDLRPCNotification

    Swift

    class SDLOnLockScreenStatus : SDLRPCNotification

    SDLOnPermissionsChange

    Provides update to app of which sets of functions are available

    @since SDL 2.0

    See more

    Objective-C

    @interface SDLOnPermissionsChange : SDLRPCNotification

    Swift

    class SDLOnPermissionsChange : SDLRPCNotification

    SDLOnRCStatus

    OnRCStatus notifications to all registered mobile applications and the HMI whenever (1) SDL allocates a module to an application or (2) it de-allocates a module from an application, or (3) an application registers with SDL

    See more

    Objective-C

    @interface SDLOnRCStatus : SDLRPCNotification

    Swift

    class SDLOnRCStatus : SDLRPCNotification

    SDLOnSyncPData

    DEPRECATED

    See more

    Objective-C

    @interface SDLOnSyncPData : SDLRPCNotification

    Swift

    class SDLOnSyncPData : SDLRPCNotification

    SDLOnSystemRequest

    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)

    See more

    Objective-C

    @interface SDLOnSystemRequest : SDLRPCNotification

    Swift

    class SDLOnSystemRequest : SDLRPCNotification

    SDLOnTBTClientState

    Provides applications with notifications specific to the current TBT client status on the module

    See more

    Objective-C

    @interface SDLOnTBTClientState : SDLRPCNotification

    Swift

    class SDLOnTBTClientState : SDLRPCNotification

    SDLOnTouchEvent

    Notifies about touch events on the screen’s prescribed area during video streaming

    See more

    Objective-C

    @interface SDLOnTouchEvent : SDLRPCNotification

    Swift

    class SDLOnTouchEvent : SDLRPCNotification

    SDLOnVehicleData

    Callback for the periodic and non periodic vehicle data read function.

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLOnVehicleData : SDLRPCNotification

    Swift

    class SDLOnVehicleData : SDLRPCNotification

    SDLOnWayPointChange

    Notification which provides the entire LocationDetails when there is a change to any waypoints or destination.

    See more

    Objective-C

    @interface SDLOnWayPointChange : SDLRPCNotification

    Swift

    class SDLOnWayPointChange : SDLRPCNotification

    SDLParameterPermissions

    Defining sets of parameters, which are permitted or prohibited for a given RPC.

    @since SDL 2.0

    See more

    Objective-C

    @interface SDLParameterPermissions : SDLRPCStruct

    Swift

    class SDLParameterPermissions : SDLRPCStruct

    SDLPerformAudioPassThru

    This will open an audio pass thru session. By doing so the app can receive audio data through the vehicle microphone

    Function Group: AudioPassThru

    HMILevel needs to be FULL, LIMITED or BACKGROUND

    Since SmartDeviceLink 2.0

    See SDLEndAudioPassThru

    See more

    Objective-C

    @interface SDLPerformAudioPassThru : SDLRPCRequest

    Swift

    class SDLPerformAudioPassThru : SDLRPCRequest

    SDLPerformAudioPassThruResponse

    Response to SDLPerformAudioPassThru

    Since SmartDeviceLink 2.0

    Objective-C

    @interface SDLPerformAudioPassThruResponse : SDLRPCResponse

    Swift

    class SDLPerformAudioPassThruResponse : SDLRPCResponse

    SDLPerformInteraction

    Performs an application-initiated interaction in which the user can select a {@linkplain Choice} from among the specified Choice Sets. For instance, an application may use a PerformInteraction to ask a user to say the name of a song to play. The user’s response is only valid if it appears in the specified Choice Sets and is recognized by SDL

    Function Group: Base

    HMILevel needs to be FULL

    Since SmartDeviceLink 1.0
    See SDLCreateInteractionChoiceSet SDLDeleteInteractionChoiceSet

    See more

    Objective-C

    @interface SDLPerformInteraction : SDLRPCRequest

    Swift

    class SDLPerformInteraction : SDLRPCRequest

    SDLPerformInteractionResponse

    PerformInteraction Response is sent, when SDLPerformInteraction has been called

    @since SDL 1.0

    See more

    Objective-C

    @interface SDLPerformInteractionResponse : SDLRPCResponse

    Swift

    class SDLPerformInteractionResponse : SDLRPCResponse

    SDLPermissionItem

    Undocumented

    See more

    Objective-C

    @interface SDLPermissionItem : SDLRPCStruct
    
    /**
     Name of the individual RPC in the policy table.
    
     Required
     */
    @property (strong, nonatomic) NSString *rpcName;
    
    /**
     HMI Permissions for the individual RPC; i.e. which HMI levels may it be used in
    
     Required
     */
    @property (strong, nonatomic) SDLHMIPermissions *hmiPermissions;
    
    /**
     RPC parameters for the individual RPC
    
     Required
     */
    @property (strong, nonatomic) SDLParameterPermissions *parameterPermissions;
    
    @end

    Swift

    class SDLPermissionItem : SDLRPCStruct

    SDLPermissionManager

    Undocumented

    See more

    Objective-C

    @interface SDLPermissionManager : NSObject
    
    /**
     *  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`.
     *
     *  @param completionHandler The block to be called when the manager's setup is complete.
     */
    - (void)startWithCompletionHandler:(void (^)(BOOL success, NSError *__nullable error))completionHandler;
    
    /**
     *  Stop the manager. This method is used internally.
     */
    - (void)stop;
    
    /**
     *  Determine if an individual RPC is allowed for the current HMI level
     *
     *  @param rpcName  The name of the RPC to be tested, for example, SDLShow
     *
     *  @return YES if the RPC is allowed at the current HMI level, NO if not
     */
    - (BOOL)isRPCAllowed:(SDLPermissionRPCName)rpcName;
    
    /**
     *  Determine if all RPCs are allowed for the current HMI level
     *
     *  @param rpcNames The RPCs to check
     *
     *  @return AllAllowed if all of the permissions are allowed, AllDisallowed if all the permissions are disallowed, Any if some are allowed, and some are disallowed
     */
    - (SDLPermissionGroupStatus)groupStatusOfRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames;
    
    /**
     *  Retrieve a dictionary with keys that are the passed in RPC names, and objects of an NSNumber<BOOL> specifying if that RPC is currently allowed
     *
     *  @param rpcNames An array of RPC names to check
     *
     *  @return A dictionary specifying if the passed in RPC names are currently allowed or not
     */
    - (NSDictionary<SDLPermissionRPCName, NSNumber<SDLBool> *> *)statusOfRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames;
    
    /**
     *  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.
     *
     *  @warning This block will be captured by the SDLPermissionsManager, be sure to use [weakself/strongself](http://www.logicsector.com/ios/avoiding-objc-retain-cycles-with-weakself-and-strongself-the-easy-way/) if you are referencing self within your observer block.
     *
     *  @warning The observer may be called before this method returns, do not attempt to remove the observer from within the observer. That could send `nil` to removeObserverForIdentifier:. If you want functionality like that, call groupStatusOfRPCs: instead.
     *
     *  @param rpcNames The RPCs to be observed
     *  @param groupType Affects the times that the observer block will be called. If Any, any change to any RPC in rpcNames will cause the observer block to be called. If AllAllowed, the block will be called when: 1. Every RPC in rpcNames becomes allowed 2. The group of rpcNames goes from all being allowed to some or all being disallowed.
     *  @param handler The block that will be called whenever permissions change.
     *
     *  @return An identifier that can be passed to removeObserverForIdentifer: to remove the observer
     */
    - (SDLPermissionObserverIdentifier)addObserverForRPCs:(NSArray<SDLPermissionRPCName> *)rpcNames groupType:(SDLPermissionGroupType)groupType withHandler:(SDLPermissionsChangedHandler)handler;
    
    /**
     *  Remove every current observer
     */
    - (void)removeAllObservers;
    
    /**
     *  Remove block observers for the specified RPC
     *
     *  @param identifier The identifier specifying which observer to remove
     */
    - (void)removeObserverForIdentifier:(SDLPermissionObserverIdentifier)identifier;
    
    @end

    Swift

    class SDLPermissionManager : NSObject

    SDLPhoneCapability

    Extended capabilities of the module’s phone feature

    See more

    Objective-C

    @interface SDLPhoneCapability : SDLRPCStruct

    Swift

    class SDLPhoneCapability : SDLRPCStruct

    SDLPinchGesture

    Undocumented

    See more

    Objective-C

    @interface SDLPinchGesture : NSObject
    
    /**
     *  @abstract
     *      Initializes a pinch gesture.
     *  @param firstTouch
     *      First touch of the gesture
     *  @param secondTouch
     *      Second touch of the gesture
     *  @return SDLPinchGesture
     *      Instance of SDLPinchGesture.
     */
    - (instancetype)initWithFirstTouch:(SDLTouch *)firstTouch secondTouch:(SDLTouch *)secondTouch;
    
    /**
     *  @abstract
     *      First touch of a pinch gesture.
     */
    @property (nonatomic, strong) SDLTouch *firstTouch;
    
    /**
     *  @abstract
     *      Second touch of a pinch gesture.
     */
    @property (nonatomic, strong) SDLTouch *secondTouch;
    
    /**
     *  @abstract
     *      Distance between first and second touches.
     */
    @property (nonatomic, assign, readonly) CGFloat distance;
    
    /**
     *  @abstract
     *      Center point between first and second touches.
     */
    @property (nonatomic, assign, readonly) CGPoint center;
    
    /**
     *  @abstract
     *      Returns whether or not the pinch gesture is valid. This is true if both touches
     *      are non null.
     */
    @property (nonatomic, assign, readonly) BOOL isValid;
    
    @end

    Swift

    class SDLPinchGesture : NSObject

    SDLPresetBankCapabilities

    Contains information about on-screen preset capabilities.

    @since SDL 2.0

    See more

    Objective-C

    @interface SDLPresetBankCapabilities : SDLRPCStruct

    Swift

    class SDLPresetBankCapabilities : SDLRPCStruct

    SDLPutFile

    Used to push a binary data onto the SDL module from a mobile device, such as icons and album art.

    Since SmartDeviceLink 2.0

    See

    SDLDeleteFile, SDLListFiles
    See more

    Objective-C

    @interface SDLPutFile : SDLRPCRequest

    Swift

    class SDLPutFile : SDLRPCRequest

    SDLPutFileResponse

    Response to SDLPutFile

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLPutFileResponse : SDLRPCResponse

    Swift

    class SDLPutFileResponse : SDLRPCResponse

    SDLRDSData

    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.

    See more

    Objective-C

    @interface SDLRDSData : SDLRPCStruct

    Swift

    class SDLRDSData : SDLRPCStruct

    SDLRGBColor

    Undocumented

    See more

    Objective-C

    @interface SDLRGBColor : SDLRPCStruct
    
    /**
     Create an SDL color object with red / green / blue values between 0-255
    
     @param red The red value of the color
     @param green The green value of the color
     @param blue The blue value of the color
     @return The color
     */
    - (instancetype)initWithRed:(UInt8)red green:(UInt8)green blue:(UInt8)blue;
    
    /**
     Create an SDL color object with a UIColor object.
    
     @warning The alpha color of the UIColor object will be ignored
    
     @param color The UIColor object to base this color on
     @return The color
     */
    - (instancetype)initWithColor:(UIColor *)color;
    
    /**
     *  The red value of the RGB color
     *  Required, Integer, 0-255
     */
    @property (copy, nonatomic) NSNumber<SDLInt> *red;
    
    /**
     *  The green value of the RGB color
     *  Required, Integer, 0-255
     */
    @property (copy, nonatomic) NSNumber<SDLInt> *green;
    
    /**
     *  The blue value of the RGB color
     *  Required, Integer, 0-255
     */
    @property (copy, nonatomic) NSNumber<SDLInt> *blue;
    
    @end

    Swift

    class SDLRGBColor : SDLRPCStruct

    SDLRPCMessage

    Undocumented

    See more

    Objective-C

    @interface SDLRPCMessage : SDLRPCStruct <NSCopying> {
        NSMutableDictionary<NSString *, id> *function;
        NSMutableDictionary<NSString *, id> *parameters;
        NSString *messageType;
    }
    
    /**
     *  Convenience init
     *
     *  @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;
    
    /**
     *  Returns the function name.
     *
     *  @return The function name
     */
    - (nullable NSString *)getFunctionName;
    
    /**
     *  Sets the function name.
     *
     *  @param functionName The function name
     */
    - (void)setFunctionName:(nullable NSString *)functionName;
    
    /**
     *  Returns the value associated with the provided key. If the key does not exist, null is returned.
     *
     *  @param functionName    The key name
     *  @return                The value associated with the function name
     */
    - (nullable NSObject *)getParameters:(NSString *)functionName;
    
    /**
     *  Sets a key-value pair using the function name as the key.
     *
     *  @param functionName    The name for the key
     *  @param value           The value associated with the function name
     */
    - (void)setParameters:(NSString *)functionName value:(nullable NSObject *)value;
    
    /**
     *  The data in the message
     */
    @property (nullable, strong, nonatomic) NSData *bulkData;
    
    /**
     *  The name of the message
     */
    @property (strong, nonatomic, readonly) NSString *name;
    
    /**
     *  The type of data in the message
     */
    @property (strong, nonatomic, readonly) NSString *messageType;
    
    @end

    Swift

    class SDLRPCMessage : SDLRPCStruct, NSCopying

    SDLRPCNotification

    An RPC sent from the head unit to the app about some data change, such as a button was pressed

    Objective-C

    @interface SDLRPCNotification : SDLRPCMessage

    Swift

    class SDLRPCNotification : SDLRPCMessage

    SDLRPCNotificationNotification

    An NSNotification object that makes retrieving internal SDLRPCNotification data easier

    See more

    Objective-C

    @interface SDLRPCNotificationNotification : NSNotification

    Swift

    class SDLRPCNotificationNotification : NSNotification

    SDLRPCRequest

    Undocumented

    See more

    Objective-C

    @interface SDLRPCRequest : SDLRPCMessage
    
    /**
     *  A unique id assigned to message sent to Core. The Correlation ID is used to map a request to its response.
     */
    @property (strong, nonatomic) NSNumber<SDLInt> *correlationID;
    
    @end

    Swift

    class SDLRPCRequest : SDLRPCMessage

    SDLRPCResponse

    Undocumented

    See more

    Objective-C

    @interface SDLRPCResponse : SDLRPCMessage
    
    /**
     *  The correlation id of the corresponding SDLRPCRequest.
     */
    @property (strong, nonatomic) NSNumber<SDLInt> *correlationID;
    
    /**
     *  Whether or not the SDLRPCRequest was successful.
     */
    @property (strong, nonatomic) NSNumber<SDLBool> *success;
    
    /**
     *  The result of the SDLRPCRequest. If the request failed, the result code contains the failure reason.
     */
    @property (strong, nonatomic) SDLResult resultCode;
    
    /**
     *  More detailed success or error message.
     */
    @property (nullable, strong, nonatomic) NSString *info;
    
    @end

    Swift

    class SDLRPCResponse : SDLRPCMessage

    SDLRPCResponseNotification

    An NSNotification object that makes retrieving internal SDLRPCResponse data easier

    See more

    Objective-C

    @interface SDLRPCResponseNotification : NSNotification

    Swift

    class SDLRPCResponseNotification : NSNotification

    SDLRPCStruct

    Undocumented

    See more

    Objective-C

    @interface SDLRPCStruct : NSObject <NSCopying> {
        NSMutableDictionary<NSString *, id> *store;
    }
    
    /**
     *  Convenience init
     *
     *  @param dict A dictionary
     *  @return     A SDLRPCStruct object
     */
    - (instancetype)initWithDictionary:(NSDictionary<NSString *, id> *)dict;
    
    /**
     *  Init
     *
     *  @return A SDLRPCStruct object
     */
    - (instancetype)init;
    
    /**
     *  Converts struct to JSON formatted data
     *
     *  @param version The protocol version
     *  @return        JSON formatted data
     */
    - (NSDictionary<NSString *, id> *)serializeAsDictionary:(Byte)version;
    
    @end

    Swift

    class SDLRPCStruct : NSObject, NSCopying

    SDLRadioControlCapabilities

    Contains information about a radio control module’s capabilities.

    See more

    Objective-C

    @interface SDLRadioControlCapabilities : SDLRPCStruct

    Swift

    class SDLRadioControlCapabilities : SDLRPCStruct

    SDLRadioControlData

    Include information (both read-only and changeable data) about a remote control radio module.

    See more

    Objective-C

    @interface SDLRadioControlData : SDLRPCStruct

    Swift

    class SDLRadioControlData : SDLRPCStruct

    SDLReadDID

    Non periodic vehicle data read request. This is an RPC to get diagnostics data from certain vehicle modules. DIDs of a certain module might differ from vehicle type to vehicle type

    Function Group: ProprietaryData

    HMILevel needs to be FULL, LIMITED or BACKGROUND

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLReadDID : SDLRPCRequest

    Swift

    class SDLReadDID : SDLRPCRequest

    SDLReadDIDResponse

    A response to ReadDID

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLReadDIDResponse : SDLRPCResponse

    Swift

    class SDLReadDIDResponse : SDLRPCResponse

    SDLRectangle

    A struct describing a rectangle

    See more

    Objective-C

    @interface SDLRectangle : SDLRPCStruct

    Swift

    class SDLRectangle : SDLRPCStruct

    SDLRegisterAppInterface

    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.

    Until the application receives its first SDLOnHMIStatus notification, its SDLHMILevel is assumed to be NONE, the SDLAudioStreamingState is assumed to be NOT_AUDIBLE, and the SDLSystemContext is assumed to be MAIN.

    All SDL resources which the application creates or uses (e.g. choice sets, command menu, etc.) are associated with the application’s interface registration. Therefore, when the interface registration ends, the SDL resources associated with the application are disposed of. As a result, even though the application itself may continue to run on its host platform (e.g. mobile device) after the interface registration terminates, the application will not be able to use the SDL HMI without first establishing a new interface registration and re-creating its required SDL resources. That is, SDL resources created by (or on behalf of) an application do not persist beyond the life-span of the interface registration. Resources and settings whose lifespan is tied to the duration of an application’s interface registration include: choice sets, command menus, and the media clock timer display value

    If the application intends to stream audio it is important to indicate so via the isMediaApp parameter. When set to true, audio will reliably stream without any configuration required by the user. When not set, audio may stream, depending on what the user might have manually configured as a media source on SDL.

    @since SDL 1.0

    See

    SDLUnregisterAppInterface, SDLOnAppInterfaceUnregistered
    See more

    Objective-C

    @interface SDLRegisterAppInterface : SDLRPCRequest

    Swift

    class SDLRegisterAppInterface : SDLRPCRequest

    SDLRegisterAppInterfaceResponse

    Response to SDLRegisterAppInterface

    Since SmartDeviceLink 1.0

    See more

    Objective-C

    @interface SDLRegisterAppInterfaceResponse : SDLRPCResponse

    Swift

    class SDLRegisterAppInterfaceResponse : SDLRPCResponse

    SDLRemoteControlCapabilities

    Capabilities of the remote control feature

    See more

    Objective-C

    @interface SDLRemoteControlCapabilities : SDLRPCStruct

    Swift

    class SDLRemoteControlCapabilities : SDLRPCStruct

    SDLResetGlobalProperties

    Resets the passed global properties to their default values as defined by SDL

    The HELPPROMPT global property default value is generated by SDL consists of the first vrCommand of each Command Menu item defined at the moment PTT is pressed
    The TIMEOUTPROMPT global property default value is the same as the HELPPROMPT global property default value

    HMILevel needs to be FULL, LIMITED or BACKGROUND

    Since SmartDeviceLink 1.0 See SetGlobalProperties

    See more

    Objective-C

    @interface SDLResetGlobalProperties : SDLRPCRequest

    Swift

    class SDLResetGlobalProperties : SDLRPCRequest

    SDLResetGlobalPropertiesResponse

    Response to ResetGlobalProperties

    Since SmartDeviceLink 1.0

    Objective-C

    @interface SDLResetGlobalPropertiesResponse : SDLRPCResponse

    Swift

    class SDLResetGlobalPropertiesResponse : SDLRPCResponse

    SDLSISData

    HD radio Station Information Service (SIS) data.

    See more

    Objective-C

    @interface SDLSISData : SDLRPCStruct

    Swift

    class SDLSISData : SDLRPCStruct

    SDLScreenManager

    Undocumented

    See more

    Objective-C

    @interface SDLScreenManager : NSObject
    
    #pragma mark Text and Graphics
    
    /**
     The top text field within a template layout
     */
    @property (copy, nonatomic, nullable) NSString *textField1;
    
    /**
     The second text field within a template layout
     */
    @property (copy, nonatomic, nullable) NSString *textField2;
    
    /**
     The third text field within a template layout
     */
    @property (copy, nonatomic, nullable) NSString *textField3;
    
    /**
     The fourth text field within a template layout
     */
    @property (copy, nonatomic, nullable) NSString *textField4;
    
    /**
     The media text field available within the media layout. Often less emphasized than textField(1-4)
     */
    @property (copy, nonatomic, nullable) NSString *mediaTrackTextField;
    
    /**
     The primary graphic within a template layout
     */
    @property (strong, nonatomic, nullable) SDLArtwork *primaryGraphic;
    
    /**
     A secondary graphic used in some template layouts
     */
    @property (strong, nonatomic, nullable) SDLArtwork *secondaryGraphic;
    
    /**
     What alignment textField(1-4) should use
     */
    @property (copy, nonatomic) SDLTextAlignment textAlignment;
    
    /**
     The type of data textField1 describes
     */
    @property (copy, nonatomic, nullable) SDLMetadataType textField1Type;
    
    /**
     The type of data textField2 describes
     */
    @property (copy, nonatomic, nullable) SDLMetadataType textField2Type;
    
    /**
     The type of data textField3 describes
     */
    @property (copy, nonatomic, nullable) SDLMetadataType textField3Type;
    
    /**
     The type of data textField4 describes
     */
    @property (copy, nonatomic, nullable) SDLMetadataType textField4Type;
    
    #pragma mark Soft Buttons
    
    /**
     The current list of soft buttons within a template layout. Set this array to change the displayed soft buttons.
     */
    @property (copy, nonatomic) NSArray<SDLSoftButtonObject *> *softButtonObjects;
    
    #pragma mark Menu
    
    /**
     The current list of menu cells displayed in the app's menu.
     */
    @property (copy, nonatomic) NSArray<SDLMenuCell *> *menu;
    
    /**
     The current list of voice commands available for the user to speak and be recognized by the IVI's voice recognition engine.
     */
    @property (copy, nonatomic) NSArray<SDLVoiceCommand *> *voiceCommands;
    
    #pragma mark Choice Sets
    
    /**
     The default keyboard configuration, this can be additionally customized by each SDLKeyboardDelegate.
     */
    @property (strong, nonatomic, null_resettable) SDLKeyboardProperties *keyboardConfiguration;
    
    /**
     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.
     */
    @property (copy, nonatomic, readonly) NSSet<SDLChoiceCell *> *preloadedChoices;
    
    
    #pragma mark - Methods
    
    #pragma mark Lifecycle
    
    /**
     Initialize a screen manager
    
     @warning For internal use
    
     @param connectionManager The connection manager used to send RPCs
     @param fileManager The file manager used to upload files
     @return The screen manager
     */
    
    - (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager fileManager:(SDLFileManager *)fileManager;
    
    /**
     Starts the manager and all sub-managers
    
     @param handler The handler called when setup is complete
     */
    - (void)startWithCompletionHandler:(void(^)(NSError * _Nullable error))handler;
    
    /**
     Stops the manager.
    
     @warning For internal use
     */
    - (void)stop;
    
    #pragma mark Text and Graphic
    /**
     Delays all screen updates until endUpdatesWithCompletionHandler: is called.
     */
    - (void)beginUpdates;
    
    /**
     Update text fields with new text set into the text field properties. Pass an empty string `\@""` to clear the text field.
    
     If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
    
     If 3 lines are available: [field1, field2, field3 - field 4]
    
     If 2 lines are available: [field1 - field2, field3 - field4]
    
     If 1 line is available: [field1 - field2 - field3 - field4]
    
     Also updates the primary and secondary images with new image(s) if new one(s) been set. This method will take care of naming the files (based on a hash). This is assumed to be a non-persistant image.
    
     If it needs to be uploaded, it will be. Once the upload is complete, the on-screen graphic will be updated.
     */
    - (void)endUpdates;
    
    /**
     Update text fields with new text set into the text field properties. Pass an empty string `\@""` to clear the text field.
    
     If the system does not support a full 4 fields, this will automatically be concatenated and properly send the field available.
    
     If 3 lines are available: [field1, field2, field3 - field 4]
    
     If 2 lines are available: [field1 - field2, field3 - field4]
    
     If 1 line is available: [field1 - field2 - field3 - field4]
    
     Also updates the primary and secondary images with new image(s) if new one(s) been set. This method will take care of naming the files (based on a hash). This is assumed to be a non-persistant image.
    
     If it needs to be uploaded, it will be. Once the upload is complete, the on-screen graphic will be updated.
    
     @param handler A handler run when the fields have finished updating, with an error if the update failed. This handler may be called multiple times when the text update is sent and the image update is sent.
     */
    - (void)endUpdatesWithCompletionHandler:(nullable SDLScreenManagerUpdateCompletionHandler)handler;
    
    #pragma mark Soft Button
    
    - (nullable SDLSoftButtonObject *)softButtonObjectNamed:(NSString *)name;
    
    #pragma mark Choice Sets
    
    /**
     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.
    
     @param choices The choices to be preloaded.
     @param handler The handler to be called when complete.
     */
    - (void)preloadChoices:(NSArray<SDLChoiceCell *> *)choices withCompletionHandler:(nullable SDLPreloadChoiceCompletionHandler)handler;
    
    /**
     Delete loaded cells from the head unit. If the cells don't exist on the head unit they will be ignored.
    
     @param choices The choices to be deleted. These will be matched via a hash of the text, image name(s), and VR commands.
     */
    - (void)deleteChoices:(NSArray<SDLChoiceCell *> *)choices;
    
    /**
     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.
    
     If the cells in the set are not already preloaded, they will be preloaded before the presentation occurs; this could take a while depending on the contents of the cells.
    
     If the cells have voice commands and images attached, this could take upwards of 10 seconds. If there are no cells on the set, this will fail, calling `choiceSet:didReceiveError:` on the choice set delegate.
    
     @param choiceSet The set to be displayed
     @param mode If the set should be presented for the user to interact via voice, touch, or both
     */
    - (void)presentChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode;
    
    /**
     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.
    
     This presents the choice set as searchable when in a touch interaction. The user, when not in a distracted state, will have a keyboard available for searching this set. The user's input in the keyboard will be available in the SDLKeyboardDelegate.
    
     If the cells in the set are not already preloaded, they will be preloaded before the presentation occurs; this could take a while depending on the contents of the cells.
    
     If the cells have voice commands and images attached, this could take upwards of 10 seconds. If there are no cells on the set, this will fail, calling `choiceSet:didReceiveError:` on the choice set delegate.
    
     @param choiceSet The set to be displayed
     @param mode If the set should be presented for the user to interact via voice, touch, or both
     @param delegate The keyboard delegate called when the user interacts with the search field of the choice set
     */
    - (void)presentSearchableChoiceSet:(SDLChoiceSet *)choiceSet mode:(SDLInteractionMode)mode withKeyboardDelegate:(id<SDLKeyboardDelegate>)delegate;
    
    /**
     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.
    
     @param initialText The initial text within the keyboard input field. It will disappear once the user selects the field in order to enter text
     @param delegate The keyboard delegate called when the user interacts with the keyboard
     */
    - (void)presentKeyboardWithInitialText:(NSString *)initialText delegate:(id<SDLKeyboardDelegate>)delegate;
    
    @end

    Swift

    class SDLScreenManager : NSObject

    SDLScreenParams

    A struct in DisplayCapabilities describing parameters related to a video / touch input area

    See more

    Objective-C

    @interface SDLScreenParams : SDLRPCStruct

    Swift

    class SDLScreenParams : SDLRPCStruct

    SDLScrollableMessage

    Creates a full screen overlay containing a large block of formatted text that can be scrolled with up to 8 SoftButtons defined

    Function Group: ScrollableMessage

    HMILevel needs to be FULL

    See more

    Objective-C

    @interface SDLScrollableMessage : SDLRPCRequest

    Swift

    class SDLScrollableMessage : SDLRPCRequest

    SDLScrollableMessageResponse

    Response to SDLScrollableMessage

    Since SmartDeviceLink 2.0

    Objective-C

    @interface SDLScrollableMessageResponse : SDLRPCResponse

    Swift

    class SDLScrollableMessageResponse : SDLRPCResponse

    SDLSeatControlCapabilities

    Include information about a seat control capabilities.

    See more

    Objective-C

    @interface SDLSeatControlCapabilities : SDLRPCStruct

    Swift

    class SDLSeatControlCapabilities : SDLRPCStruct

    SDLSeatControlData

    Seat control data corresponds to SEAT ModuleType.

    See more

    Objective-C

    @interface SDLSeatControlData : SDLRPCStruct

    Swift

    class SDLSeatControlData : SDLRPCStruct

    SDLSeatMemoryAction

    Specify the action to be performed.

    See more

    Objective-C

    @interface SDLSeatMemoryAction : SDLRPCStruct

    Swift

    class SDLSeatMemoryAction : SDLRPCStruct

    SDLSendHapticData

    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.

    See more

    Objective-C

    @interface SDLSendHapticData : SDLRPCRequest

    Swift

    class SDLSendHapticData : SDLRPCRequest

    SDLSendHapticDataResponse

    Response to SDLSendHapticData

    Objective-C

    @interface SDLSendHapticDataResponse : SDLRPCResponse

    Swift

    class SDLSendHapticDataResponse : SDLRPCResponse

    SDLSendLocation

    Undocumented

    See more

    Objective-C

    @interface SDLSendLocation : SDLRPCRequest
    
    - (instancetype)initWithLongitude:(double)longitude latitude:(double)latitude locationName:(nullable NSString *)locationName locationDescription:(nullable NSString *)locationDescription address:(nullable NSArray<NSString *> *)address phoneNumber:(nullable NSString *)phoneNumber image:(nullable SDLImage *)image;
    
    - (instancetype)initWithLongitude:(double)longitude latitude:(double)latitude locationName:(nullable NSString *)locationName locationDescription:(nullable NSString *)locationDescription displayAddressLines:(nullable NSArray<NSString *> *)displayAddressLines phoneNumber:(nullable NSString *)phoneNumber image:(nullable SDLImage *)image deliveryMode:(nullable SDLDeliveryMode)deliveryMode timeStamp:(nullable SDLDateTime *)timeStamp address:(nullable SDLOasisAddress *)address;
    
    /**
     * The longitudinal coordinate of the location.
     *
     * Float, Required, -180.0 - 180.0
     */
    @property (nullable, copy, nonatomic) NSNumber<SDLFloat> *longitudeDegrees;
    
    /**
     * The latitudinal coordinate of the location.
     *
     * Float, Required, -90.0 - 90.0
     */
    @property (nullable, copy, nonatomic) NSNumber<SDLFloat> *latitudeDegrees;
    
    /**
     * Name / title of intended location
     *
     * Optional, Maxlength = 500 char
     */
    @property (nullable, copy, nonatomic) NSString *locationName;
    
    /**
     * Description of the intended location / establishment
     *
     * Optional, MaxLength = 500 char
     */
    @property (nullable, copy, nonatomic) NSString *locationDescription;
    
    /**
     * Location address for display purposes only
     *
     * Contains String, Optional, Max Array Length = 4, Max String Length = 500
     */
    @property (nullable, copy, nonatomic) NSArray<NSString *> *addressLines;
    
    /**
     * Phone number of intended location / establishment
     *
     * Optional, Max Length = 500
     */
    @property (nullable, copy, nonatomic) NSString *phoneNumber;
    
    /**
     * Image / icon of intended location
     *
     * Optional
     */
    @property (nullable, strong, nonatomic) SDLImage *locationImage;
    
    /**
     * Mode in which the sendLocation request is sent
     *
     * Optional
     */
    @property (nullable, strong, nonatomic) SDLDeliveryMode deliveryMode;
    
    /**
     * Arrival time of Location. If multiple SendLocations are sent, this will be used for sorting as well.
     *
     * Optional
     */
    @property (nullable, strong, nonatomic) SDLDateTime *timeStamp;
    
    /**
     * Address to be used for setting destination
     *
     * Optional
     */
    @property (nullable, strong, nonatomic) SDLOasisAddress *address;
    
    @end

    Swift

    class SDLSendLocation : SDLRPCRequest

    SDLSendLocationResponse

    Response to SDLSendLocation

    Objective-C

    @interface SDLSendLocationResponse : SDLRPCResponse

    Swift

    class SDLSendLocationResponse : SDLRPCResponse

    SDLSetAppIcon

    Used to set existing local file on SDL as the app’s icon. Not supported on first generation SDL modules.

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLSetAppIcon : SDLRPCRequest

    Swift

    class SDLSetAppIcon : SDLRPCRequest

    SDLSetAppIconResponse

    Response to SDLSetAppIcon

    Since SmartDeviceLink 2.0

    Objective-C

    @interface SDLSetAppIconResponse : SDLRPCResponse

    Swift

    class SDLSetAppIconResponse : SDLRPCResponse

    SDLSetDisplayLayout

    Used to set an alternate display layout. If not sent, default screen for given platform will be shown

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLSetDisplayLayout : SDLRPCRequest

    Swift

    class SDLSetDisplayLayout : SDLRPCRequest

    SDLSetDisplayLayoutResponse

    Response to SDLSetDisplayLayout

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLSetDisplayLayoutResponse : SDLRPCResponse

    Swift

    class SDLSetDisplayLayoutResponse : SDLRPCResponse

    SDLSetGlobalProperties

    Sets global property values

    Since SmartDeviceLink 1.0

    See SDLResetGlobalProperties

    See more

    Objective-C

    @interface SDLSetGlobalProperties : SDLRPCRequest

    Swift

    class SDLSetGlobalProperties : SDLRPCRequest

    SDLSetGlobalPropertiesResponse

    Response to SDLSetGlobalProperties

    Since SmartDeviceLink 1.0

    Objective-C

    @interface SDLSetGlobalPropertiesResponse : SDLRPCResponse

    Swift

    class SDLSetGlobalPropertiesResponse : SDLRPCResponse

    SDLSetInteriorVehicleData

    This RPC allows a remote control type mobile application to change the settings of a specific remote control module.

    See more

    Objective-C

    @interface SDLSetInteriorVehicleData : SDLRPCRequest

    Swift

    class SDLSetInteriorVehicleData : SDLRPCRequest

    SDLSetInteriorVehicleDataResponse

    Response to SDLSetInteriorVehicleData

    See more

    Objective-C

    @interface SDLSetInteriorVehicleDataResponse : SDLRPCResponse

    Swift

    class SDLSetInteriorVehicleDataResponse : SDLRPCResponse

    SDLSetMediaClockTimer

    Sets the media clock/timer value and the update method (e.g.count-up, count-down, etc.)

    Function Group: Base

    HMILevel needs to be FULL, LIMITIED or BACKGROUND

    Since SmartDeviceLink 1.0

    See more

    Objective-C

    @interface SDLSetMediaClockTimer : SDLRPCRequest

    Swift

    class SDLSetMediaClockTimer : SDLRPCRequest

    SDLSetMediaClockTimerResponse

    Response to SDLSetMediaClockTimer

    Since SmartDeviceLink 1.0

    Objective-C

    @interface SDLSetMediaClockTimerResponse : SDLRPCResponse

    Swift

    class SDLSetMediaClockTimerResponse : SDLRPCResponse

    SDLShow

    Updates the application’s display text area, regardless of whether or not this text area is visible to the user at the time of the request. The application’s display text area remains unchanged until updated by subsequent calls to Show

    The content of the application’s display text area is visible to the user when the application is FULL or LIMITED, and the SDLSystemContext=MAIN and no SDLAlert is in progress

    The Show operation cannot be used to create an animated scrolling screen. To avoid distracting the driver, Show commands cannot be issued more than once every 4 seconds. Requests made more frequently than this will be rejected

    HMILevel needs to be FULL, LIMITED or BACKGROUND

    Since SmartDeviceLink 1.0 See SDLAlert SDLSetMediaClockTimer

    See more

    Objective-C

    @interface SDLShow : SDLRPCRequest

    Swift

    class SDLShow : SDLRPCRequest

    SDLShowConstantTBT

    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.

    @since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLShowConstantTBT : SDLRPCRequest

    Swift

    class SDLShowConstantTBT : SDLRPCRequest

    SDLShowConstantTBTResponse

    Response to SDLShowConstantTBT

    Since SmartDeviceLink 2.0

    Objective-C

    @interface SDLShowConstantTBTResponse : SDLRPCResponse

    Swift

    class SDLShowConstantTBTResponse : SDLRPCResponse

    SDLShowResponse

    Response to SDLShow

    Since SmartDeviceLink 1.0

    Objective-C

    @interface SDLShowResponse : SDLRPCResponse

    Swift

    class SDLShowResponse : SDLRPCResponse

    SDLSingleTireStatus

    Tire pressure status of a single tire.

    @since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLSingleTireStatus : SDLRPCStruct

    Swift

    class SDLSingleTireStatus : SDLRPCStruct

    SDLSlider

    Creates a full screen or pop-up overlay (depending on platform) with a single user controlled slider

    HMILevel needs to be FULL

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLSlider : SDLRPCRequest

    Swift

    class SDLSlider : SDLRPCRequest

    SDLSliderResponse

    Response to SDLSlider

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLSliderResponse : SDLRPCResponse

    Swift

    class SDLSliderResponse : SDLRPCResponse

    SDLSoftButton

    Describes an on-screen button which may be presented in various contexts, e.g. templates or alerts

    See more

    Objective-C

    @interface SDLSoftButton : SDLRPCStruct

    Swift

    class SDLSoftButton : SDLRPCStruct

    SDLSoftButtonCapabilities

    Contains information about a SoftButton’s capabilities.

    @since SDL 2.0

    See more

    Objective-C

    @interface SDLSoftButtonCapabilities : SDLRPCStruct

    Swift

    class SDLSoftButtonCapabilities : SDLRPCStruct

    SDLSoftButtonObject

    A soft button wrapper object that is capable of storing and switching between states

    See more

    Objective-C

    @interface SDLSoftButtonObject : NSObject

    Swift

    class SDLSoftButtonObject : NSObject

    SDLSoftButtonState

    Undocumented

    See more

    Objective-C

    @interface SDLSoftButtonState : NSObject
    
    /**
     The name of this soft button state
     */
    @property (copy, nonatomic, readonly) NSString *name;
    
    /**
     The artwork to be used with this button or nil if it is text-only
     */
    @property (strong, nonatomic, readonly, nullable) SDLArtwork *artwork;
    
    /**
     The text to be used with this button or nil if it is image-only
     */
    @property (copy, nonatomic, readonly, nullable) NSString *text;
    
    /**
     Whether or not the button should be highlighted on the UI
     */
    @property (assign, nonatomic, getter=isHighlighted) BOOL highlighted;
    
    /**
     A special system action
     */
    @property (strong, nonatomic) SDLSystemAction systemAction;
    
    /**
     An SDLSoftButton describing this state
     */
    @property (strong, nonatomic, readonly) SDLSoftButton *softButton;
    
    - (instancetype)init NS_UNAVAILABLE;
    
    /**
     Create the soft button state. Either the text or artwork or both may be set.
    
     @param stateName The name of this state for the button
     @param text The text to be displayed on the button
     @param image The image to be displayed on the button. This is assumed to be a PNG, non-persistant. The name will be the same as the state name.
     @return A new soft button state
     */
    - (instancetype)initWithStateName:(NSString *)stateName text:(nullable NSString *)text image:(nullable UIImage *)image;
    
    /**
     Create the soft button state. Either the text or artwork or both may be set.
    
     @param stateName The name of this state for the button
     @param text The text to be displayed on the button
     @param artwork The artwork to be displayed on the button
     @return A new soft button state
     */
    - (instancetype)initWithStateName:(NSString *)stateName text:(nullable NSString *)text artwork:(nullable SDLArtwork *)artwork;
    
    @end

    Swift

    class SDLSoftButtonState : NSObject

    SDLSpeak

    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.

    Receipt of the Response indicates the completion of the Speak operation, regardless of how the Speak operation may have completed (i.e. successfully, interrupted, terminated, etc.).

    Requesting a new Speak operation while the application has another Speak operation already in progress (i.e. no corresponding Response for that in-progress Speak operation has been received yet) will terminate the in-progress Speak operation (causing its corresponding Response to be sent by SDL) and begin the requested Speak operation

    Requesting a new Speak operation while the application has an SDLAlert operation already in progress (i.e. no corresponding Response for that in-progress SDLAlert operation has been received yet) will result in the Speak operation request being rejected (indicated in the Response to the Request)

    Requesting a new SDLAlert operation while the application has a Speak operation already in progress (i.e. no corresponding Response for that in-progress Speak operation has been received yet) will terminate the in-progress Speak operation (causing its corresponding Response to be sent by SDL) and begin the requested SDLAlert operation

    Requesting a new Speak operation while the application has a SDLPerformInteraction operation already in progress (i.e. no corresponding Response for that in-progress SDLPerformInteraction operation has been received yet) will result in the Speak operation request being rejected (indicated in the Response to the Request)

    Requesting a SDLPerformInteraction operation while the application has a Speak operation already in progress (i.e. no corresponding Response for that in-progress Speak operation has been received yet) will terminate the in-progress Speak operation (causing its corresponding Response to be sent by SDL) and begin the requested SDLPerformInteraction operation

    HMI Status Requirements:

  • HMILevel: FULL, Limited
  • AudioStreamingState: Any
  • SystemContext: MAIN, MENU, VR
  • Notes:

  • When SDLAlert is issued with MENU in effect, SDLAlert is queued and played when MENU interaction is completed (i.e. SystemContext reverts to MAIN). When SDLAlert is issued with VR in effect, SDLAlert is queued and played when VR interaction is completed (i.e. SystemContext reverts to MAIN)
  • When both SDLAlert and Speak are queued during MENU or VR, they are played back in the order in which they were queued, with all existing rules for collisions still in effect
  • Additional Notes:

  • Total character limit depends on platform.
  • Chunks are limited to 500 characters; however you can have multiple TTS chunks.
  • On old systems there is a total character limit of 500 characters across all chunks. This could vary according to the VCA.
  • @since SmartDeviceLink 1.0

    See

    SDLAlert
    See more

    Objective-C

    @interface SDLSpeak : SDLRPCRequest

    Swift

    class SDLSpeak : SDLRPCRequest

    SDLSpeakResponse

    Response to SDLSpeak

    Since SmartDeviceLink 1.0

    Objective-C

    @interface SDLSpeakResponse : SDLRPCResponse

    Swift

    class SDLSpeakResponse : SDLRPCResponse

    SDLStartTime

    Describes the hour, minute and second values used to set the media clock.

    @since SDL 1.0

    See more

    Objective-C

    @interface SDLStartTime : SDLRPCStruct

    Swift

    class SDLStartTime : SDLRPCStruct

    SDLStationIDNumber

    Describes the hour, minute and second values used to set the media clock.

    @since SDL 1.0

    See more

    Objective-C

    @interface SDLStationIDNumber : SDLRPCStruct

    Swift

    class SDLStationIDNumber : SDLRPCStruct

    SDLStreamingMediaConfiguration

    Undocumented

    See more

    Objective-C

    @interface SDLStreamingMediaConfiguration : NSObject <NSCopying>
    
    /**
     *  Set security managers which could be used. This is primarily used with video streaming applications to authenticate and perhaps encrypt traffic data.
     */
    @property (copy, nonatomic, nullable) NSArray<Class<SDLSecurityType>> *securityManagers;
    
    /**
     *  What encryption level video/audio streaming should be. The default is SDLStreamingEncryptionFlagAuthenticateAndEncrypt.
     */
    @property (assign, nonatomic) SDLStreamingEncryptionFlag maximumDesiredEncryption;
    
    /**
     *  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.
     *
     *  Other properties you may want to try adjusting include kVTCompressionPropertyKey_AverageBitRate and kVTCompressionPropertyKey_DataRateLimits.
     */
    @property (copy, nonatomic, nullable) NSDictionary<NSString *, id> *customVideoEncoderSettings;
    
    /**
     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.
     */
    @property (weak, nonatomic, nullable) id<SDLStreamingMediaManagerDataSource> dataSource;
    
    /**
     Set the initial view controller your video streaming content is within.
    
     Activates the haptic view parser and CarWindow systems when set. This library will also use that information to attempt to return the touched view to you in `SDLTouchManagerDelegate`.
    
     @note If you wish to alter this `rootViewController` while streaming via CarWindow, you must set a new `rootViewController` on `SDLStreamingMediaManager` and this will update both the haptic view parser and CarWindow.
    
     @warning Apps using views outside of the `UIView` heirarchy (such as OpenGL) are currently unsupported. If you app uses partial views in the heirarchy, only those views will be discovered. Your OpenGL views will not be discoverable to a haptic interface head unit and you will have to manually make these views discoverable via the `SDLSendHapticData` RPC request.
    
     @warning If the `rootViewController` is app UI and is set from the `UIViewController` class, it should only be set after viewDidAppear:animated is called. Setting the `rootViewController` in `viewDidLoad` or `viewWillAppear:animated` can cause weird behavior when setting the new frame.
    
     @warning If setting the `rootViewController` when the app returns to the foreground, the app should register for the `UIApplicationDidBecomeActive` notification and not the `UIApplicationWillEnterForeground` notification. Setting the frame after a notification from the latter can also cause weird behavior when setting the new frame.
    
     @warning While `viewDidLoad` will fire, appearance methods will not.
     */
    @property (strong, nonatomic, nullable) UIViewController *rootViewController;
    
    /**
     Declares if CarWindow will use layer rendering or view rendering. Defaults to layer rendering.
     */
    @property (assign, nonatomic) SDLCarWindowRenderingType carWindowRenderingType;
    
    /**
     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.
     */
    @property (assign, nonatomic) BOOL enableForcedFramerateSync;
    
    /**
     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.
     */
    @property (assign, nonatomic) BOOL allowMultipleViewControllerOrientations;
    
    /**
     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.
    
     @return The configuration
     */
    - (instancetype)init;
    
    /**
     Manually set all the properties to the streaming media configuration
    
     @param securityManagers The security managers to use or nil for none.
     @param encryptionFlag The maximum encrpytion supported. If the connected head unit supports less than set here, it will still connect, but if it supports more than set here, it will not connect.
     @param videoSettings Custom video encoder settings to be used in video streaming.
     @param rootViewController The UIViewController wih the content that is being streamed on, to use for haptics if needed and possible (only works for UIViews)
     @return The configuration
     */
    - (instancetype)initWithSecurityManagers:(nullable NSArray<Class<SDLSecurityType>> *)securityManagers encryptionFlag:(SDLStreamingEncryptionFlag)encryptionFlag videoSettings:(nullable NSDictionary<NSString *, id> *)videoSettings dataSource:(nullable id<SDLStreamingMediaManagerDataSource>)dataSource rootViewController:(nullable UIViewController *)rootViewController;
    
    /**
     Create a secure configuration for each of the security managers provided.
    
     @param securityManagers The security managers to be used. The encryption flag will be set to AuthenticateAndEncrypt if any security managers are set.
     @return The configuration
     */
    - (instancetype)initWithSecurityManagers:(NSArray<Class<SDLSecurityType>> *)securityManagers;
    
    /**
     Create a secure configuration for each of the security managers provided.
    
     @param securityManagers The security managers to be used. The encryption flag will be set to AuthenticateAndEncrypt if any security managers are set.
     @return The configuration
     */
    + (instancetype)secureConfigurationWithSecurityManagers:(NSArray<Class<SDLSecurityType>> *)securityManagers NS_SWIFT_UNAVAILABLE("Use an initializer instead");
    
    /**
     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`.
    
     @return The configuration
     */
    + (instancetype)insecureConfiguration NS_SWIFT_UNAVAILABLE("Use the standard initializer instead");
    
    /**
     Create a CarWindow insecure configuration with a view controller
    
     @param initialViewController The initial view controller that will be streamed
     @return The configuration
     */
    + (instancetype)autostreamingInsecureConfigurationWithInitialViewController:(UIViewController *)initialViewController;
    
    /**
     Create a CarWindow secure configuration with a view controller and security managers
    
     @param securityManagers The security managers available for secure streaming use
     @param initialViewController The initial view controller that will be streamed, this can be a basic `UIViewController` if you need to set your actual streaming view controller at a later time on `SDLManager.streamingManager.rootViewController`.
     @return The configuration
     */
    + (instancetype)autostreamingSecureConfigurationWithSecurityManagers:(NSArray<Class<SDLSecurityType>> *)securityManagers initialViewController:(UIViewController *)initialViewController;
    
    @end

    Swift

    class SDLStreamingMediaConfiguration : NSObject, NSCopying

    SDLStreamingMediaManager

    Undocumented

    See more

    Objective-C

    @interface SDLStreamingMediaManager : NSObject <SDLStreamingAudioManagerType>
    
    /**
     *  Touch Manager responsible for providing touch event notifications.
     */
    @property (nonatomic, strong, readonly) SDLTouchManager *touchManager;
    
    /**
     *  Audio Manager responsible for managing streaming audio.
     */
    @property (nonatomic, strong, readonly) SDLAudioStreamManager *audioManager;
    
    /**
     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.
     */
    @property (nonatomic, strong, nullable) UIViewController *rootViewController;
    
    /**
     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.
     */
    @property (nonatomic, strong, readonly, nullable) id<SDLFocusableItemLocatorType> focusableItemManager;
    
    /**
     *  Whether or not video streaming is supported
     *
     *  @see SDLRegisterAppInterface SDLDisplayCapabilities
     */
    @property (assign, nonatomic, readonly, getter=isStreamingSupported) BOOL streamingSupported;
    
    /**
     *  Whether or not the video session is connected.
     */
    @property (assign, nonatomic, readonly, getter=isVideoConnected) BOOL videoConnected;
    
    /**
     *  Whether or not the video session is encrypted. This may be different than the requestedEncryptionType.
     */
    @property (assign, nonatomic, readonly, getter=isVideoEncrypted) BOOL videoEncrypted;
    
    /**
     *  Whether or not the audio session is connected.
     */
    @property (assign, nonatomic, readonly, getter=isAudioConnected) BOOL audioConnected;
    
    /**
     *  Whether or not the audio session is encrypted. This may be different than the requestedEncryptionType.
     */
    @property (assign, nonatomic, readonly, getter=isAudioEncrypted) BOOL audioEncrypted;
    
    /**
     *  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.
     */
    @property (assign, nonatomic, readonly, getter=isVideoStreamingPaused) BOOL videoStreamingPaused;
    
    /**
     *  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.
     */
    @property (assign, nonatomic, readonly) CGSize screenSize;
    
    /**
     This is the agreed upon format of video encoder that is in use, or nil if not currently connected.
     */
    @property (strong, nonatomic, readonly, nullable) SDLVideoStreamingFormat *videoFormat;
    
    /**
     A list of all supported video formats by this manager
     */
    @property (strong, nonatomic, readonly) NSArray<SDLVideoStreamingFormat *> *supportedFormats;
    
    /**
     *  The pixel buffer pool reference returned back from an active VTCompressionSessionRef encoder.
     *
     *  @warning This will only return a valid pixel buffer pool after the encoder has been initialized (when the video     session has started).
     *  @discussion Clients may call this once and retain the resulting pool, this call is cheap enough that it's OK to call it once per frame.
     */
    @property (assign, nonatomic, readonly, nullable) CVPixelBufferPoolRef pixelBufferPool;
    
    /**
     *  The requested encryption type when a session attempts to connect. This setting applies to both video and audio sessions.
     *
     *  DEFAULT: SDLStreamingEncryptionFlagAuthenticateAndEncrypt
     */
    @property (assign, nonatomic) SDLStreamingEncryptionFlag requestedEncryptionType;
    
    - (instancetype)init NS_UNAVAILABLE;
    
    /**
     Create a new streaming media manager for navigation and VPM apps with a specified configuration
    
     @param connectionManager The pass-through for RPCs
     @param configuration The configuration of this streaming media session
     @return A new streaming manager
     */
    - (instancetype)initWithConnectionManager:(id<SDLConnectionManagerType>)connectionManager configuration:(SDLStreamingMediaConfiguration *)configuration NS_DESIGNATED_INITIALIZER;
    
    /**
     *  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`.
     */
    - (void)startWithProtocol:(SDLProtocol *)protocol;
    
    /**
     *  Start the audio feature of the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on `SDLManager`.
     */
    - (void)startAudioWithProtocol:(SDLProtocol *)protocol;
    
    /**
     *  Start the video feature of the manager. This is used internally. To use an SDLStreamingMediaManager, you should use the manager found on `SDLManager`.
     */
    - (void)startVideoWithProtocol:(SDLProtocol *)protocol;
    
    /**
     *  Stop the manager. This method is used internally.
     */
    - (void)stop;
    
    /**
     *  Stop the audio feature of the manager. This method is used internally.
     */
    - (void)stopAudio;
    
    /**
     *  Stop the video feature of the manager. This method is used internally.
     */
    - (void)stopVideo;
    
    /**
     *  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.
     *
     *  @param imageBuffer A CVImageBufferRef to be encoded by Video Toolbox
     *
     *  @return Whether or not the data was successfully encoded and sent.
     */
    - (BOOL)sendVideoData:(CVImageBufferRef)imageBuffer;
    
    /**
     *  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.
     *
     *  @param imageBuffer A CVImageBufferRef to be encoded by Video Toolbox
     *  @param presentationTimestamp A presentation timestamp for the frame, or kCMTimeInvalid if timestamp is unknown. If it's valid, it must be greater than the previous one.
     *
     *  @return Whether or not the data was successfully encoded and sent.
     */
    - (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
     *
     *  @param audioData The data in PCM audio format, to be played
     *
     *  @return Whether or not the data was successfully sent.
     */
    - (BOOL)sendAudioData:(NSData *)audioData;
    
    
    @end

    Swift

    class SDLStreamingMediaManager : NSObject, SDLStreamingAudioManagerType

    SDLSubscribeButton

    Establishes a subscription to button notifications for HMI buttons. Buttons are not necessarily physical buttons, but can also be soft buttons on a touch screen, depending on the display in the vehicle. Once subscribed to a particular button, an application will receive both SDLOnButtonEvent and SDLOnButtonPress notifications whenever that button is pressed. The application may also unsubscribe from notifications for a button by invoking the SDLUnsubscribeButton operation

    When a button is depressed, an SDLOnButtonEvent notification is sent to the application with a ButtonEventMode of BUTTONDOWN. When that same button is released, an SDLOnButtonEvent notification is sent to the application with a ButtonEventMode of BUTTONUP

    When the duration of a button depression (that is, time between depression and release) is less than two seconds, an SDLOnButtonPress notification is sent to the application (at the moment the button is released) with a ButtonPressMode of SHORT. When the duration is two or more seconds, an SDLOnButtonPress notification is sent to the application (at the moment the two seconds have elapsed) with a ButtonPressMode of LONG

    The purpose of SDLOnButtonPress notifications is to allow for programmatic detection of long button presses similar to those used to store presets while listening to the radio, for example

    When a button is depressed and released, the sequence in which notifications will be sent to the application is as follows:

    For short presses:

    • OnButtonEvent (ButtonEventMode = BUTTONDOWN)
    • OnButtonEvent (ButtonEventMode = BUTTONUP)
    • OnButtonPress (ButtonPressMode = SHORT)

    For long presses:

    • OnButtonEvent (ButtonEventMode = BUTTONDOWN)
    • OnButtonEvent (ButtonEventMode = BUTTONUP)
    • OnButtonPress (ButtonPressMode = LONG)

    HMILevel needs to be FULL, LIMITED or BACKGROUND

    Since SmartDeviceLink 1.0
    See SDLUnsubscribeButton

    See more

    Objective-C

    @interface SDLSubscribeButton : SDLRPCRequest

    Swift

    class SDLSubscribeButton : SDLRPCRequest

    SDLSubscribeButtonResponse

    Response to SDLSubscribeButton

    Since SmartDeviceLink 1.0

    Objective-C

    @interface SDLSubscribeButtonResponse : SDLRPCResponse

    Swift

    class SDLSubscribeButtonResponse : SDLRPCResponse

    SDLSubscribeVehicleData

    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.

    Warning

    A vehicle may only support a subset of the vehicle data items. Be prepared for the situation where a signal is not available on a vehicle.

    Function Group: Location, VehicleInfo and DrivingChara HMILevel needs to be FULL, LIMITED or BACKGROUND Since SmartDeviceLink 2.0 See SDLUnsubscribeVehicleData, SDLGetVehicleData

    See more

    Objective-C

    @interface SDLSubscribeVehicleData : SDLRPCRequest

    Swift

    class SDLSubscribeVehicleData : SDLRPCRequest

    SDLSubscribeVehicleDataResponse

    Response to SDLSubscribeVehicleData

    Since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLSubscribeVehicleDataResponse : SDLRPCResponse

    Swift

    class SDLSubscribeVehicleDataResponse : SDLRPCResponse

    SDLSubscribeWayPoints

    A SDLSubscribeWaypoints can be sent to subscribe for any changes in waypoints/destinations

    See

    SDLUnsubscribeWaypoints

    Objective-C

    @interface SDLSubscribeWayPoints : SDLRPCRequest

    Swift

    class SDLSubscribeWayPoints : SDLRPCRequest

    SDLSubscribeWayPointsResponse

    Response to SubscribeWayPoints

    Objective-C

    @interface SDLSubscribeWayPointsResponse : SDLRPCResponse

    Swift

    class SDLSubscribeWayPointsResponse : SDLRPCResponse

    SDLSyncMsgVersion

    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.

    @since SDL 1.0

    See more

    Objective-C

    @interface SDLSyncMsgVersion : SDLRPCStruct

    Swift

    class SDLSyncMsgVersion : SDLRPCStruct

    SDLSyncPData

    Undocumented

    Objective-C

    @interface SDLSyncPData : SDLRPCRequest
    
    @end

    Swift

    class SDLSyncPData : SDLRPCRequest

    SDLSyncPDataResponse

    Response to SyncPData

    DEPRECATED

    Objective-C

    @interface SDLSyncPDataResponse : SDLRPCResponse

    Swift

    class SDLSyncPDataResponse : SDLRPCResponse

    SDLSystemCapability

    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.

    First implemented in SDL Core v4.4

    See more

    Objective-C

    @interface SDLSystemCapability : SDLRPCStruct

    Swift

    class SDLSystemCapability : SDLRPCStruct

    SDLSystemCapabilityManager

    Undocumented

    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 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 of `navigationCapability`, `phoneCapability`, `videoStreamingCapability` and `remoteControlCapability`. 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

    Swift

    class SDLSystemCapabilityManager : NSObject

    SDLTTSChunk

    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).

    In SDL, words, and therefore sentences, can be built up from phonemes and are used to explicitly provide the proper pronounciation to the TTS engine. For example, to have SDL pronounce the word read as red, rather than as when it is pronounced like reed, the developer would use phonemes to express this desired pronounciation.

    For more information about phonemes, see http://en.wikipedia.org/wiki/Phoneme.

    @since SmartDeviceLink 1.0

    See more

    Objective-C

    @interface SDLTTSChunk : SDLRPCStruct

    Swift

    class SDLTTSChunk : SDLRPCStruct

    SDLTemperature

    Struct using in Remote Control representing a temperature.

    See more

    Objective-C

    @interface SDLTemperature : SDLRPCStruct

    Swift

    class SDLTemperature : SDLRPCStruct

    SDLTemplateColorScheme

    Undocumented

    See more

    Objective-C

    @interface SDLTemplateColorScheme : SDLRPCStruct
    
    - (instancetype)initWithPrimaryRGBColor:(SDLRGBColor *)primaryColor secondaryRGBColor:(SDLRGBColor *)secondaryColor backgroundRGBColor:(SDLRGBColor *)backgroundColor;
    - (instancetype)initWithPrimaryColor:(UIColor *)primaryColor secondaryColor:(UIColor *)secondaryColor backgroundColor:(UIColor *)backgroundColor;
    
    /**
     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.
     */
    @property (strong, nonatomic, nullable) SDLRGBColor *primaryColor;
    
    /**
     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.
     */
    @property (strong, nonatomic, nullable) SDLRGBColor *secondaryColor;
    
    /**
     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.
     */
    @property (strong, nonatomic, nullable) SDLRGBColor *backgroundColor;
    
    @end

    Swift

    class SDLTemplateColorScheme : SDLRPCStruct

    SDLTextField

    Struct defining the characteristics of a displayed field on the HMI.

    @since SDL 1.0

    See more

    Objective-C

    @interface SDLTextField : SDLRPCStruct

    Swift

    class SDLTextField : SDLRPCStruct

    SDLTireStatus

    Struct used in Vehicle Data; the status and pressure of the tires.

    See more

    Objective-C

    @interface SDLTireStatus : SDLRPCStruct

    Swift

    class SDLTireStatus : SDLRPCStruct

    SDLTouch

    Undocumented

    See more

    Objective-C

    @interface SDLTouch : NSObject
    
    /**
     *  @abstract
     *      Initializes a touch.
     *  @param touchEvent
     *      Incoming touch event from onOnTouchEvent notification.
     *  @return SDLTouch
     *      Instance of SDLTouch.
     */
    - (instancetype)initWithTouchEvent:(SDLTouchEvent *)touchEvent;
    
    /**
     *  @abstract
     *      Identifier of the touch's finger. Refer to SDLTouchIdentifier for valid 
     *      identifiers.
     */
    @property (nonatomic, assign, readonly) NSInteger identifier;
    
    /**
     *  @abstract
     *      Location of touch point, in the head unit's coordinate system.
     */
    @property (nonatomic, assign, readonly) CGPoint location;
    
    /**
     *  @abstract
     *      Timestamp in which the touch occured.
     */
    @property (nonatomic, assign, readonly) NSUInteger timeStamp;
    
    /**
     *  @abstract
     *      Returns whether or not this touch is a first finger.
     */
    @property (nonatomic, assign, readonly) BOOL isFirstFinger;
    
    /**
     *  @abstract
     *      Returns whether or not this touch is a second finger.
     */
    @property (nonatomic, assign, readonly) BOOL isSecondFinger;
    
    @end

    Swift

    class SDLTouch : NSObject

    SDLTouchCoord

    The coordinate of a touch, used in a touch event

    See more

    Objective-C

    @interface SDLTouchCoord : SDLRPCStruct

    Swift

    class SDLTouchCoord : SDLRPCStruct

    SDLTouchEvent

    A touch which occurred on the IVI system during projection

    See more

    Objective-C

    @interface SDLTouchEvent : SDLRPCStruct

    Swift

    class SDLTouchEvent : SDLRPCStruct

    SDLTouchEventCapabilities

    The capabilities of touches during projection applications

    See more

    Objective-C

    @interface SDLTouchEventCapabilities : SDLRPCStruct

    Swift

    class SDLTouchEventCapabilities : SDLRPCStruct

    SDLTouchManager

    Undocumented

    See more

    Objective-C

    @interface SDLTouchManager : NSObject
    
    /**
     Notified of processed touches such as pinches, pans, and taps
     */
    @property (nonatomic, weak, nullable) id<SDLTouchManagerDelegate> touchEventDelegate;
    
    /**
     *  @abstract
     *      Returns all OnTouchEvent notifications as SDLTouch and SDLTouchType objects.
     */
    @property (copy, nonatomic, nullable) SDLTouchEventHandler touchEventHandler;
    
    /**
     Distance between two taps on the screen, in the head unit's coordinate system, used for registering double-tap callbacks.
    
     @note Defaults to 50 px.
     */
    @property (nonatomic, assign) CGFloat tapDistanceThreshold;
    
    /**
     Minimum distance for a pan gesture in the head unit's coordinate system, used for registering pan callbacks.
     
     @note Defaults to 8 px.
     */
    @property (nonatomic, assign) CGFloat panDistanceThreshold;
    
    /**
     *  @abstract
     *      Time (in seconds) between tap events to register a double-tap callback.
     *  @remark
     *      Default is 0.4 seconds.
     */
    @property (nonatomic, assign) CGFloat tapTimeThreshold;
    
    /**
     *  @abstract
     *      Time (in seconds) between movement events to register panning or pinching 
     *      callbacks.
     *  @remark
     *      Default is 0.05 seconds.
     */
    @property (nonatomic, assign) CGFloat movementTimeThreshold __deprecated_msg("This is now unused, the movement time threshold is now synced to the framerate automatically");
    
    /**
     If set to NO, the display link syncing will be ignored and `movementTimeThreshold` will be used. Defaults to YES.
     */
    @property (assign, nonatomic) BOOL enableSyncedPanning;
    
    /**
     *  @abstract
     *      Boolean denoting whether or not the touch manager should deliver touch event
     *      callbacks.
     *  @remark
     *      Default is true.
     */
    @property (nonatomic, assign, getter=isTouchEnabled) BOOL touchEnabled;
    
    /**
     *  @abstract
     *      Cancels pending touch event timers that may be in progress.
     *  @remark
     *      Currently only impacts the timer used to register single taps.
     */
    - (void)cancelPendingTouches;
    
    - (instancetype)init NS_UNAVAILABLE;
    
    /**
     Initialize a touch manager with a hit tester if available
    
     @param hitTester The hit tester to be used to correlate a point with a view
     @return The initialized touch manager
     */
    - (instancetype)initWithHitTester:(nullable id<SDLFocusableItemHitTester>)hitTester;
    
    /**
     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.
     */
    - (void)syncFrame;
    
    @end

    Swift

    class SDLTouchManager : NSObject

    SDLTurn

    A struct used in UpdateTurnList for Turn-by-Turn navigation applications

    See more

    Objective-C

    @interface SDLTurn : SDLRPCStruct

    Swift

    class SDLTurn : SDLRPCStruct

    SDLUnregisterAppInterface

    Terminates an application’s interface registration. This causes SDL® to dispose of all resources associated with the application’s interface registration (e.g. Command Menu items, Choice Sets, button subscriptions, etc.)

    After the UnregisterAppInterface operation is performed, no other operations can be performed until a new app interface registration is established by calling {@linkplain RegisterAppInterface}

    HMILevel can be FULL, LIMITED, BACKGROUND or NONE

    See SDLRegisterAppInterface SDLOnAppInterfaceUnregistered

    Objective-C

    @interface SDLUnregisterAppInterface : SDLRPCRequest

    Swift

    class SDLUnregisterAppInterface : SDLRPCRequest

    SDLUnregisterAppInterfaceResponse

    Response to UnregisterAppInterface

    SmartDeviceLink 1.0

    Objective-C

    @interface SDLUnregisterAppInterfaceResponse : SDLRPCResponse

    Swift

    class SDLUnregisterAppInterfaceResponse : SDLRPCResponse

    SDLUnsubscribeButton

    Deletes a subscription to button notifications for the specified button. For more information about button subscriptions, see SDLSubscribeButton

    Application can unsubscribe from a button that is currently being pressed (i.e. has not yet been released), but app will not get button event

    HMILevel needs to be FULL, LIMITED or BACKGROUND

    @since SmartDeviceLink 1.0
    See SDLSubscribeButton

    See more

    Objective-C

    @interface SDLUnsubscribeButton : SDLRPCRequest

    Swift

    class SDLUnsubscribeButton : SDLRPCRequest

    SDLUnsubscribeButtonResponse

    Response to UnsubscribeButton

    Since SmartDeviceLink 1.0

    Objective-C

    @interface SDLUnsubscribeButtonResponse : SDLRPCResponse

    Swift

    class SDLUnsubscribeButtonResponse : SDLRPCResponse

    SDLUnsubscribeVehicleData

    This function is used to unsubscribe the notifications from the subscribeVehicleData function

    Function Group: Location, VehicleInfo and DrivingChara

    HMILevel needs to be FULL, LIMITED or BACKGROUND

    @since SmartDeviceLink 2.0
    See SDLSubscribeVehicleData SDLGetVehicleData

    See more

    Objective-C

    @interface SDLUnsubscribeVehicleData : SDLRPCRequest

    Swift

    class SDLUnsubscribeVehicleData : SDLRPCRequest

    SDLUnsubscribeVehicleDataResponse

    Response to UnsubscribeVehicleData

    since SmartDeviceLink 2.0

    See more

    Objective-C

    @interface SDLUnsubscribeVehicleDataResponse : SDLRPCResponse

    Swift

    class SDLUnsubscribeVehicleDataResponse : SDLRPCResponse

    SDLUnsubscribeWayPoints

    Request to unsubscribe from navigation WayPoints and Destination

    Objective-C

    @interface SDLUnsubscribeWayPoints : SDLRPCRequest

    Swift

    class SDLUnsubscribeWayPoints : SDLRPCRequest

    SDLUnsubscribeWayPointsResponse

    Response to UnsubscribeWayPoints

    Objective-C

    @interface SDLUnsubscribeWayPointsResponse : SDLRPCResponse

    Swift

    class SDLUnsubscribeWayPointsResponse : SDLRPCResponse

    SDLUpdateTurnList

    Updates the list of next maneuvers, which can be requested by the user pressing the softbutton

    • “Turns” on the Navigation base screen. Three softbuttons are predefined by the system: Up, Down, Close. *

    • @since SmartDeviceLink 2.0
    See more

    Objective-C

    @interface SDLUpdateTurnList : SDLRPCRequest

    Swift

    class SDLUpdateTurnList : SDLRPCRequest

    SDLUpdateTurnListResponse

    Response to UpdateTurnList

    Since SmartDeviceLink 2.0

    Objective-C

    @interface SDLUpdateTurnListResponse : SDLRPCResponse

    Swift

    class SDLUpdateTurnListResponse : SDLRPCResponse

    SDLVehicleDataResult

    Individual published data request result

    See more

    Objective-C

    @interface SDLVehicleDataResult : SDLRPCStruct

    Swift

    class SDLVehicleDataResult : SDLRPCStruct

    SDLVehicleType

    Describes the type of vehicle the mobile phone is connected with.

    @since SDL 2.0

    See more

    Objective-C

    @interface SDLVehicleType : SDLRPCStruct

    Swift

    class SDLVehicleType : SDLRPCStruct

    SDLVideoStreamingCapability

    Contains information about this system’s video streaming capabilities

    See more

    Objective-C

    @interface SDLVideoStreamingCapability : SDLRPCStruct

    Swift

    class SDLVideoStreamingCapability : SDLRPCStruct

    SDLVideoStreamingFormat

    An available format for video streaming in projection applications

    See more

    Objective-C

    @interface SDLVideoStreamingFormat : SDLRPCStruct

    Swift

    class SDLVideoStreamingFormat : SDLRPCStruct

    SDLVoiceCommand

    Undocumented

    See more

    Objective-C

    @interface SDLVoiceCommand : NSObject
    
    /**
     The strings the user can say to activate this voice command
     */
    @property (copy, nonatomic, readonly) NSArray<NSString *> *voiceCommands;
    
    /**
     The handler that will be called when the command is activated
     */
    @property (copy, nonatomic, readonly, nullable) SDLVoiceCommandSelectionHandler handler;
    
    - (instancetype)initWithVoiceCommands:(NSArray<NSString *> *)voiceCommands handler:(SDLVoiceCommandSelectionHandler)handler;
    
    @end

    Swift

    class SDLVoiceCommand : NSObject

    SDLVRHelpItem

    A help item for voice commands, used locally in interaction lists and globally

    See more

    Objective-C

    @interface SDLVRHelpItem : SDLRPCStruct

    Swift

    class SDLVRHelpItem : SDLRPCStruct
    View on GitHub.com