From 0774363fb5eacac763b7a2ec94e73c3bfc89194d Mon Sep 17 00:00:00 2001 From: Conner Wu <244295790@qq.com> Date: Thu, 22 Jun 2017 10:59:15 +0800 Subject: [PATCH] Add transport protocol type. --- SmartDeviceLink/SDLLifecycleConfiguration.h | 13 ++++++++++++- SmartDeviceLink/SDLLifecycleConfiguration.m | 11 ++++++----- SmartDeviceLink/SDLLifecycleManager.m | 10 +++++----- SmartDeviceLink/SDLManager.m | 2 +- SmartDeviceLink/SDLProxyFactory.h | 8 ++++---- SmartDeviceLink/SDLProxyFactory.m | 8 ++++---- SmartDeviceLink_Example/Classes/ProxyManager.m | 2 +- 7 files changed, 33 insertions(+), 21 deletions(-) diff --git a/SmartDeviceLink/SDLLifecycleConfiguration.h b/SmartDeviceLink/SDLLifecycleConfiguration.h index 36b11ea63c..193ade6e02 100644 --- a/SmartDeviceLink/SDLLifecycleConfiguration.h +++ b/SmartDeviceLink/SDLLifecycleConfiguration.h @@ -16,6 +16,11 @@ @protocol SDLSecurityType; +typedef NS_ENUM(NSInteger, SDLTransportType) { + SDLTransportTypeTCP = 0, + SDLTransportTypeIAP = 1 << 0 +}; + NS_ASSUME_NONNULL_BEGIN @@ -31,10 +36,11 @@ NS_ASSUME_NONNULL_BEGIN * * @param appName The name of the app. * @param appId The appId to be used. This should be registered with the radio's manufacturer. + * @param transportType The transport type. * * @return The lifecycle configuration */ -+ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId; ++ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId transportType:(SDLTransportType)transportType; /** * A debug configuration that runs using TCP. Additional functionality should be customized on the properties. @@ -123,6 +129,11 @@ NS_ASSUME_NONNULL_BEGIN */ @property (copy, nonatomic, nullable) NSArray> *securityManagers; +/** + * The transport type. + */ +@property (assign, nonatomic) SDLTransportType transportType; + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLLifecycleConfiguration.m b/SmartDeviceLink/SDLLifecycleConfiguration.m index c5b9e7071c..e9c1a47589 100644 --- a/SmartDeviceLink/SDLLifecycleConfiguration.m +++ b/SmartDeviceLink/SDLLifecycleConfiguration.m @@ -29,7 +29,7 @@ @implementation SDLLifecycleConfiguration #pragma mark Lifecycle -- (instancetype)initDefaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId { +- (instancetype)initDefaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId transportType:(SDLTransportType)transportType { self = [super init]; if (!self) { return nil; @@ -49,16 +49,17 @@ - (instancetype)initDefaultConfigurationWithAppName:(NSString *)appName appId:(N _shortAppName = nil; _ttsName = nil; _voiceRecognitionCommandNames = nil; + _transportType = transportType; return self; } -+ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId { - return [[self alloc] initDefaultConfigurationWithAppName:appName appId:appId]; ++ (SDLLifecycleConfiguration *)defaultConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId transportType:(SDLTransportType)transportType { + return [[self alloc] initDefaultConfigurationWithAppName:appName appId:appId transportType:SDLTransportTypeTCP]; } + (SDLLifecycleConfiguration *)debugConfigurationWithAppName:(NSString *)appName appId:(NSString *)appId ipAddress:(NSString *)ipAddress port:(UInt16)port { - SDLLifecycleConfiguration *config = [[self alloc] initDefaultConfigurationWithAppName:appName appId:appId]; + SDLLifecycleConfiguration *config = [[self alloc] initDefaultConfigurationWithAppName:appName appId:appId transportType:SDLTransportTypeTCP]; config.tcpDebugMode = YES; config.tcpDebugIPAddress = ipAddress; config.tcpDebugPort = port; @@ -97,7 +98,7 @@ - (void)setAppType:(nullable SDLAppHMIType)appType { #pragma mark NSCopying - (id)copyWithZone:(nullable NSZone *)zone { - SDLLifecycleConfiguration *newConfig = [[self.class allocWithZone:zone] initDefaultConfigurationWithAppName:_appName appId:_appId]; + SDLLifecycleConfiguration *newConfig = [[self.class allocWithZone:zone] initDefaultConfigurationWithAppName:_appName appId:_appId transportType:_transportType]; newConfig->_tcpDebugMode = _tcpDebugMode; newConfig->_tcpDebugIPAddress = _tcpDebugIPAddress; newConfig->_tcpDebugPort = _tcpDebugPort; diff --git a/SmartDeviceLink/SDLLifecycleManager.m b/SmartDeviceLink/SDLLifecycleManager.m index fac00b535d..c99fee6c76 100644 --- a/SmartDeviceLink/SDLLifecycleManager.m +++ b/SmartDeviceLink/SDLLifecycleManager.m @@ -77,7 +77,7 @@ @implementation SDLLifecycleManager #pragma mark Lifecycle - (instancetype)init { - return [self initWithConfiguration:[SDLConfiguration configurationWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" appId:@"001"] lockScreen:[SDLLockScreenConfiguration disabledConfiguration]] delegate:nil]; + return [self initWithConfiguration:[SDLConfiguration configurationWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" appId:@"001" transportType:SDLTransportTypeTCP] lockScreen:[SDLLockScreenConfiguration disabledConfiguration]] delegate:nil]; } - (instancetype)initWithConfiguration:(SDLConfiguration *)configuration delegate:(nullable id)delegate { @@ -166,10 +166,10 @@ - (void)didEnterStateStarted { // Start up the internal proxy object #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" - if (self.configuration.lifecycleConfig.tcpDebugMode) { - self.proxy = [SDLProxyFactory buildSDLProxyWithListener:self.notificationDispatcher tcpIPAddress:self.configuration.lifecycleConfig.tcpDebugIPAddress tcpPort:[@(self.configuration.lifecycleConfig.tcpDebugPort) stringValue]]; - } else { - self.proxy = [SDLProxyFactory buildSDLProxyWithListener:self.notificationDispatcher]; + if (self.configuration.lifecycleConfig.transportType == SDLTransportTypeTCP) { + self.proxy = [SDLProxyFactory buildSDLProxyWithTCPListener:self.notificationDispatcher tcpIPAddress:self.configuration.lifecycleConfig.tcpDebugIPAddress tcpPort:[@(self.configuration.lifecycleConfig.tcpDebugPort) stringValue]]; + } else if (self.configuration.lifecycleConfig.transportType == SDLTransportTypeIAP) { + self.proxy = [SDLProxyFactory buildSDLProxyWithiAPListener:self.notificationDispatcher]; } #pragma clang diagnostic pop } diff --git a/SmartDeviceLink/SDLManager.m b/SmartDeviceLink/SDLManager.m index e66feb1f78..659167d63d 100644 --- a/SmartDeviceLink/SDLManager.m +++ b/SmartDeviceLink/SDLManager.m @@ -35,7 +35,7 @@ @implementation SDLManager #pragma mark Lifecycle - (instancetype)init { - return [self initWithConfiguration:[SDLConfiguration configurationWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" appId:@"001"] lockScreen:[SDLLockScreenConfiguration enabledConfiguration]] delegate:nil]; + return [self initWithConfiguration:[SDLConfiguration configurationWithLifecycle:[SDLLifecycleConfiguration defaultConfigurationWithAppName:@"SDL APP" appId:@"001" transportType:SDLTransportTypeTCP] lockScreen:[SDLLockScreenConfiguration enabledConfiguration]] delegate:nil]; } - (instancetype)initWithConfiguration:(SDLConfiguration *)configuration delegate:(nullable id)delegate { diff --git a/SmartDeviceLink/SDLProxyFactory.h b/SmartDeviceLink/SDLProxyFactory.h index 5d2212e58c..c75d03acaa 100644 --- a/SmartDeviceLink/SDLProxyFactory.h +++ b/SmartDeviceLink/SDLProxyFactory.h @@ -13,11 +13,11 @@ __deprecated_msg("Use SDLManager instead") @interface SDLProxyFactory : NSObject { } -+ (SDLProxy *)buildSDLProxyWithListener:(NSObject *)listener; ++ (SDLProxy *)buildSDLProxyWithiAPListener:(NSObject *)listener; -+ (SDLProxy *)buildSDLProxyWithListener:(NSObject *)listener - tcpIPAddress:(NSString *)ipaddress - tcpPort:(NSString *)port; ++ (SDLProxy *)buildSDLProxyWithTCPListener:(NSObject *)listener + tcpIPAddress:(NSString *)ipaddress + tcpPort:(NSString *)port; @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLProxyFactory.m b/SmartDeviceLink/SDLProxyFactory.m index 3a703e0732..7da2e26d21 100644 --- a/SmartDeviceLink/SDLProxyFactory.m +++ b/SmartDeviceLink/SDLProxyFactory.m @@ -12,7 +12,7 @@ @implementation SDLProxyFactory -+ (SDLProxy *)buildSDLProxyWithListener:(NSObject *)delegate { ++ (SDLProxy *)buildSDLProxyWithiAPListener:(NSObject *)delegate { SDLIAPTransport *transport = [[SDLIAPTransport alloc] init]; SDLProtocol *protocol = [[SDLProtocol alloc] init]; SDLProxy *ret = [[SDLProxy alloc] initWithTransport:transport protocol:protocol delegate:delegate]; @@ -20,9 +20,9 @@ + (SDLProxy *)buildSDLProxyWithListener:(NSObject *)delegate { return ret; } -+ (SDLProxy *)buildSDLProxyWithListener:(NSObject *)delegate - tcpIPAddress:(NSString *)ipaddress - tcpPort:(NSString *)port { ++ (SDLProxy *)buildSDLProxyWithTCPListener:(NSObject *)delegate + tcpIPAddress:(NSString *)ipaddress + tcpPort:(NSString *)port { SDLTCPTransport *transport = [[SDLTCPTransport alloc] init]; transport.hostName = ipaddress; transport.portNumber = port; diff --git a/SmartDeviceLink_Example/Classes/ProxyManager.m b/SmartDeviceLink_Example/Classes/ProxyManager.m index 93aabd0567..02f1e9163c 100644 --- a/SmartDeviceLink_Example/Classes/ProxyManager.m +++ b/SmartDeviceLink_Example/Classes/ProxyManager.m @@ -70,7 +70,7 @@ - (instancetype)init { - (void)startIAP { [self sdlex_updateProxyState:ProxyStateSearchingForConnection]; - SDLLifecycleConfiguration *lifecycleConfig = [self.class sdlex_setLifecycleConfigurationPropertiesOnConfiguration:[SDLLifecycleConfiguration defaultConfigurationWithAppName:SDLAppName appId:SDLAppId]]; + SDLLifecycleConfiguration *lifecycleConfig = [self.class sdlex_setLifecycleConfigurationPropertiesOnConfiguration:[SDLLifecycleConfiguration defaultConfigurationWithAppName:SDLAppName appId:SDLAppId transportType:SDLTransportTypeIAP]]; SDLConfiguration *config = [SDLConfiguration configurationWithLifecycle:lifecycleConfig lockScreen:[SDLLockScreenConfiguration enabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration]]; self.sdlManager = [[SDLManager alloc] initWithConfiguration:config delegate:self];