summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Fischer <joeljfischer@gmail.com>2016-03-16 09:24:57 -0400
committerJoel Fischer <joeljfischer@gmail.com>2016-03-16 09:24:57 -0400
commit20c42daf99261aba12aa8949ca8fcfd3d84579f4 (patch)
tree89803a001b6dfa1c78c777dea8b2e9a333d06736
parent6f58b28c83eac8498e189b59b92fde3354e7610b (diff)
parentfc734a7a0e3ce053bc035cd8b1208dbf97fb1c7a (diff)
downloadsdl_ios-20c42daf99261aba12aa8949ca8fcfd3d84579f4.tar.gz
Merge branch 'master' into hotfix/issue_371
-rw-r--r--README.md17
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/DSL.h141
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/NMBExceptionCapture.h11
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/Nimble-Swift.h383
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/Nimble.h6
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Info.plistbin860 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm.swiftdocbin41868 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm.swiftmodulebin130060 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm64.swiftdocbin41868 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm64.swiftmodulebin130060 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/i386.swiftdocbin41868 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/i386.swiftmodulebin130148 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/x86_64.swiftdocbin41868 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/x86_64.swiftmodulebin130152 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/module.modulemap10
-rwxr-xr-xSmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Nimblebin3904488 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/_CodeSignature/CodeResources183
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QCKDSL.h234
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/Quick-Swift.h260
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/Quick.h11
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QuickConfiguration.h30
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QuickSpec.h48
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Info.plistbin879 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm.swiftdocbin37700 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm.swiftmodulebin63160 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm64.swiftdocbin37700 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm64.swiftmodulebin63160 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/i386.swiftdocbin37700 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/i386.swiftmodulebin63260 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/x86_64.swiftdocbin37700 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/x86_64.swiftmodulebin63264 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/module.modulemap10
-rwxr-xr-xSmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Quickbin1657516 -> 0 bytes
-rw-r--r--SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocol.m23
-rw-r--r--SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocolMessage.m2
-rw-r--r--SmartDeviceLink-iOS/SmartDeviceLink/SDLProxy.m222
-rw-r--r--SmartDeviceLink-iOS/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m5
37 files changed, 148 insertions, 1448 deletions
diff --git a/README.md b/README.md
index 23f20963c..3e4c51eb6 100644
--- a/README.md
+++ b/README.md
@@ -53,11 +53,18 @@ You can find the latest reference documentation on [Cocoadocs](http://cocoadocs.
If you see a bug, feel free to post an issue on the appropriate repository. Please see the [contribution guidelines](https://github.com/smartdevicelink/sdl_ios/blob/master/CONTRIBUTING.md) before proceeding. If you need general assistance, or have other questions, you can [sign up](http://slack.smartdevicelink.org) for the [SDL Slack](https://smartdevicelink.slack.com) and chat with other developers and the maintainers of the project.
### Running Tests
-To run tests, you will need to bootstrap the Carthage testing libraries. To do so, from the root project directory, run:
+To run tests, you will need to bootstrap the Carthage testing libraries. To do so, first [install Carthage](https://github.com/Carthage/Carthage#installing-carthage).
+
+Then, from the root project directory, run:
```bash
cd SmartDeviceLink-iOS
carthage bootstrap --platform ios
cd ../
+```
+
+At this point, you can run tests from Xcode, or, if you wish to run the tests exactly as they will be run on the CI server, [install xctool](https://github.com/facebook/xctool#installation) and run:
+
+```bash
xctool -project SmartDeviceLink-iOS/SmartDeviceLink-iOS.xcodeproj -scheme SmartDeviceLink -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO RUN_CLANG_STATIC_ANALYZER=NO test
```
@@ -147,10 +154,10 @@ This is an object that conforms to the `SDLProxyListener` protocol. This could b
The `SDLProxyListener` protocol has four required methods:
```objc
--(void) onOnDriverDistraction:(SDLOnDriverDistraction*) notification;
--(void) onOnHMIStatus:(SDLOnHMIStatus*) notification;
--(void) onProxyClosed;
--(void) onProxyOpened;
+- (void)onOnDriverDistraction:(SDLOnDriverDistraction*) notification;
+- (void)onOnHMIStatus:(SDLOnHMIStatus*) notification;
+- (void)onProxyClosed;
+- (void)onProxyOpened;
```
`onProxyOpened` is called when a connection is established between the head unit and your application. This is the place to set whatever state you need to, to know that your application is connected. It is also where you must send a register request with your app's information to the vehicle. The example app uses the following basic code:
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/DSL.h b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/DSL.h
deleted file mode 100644
index e4a439063..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/DSL.h
+++ /dev/null
@@ -1,141 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@class NMBExpectation;
-@class NMBObjCBeCloseToMatcher;
-@class NMBObjCRaiseExceptionMatcher;
-@protocol NMBMatcher;
-
-
-#define NIMBLE_EXPORT FOUNDATION_EXPORT
-
-#ifdef NIMBLE_DISABLE_SHORT_SYNTAX
-#define NIMBLE_SHORT(PROTO, ORIGINAL)
-#else
-#define NIMBLE_SHORT(PROTO, ORIGINAL) FOUNDATION_STATIC_INLINE PROTO { return (ORIGINAL); }
-#endif
-
-NIMBLE_EXPORT NMBExpectation *NMB_expect(id(^actualBlock)(), NSString *file, NSUInteger line);
-NIMBLE_EXPORT NMBExpectation *NMB_expectAction(void(^actualBlock)(), NSString *file, NSUInteger line);
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_equal(id expectedValue);
-NIMBLE_SHORT(id<NMBMatcher> equal(id expectedValue),
- NMB_equal(expectedValue));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_haveCount(id expectedValue);
-NIMBLE_SHORT(id<NMBMatcher> haveCount(id expectedValue),
- NMB_haveCount(expectedValue));
-
-NIMBLE_EXPORT NMBObjCBeCloseToMatcher *NMB_beCloseTo(NSNumber *expectedValue);
-NIMBLE_SHORT(NMBObjCBeCloseToMatcher *beCloseTo(id expectedValue),
- NMB_beCloseTo(expectedValue));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beAnInstanceOf(Class expectedClass);
-NIMBLE_SHORT(id<NMBMatcher> beAnInstanceOf(Class expectedClass),
- NMB_beAnInstanceOf(expectedClass));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beAKindOf(Class expectedClass);
-NIMBLE_SHORT(id<NMBMatcher> beAKindOf(Class expectedClass),
- NMB_beAKindOf(expectedClass));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beginWith(id itemElementOrSubstring);
-NIMBLE_SHORT(id<NMBMatcher> beginWith(id itemElementOrSubstring),
- NMB_beginWith(itemElementOrSubstring));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beGreaterThan(NSNumber *expectedValue);
-NIMBLE_SHORT(id<NMBMatcher> beGreaterThan(NSNumber *expectedValue),
- NMB_beGreaterThan(expectedValue));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beGreaterThanOrEqualTo(NSNumber *expectedValue);
-NIMBLE_SHORT(id<NMBMatcher> beGreaterThanOrEqualTo(NSNumber *expectedValue),
- NMB_beGreaterThanOrEqualTo(expectedValue));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beIdenticalTo(id expectedInstance);
-NIMBLE_SHORT(id<NMBMatcher> beIdenticalTo(id expectedInstance),
- NMB_beIdenticalTo(expectedInstance));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beLessThan(NSNumber *expectedValue);
-NIMBLE_SHORT(id<NMBMatcher> beLessThan(NSNumber *expectedValue),
- NMB_beLessThan(expectedValue));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beLessThanOrEqualTo(NSNumber *expectedValue);
-NIMBLE_SHORT(id<NMBMatcher> beLessThanOrEqualTo(NSNumber *expectedValue),
- NMB_beLessThanOrEqualTo(expectedValue));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beTruthy(void);
-NIMBLE_SHORT(id<NMBMatcher> beTruthy(void),
- NMB_beTruthy());
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beFalsy(void);
-NIMBLE_SHORT(id<NMBMatcher> beFalsy(void),
- NMB_beFalsy());
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beTrue(void);
-NIMBLE_SHORT(id<NMBMatcher> beTrue(void),
- NMB_beTrue());
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beFalse(void);
-NIMBLE_SHORT(id<NMBMatcher> beFalse(void),
- NMB_beFalse());
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beNil(void);
-NIMBLE_SHORT(id<NMBMatcher> beNil(void),
- NMB_beNil());
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_beEmpty(void);
-NIMBLE_SHORT(id<NMBMatcher> beEmpty(void),
- NMB_beEmpty());
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_containWithNilTermination(id itemOrSubstring, ...) NS_REQUIRES_NIL_TERMINATION;
-#define NMB_contain(...) NMB_containWithNilTermination(__VA_ARGS__, nil)
-#ifndef NIMBLE_DISABLE_SHORT_SYNTAX
-#define contain(...) NMB_contain(__VA_ARGS__)
-#endif
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_endWith(id itemElementOrSubstring);
-NIMBLE_SHORT(id<NMBMatcher> endWith(id itemElementOrSubstring),
- NMB_endWith(itemElementOrSubstring));
-
-NIMBLE_EXPORT NMBObjCRaiseExceptionMatcher *NMB_raiseException(void);
-NIMBLE_SHORT(NMBObjCRaiseExceptionMatcher *raiseException(void),
- NMB_raiseException());
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_match(id expectedValue);
-NIMBLE_SHORT(id<NMBMatcher> match(id expectedValue),
- NMB_match(expectedValue));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_allPass(id matcher);
-NIMBLE_SHORT(id<NMBMatcher> allPass(id matcher),
- NMB_allPass(matcher));
-
-NIMBLE_EXPORT id<NMBMatcher> NMB_satisfyAnyOfWithMatchers(id matchers);
-#define NMB_satisfyAnyOf(...) NMB_satisfyAnyOfWithMatchers(@[__VA_ARGS__])
-#ifndef NIMBLE_DISABLE_SHORT_SYNTAX
-#define satisfyAnyOf(...) NMB_satisfyAnyOf(__VA_ARGS__)
-#endif
-
-// In order to preserve breakpoint behavior despite using macros to fill in __FILE__ and __LINE__,
-// define a builder that populates __FILE__ and __LINE__, and returns a block that takes timeout
-// and action arguments. See https://github.com/Quick/Quick/pull/185 for details.
-typedef void (^NMBWaitUntilTimeoutBlock)(NSTimeInterval timeout, void (^action)(void (^)(void)));
-typedef void (^NMBWaitUntilBlock)(void (^action)(void (^)(void)));
-
-NIMBLE_EXPORT void NMB_failWithMessage(NSString *msg, NSString *file, NSUInteger line);
-
-NIMBLE_EXPORT NMBWaitUntilTimeoutBlock NMB_waitUntilTimeoutBuilder(NSString *file, NSUInteger line);
-NIMBLE_EXPORT NMBWaitUntilBlock NMB_waitUntilBuilder(NSString *file, NSUInteger line);
-
-NIMBLE_EXPORT void NMB_failWithMessage(NSString *msg, NSString *file, NSUInteger line);
-
-#define NMB_waitUntilTimeout NMB_waitUntilTimeoutBuilder(@(__FILE__), __LINE__)
-#define NMB_waitUntil NMB_waitUntilBuilder(@(__FILE__), __LINE__)
-
-#ifndef NIMBLE_DISABLE_SHORT_SYNTAX
-#define expect(...) NMB_expect(^id{ return (__VA_ARGS__); }, @(__FILE__), __LINE__)
-#define expectAction(BLOCK) NMB_expectAction((BLOCK), @(__FILE__), __LINE__)
-#define failWithMessage(msg) NMB_failWithMessage(msg, @(__FILE__), __LINE__)
-#define fail() failWithMessage(@"fail() always fails")
-
-
-#define waitUntilTimeout NMB_waitUntilTimeout
-#define waitUntil NMB_waitUntil
-#endif
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/NMBExceptionCapture.h b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/NMBExceptionCapture.h
deleted file mode 100644
index 7e5fb07c3..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/NMBExceptionCapture.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import <Foundation/Foundation.h>
-#import <dispatch/dispatch.h>
-
-@interface NMBExceptionCapture : NSObject
-
-- (id)initWithHandler:(void(^)(NSException *))handler finally:(void(^)())finally;
-- (void)tryBlock:(void(^)())unsafeBlock;
-
-@end
-
-typedef void(^NMBSourceCallbackBlock)(BOOL successful);
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/Nimble-Swift.h b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/Nimble-Swift.h
deleted file mode 100644
index cc3019ae0..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/Nimble-Swift.h
+++ /dev/null
@@ -1,383 +0,0 @@
-// Generated by Apple Swift version 2.1.1 (swiftlang-700.1.101.15 clang-700.1.81)
-#pragma clang diagnostic push
-
-#if defined(__has_include) && __has_include(<swift/objc-prologue.h>)
-# include <swift/objc-prologue.h>
-#endif
-
-#pragma clang diagnostic ignored "-Wauto-import"
-#include <objc/NSObject.h>
-#include <stdint.h>
-#include <stddef.h>
-#include <stdbool.h>
-
-#if defined(__has_include) && __has_include(<uchar.h>)
-# include <uchar.h>
-#elif !defined(__cplusplus) || __cplusplus < 201103L
-typedef uint_least16_t char16_t;
-typedef uint_least32_t char32_t;
-#endif
-
-typedef struct _NSZone NSZone;
-
-#if !defined(SWIFT_PASTE)
-# define SWIFT_PASTE_HELPER(x, y) x##y
-# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
-#endif
-#if !defined(SWIFT_METATYPE)
-# define SWIFT_METATYPE(X) Class
-#endif
-
-#if defined(__has_attribute) && __has_attribute(objc_runtime_name)
-# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
-#else
-# define SWIFT_RUNTIME_NAME(X)
-#endif
-#if defined(__has_attribute) && __has_attribute(swift_name)
-# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
-#else
-# define SWIFT_COMPILE_NAME(X)
-#endif
-#if !defined(SWIFT_CLASS_EXTRA)
-# define SWIFT_CLASS_EXTRA
-#endif
-#if !defined(SWIFT_PROTOCOL_EXTRA)
-# define SWIFT_PROTOCOL_EXTRA
-#endif
-#if !defined(SWIFT_ENUM_EXTRA)
-# define SWIFT_ENUM_EXTRA
-#endif
-#if !defined(SWIFT_CLASS)
-# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
-# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
-# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
-# else
-# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
-# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
-# endif
-#endif
-
-#if !defined(SWIFT_PROTOCOL)
-# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
-# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
-#endif
-
-#if !defined(SWIFT_EXTENSION)
-# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
-#endif
-
-#if !defined(OBJC_DESIGNATED_INITIALIZER)
-# if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
-# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
-# else
-# define OBJC_DESIGNATED_INITIALIZER
-# endif
-#endif
-#if !defined(SWIFT_ENUM)
-# define SWIFT_ENUM(_type, _name) enum _name : _type _name; enum SWIFT_ENUM_EXTRA _name : _type
-#endif
-typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
-typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
-typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
-typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
-typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
-typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
-typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
-typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
-typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
-#if defined(__has_feature) && __has_feature(modules)
-@import ObjectiveC;
-@import Foundation;
-#endif
-
-#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
-#pragma clang diagnostic ignored "-Wduplicate-method-arg"
-
-
-/// Encapsulates the failure message that matchers can report to the end user.
-///
-/// This is shared state between Nimble and matchers that mutate this value.
-SWIFT_CLASS("_TtC6Nimble14FailureMessage")
-@interface FailureMessage : NSObject
-@property (nonatomic, copy) NSString * __nonnull expected;
-@property (nonatomic, copy) NSString * __nullable actualValue;
-@property (nonatomic, copy) NSString * __nonnull to;
-@property (nonatomic, copy) NSString * __nonnull postfixMessage;
-@property (nonatomic, copy) NSString * __nonnull postfixActual;
-@property (nonatomic, copy) NSString * __nullable userDescription;
-@property (nonatomic, copy) NSString * __nonnull stringValue;
-- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
-- (nonnull instancetype)initWithStringValue:(NSString * __nonnull)stringValue OBJC_DESIGNATED_INITIALIZER;
-@end
-
-
-
-/// Protocol for types that support only beEmpty(), haveCount() matchers
-SWIFT_PROTOCOL("_TtP6Nimble13NMBCollection_")
-@protocol NMBCollection
-@property (nonatomic, readonly) NSInteger count;
-@end
-
-
-
-/// Protocol for types to support beLessThan(), beLessThanOrEqualTo(), beGreaterThan(), beGreaterThanOrEqualTo(), and equal() matchers.
-///
-/// Types that conform to Swift's Comparable protocol will work implicitly too
-SWIFT_PROTOCOL("_TtP6Nimble13NMBComparable_")
-@protocol NMBComparable
-- (NSComparisonResult)NMB_compare:(id <NMBComparable> __null_unspecified)otherObject;
-@end
-
-
-
-/// Protocol for types that support contain() matcher.
-SWIFT_PROTOCOL("_TtP6Nimble12NMBContainer_")
-@protocol NMBContainer
-- (BOOL)containsObject:(id __null_unspecified)object;
-@end
-
-
-
-/// Protocol for types to support beCloseTo() matcher
-SWIFT_PROTOCOL("_TtP6Nimble20NMBDoubleConvertible_")
-@protocol NMBDoubleConvertible
-@property (nonatomic, readonly) double doubleValue;
-@end
-
-@protocol NMBMatcher;
-
-SWIFT_CLASS("_TtC6Nimble14NMBExpectation")
-@interface NMBExpectation : NSObject
-- (nonnull instancetype)initWithActualBlock:(NSObject * __null_unspecified (^ __nonnull)(void))actualBlock negative:(BOOL)negative file:(NSString * __nonnull)file line:(NSUInteger)line OBJC_DESIGNATED_INITIALIZER;
-@property (nonatomic, readonly, copy) NMBExpectation * __nonnull (^ __nonnull withTimeout)(NSTimeInterval);
-@property (nonatomic, readonly, copy) void (^ __nonnull to)(id <NMBMatcher> __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull toWithDescription)(id <NMBMatcher> __nonnull, NSString * __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull toNot)(id <NMBMatcher> __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull toNotWithDescription)(id <NMBMatcher> __nonnull, NSString * __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull notTo)(id <NMBMatcher> __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull notToWithDescription)(id <NMBMatcher> __nonnull, NSString * __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull toEventually)(id <NMBMatcher> __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull toEventuallyWithDescription)(id <NMBMatcher> __nonnull, NSString * __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull toEventuallyNot)(id <NMBMatcher> __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull toEventuallyNotWithDescription)(id <NMBMatcher> __nonnull, NSString * __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull toNotEventually)(id <NMBMatcher> __nonnull);
-@property (nonatomic, readonly, copy) void (^ __nonnull toNotEventuallyWithDescription)(id <NMBMatcher> __nonnull, NSString * __nonnull);
-+ (void)failWithMessage:(NSString * __nonnull)message file:(NSString * __nonnull)file line:(NSUInteger)line;
-@end
-
-@class SourceLocation;
-
-
-/// Objective-C interface to the Swift variant of Matcher.
-SWIFT_PROTOCOL("_TtP6Nimble10NMBMatcher_")
-@protocol NMBMatcher
-- (BOOL)matches:(NSObject * __null_unspecified (^ __nonnull)(void))actualBlock failureMessage:(FailureMessage * __nonnull)failureMessage location:(SourceLocation * __nonnull)location;
-- (BOOL)doesNotMatch:(NSObject * __null_unspecified (^ __nonnull)(void))actualBlock failureMessage:(FailureMessage * __nonnull)failureMessage location:(SourceLocation * __nonnull)location;
-@end
-
-
-SWIFT_CLASS("_TtC6Nimble23NMBObjCBeCloseToMatcher")
-@interface NMBObjCBeCloseToMatcher : NSObject <NMBMatcher>
-- (BOOL)matches:(NSObject * __null_unspecified (^ __nonnull)(void))actualExpression failureMessage:(FailureMessage * __nonnull)failureMessage location:(SourceLocation * __nonnull)location;
-- (BOOL)doesNotMatch:(NSObject * __null_unspecified (^ __nonnull)(void))actualExpression failureMessage:(FailureMessage * __nonnull)failureMessage location:(SourceLocation * __nonnull)location;
-@property (nonatomic, readonly, copy) NMBObjCBeCloseToMatcher * __nonnull (^ __nonnull within)(double);
-@end
-
-
-SWIFT_CLASS("_TtC6Nimble14NMBObjCMatcher")
-@interface NMBObjCMatcher : NSObject <NMBMatcher>
-- (BOOL)matches:(NSObject * __null_unspecified (^ __nonnull)(void))actualBlock failureMessage:(FailureMessage * __nonnull)failureMessage location:(SourceLocation * __nonnull)location;
-- (BOOL)doesNotMatch:(NSObject * __null_unspecified (^ __nonnull)(void))actualBlock failureMessage:(FailureMessage * __nonnull)failureMessage location:(SourceLocation * __nonnull)location;
-@end
-
-@class NSNumber;
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)haveCountMatcher:(NSNumber * __nonnull)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)satisfyAnyOfMatcher:(NSArray<NMBObjCMatcher *> * __nonnull)matchers;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)endWithMatcher:(id __nonnull)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)beNilMatcher;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)beEmptyMatcher;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)beIdenticalToMatcher:(NSObject * __nullable)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)beginWithMatcher:(id __nonnull)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)containMatcher:(NSArray<NSObject *> * __nonnull)expected;
-@end
-
-@class NMBObjCRaiseExceptionMatcher;
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCRaiseExceptionMatcher * __nonnull)raiseExceptionMatcher;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)beGreaterThanMatcher:(id <NMBComparable> __nullable)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)beLessThanMatcher:(id <NMBComparable> __nullable)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (id <NMBMatcher> __nonnull)equalMatcher:(NSObject * __nonnull)expected;
-@end
-
-@class NSString;
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (id <NMBMatcher> __nonnull)matchMatcher:(NSString * __nonnull)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (id <NMBMatcher> __nonnull)beAKindOfMatcher:(Class __nonnull)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)allPassMatcher:(NMBObjCMatcher * __nonnull)matcher;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (id <NMBMatcher> __nonnull)beAnInstanceOfMatcher:(Class __nonnull)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)beLessThanOrEqualToMatcher:(id <NMBComparable> __nullable)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCBeCloseToMatcher * __nonnull)beCloseToMatcher:(NSNumber * __nonnull)expected within:(double)within;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)beGreaterThanOrEqualToMatcher:(id <NMBComparable> __nullable)expected;
-@end
-
-
-@interface NMBObjCMatcher (SWIFT_EXTENSION(Nimble))
-+ (NMBObjCMatcher * __nonnull)beTruthyMatcher;
-+ (NMBObjCMatcher * __nonnull)beFalsyMatcher;
-+ (NMBObjCMatcher * __nonnull)beTrueMatcher;
-+ (NMBObjCMatcher * __nonnull)beFalseMatcher;
-@end
-
-@class NSDictionary;
-@class NSException;
-
-SWIFT_CLASS("_TtC6Nimble28NMBObjCRaiseExceptionMatcher")
-@interface NMBObjCRaiseExceptionMatcher : NSObject <NMBMatcher>
-- (BOOL)matches:(NSObject * __null_unspecified (^ __nonnull)(void))actualBlock failureMessage:(FailureMessage * __nonnull)failureMessage location:(SourceLocation * __nonnull)location;
-- (BOOL)doesNotMatch:(NSObject * __null_unspecified (^ __nonnull)(void))actualBlock failureMessage:(FailureMessage * __nonnull)failureMessage location:(SourceLocation * __nonnull)location;
-@property (nonatomic, readonly, copy) NMBObjCRaiseExceptionMatcher * __nonnull (^ __nonnull named)(NSString * __nonnull);
-@property (nonatomic, readonly, copy) NMBObjCRaiseExceptionMatcher * __nonnull (^ __nonnull reason)(NSString * __nullable);
-@property (nonatomic, readonly, copy) NMBObjCRaiseExceptionMatcher * __nonnull (^ __nonnull userInfo)(NSDictionary * __nullable);
-@property (nonatomic, readonly, copy) NMBObjCRaiseExceptionMatcher * __nonnull (^ __nonnull satisfyingBlock)(void (^ __nullable)(NSException * __nonnull));
-@end
-
-
-
-/// Protocol for types that support beginWith(), endWith(), beEmpty() matchers
-SWIFT_PROTOCOL("_TtP6Nimble20NMBOrderedCollection_")
-@protocol NMBOrderedCollection <NMBCollection>
-- (NSInteger)indexOfObject:(id __null_unspecified)object;
-@end
-
-
-@interface NSArray (SWIFT_EXTENSION(Nimble)) <NMBContainer>
-@end
-
-
-@interface NSArray (SWIFT_EXTENSION(Nimble)) <NMBOrderedCollection, NMBCollection>
-@end
-
-
-@interface NSArray (SWIFT_EXTENSION(Nimble))
-@end
-
-
-@interface NSDate (SWIFT_EXTENSION(Nimble)) <NMBDoubleConvertible>
-@property (nonatomic, readonly) double doubleValue;
-@end
-
-
-@interface NSDictionary (SWIFT_EXTENSION(Nimble)) <NMBCollection>
-@end
-
-
-@interface NSHashTable (SWIFT_EXTENSION(Nimble)) <NMBContainer>
-@end
-
-
-@interface NSHashTable (SWIFT_EXTENSION(Nimble)) <NMBCollection>
-@end
-
-
-@interface NSMapTable (SWIFT_EXTENSION(Nimble)) <NMBCollection>
-@end
-
-
-@interface NSNumber (SWIFT_EXTENSION(Nimble)) <NMBDoubleConvertible>
-@end
-
-
-@interface NSNumber (SWIFT_EXTENSION(Nimble)) <NMBComparable>
-- (NSComparisonResult)NMB_compare:(id <NMBComparable> __null_unspecified)otherObject;
-@end
-
-
-@interface NSSet (SWIFT_EXTENSION(Nimble)) <NMBContainer>
-@end
-
-
-@interface NSSet (SWIFT_EXTENSION(Nimble)) <NMBCollection>
-@end
-
-
-@interface NSString (SWIFT_EXTENSION(Nimble)) <NMBComparable>
-- (NSComparisonResult)NMB_compare:(id <NMBComparable> __null_unspecified)otherObject;
-@end
-
-
-SWIFT_CLASS("_TtC6Nimble14SourceLocation")
-@interface SourceLocation : NSObject
-@property (nonatomic, readonly, copy) NSString * __nonnull file;
-@property (nonatomic, readonly) NSUInteger line;
-@property (nonatomic, readonly, copy) NSString * __nonnull description;
-@end
-
-#pragma clang diagnostic pop
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/Nimble.h b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/Nimble.h
deleted file mode 100644
index 296760ca7..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Headers/Nimble.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#import <Foundation/Foundation.h>
-#import "NMBExceptionCapture.h"
-#import "DSL.h"
-
-FOUNDATION_EXPORT double NimbleVersionNumber;
-FOUNDATION_EXPORT const unsigned char NimbleVersionString[]; \ No newline at end of file
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Info.plist b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Info.plist
deleted file mode 100644
index 94c91ae0c..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Info.plist
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm.swiftdoc b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm.swiftdoc
deleted file mode 100644
index 4caecf642..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm.swiftdoc
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm.swiftmodule b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm.swiftmodule
deleted file mode 100644
index edbe17a17..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm.swiftmodule
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm64.swiftdoc b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm64.swiftdoc
deleted file mode 100644
index dac00fed2..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm64.swiftdoc
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm64.swiftmodule b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm64.swiftmodule
deleted file mode 100644
index f710dcbc9..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/arm64.swiftmodule
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/i386.swiftdoc b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/i386.swiftdoc
deleted file mode 100644
index 13674c926..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/i386.swiftdoc
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/i386.swiftmodule b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/i386.swiftmodule
deleted file mode 100644
index 6c83ed1dc..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/i386.swiftmodule
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/x86_64.swiftdoc b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/x86_64.swiftdoc
deleted file mode 100644
index 7b3fdcf28..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/x86_64.swiftdoc
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/x86_64.swiftmodule b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/x86_64.swiftmodule
deleted file mode 100644
index e1f97eb81..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/Nimble.swiftmodule/x86_64.swiftmodule
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/module.modulemap b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/module.modulemap
deleted file mode 100644
index a8769c240..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Modules/module.modulemap
+++ /dev/null
@@ -1,10 +0,0 @@
-framework module Nimble {
- umbrella header "Nimble.h"
-
- export *
- module * { export * }
-}
-
-module Nimble.Swift {
- header "Nimble-Swift.h"
-}
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Nimble b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Nimble
deleted file mode 100755
index 049b32402..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/Nimble
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/_CodeSignature/CodeResources b/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/_CodeSignature/CodeResources
deleted file mode 100644
index 0b4c9ddf4..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Nimble.framework/_CodeSignature/CodeResources
+++ /dev/null
@@ -1,183 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>files</key>
- <dict>
- <key>Headers/DSL.h</key>
- <data>
- auYzCIxlY2jTkyI1BlljW3KUTJY=
- </data>
- <key>Headers/NMBExceptionCapture.h</key>
- <data>
- ncXv+PqMUjLHOJpiFz6BKmTAq5o=
- </data>
- <key>Headers/Nimble-Swift.h</key>
- <data>
- IqysaLM84ng73FD3OiU/4rUAcrw=
- </data>
- <key>Headers/Nimble.h</key>
- <data>
- HXkPd6XbqY7QmdFCpOCNIHhI4v0=
- </data>
- <key>Info.plist</key>
- <data>
- KQTUNHKNb10S92HWhUO4ToOJNss=
- </data>
- <key>Modules/Nimble.swiftmodule/arm.swiftdoc</key>
- <data>
- ZoWug5SewWYwcZKS5EP693QQ9qU=
- </data>
- <key>Modules/Nimble.swiftmodule/arm.swiftmodule</key>
- <data>
- 4NJ0cyJGTkTdwKyKcq7B4dXmjqU=
- </data>
- <key>Modules/Nimble.swiftmodule/arm64.swiftdoc</key>
- <data>
- jheqAz/Tkgr3MUCuVmnG78jFmYQ=
- </data>
- <key>Modules/Nimble.swiftmodule/arm64.swiftmodule</key>
- <data>
- vlWKD5mD7bSCT8CzPg/zhA+rHiw=
- </data>
- <key>Modules/module.modulemap</key>
- <data>
- HraXvk1VTxnsGdY8oSlKGNkdg60=
- </data>
- </dict>
- <key>files2</key>
- <dict>
- <key>Headers/DSL.h</key>
- <data>
- auYzCIxlY2jTkyI1BlljW3KUTJY=
- </data>
- <key>Headers/NMBExceptionCapture.h</key>
- <data>
- ncXv+PqMUjLHOJpiFz6BKmTAq5o=
- </data>
- <key>Headers/Nimble-Swift.h</key>
- <data>
- IqysaLM84ng73FD3OiU/4rUAcrw=
- </data>
- <key>Headers/Nimble.h</key>
- <data>
- HXkPd6XbqY7QmdFCpOCNIHhI4v0=
- </data>
- <key>Modules/Nimble.swiftmodule/arm.swiftdoc</key>
- <data>
- ZoWug5SewWYwcZKS5EP693QQ9qU=
- </data>
- <key>Modules/Nimble.swiftmodule/arm.swiftmodule</key>
- <data>
- 4NJ0cyJGTkTdwKyKcq7B4dXmjqU=
- </data>
- <key>Modules/Nimble.swiftmodule/arm64.swiftdoc</key>
- <data>
- jheqAz/Tkgr3MUCuVmnG78jFmYQ=
- </data>
- <key>Modules/Nimble.swiftmodule/arm64.swiftmodule</key>
- <data>
- vlWKD5mD7bSCT8CzPg/zhA+rHiw=
- </data>
- <key>Modules/module.modulemap</key>
- <data>
- HraXvk1VTxnsGdY8oSlKGNkdg60=
- </data>
- </dict>
- <key>rules</key>
- <dict>
- <key>^</key>
- <true/>
- <key>^.*\.lproj/</key>
- <dict>
- <key>optional</key>
- <true/>
- <key>weight</key>
- <real>1000</real>
- </dict>
- <key>^.*\.lproj/locversion.plist$</key>
- <dict>
- <key>omit</key>
- <true/>
- <key>weight</key>
- <real>1100</real>
- </dict>
- <key>^version.plist$</key>
- <true/>
- </dict>
- <key>rules2</key>
- <dict>
- <key>.*\.dSYM($|/)</key>
- <dict>
- <key>weight</key>
- <real>11</real>
- </dict>
- <key>^</key>
- <dict>
- <key>weight</key>
- <real>20</real>
- </dict>
- <key>^(.*/)?\.DS_Store$</key>
- <dict>
- <key>omit</key>
- <true/>
- <key>weight</key>
- <real>2000</real>
- </dict>
- <key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
- <dict>
- <key>nested</key>
- <true/>
- <key>weight</key>
- <real>10</real>
- </dict>
- <key>^.*</key>
- <true/>
- <key>^.*\.lproj/</key>
- <dict>
- <key>optional</key>
- <true/>
- <key>weight</key>
- <real>1000</real>
- </dict>
- <key>^.*\.lproj/locversion.plist$</key>
- <dict>
- <key>omit</key>
- <true/>
- <key>weight</key>
- <real>1100</real>
- </dict>
- <key>^Info\.plist$</key>
- <dict>
- <key>omit</key>
- <true/>
- <key>weight</key>
- <real>20</real>
- </dict>
- <key>^PkgInfo$</key>
- <dict>
- <key>omit</key>
- <true/>
- <key>weight</key>
- <real>20</real>
- </dict>
- <key>^[^/]+$</key>
- <dict>
- <key>nested</key>
- <true/>
- <key>weight</key>
- <real>10</real>
- </dict>
- <key>^embedded\.provisionprofile$</key>
- <dict>
- <key>weight</key>
- <real>20</real>
- </dict>
- <key>^version\.plist$</key>
- <dict>
- <key>weight</key>
- <real>20</real>
- </dict>
- </dict>
-</dict>
-</plist>
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QCKDSL.h b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QCKDSL.h
deleted file mode 100644
index c5f3152af..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QCKDSL.h
+++ /dev/null
@@ -1,234 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@class ExampleMetadata;
-
-/**
- Provides a hook for Quick to be configured before any examples are run.
- Within this scope, override the +[QuickConfiguration configure:] method
- to set properties on a configuration object to customize Quick behavior.
- For details, see the documentation for Configuraiton.swift.
-
- @param name The name of the configuration class. Like any Objective-C
- class name, this must be unique to the current runtime
- environment.
- */
-#define QuickConfigurationBegin(name) \
- @interface name : QuickConfiguration; @end \
- @implementation name \
-
-
-/**
- Marks the end of a Quick configuration.
- Make sure you put this after `QuickConfigurationBegin`.
- */
-#define QuickConfigurationEnd \
- @end \
-
-
-/**
- Defines a new QuickSpec. Define examples and example groups within the space
- between this and `QuickSpecEnd`.
-
- @param name The name of the spec class. Like any Objective-C class name, this
- must be unique to the current runtime environment.
- */
-#define QuickSpecBegin(name) \
- @interface name : QuickSpec; @end \
- @implementation name \
- - (void)spec { \
-
-
-/**
- Marks the end of a QuickSpec. Make sure you put this after `QuickSpecBegin`.
- */
-#define QuickSpecEnd \
- } \
- @end \
-
-typedef NSDictionary *(^QCKDSLSharedExampleContext)(void);
-typedef void (^QCKDSLSharedExampleBlock)(QCKDSLSharedExampleContext);
-typedef void (^QCKDSLEmptyBlock)(void);
-typedef void (^QCKDSLExampleMetadataBlock)(ExampleMetadata *exampleMetadata);
-
-#define QUICK_EXPORT FOUNDATION_EXPORT
-
-QUICK_EXPORT void qck_beforeSuite(QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_afterSuite(QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_sharedExamples(NSString *name, QCKDSLSharedExampleBlock closure);
-QUICK_EXPORT void qck_describe(NSString *description, QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_context(NSString *description, QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_beforeEach(QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_beforeEachWithMetadata(QCKDSLExampleMetadataBlock closure);
-QUICK_EXPORT void qck_afterEach(QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_afterEachWithMetadata(QCKDSLExampleMetadataBlock closure);
-QUICK_EXPORT void qck_pending(NSString *description, QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_xdescribe(NSString *description, QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_xcontext(NSString *description, QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_fdescribe(NSString *description, QCKDSLEmptyBlock closure);
-QUICK_EXPORT void qck_fcontext(NSString *description, QCKDSLEmptyBlock closure);
-
-#ifndef QUICK_DISABLE_SHORT_SYNTAX
-/**
- Defines a closure to be run prior to any examples in the test suite.
- You may define an unlimited number of these closures, but there is no
- guarantee as to the order in which they're run.
-
- If the test suite crashes before the first example is run, this closure
- will not be executed.
-
- @param closure The closure to be run prior to any examples in the test suite.
- */
-static inline void beforeSuite(QCKDSLEmptyBlock closure) {
- qck_beforeSuite(closure);
-}
-
-
-/**
- Defines a closure to be run after all of the examples in the test suite.
- You may define an unlimited number of these closures, but there is no
- guarantee as to the order in which they're run.
-
- If the test suite crashes before all examples are run, this closure
- will not be executed.
-
- @param closure The closure to be run after all of the examples in the test suite.
- */
-static inline void afterSuite(QCKDSLEmptyBlock closure) {
- qck_afterSuite(closure);
-}
-
-/**
- Defines a group of shared examples. These examples can be re-used in several locations
- by using the `itBehavesLike` function.
-
- @param name The name of the shared example group. This must be unique across all shared example
- groups defined in a test suite.
- @param closure A closure containing the examples. This behaves just like an example group defined
- using `describe` or `context`--the closure may contain any number of `beforeEach`
- and `afterEach` closures, as well as any number of examples (defined using `it`).
- */
-static inline void sharedExamples(NSString *name, QCKDSLSharedExampleBlock closure) {
- qck_sharedExamples(name, closure);
-}
-
-/**
- Defines an example group. Example groups are logical groupings of examples.
- Example groups can share setup and teardown code.
-
- @param description An arbitrary string describing the example group.
- @param closure A closure that can contain other examples.
- */
-static inline void describe(NSString *description, QCKDSLEmptyBlock closure) {
- qck_describe(description, closure);
-}
-
-/**
- Defines an example group. Equivalent to `describe`.
- */
-static inline void context(NSString *description, QCKDSLEmptyBlock closure) {
- qck_context(description, closure);
-}
-
-/**
- Defines a closure to be run prior to each example in the current example
- group. This closure is not run for pending or otherwise disabled examples.
- An example group may contain an unlimited number of beforeEach. They'll be
- run in the order they're defined, but you shouldn't rely on that behavior.
-
- @param closure The closure to be run prior to each example.
- */
-static inline void beforeEach(QCKDSLEmptyBlock closure) {
- qck_beforeEach(closure);
-}
-
-/**
- Identical to QCKDSL.beforeEach, except the closure is provided with
- metadata on the example that the closure is being run prior to.
- */
-static inline void beforeEachWithMetadata(QCKDSLExampleMetadataBlock closure) {
- qck_beforeEachWithMetadata(closure);
-}
-
-/**
- Defines a closure to be run after each example in the current example
- group. This closure is not run for pending or otherwise disabled examples.
- An example group may contain an unlimited number of afterEach. They'll be
- run in the order they're defined, but you shouldn't rely on that behavior.
-
- @param closure The closure to be run after each example.
- */
-static inline void afterEach(QCKDSLEmptyBlock closure) {
- qck_afterEach(closure);
-}
-
-/**
- Identical to QCKDSL.afterEach, except the closure is provided with
- metadata on the example that the closure is being run after.
- */
-static inline void afterEachWithMetadata(QCKDSLExampleMetadataBlock closure) {
- qck_afterEachWithMetadata(closure);
-}
-
-/**
- Defines an example or example group that should not be executed. Use `pending` to temporarily disable
- examples or groups that should not be run yet.
-
- @param description An arbitrary string describing the example or example group.
- @param closure A closure that will not be evaluated.
- */
-static inline void pending(NSString *description, QCKDSLEmptyBlock closure) {
- qck_pending(description, closure);
-}
-
-/**
- Use this to quickly mark a `describe` block as pending.
- This disables all examples within the block.
- */
-static inline void xdescribe(NSString *description, QCKDSLEmptyBlock closure) {
- qck_xdescribe(description, closure);
-}
-
-/**
- Use this to quickly mark a `context` block as pending.
- This disables all examples within the block.
- */
-static inline void xcontext(NSString *description, QCKDSLEmptyBlock closure) {
- qck_xcontext(description, closure);
-}
-
-/**
- Use this to quickly focus a `describe` block, focusing the examples in the block.
- If any examples in the test suite are focused, only those examples are executed.
- This trumps any explicitly focused or unfocused examples within the block--they are all treated as focused.
- */
-static inline void fdescribe(NSString *description, QCKDSLEmptyBlock closure) {
- qck_fdescribe(description, closure);
-}
-
-/**
- Use this to quickly focus a `context` block. Equivalent to `fdescribe`.
- */
-static inline void fcontext(NSString *description, QCKDSLEmptyBlock closure) {
- qck_fcontext(description, closure);
-}
-
-#define it qck_it
-#define xit qck_xit
-#define fit qck_fit
-#define itBehavesLike qck_itBehavesLike
-#define xitBehavesLike qck_xitBehavesLike
-#define fitBehavesLike qck_fitBehavesLike
-#endif
-
-#define qck_it qck_it_builder(@{}, @(__FILE__), __LINE__)
-#define qck_xit qck_it_builder(@{Filter.pending: @YES}, @(__FILE__), __LINE__)
-#define qck_fit qck_it_builder(@{Filter.focused: @YES}, @(__FILE__), __LINE__)
-#define qck_itBehavesLike qck_itBehavesLike_builder(@{}, @(__FILE__), __LINE__)
-#define qck_xitBehavesLike qck_itBehavesLike_builder(@{Filter.pending: @YES}, @(__FILE__), __LINE__)
-#define qck_fitBehavesLike qck_itBehavesLike_builder(@{Filter.focused: @YES}, @(__FILE__), __LINE__)
-
-typedef void (^QCKItBlock)(NSString *description, QCKDSLEmptyBlock closure);
-typedef void (^QCKItBehavesLikeBlock)(NSString *description, QCKDSLSharedExampleContext context);
-
-QUICK_EXPORT QCKItBlock qck_it_builder(NSDictionary *flags, NSString *file, NSUInteger line);
-QUICK_EXPORT QCKItBehavesLikeBlock qck_itBehavesLike_builder(NSDictionary *flags, NSString *file, NSUInteger line);
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/Quick-Swift.h b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/Quick-Swift.h
deleted file mode 100644
index 5a94f25ff..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/Quick-Swift.h
+++ /dev/null
@@ -1,260 +0,0 @@
-// Generated by Apple Swift version 2.1.1 (swiftlang-700.1.101.15 clang-700.1.81)
-#pragma clang diagnostic push
-
-#if defined(__has_include) && __has_include(<swift/objc-prologue.h>)
-# include <swift/objc-prologue.h>
-#endif
-
-#pragma clang diagnostic ignored "-Wauto-import"
-#include <objc/NSObject.h>
-#include <stdint.h>
-#include <stddef.h>
-#include <stdbool.h>
-
-#if defined(__has_include) && __has_include(<uchar.h>)
-# include <uchar.h>
-#elif !defined(__cplusplus) || __cplusplus < 201103L
-typedef uint_least16_t char16_t;
-typedef uint_least32_t char32_t;
-#endif
-
-typedef struct _NSZone NSZone;
-
-#if !defined(SWIFT_PASTE)
-# define SWIFT_PASTE_HELPER(x, y) x##y
-# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
-#endif
-#if !defined(SWIFT_METATYPE)
-# define SWIFT_METATYPE(X) Class
-#endif
-
-#if defined(__has_attribute) && __has_attribute(objc_runtime_name)
-# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
-#else
-# define SWIFT_RUNTIME_NAME(X)
-#endif
-#if defined(__has_attribute) && __has_attribute(swift_name)
-# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
-#else
-# define SWIFT_COMPILE_NAME(X)
-#endif
-#if !defined(SWIFT_CLASS_EXTRA)
-# define SWIFT_CLASS_EXTRA
-#endif
-#if !defined(SWIFT_PROTOCOL_EXTRA)
-# define SWIFT_PROTOCOL_EXTRA
-#endif
-#if !defined(SWIFT_ENUM_EXTRA)
-# define SWIFT_ENUM_EXTRA
-#endif
-#if !defined(SWIFT_CLASS)
-# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
-# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
-# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
-# else
-# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
-# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
-# endif
-#endif
-
-#if !defined(SWIFT_PROTOCOL)
-# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
-# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
-#endif
-
-#if !defined(SWIFT_EXTENSION)
-# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
-#endif
-
-#if !defined(OBJC_DESIGNATED_INITIALIZER)
-# if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
-# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
-# else
-# define OBJC_DESIGNATED_INITIALIZER
-# endif
-#endif
-#if !defined(SWIFT_ENUM)
-# define SWIFT_ENUM(_type, _name) enum _name : _type _name; enum SWIFT_ENUM_EXTRA _name : _type
-#endif
-typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
-typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
-typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
-typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
-typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
-typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
-typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
-typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
-typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
-#if defined(__has_feature) && __has_feature(modules)
-@import ObjectiveC;
-@import Foundation;
-@import XCTest;
-#endif
-
-#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
-#pragma clang diagnostic ignored "-Wduplicate-method-arg"
-
-
-/// An object encapsulating the file and line number at which a particular example is defined.
-SWIFT_CLASS("_TtC5Quick8Callsite")
-@interface Callsite : NSObject
-
-/// The absolute path of the file in which an example is defined.
-@property (nonatomic, readonly, copy) NSString * __nonnull file;
-
-/// The line number on which an example is defined.
-@property (nonatomic, readonly) NSUInteger line;
-@end
-
-@class Example;
-@class ExampleMetadata;
-
-
-/// A configuration encapsulates various options you can use to configure Quick's behavior.
-SWIFT_CLASS("_TtC5Quick13Configuration")
-@interface Configuration : NSObject
-
-/// Run all examples if none match the configured filters. True by default.
-@property (nonatomic) BOOL runAllWhenEverythingFiltered;
-
-/// Registers an inclusion filter.
-///
-/// All examples are filtered using all inclusion filters.
-/// The remaining examples are run. If no examples remain, all examples are run.
-///
-/// \param filter A filter that, given an example, returns a value indicating
-/// whether that example should be included in the examples
-/// that are run.
-- (void)include:(BOOL (^ __nonnull)(Example * __nonnull))filter;
-
-/// Registers an exclusion filter.
-///
-/// All examples that remain after being filtered by the inclusion filters are
-/// then filtered via all exclusion filters.
-///
-/// \param filter A filter that, given an example, returns a value indicating
-/// whether that example should be excluded from the examples
-/// that are run.
-- (void)exclude:(BOOL (^ __nonnull)(Example * __nonnull))filter;
-- (void)beforeEachWithMetadata:(void (^ __nonnull)(ExampleMetadata * __nonnull))closure;
-
-/// Like Quick.DSL.beforeEach, this configures Quick to execute the given closure before each example that is run. The closure passed to this method is executed before each example Quick runs, globally across the test suite. You may call this method multiple times across mulitple +[QuickConfigure configure:] methods in order to define several closures to run before each example.
-///
-/// Note that, since Quick makes no guarantee as to the order in which
-/// +[QuickConfiguration configure:] methods are evaluated, there is no
-/// guarantee as to the order in which beforeEach closures are evaluated
-/// either. Mulitple beforeEach defined on a single configuration, however,
-/// will be executed in the order they're defined.
-///
-/// \param closure The closure to be executed before each example
-/// in the test suite.
-- (void)beforeEach:(void (^ __nonnull)(void))closure;
-- (void)afterEachWithMetadata:(void (^ __nonnull)(ExampleMetadata * __nonnull))closure;
-
-/// Like Quick.DSL.afterEach, this configures Quick to execute the given closure after each example that is run. The closure passed to this method is executed after each example Quick runs, globally across the test suite. You may call this method multiple times across mulitple +[QuickConfigure configure:] methods in order to define several closures to run after each example.
-///
-/// Note that, since Quick makes no guarantee as to the order in which
-/// +[QuickConfiguration configure:] methods are evaluated, there is no
-/// guarantee as to the order in which afterEach closures are evaluated
-/// either. Mulitple afterEach defined on a single configuration, however,
-/// will be executed in the order they're defined.
-///
-/// \param closure The closure to be executed before each example
-/// in the test suite.
-- (void)afterEach:(void (^ __nonnull)(void))closure;
-
-/// Like Quick.DSL.beforeSuite, this configures Quick to execute the given closure prior to any and all examples that are run. The two methods are functionally equivalent.
-- (void)beforeSuite:(void (^ __nonnull)(void))closure;
-
-/// Like Quick.DSL.afterSuite, this configures Quick to execute the given closure after all examples have been run. The two methods are functionally equivalent.
-- (void)afterSuite:(void (^ __nonnull)(void))closure;
-- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
-@end
-
-
-
-/// Examples, defined with the it function, use assertions to demonstrate how code should behave. These are like "tests" in XCTest.
-SWIFT_CLASS("_TtC5Quick7Example")
-@interface Example : NSObject
-
-/// A boolean indicating whether the example is a shared example; i.e.: whether it is an example defined with itBehavesLike.
-@property (nonatomic) BOOL isSharedExample;
-
-/// The site at which the example is defined. This must be set correctly in order for Xcode to highlight the correct line in red when reporting a failure.
-@property (nonatomic, strong) Callsite * __nonnull callsite;
-@property (nonatomic, readonly, copy) NSString * __nonnull description;
-
-/// The example name. A name is a concatenation of the name of the example group the example belongs to, followed by the description of the example itself.
-///
-/// The example name is used to generate a test method selector
-/// to be displayed in Xcode's test navigator.
-@property (nonatomic, readonly, copy) NSString * __nonnull name;
-
-/// Executes the example closure, as well as all before and after closures defined in the its surrounding example groups.
-- (void)run;
-@end
-
-
-
-/// Example groups are logical groupings of examples, defined with the describe and context functions. Example groups can share setup and teardown code.
-SWIFT_CLASS("_TtC5Quick12ExampleGroup")
-@interface ExampleGroup : NSObject
-@property (nonatomic, readonly, copy) NSString * __nonnull description;
-
-/// Returns a list of examples that belong to this example group, or to any of its descendant example groups.
-@property (nonatomic, readonly, copy) NSArray<Example *> * __nonnull examples;
-@end
-
-
-
-/// A class that encapsulates information about an example, including the index at which the example was executed, as well as the example itself.
-SWIFT_CLASS("_TtC5Quick15ExampleMetadata")
-@interface ExampleMetadata : NSObject
-
-/// The example for which this metadata was collected.
-@property (nonatomic, readonly, strong) Example * __nonnull example;
-
-/// The index at which this example was executed in the test suite.
-@property (nonatomic, readonly) NSInteger exampleIndex;
-@end
-
-
-
-/// A namespace for filter flag keys, defined primarily to make the keys available in Objective-C.
-SWIFT_CLASS("_TtC5Quick6Filter")
-@interface Filter : NSObject
-
-/// Example and example groups with [Focused: true] are included in test runs, excluding all other examples without this flag. Use this to only run one or two tests that you're currently focusing on.
-+ (NSString * __nonnull)focused;
-
-/// Example and example groups with [Pending: true] are excluded from test runs. Use this to temporarily suspend examples that you know do not pass yet.
-+ (NSString * __nonnull)pending;
-- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
-@end
-
-
-@interface NSBundle (SWIFT_EXTENSION(Quick))
-@end
-
-
-
-/// A base class for a class cluster of Quick test suites, that should correctly build dynamic test suites for XCTest to execute.
-SWIFT_CLASS("_TtC5Quick14QuickTestSuite")
-@interface QuickTestSuite : XCTestSuite
-
-/// Construct a test suite for a specific, selected subset of test cases (rather than the default, which as all test cases).
-///
-/// If this method is called multiple times for the same test case class, e.g..
-///
-/// FooSpec/testFoo
-/// FooSpec/testBar
-///
-/// It is expected that the first call should return a valid test suite, and
-/// all subsequent calls should return <code>nil
-/// </code>.
-+ (QuickTestSuite * __nullable)selectedTestSuiteForTestCaseWithName:(NSString * __nonnull)name;
-- (nonnull instancetype)initWithName:(NSString * __nonnull)name OBJC_DESIGNATED_INITIALIZER;
-- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
-@end
-
-#pragma clang diagnostic pop
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/Quick.h b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/Quick.h
deleted file mode 100644
index 87dad100a..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/Quick.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#import <Foundation/Foundation.h>
-
-//! Project version number for Quick.
-FOUNDATION_EXPORT double QuickVersionNumber;
-
-//! Project version string for Quick.
-FOUNDATION_EXPORT const unsigned char QuickVersionString[];
-
-#import "QuickSpec.h"
-#import "QCKDSL.h"
-#import "QuickConfiguration.h"
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QuickConfiguration.h b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QuickConfiguration.h
deleted file mode 100644
index 56461993f..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QuickConfiguration.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#import <Foundation/Foundation.h>
-
-@class Configuration;
-
-/**
- Subclass QuickConfiguration and override the +[QuickConfiguration configure:]
- method in order to configure how Quick behaves when running specs, or to define
- shared examples that are used across spec files.
- */
-@interface QuickConfiguration : NSObject
-
-/**
- This method is executed on each subclass of this class before Quick runs
- any examples. You may override this method on as many subclasses as you like, but
- there is no guarantee as to the order in which these methods are executed.
-
- You can override this method in order to:
-
- 1. Configure how Quick behaves, by modifying properties on the Configuration object.
- Setting the same properties in several methods has undefined behavior.
-
- 2. Define shared examples using `sharedExamples`.
-
- @param configuration A mutable object that is used to configure how Quick behaves on
- a framework level. For details on all the options, see the
- documentation in Configuration.swift.
- */
-+ (void)configure:(Configuration *)configuration;
-
-@end
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QuickSpec.h b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QuickSpec.h
deleted file mode 100644
index 08d007981..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Headers/QuickSpec.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#import <XCTest/XCTest.h>
-
-/**
- QuickSpec is a base class all specs written in Quick inherit from.
- They need to inherit from QuickSpec, a subclass of XCTestCase, in
- order to be discovered by the XCTest framework.
-
- XCTest automatically compiles a list of XCTestCase subclasses included
- in the test target. It iterates over each class in that list, and creates
- a new instance of that class for each test method. It then creates an
- "invocation" to execute that test method. The invocation is an instance of
- NSInvocation, which represents a single message send in Objective-C.
- The invocation is set on the XCTestCase instance, and the test is run.
-
- Most of the code in QuickSpec is dedicated to hooking into XCTest events.
- First, when the spec is first loaded and before it is sent any messages,
- the +[NSObject initialize] method is called. QuickSpec overrides this method
- to call +[QuickSpec spec]. This builds the example group stacks and
- registers them with Quick.World, a global register of examples.
-
- Then, XCTest queries QuickSpec for a list of test methods. Normally, XCTest
- automatically finds all methods whose selectors begin with the string "test".
- However, QuickSpec overrides this default behavior by implementing the
- +[XCTestCase testInvocations] method. This method iterates over each example
- registered in Quick.World, defines a new method for that example, and
- returns an invocation to call that method to XCTest. Those invocations are
- the tests that are run by XCTest. Their selector names are displayed in
- the Xcode test navigation bar.
- */
-@interface QuickSpec : XCTestCase
-
-/**
- Override this method in your spec to define a set of example groups
- and examples.
-
- override class func spec() {
- describe("winter") {
- it("is coming") {
- // ...
- }
- }
- }
-
- See DSL.swift for more information on what syntax is available.
- */
-- (void)spec;
-
-@end
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Info.plist b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Info.plist
deleted file mode 100644
index fec3141bb..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Info.plist
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm.swiftdoc b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm.swiftdoc
deleted file mode 100644
index fb2a6444e..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm.swiftdoc
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm.swiftmodule b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm.swiftmodule
deleted file mode 100644
index 1482eedb9..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm.swiftmodule
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm64.swiftdoc b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm64.swiftdoc
deleted file mode 100644
index 1b804226b..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm64.swiftdoc
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm64.swiftmodule b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm64.swiftmodule
deleted file mode 100644
index 166fe09b0..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/arm64.swiftmodule
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/i386.swiftdoc b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/i386.swiftdoc
deleted file mode 100644
index cce21c570..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/i386.swiftdoc
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/i386.swiftmodule b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/i386.swiftmodule
deleted file mode 100644
index e5fb3d777..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/i386.swiftmodule
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/x86_64.swiftdoc b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/x86_64.swiftdoc
deleted file mode 100644
index 8ee7c2567..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/x86_64.swiftdoc
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/x86_64.swiftmodule b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/x86_64.swiftmodule
deleted file mode 100644
index f212f8acf..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/Quick.swiftmodule/x86_64.swiftmodule
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/module.modulemap b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/module.modulemap
deleted file mode 100644
index 43f1882ba..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Modules/module.modulemap
+++ /dev/null
@@ -1,10 +0,0 @@
-framework module Quick {
- umbrella header "Quick.h"
-
- export *
- module * { export * }
-}
-
-module Quick.Swift {
- header "Quick-Swift.h"
-}
diff --git a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Quick b/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Quick
deleted file mode 100755
index 8306f0026..000000000
--- a/SmartDeviceLink-iOS/Carthage/Build/iOS/Quick.framework/Quick
+++ /dev/null
Binary files differ
diff --git a/SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocol.m b/SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocol.m
index fa55239a6..d1b5e15ef 100644
--- a/SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocol.m
+++ b/SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocol.m
@@ -57,11 +57,15 @@
return self;
}
-- (void)storeSessionID:(UInt8)sessionID forServiceType:(SDLServiceType)serviceType {
+- (void)sdl_storeSessionID:(UInt8)sessionID forServiceType:(SDLServiceType)serviceType {
_sessionIDs[@(serviceType)] = @(sessionID);
}
-- (UInt8)retrieveSessionIDforServiceType:(SDLServiceType)serviceType {
+- (void)sdl_removeSessionIdForServiceType:(SDLServiceType)serviceType {
+ [_sessionIDs removeObjectForKey:@(serviceType)];
+}
+
+- (UInt8)sdl_retrieveSessionIDforServiceType:(SDLServiceType)serviceType {
NSNumber *number = _sessionIDs[@(serviceType)];
if (!number) {
NSString *logMessage = [NSString stringWithFormat:@"Warning: Tried to retrieve sessionID for serviceType %i, but no sessionID is saved for that service type.", serviceType];
@@ -77,8 +81,8 @@
case SDLServiceType_RPC: {
// Need a different header for starting the RPC service
header = [SDLProtocolHeader headerForVersion:1];
- if ([self retrieveSessionIDforServiceType:SDLServiceType_RPC]) {
- header.sessionID = [self retrieveSessionIDforServiceType:SDLServiceType_RPC];
+ if ([self sdl_retrieveSessionIDforServiceType:SDLServiceType_RPC]) {
+ header.sessionID = [self sdl_retrieveSessionIDforServiceType:SDLServiceType_RPC];
}
} break;
default: {
@@ -98,7 +102,7 @@
header.frameType = SDLFrameType_Control;
header.serviceType = serviceType;
header.frameData = SDLFrameData_EndSession;
- header.sessionID = [self retrieveSessionIDforServiceType:serviceType];
+ header.sessionID = [self sdl_retrieveSessionIDforServiceType:serviceType];
SDLProtocolMessage *message = [SDLProtocolMessage messageWithHeader:header andPayload:nil];
[self sendDataToTransport:message.data withPriority:serviceType];
@@ -154,9 +158,9 @@
// Build the protocol level header & message
SDLProtocolHeader *header = [SDLProtocolHeader headerForVersion:[SDLGlobals globals].protocolVersion];
header.frameType = SDLFrameType_Single;
- header.serviceType = SDLServiceType_RPC;
+ header.serviceType = (message.bulkData.length <= 0) ? SDLServiceType_RPC : SDLServiceType_BulkData;
header.frameData = SDLFrameData_SingleFrame;
- header.sessionID = [self retrieveSessionIDforServiceType:SDLServiceType_RPC];
+ header.sessionID = [self sdl_retrieveSessionIDforServiceType:SDLServiceType_RPC];
header.bytesInPayload = (UInt32)messagePayload.length;
// V2+ messages need to have message ID property set.
@@ -324,7 +328,7 @@
break;
}
- [self storeSessionID:sessionID forServiceType:serviceType];
+ [self sdl_storeSessionID:sessionID forServiceType:serviceType];
for (id<SDLProtocolListener> listener in self.protocolDelegateTable.allObjects) {
if ([listener respondsToSelector:@selector(handleProtocolStartSessionACK:sessionID:version:)]) {
@@ -342,6 +346,9 @@
}
- (void)handleProtocolEndSessionACK:(SDLServiceType)serviceType {
+ // Remove the session id
+ [self sdl_removeSessionIdForServiceType:serviceType];
+
for (id<SDLProtocolListener> listener in self.protocolDelegateTable.allObjects) {
if ([listener respondsToSelector:@selector(handleProtocolEndSessionACK:)]) {
[listener handleProtocolEndSessionACK:serviceType];
diff --git a/SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocolMessage.m b/SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocolMessage.m
index 4689cf3e8..e96c61455 100644
--- a/SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocolMessage.m
+++ b/SmartDeviceLink-iOS/SmartDeviceLink/SDLProtocolMessage.m
@@ -55,7 +55,7 @@
[description appendString:self.header.description];
// If it's an RPC, provide greater detail
- if (self.header.serviceType == SDLServiceType_RPC && (self.header.frameType == SDLFrameType_Single)) {
+ if (((self.header.serviceType == SDLServiceType_RPC) || (self.header.serviceType == SDLServiceType_BulkData)) && (self.header.frameType == SDLFrameType_Single)) {
// version of RPC Message determines how we access the info.
if (self.header.version >= 2) {
SDLRPCPayload *rpcPayload = [SDLRPCPayload rpcPayloadWithData:self.payload];
diff --git a/SmartDeviceLink-iOS/SmartDeviceLink/SDLProxy.m b/SmartDeviceLink-iOS/SmartDeviceLink/SDLProxy.m
index f6c7d091c..458760e07 100644
--- a/SmartDeviceLink-iOS/SmartDeviceLink/SDLProxy.m
+++ b/SmartDeviceLink-iOS/SmartDeviceLink/SDLProxy.m
@@ -69,35 +69,35 @@ const int POLICIES_CORRELATION_ID = 65535;
_debugConsoleGroupName = @"default";
_lsm = [[SDLLockScreenManager alloc] init];
_alreadyDestructed = NO;
-
+
_mutableProxyListeners = [NSMutableSet setWithObject:theDelegate];
_protocol = protocol;
_transport = transport;
_transport.delegate = protocol;
[_protocol.protocolDelegateTable addObject:self];
_protocol.transport = transport;
-
+
[self.transport connect];
-
+
[SDLDebugTool logInfo:@"SDLProxy initWithTransport"];
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
}
-
+
return self;
}
- (void)destructObjects {
if (!_alreadyDestructed) {
_alreadyDestructed = YES;
-
+
[[NSNotificationCenter defaultCenter] removeObserver:self];
[[EAAccessoryManager sharedAccessoryManager] unregisterForLocalNotifications];
-
+
[[SDLURLSession defaultSession] cancelAllTasks];
-
+
[self.protocol dispose];
[self.transport dispose];
-
+
_transport = nil;
_protocol = nil;
_mutableProxyListeners = nil;
@@ -108,7 +108,7 @@ const int POLICIES_CORRELATION_ID = 65535;
if (self.transport != nil) {
[self.transport disconnect];
}
-
+
[self destructObjects];
}
@@ -142,7 +142,7 @@ const int POLICIES_CORRELATION_ID = 65535;
_streamingMediaManager = [[SDLStreamingMediaManager alloc] initWithProtocol:self.protocol];
[self.protocol.protocolDelegateTable addObject:_streamingMediaManager];
}
-
+
return _streamingMediaManager;
}
@@ -151,9 +151,9 @@ const int POLICIES_CORRELATION_ID = 65535;
- (void)onProtocolOpened {
_isConnected = YES;
[SDLDebugTool logInfo:@"StartSession (request)" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
-
+
[self.protocol sendStartSessionWithType:SDLServiceType_RPC];
-
+
if (self.startSessionTimer == nil) {
self.startSessionTimer = [[SDLTimer alloc] initWithDuration:startSessionTime repeat:NO];
__weak typeof(self) weakSelf = self;
@@ -176,11 +176,11 @@ const int POLICIES_CORRELATION_ID = 65535;
- (void)handleProtocolStartSessionACK:(SDLServiceType)serviceType sessionID:(Byte)sessionID version:(Byte)version {
// Turn off the timer, the start session response came back
[self.startSessionTimer cancel];
-
+
NSString *logMessage = [NSString stringWithFormat:@"StartSession (response)\nSessionId: %d for serviceType %d", sessionID, serviceType];
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
- if (serviceType == SDLServiceType_RPC || [SDLGlobals globals].protocolVersion >= 2) {
+ if (serviceType == SDLServiceType_RPC) {
[self invokeMethodOnDelegates:@selector(onProxyOpened) withObject:nil];
}
}
@@ -221,7 +221,7 @@ const int POLICIES_CORRELATION_ID = 65535;
SDLRPCMessage *message = [[SDLRPCMessage alloc] initWithDictionary:[dict mutableCopy]];
NSString *functionName = [message getFunctionName];
NSString *messageType = [message messageType];
-
+
// If it's a response, append response
if ([messageType isEqualToString:NAMES_response]) {
BOOL notGenericResponseMessage = ![functionName isEqualToString:@"GenericResponse"];
@@ -229,50 +229,50 @@ const int POLICIES_CORRELATION_ID = 65535;
functionName = [NSString stringWithFormat:@"%@Response", functionName];
}
}
-
+
// From the function name, create the corresponding RPCObject and initialize it
NSString *functionClassName = [NSString stringWithFormat:@"SDL%@", functionName];
SDLRPCMessage *newMessage = [[NSClassFromString(functionClassName) alloc] initWithDictionary:dict];
-
+
// Log the RPC message
NSString *logMessage = [NSString stringWithFormat:@"%@", newMessage];
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
-
+
// Intercept and handle several messages ourselves
if ([functionName isEqualToString:NAMES_OnAppInterfaceUnregistered] || [functionName isEqualToString:NAMES_UnregisterAppInterface]) {
[self handleRPCUnregistered:dict];
}
-
+
if ([functionName isEqualToString:@"RegisterAppInterfaceResponse"]) {
[self handleRegisterAppInterfaceResponse:(SDLRPCResponse *)newMessage];
}
-
+
if ([functionName isEqualToString:@"EncodedSyncPDataResponse"]) {
[SDLDebugTool logInfo:@"EncodedSyncPData (response)" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
}
-
+
if ([functionName isEqualToString:@"OnEncodedSyncPData"]) {
[self handleSyncPData:newMessage];
}
-
+
if ([functionName isEqualToString:@"OnSystemRequest"]) {
[self handleSystemRequest:dict];
}
-
+
if ([functionName isEqualToString:@"SystemRequestResponse"]) {
[self handleSystemRequestResponse:newMessage];
}
-
+
// Formulate the name of the method to call and invoke the method on the delegate(s)
NSString *handlerName = [NSString stringWithFormat:@"on%@:", functionName];
SEL handlerSelector = NSSelectorFromString(handlerName);
[self invokeMethodOnDelegates:handlerSelector withObject:newMessage];
-
+
// When an OnHMIStatus notification comes in, after passing it on (above), generate an "OnLockScreenNotification"
if ([functionName isEqualToString:@"OnHMIStatus"]) {
[self handleAfterHMIStatus:newMessage];
}
-
+
// When an OnDriverDistraction notification comes in, after passing it on (above), generate an "OnLockScreenNotification"
if ([functionName isEqualToString:@"OnDriverDistraction"]) {
[self handleAfterDriverDistraction:newMessage];
@@ -301,11 +301,11 @@ const int POLICIES_CORRELATION_ID = 65535;
// If URL != nil, perform HTTP Post and don't pass the notification to proxy listeners
NSString *logMessage = [NSString stringWithFormat:@"OnEncodedSyncPData (notification)\n%@", message];
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
-
+
NSString *urlString = (NSString *)[message getParameters:@"URL"];
NSDictionary *encodedSyncPData = (NSDictionary *)[message getParameters:@"data"];
NSNumber *encodedSyncPTimeout = (NSNumber *)[message getParameters:@"Timeout"];
-
+
if (urlString && encodedSyncPData && encodedSyncPTimeout) {
[self sendEncodedSyncPData:encodedSyncPData toURL:urlString withTimeout:encodedSyncPTimeout];
}
@@ -313,19 +313,19 @@ const int POLICIES_CORRELATION_ID = 65535;
- (void)handleSystemRequest:(NSDictionary *)dict {
[SDLDebugTool logInfo:@"OnSystemRequest (notification)" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
-
+
SDLOnSystemRequest *systemRequest = [[SDLOnSystemRequest alloc] initWithDictionary:[dict mutableCopy]];
SDLRequestType *requestType = systemRequest.requestType;
-
+
// Handle the various OnSystemRequest types
if (requestType == [SDLRequestType PROPRIETARY]) {
[self handleSystemRequestProprietary:systemRequest];
} else if (requestType == [SDLRequestType LOCK_SCREEN_ICON_URL]) {
[self handleSystemRequestLockScreenIconURL:systemRequest];
} else if (requestType == [SDLRequestType HTTP]) {
- [self handleSystemRequestHTTP:systemRequest];
+ [self sdl_handleSystemRequestHTTP:systemRequest];
} else if (requestType == [SDLRequestType LAUNCH_APP]) {
- [self handleSystemRequestLaunchApp:systemRequest];
+ [self sdl_handleSystemRequestLaunchApp:systemRequest];
}
}
@@ -340,7 +340,7 @@ const int POLICIES_CORRELATION_ID = 65535;
NSString *statusString = (NSString *)[message getParameters:NAMES_hmiLevel];
SDLHMILevel *hmiLevel = [SDLHMILevel valueOf:statusString];
_lsm.hmiLevel = hmiLevel;
-
+
SEL callbackSelector = NSSelectorFromString(@"onOnLockScreenNotification:");
[self invokeMethodOnDelegates:callbackSelector withObject:_lsm.lockScreenStatusNotification];
}
@@ -349,14 +349,14 @@ const int POLICIES_CORRELATION_ID = 65535;
NSString *stateString = (NSString *)[message getParameters:NAMES_state];
BOOL state = [stateString isEqualToString:@"DD_ON"] ? YES : NO;
_lsm.driverDistracted = state;
-
+
SEL callbackSelector = NSSelectorFromString(@"onOnLockScreenNotification:");
[self invokeMethodOnDelegates:callbackSelector withObject:_lsm.lockScreenStatusNotification];
}
#pragma mark OnSystemRequest Handlers
-- (void)handleSystemRequestLaunchApp:(SDLOnSystemRequest *)request {
+- (void)sdl_handleSystemRequestLaunchApp:(SDLOnSystemRequest *)request {
NSURL *URLScheme = [NSURL URLWithString:request.url];
if (URLScheme == nil) {
[SDLDebugTool logInfo:[NSString stringWithFormat:@"Launch App failure: invalid URL sent from module: %@", request.url] withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
@@ -377,11 +377,11 @@ const int POLICIES_CORRELATION_ID = 65535;
if (JSONDictionary == nil || request.url == nil) {
return;
}
-
+
NSDictionary *requestData = JSONDictionary[@"HTTPRequest"];
NSString *bodyString = requestData[@"body"];
NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
-
+
// Parse and display the policy data.
SDLPolicyDataParser *pdp = [[SDLPolicyDataParser alloc] init];
NSData *policyData = [pdp unwrap:bodyData];
@@ -390,33 +390,33 @@ const int POLICIES_CORRELATION_ID = 65535;
NSString *logMessage = [NSString stringWithFormat:@"Policy Data from Module\n%@", pdp];
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
}
-
+
// Send the HTTP Request
[self uploadForBodyDataDictionary:JSONDictionary
URLString:request.url
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSString *logMessage = nil;
-
+
if (error) {
logMessage = [NSString stringWithFormat:@"OnSystemRequest (HTTP response) = ERROR: %@", error];
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
return;
}
-
+
if (data == nil || data.length == 0) {
[SDLDebugTool logInfo:@"OnSystemRequest (HTTP response) failure: no data returned" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
return;
}
-
+
// Show the HTTP response
[SDLDebugTool logInfo:@"OnSystemRequest (HTTP response)" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
-
+
// Create the SystemRequest RPC to send to module.
SDLSystemRequest *request = [[SDLSystemRequest alloc] init];
request.correlationID = [NSNumber numberWithInt:POLICIES_CORRELATION_ID];
request.requestType = [SDLRequestType PROPRIETARY];
request.bulkData = data;
-
+
// Parse and display the policy data.
SDLPolicyDataParser *pdp = [[SDLPolicyDataParser alloc] init];
NSData *policyData = [pdp unwrap:data];
@@ -425,7 +425,7 @@ const int POLICIES_CORRELATION_ID = 65535;
logMessage = [NSString stringWithFormat:@"Policy Data from Cloud\n%@", pdp];
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
}
-
+
// Send and log RPC Request
logMessage = [NSString stringWithFormat:@"SystemRequest (request)\n%@\nData length=%lu", [request serializeAsDictionary:2], (unsigned long)data.length];
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
@@ -441,55 +441,47 @@ const int POLICIES_CORRELATION_ID = 65535;
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
return;
}
-
+
UIImage *icon = [UIImage imageWithData:data];
[self invokeMethodOnDelegates:@selector(onReceivedLockScreenIcon:) withObject:icon];
}];
}
-- (void)handleSystemRequestHTTP:(SDLOnSystemRequest *)request {
+- (void)sdl_handleSystemRequestHTTP:(SDLOnSystemRequest *)request {
if (request.bulkData.length == 0) {
// TODO: not sure how we want to handle http requests that don't have bulk data (maybe as GET?)
return;
}
- NSError *error = nil;
- NSDictionary *body = [NSJSONSerialization JSONObjectWithData:request.bulkData options:kNilOptions error:&error];
- if (error) {
- NSLog(@"error creating body from bulk data: %@", error.localizedDescription);
- return;
- }
-
- [self uploadForBodyDataDictionary:body
- URLString:request.url
- completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
- NSString *logMessage = nil;
- if (error) {
- logMessage = [NSString stringWithFormat:@"OnSystemRequest (HTTP response) = ERROR: %@", error];
- [SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
- return;
- }
-
- if (data.length == 0) {
- [SDLDebugTool logInfo:@"OnSystemRequest (HTTP response) failure: no data returned" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
- return;
- }
-
- // Show the HTTP response
- [SDLDebugTool logInfo:@"OnSystemRequest (HTTP response)" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
-
- // Create the SystemRequest RPC to send to module.
- SDLPutFile *putFile = [[SDLPutFile alloc] init];
- putFile.fileType = [SDLFileType JSON];
- putFile.correlationID = @(POLICIES_CORRELATION_ID);
- putFile.syncFileName = @"response_data";
- putFile.bulkData = data;
-
- // Send and log RPC Request
- logMessage = [NSString stringWithFormat:@"SystemRequest (request)\n%@\nData length=%lu", [request serializeAsDictionary:2], (unsigned long)data.length];
- [SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
- [self sendRPC:putFile];
- }];
+ [self sdl_uploadData:request.bulkData toURLString:request.url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
+ NSString *logMessage = nil;
+ if (error != nil) {
+ logMessage = [NSString stringWithFormat:@"OnSystemRequest (HTTP response) = ERROR: %@", error.localizedDescription];
+ [SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
+ return;
+ }
+
+ if (data.length == 0) {
+ [SDLDebugTool logInfo:@"OnSystemRequest (HTTP response) failure: no data returned" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
+ return;
+ }
+
+ // Show the HTTP response
+ NSString *responseLogString = [NSString stringWithFormat:@"OnSystemRequest (HTTP) response: %@", response];
+ [SDLDebugTool logInfo:responseLogString withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
+
+ // Create the SystemRequest RPC to send to module.
+ SDLPutFile *putFile = [[SDLPutFile alloc] init];
+ putFile.fileType = [SDLFileType JSON];
+ putFile.correlationID = @(POLICIES_CORRELATION_ID);
+ putFile.syncFileName = @"response_data";
+ putFile.bulkData = data;
+
+ // Send and log RPC Request
+ logMessage = [NSString stringWithFormat:@"SystemRequest (request)\n%@\nData length=%lu", [request serializeAsDictionary:2], (unsigned long)data.length];
+ [SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
+ [self sendRPC:putFile];
+ }];
}
/**
@@ -502,18 +494,18 @@ const int POLICIES_CORRELATION_ID = 65535;
- (NSDictionary *)validateAndParseSystemRequest:(SDLOnSystemRequest *)request {
NSString *urlString = request.url;
SDLFileType *fileType = request.fileType;
-
+
// Validate input
if (urlString == nil || [NSURL URLWithString:urlString] == nil) {
[SDLDebugTool logInfo:@"OnSystemRequest (notification) failure: url is nil" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
return nil;
}
-
+
if (fileType != [SDLFileType JSON]) {
[SDLDebugTool logInfo:@"OnSystemRequest (notification) failure: file type is not JSON" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
return nil;
}
-
+
// Get data dictionary from the bulkData
NSError *error = nil;
NSDictionary *JSONDictionary = [NSJSONSerialization JSONObjectWithData:request.bulkData options:kNilOptions error:&error];
@@ -521,12 +513,34 @@ const int POLICIES_CORRELATION_ID = 65535;
[SDLDebugTool logInfo:@"OnSystemRequest failure: notification data is not valid JSON." withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
return nil;
}
-
+
return JSONDictionary;
}
/**
- * Start an upload for a body data dictionary
+ * Start an upload for some data to a web address specified
+ *
+ * @param data The data to be passed to the server
+ * @param urlString The URL the data should be POSTed to
+ * @param completionHandler A completion handler of what to do when the server responds
+ */
+- (void)sdl_uploadData:(NSData * _Nonnull)data toURLString:(NSString * _Nonnull)urlString completionHandler:(URLSessionTaskCompletionHandler _Nullable)completionHandler {
+ // NSURLRequest configuration
+ NSURL *url = [NSURL URLWithString:urlString];
+ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
+ [request setValue:@"application/json" forHTTPHeaderField:@"content-type"];
+ request.HTTPMethod = @"POST";
+
+ // Logging
+ NSString *logMessage = [NSString stringWithFormat:@"OnSystemRequest (HTTP Request) to URL %@", urlString];
+ [SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
+
+ // Create the upload task
+ [[SDLURLSession defaultSession] uploadWithURLRequest:request data:data completionHandler:completionHandler];
+}
+
+/**
+ * Start an upload for a body data dictionary, this is used by the "proprietary" system request needed for backward compatibility
*
* @param dictionary The system request dictionary that contains the HTTP data to be sent
* @param urlString A string containing the URL to send the upload to
@@ -536,7 +550,7 @@ const int POLICIES_CORRELATION_ID = 65535;
NSParameterAssert(dictionary != nil);
NSParameterAssert(urlString != nil);
NSParameterAssert(completionHandler != NULL);
-
+
// Extract data from the dictionary
NSDictionary *requestData = dictionary[@"HTTPRequest"];
NSDictionary *headers = requestData[@"headers"];
@@ -545,18 +559,18 @@ const int POLICIES_CORRELATION_ID = 65535;
NSString *method = headers[@"RequestMethod"];
NSString *bodyString = requestData[@"body"];
NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
-
+
// NSURLRequest configuration
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:contentType forHTTPHeaderField:@"content-type"];
request.timeoutInterval = timeout;
request.HTTPMethod = method;
-
+
// Logging
NSString *logMessage = [NSString stringWithFormat:@"OnSystemRequest (HTTP Request) to URL %@", urlString];
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
-
+
// Create the upload task
[[SDLURLSession defaultSession] uploadWithURLRequest:request data:bodyData completionHandler:completionHandler];
}
@@ -599,7 +613,7 @@ const int POLICIES_CORRELATION_ID = 65535;
request.HTTPMethod = @"POST";
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
request.timeoutInterval = 60;
-
+
// Prepare the data in the required format
NSString *encodedSyncPDataString = [[NSString stringWithFormat:@"%@", encodedSyncPData] componentsSeparatedByString:@"\""][1];
NSArray *array = [NSArray arrayWithObject:encodedSyncPDataString];
@@ -611,14 +625,14 @@ const int POLICIES_CORRELATION_ID = 65535;
[SDLDebugTool logInfo:logMessage withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
return;
}
-
+
// Send the HTTP Request
[[SDLURLSession defaultSession] uploadWithURLRequest:request
data:data
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
[self syncPDataNetworkRequestCompleteWithData:data response:response error:error];
}];
-
+
[SDLDebugTool logInfo:@"OnEncodedSyncPData (HTTP request)" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
}
@@ -626,13 +640,13 @@ const int POLICIES_CORRELATION_ID = 65535;
- (void)syncPDataNetworkRequestCompleteWithData:(NSData *)data response:(NSURLResponse *)response error:(NSError *)error {
// Sample of response: {"data":["SDLKGLSDKFJLKSjdslkfjslkJLKDSGLKSDJFLKSDJF"]}
[SDLDebugTool logInfo:@"OnEncodedSyncPData (HTTP response)" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
-
+
// Validate response data.
if (data == nil || data.length == 0) {
[SDLDebugTool logInfo:@"OnEncodedSyncPData (HTTP response) failure: no data returned" withType:SDLDebugType_RPC toOutput:SDLDebugOutput_All toGroup:self.debugConsoleGroupName];
return;
}
-
+
// Convert data to RPCRequest
NSError *JSONConversionError = nil;
NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&JSONConversionError];
@@ -640,7 +654,7 @@ const int POLICIES_CORRELATION_ID = 65535;
SDLEncodedSyncPData *request = [[SDLEncodedSyncPData alloc] init];
request.correlationID = [NSNumber numberWithInt:POLICIES_CORRELATION_ID];
request.data = [responseDictionary objectForKey:@"data"];
-
+
[self sendRPC:request];
}
}
@@ -651,7 +665,7 @@ const int POLICIES_CORRELATION_ID = 65535;
inputStream.delegate = self;
objc_setAssociatedObject(inputStream, @"SDLPutFile", putFileRPCRequest, OBJC_ASSOCIATION_RETAIN);
objc_setAssociatedObject(inputStream, @"BaseOffset", [putFileRPCRequest offset], OBJC_ASSOCIATION_RETAIN);
-
+
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
}
@@ -661,29 +675,29 @@ const int POLICIES_CORRELATION_ID = 65535;
case NSStreamEventHasBytesAvailable: {
// Grab some bytes from the stream and send them in a SDLPutFile RPC Request
NSUInteger currentStreamOffset = [[stream propertyForKey:NSStreamFileCurrentOffsetKey] unsignedIntegerValue];
-
+
NSMutableData *buffer = [NSMutableData dataWithLength:[SDLGlobals globals].maxMTUSize];
NSUInteger nBytesRead = [(NSInputStream *)stream read:(uint8_t *)buffer.mutableBytes maxLength:buffer.length];
if (nBytesRead > 0) {
NSData *data = [buffer subdataWithRange:NSMakeRange(0, nBytesRead)];
NSUInteger baseOffset = [(NSNumber *)objc_getAssociatedObject(stream, @"BaseOffset") unsignedIntegerValue];
NSUInteger newOffset = baseOffset + currentStreamOffset;
-
+
SDLPutFile *putFileRPCRequest = (SDLPutFile *)objc_getAssociatedObject(stream, @"SDLPutFile");
[putFileRPCRequest setOffset:[NSNumber numberWithUnsignedInteger:newOffset]];
[putFileRPCRequest setLength:[NSNumber numberWithUnsignedInteger:nBytesRead]];
[putFileRPCRequest setBulkData:data];
-
+
[self sendRPC:putFileRPCRequest];
}
-
+
break;
}
case NSStreamEventEndEncountered: {
// Cleanup the stream
[stream close];
[stream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
-
+
break;
}
case NSStreamEventErrorOccurred: {
diff --git a/SmartDeviceLink-iOS/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m b/SmartDeviceLink-iOS/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
index 2e88a4375..7c6f8dfaa 100644
--- a/SmartDeviceLink-iOS/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
+++ b/SmartDeviceLink-iOS/SmartDeviceLinkTests/ProtocolSpecs/MessageSpecs/SDLProtocolSpec.m
@@ -152,7 +152,7 @@ describe(@"SendRPCRequest Tests", ^ {
});
context(@"During V2 session", ^ {
- it(@"Should send the correct data", ^ {
+ it(@"Should send the correct data bulk data when bulk data is available", ^ {
[[[[mockRequest stub] andReturn:dictionaryV2] ignoringNonObjectArgs] serializeAsDictionary:2];
[[[mockRequest stub] andReturn:@0x98765] correlationID];
[[[mockRequest stub] andReturn:@"DeleteCommand"] getFunctionName];
@@ -180,8 +180,7 @@ describe(@"SendRPCRequest Tests", ^ {
[payloadData appendData:jsonTestData];
[payloadData appendBytes:"COMMAND" length:strlen("COMMAND")];
- const char testHeader[12] = {0x20 | SDLFrameType_Single, SDLServiceType_RPC, SDLFrameData_SingleFrame, 0x01, (payloadData.length >> 24) & 0xFF, (payloadData.length >> 16) & 0xFF,
- (payloadData.length >> 8) & 0xFF, payloadData.length & 0xFF, 0x00, 0x00, 0x00, 0x01};
+ const char testHeader[12] = {0x20 | SDLFrameType_Single, SDLServiceType_BulkData, SDLFrameData_SingleFrame, 0x01, (payloadData.length >> 24) & 0xFF, (payloadData.length >> 16) & 0xFF,(payloadData.length >> 8) & 0xFF, payloadData.length & 0xFF, 0x00, 0x00, 0x00, 0x01};
NSMutableData* testData = [NSMutableData dataWithBytes:testHeader length:12];
[testData appendData:payloadData];