summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Sokoll <j@sokoll.co>2017-07-24 15:35:53 -0400
committerJames Sokoll <j@sokoll.co>2017-07-24 15:35:53 -0400
commitaabbb6666330f58e388735f1bce094b451dd0dfe (patch)
tree7f2f452b74451276764f687932e4311854284f76
parent38dc7e0008299f818a2e9274e432a4b098c4d57e (diff)
downloadsdl_ios-aabbb6666330f58e388735f1bce094b451dd0dfe.tar.gz
Added support for a multisession protocol in iOS 9.0 or greater
-rw-r--r--SmartDeviceLink/SDLGlobals.h1
-rw-r--r--SmartDeviceLink/SDLIAPTransport.m14
2 files changed, 11 insertions, 4 deletions
diff --git a/SmartDeviceLink/SDLGlobals.h b/SmartDeviceLink/SDLGlobals.h
index fced9d4e9..1c503e619 100644
--- a/SmartDeviceLink/SDLGlobals.h
+++ b/SmartDeviceLink/SDLGlobals.h
@@ -9,6 +9,7 @@
#import <Foundation/Foundation.h>
#define SDL_SYSTEM_VERSION_LESS_THAN(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] == NSOrderedAscending)
+#define SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version) ([[[UIDevice currentDevice] systemVersion] compare:version options:NSNumericSearch] != NSOrderedAscending)
#define BLOCK_RETURN return
@interface SDLGlobals : NSObject
diff --git a/SmartDeviceLink/SDLIAPTransport.m b/SmartDeviceLink/SDLIAPTransport.m
index cee814556..812019e48 100644
--- a/SmartDeviceLink/SDLIAPTransport.m
+++ b/SmartDeviceLink/SDLIAPTransport.m
@@ -20,6 +20,7 @@
NSString *const legacyProtocolString = @"com.ford.sync.prot0";
NSString *const controlProtocolString = @"com.smartdevicelink.prot0";
NSString *const indexedProtocolStringPrefix = @"com.smartdevicelink.prot";
+NSString *const multiSessionProtocolString = @"com.smartdevicelink.multisession";
NSString *const backgroundTaskName = @"com.sdl.transport.iap.backgroundTask";
int const createSessionRetries = 1;
@@ -183,15 +184,18 @@ int const streamOpenTimeoutSeconds = 2;
- (BOOL)sdl_connectAccessory:(EAAccessory *)accessory {
BOOL connecting = NO;
-
- if ([accessory supportsProtocol:controlProtocolString]) {
+
+ if ([accessory supportsProtocol:multiSessionProtocolString] && SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9")) {
+ [self sdl_createIAPDataSessionWithAccessory:accessory forProtocol:multiSessionProtocolString];
+ connecting = YES;
+ } else if ([accessory supportsProtocol:controlProtocolString]) {
[self sdl_createIAPControlSessionWithAccessory:accessory];
connecting = YES;
} else if ([accessory supportsProtocol:legacyProtocolString]) {
[self sdl_createIAPDataSessionWithAccessory:accessory forProtocol:legacyProtocolString];
connecting = YES;
}
-
+
return connecting;
}
@@ -208,7 +212,9 @@ int const streamOpenTimeoutSeconds = 2;
}
// Determine if we can start a multi-app session or a legacy (single-app) session
- if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:controlProtocolString])) {
+ if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:multiSessionProtocolString]) && SDL_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9")) {
+ [self sdl_createIAPDataSessionWithAccessory:sdlAccessory forProtocol:multiSessionProtocolString];
+ } else if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:controlProtocolString])) {
[self sdl_createIAPControlSessionWithAccessory:sdlAccessory];
} else if ((sdlAccessory = [EAAccessoryManager findAccessoryForProtocol:legacyProtocolString])) {
[self sdl_createIAPDataSessionWithAccessory:sdlAccessory forProtocol:legacyProtocolString];