diff --git a/.gitignore b/.gitignore index 34277b234d..28599c1f86 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore ## Build generated -build/ +# build/ DerivedData ## Various settings @@ -49,8 +49,10 @@ Pods/ # Carthage # # Add this line if you want to avoid checking in source code from Carthage dependencies. -Carthage/Checkouts -Carthage/Build +Carthage/Checkouts/ +Carthage/Build/tvOS/ +Carthage/Build/iOS/*.bcsymbolmap +Carthage/Build/iOS/*.dSYM # fastlane # diff --git a/.travis.yml b/.travis.yml index 143470a730..e402de6391 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,13 @@ language: objective-c osx_image: xcode7.3 -xcode_sdk: iphonesimulator9.3 -xcode_project: Loop.xcodeproj -xcode_scheme: Loop +# xcode_sdk: iphonesimulator9.3 +# xcode_project: Loop.xcodeproj +# xcode_scheme: Loop before_script: - - carthage bootstrap +# - carthage bootstrap + - cp Loop/RemoteSettings-template.plist Loop/RemoteSettings.plist script: + # Build the app target + - xctool -project Loop.xcodeproj -scheme Loop build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + # Run the test target - xctool -project Loop.xcodeproj -scheme LoopTests -sdk iphonesimulator9.3 test diff --git a/Cartfile b/Cartfile index d3bf5ed6c4..07e225aa16 100644 --- a/Cartfile +++ b/Cartfile @@ -2,5 +2,5 @@ github "loudnate/LoopKit" ~> 0.3 github "loudnate/xDripG5" ~> 0.4 github "loudnate/SwiftCharts" "loudnate/naterade" github "mddub/dexcom-share-client-swift" ~> 0.1 -github "ps2/rileylink_ios" ~> 0.3.2 +github "ps2/rileylink_ios" ~> 0.3.3 github "mpurland/Amplitude-iOS" "framework" diff --git a/Cartfile.resolved b/Cartfile.resolved index 19ef5decef..c547f853e8 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -3,5 +3,5 @@ github "loudnate/Crypto" "e0ef5b498f2c373d676135dabf5d1803b8558509" github "loudnate/LoopKit" "v0.3.2" github "loudnate/SwiftCharts" "dc8f5fbb29e391a65995d138158139559e365a1e" github "mddub/dexcom-share-client-swift" "v0.1.2" -github "ps2/rileylink_ios" "v0.3.2" +github "ps2/rileylink_ios" "v0.3.3" github "loudnate/xDripG5" "0.4.1" diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/AmplitudeFramework b/Carthage/Build/iOS/AmplitudeFramework.framework/AmplitudeFramework new file mode 100755 index 0000000000..1fa3ee3be8 Binary files /dev/null and b/Carthage/Build/iOS/AmplitudeFramework.framework/AmplitudeFramework differ diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPARCMacros.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPARCMacros.h new file mode 100644 index 0000000000..eaf9024dd9 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPARCMacros.h @@ -0,0 +1,68 @@ +// +// ARCMacros.h +// InnerBand +// +// For an explanation of why these work, see: +// +// http://raptureinvenice.com/arc-support-without-branches/ +// +// Created by John Blanco on 1/28/12. +// Copyright (c) 2012 Rapture In Venice. All rights reserved. +// +// NOTE: __bridge_tranfer is not included here because releasing would be inconsistent. +// Avoid it unless you're using ARC exclusively or managing it with __has_feature(objc_arc). +// + +#if !defined(__clang__) || __clang_major__ < 3 + #ifndef __bridge + #define __bridge + #endif + + #ifndef __bridge_retain + #define __bridge_retain + #endif + + #ifndef __bridge_retained + #define __bridge_retained + #endif + + #ifndef __autoreleasing + #define __autoreleasing + #endif + + #ifndef __strong + #define __strong + #endif + + #ifndef __unsafe_unretained + #define __unsafe_unretained + #endif + + #ifndef __weak + #define __weak + #endif +#endif + +#if __has_feature(objc_arc) + #define SAFE_ARC_PROP_RETAIN strong + #define SAFE_ARC_RETAIN(x) (x) + #define SAFE_ARC_RELEASE(x) + #define SAFE_ARC_AUTORELEASE(x) (x) + #define SAFE_ARC_BLOCK_COPY(x) (x) + #define SAFE_ARC_BLOCK_RELEASE(x) + #define SAFE_ARC_SUPER_DEALLOC() + #define SAFE_ARC_DISPATCH_RELEASE(x) (x) + #define SAFE_ARC_AUTORELEASE_POOL_START() @autoreleasepool { + #define SAFE_ARC_AUTORELEASE_POOL_END() } +#else + #define SAFE_ARC_PROP_RETAIN retain + #define SAFE_ARC_RETAIN(x) ([(x) retain]) + #define SAFE_ARC_RELEASE(x) ([(x) release]) + #define SAFE_ARC_AUTORELEASE(x) ([(x) autorelease]) + #define SAFE_ARC_BLOCK_COPY(x) (Block_copy(x)) + #define SAFE_ARC_BLOCK_RELEASE(x) (Block_release(x)) + #define SAFE_ARC_SUPER_DEALLOC() ([super dealloc]) + #define SAFE_ARC_DISPATCH_RELEASE(x) (dispatch_release(x)) + #define SAFE_ARC_AUTORELEASE_POOL_START() NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + #define SAFE_ARC_AUTORELEASE_POOL_END() [pool release]; +#endif diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPConstants.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPConstants.h new file mode 100644 index 0000000000..aef079a1da --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPConstants.h @@ -0,0 +1,35 @@ +// +// AMPConstants.h +#import + +extern NSString *const kAMPLibrary; +extern NSString *const kAMPPlatform; +extern NSString *const kAMPVersion; +extern NSString *const kAMPEventLogDomain; +extern NSString *const kAMPEventLogUrl; +extern NSString *const kAMPDefaultInstance; +extern const int kAMPApiVersion; +extern const int kAMPDBVersion; +extern const int kAMPDBFirstVersion; +extern const int kAMPEventUploadThreshold; +extern const int kAMPEventUploadMaxBatchSize; +extern const int kAMPEventMaxCount; +extern const int kAMPEventRemoveBatchSize; +extern const int kAMPEventUploadPeriodSeconds; +extern const long kAMPMinTimeBetweenSessionsMillis; +extern const int kAMPMaxStringLength; + +extern NSString *const IDENTIFY_EVENT; +extern NSString *const AMP_OP_ADD; +extern NSString *const AMP_OP_APPEND; +extern NSString *const AMP_OP_CLEAR_ALL; +extern NSString *const AMP_OP_PREPEND; +extern NSString *const AMP_OP_SET; +extern NSString *const AMP_OP_SET_ONCE; +extern NSString *const AMP_OP_UNSET; + +extern NSString *const AMP_REVENUE_PRODUCT_ID; +extern NSString *const AMP_REVENUE_QUANTITY; +extern NSString *const AMP_REVENUE_PRICE; +extern NSString *const AMP_REVENUE_REVENUE_TYPE; +extern NSString *const AMP_REVENUE_RECEIPT; diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPDatabaseHelper.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPDatabaseHelper.h new file mode 100644 index 0000000000..d140b4eb90 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPDatabaseHelper.h @@ -0,0 +1,40 @@ +// +// AMPDatabaseHelper.h +// Amplitude +// +// Created by Daniel Jih on 9/9/15. +// Copyright (c) 2015 Amplitude. All rights reserved. +// + +@interface AMPDatabaseHelper : NSObject + +@property (nonatomic, strong, readonly) NSString *databasePath; + ++ (AMPDatabaseHelper*)getDatabaseHelper; ++ (AMPDatabaseHelper*)getDatabaseHelper:(NSString*) instanceName; +- (BOOL)createTables; +- (BOOL)dropTables; +- (BOOL)upgrade:(int) oldVersion newVersion:(int) newVersion; +- (BOOL)resetDB:(BOOL) deleteDB; +- (BOOL)deleteDB; + +- (BOOL)addEvent:(NSString*) event; +- (BOOL)addIdentify:(NSString*) identify; +- (NSMutableArray*)getEvents:(long long) upToId limit:(long long) limit; +- (NSMutableArray*)getIdentifys:(long long) upToId limit:(long long) limit; +- (int)getEventCount; +- (int)getIdentifyCount; +- (int)getTotalEventCount; +- (BOOL)removeEvents:(long long) maxId; +- (BOOL)removeIdentifys:(long long) maxIdentifyId; +- (BOOL)removeEvent:(long long) eventId; +- (BOOL)removeIdentify:(long long) identifyId; +- (long long)getNthEventId:(long long) n; +- (long long)getNthIdentifyId:(long long) n; + +- (BOOL)insertOrReplaceKeyValue:(NSString*) key value:(NSString*) value; +- (BOOL)insertOrReplaceKeyLongValue:(NSString*) key value:(NSNumber*) value; +- (NSString*)getValue:(NSString*) key; +- (NSNumber*)getLongValue:(NSString*) key; + +@end diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPDeviceInfo.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPDeviceInfo.h new file mode 100644 index 0000000000..f6cf0b6e9a --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPDeviceInfo.h @@ -0,0 +1,20 @@ +// +// AMPDeviceInfo.h + +@interface AMPDeviceInfo : NSObject + +-(id) init; +@property (readonly) NSString *appVersion; +@property (readonly) NSString *osName; +@property (readonly) NSString *osVersion; +@property (readonly) NSString *manufacturer; +@property (readonly) NSString *model; +@property (readonly) NSString *carrier; +@property (readonly) NSString *country; +@property (readonly) NSString *language; +@property (readonly) NSString *advertiserID; +@property (readonly) NSString *vendorID; + +-(NSString*) generateUUID; + +@end \ No newline at end of file diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPIdentify.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPIdentify.h new file mode 100644 index 0000000000..71ce07d971 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPIdentify.h @@ -0,0 +1,22 @@ +// +// AMPIdentify.h +// Amplitude +// +// Created by Daniel Jih on 10/5/15. +// Copyright © 2015 Amplitude. All rights reserved. +// + +@interface AMPIdentify : NSObject + +@property (nonatomic, strong, readonly) NSMutableDictionary *userPropertyOperations; + ++ (instancetype)identify; +- (AMPIdentify*)add:(NSString*) property value:(NSObject*) value; +- (AMPIdentify*)append:(NSString*) property value:(NSObject*) value; +- (AMPIdentify*)clearAll; +- (AMPIdentify*)prepend:(NSString*) property value:(NSObject*) value; +- (AMPIdentify*)set:(NSString*) property value:(NSObject*) value; +- (AMPIdentify*)setOnce:(NSString*) property value:(NSObject*) value; +- (AMPIdentify*)unset:(NSString*) property; + +@end diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPLocationManagerDelegate.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPLocationManagerDelegate.h new file mode 100644 index 0000000000..314ff9a053 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPLocationManagerDelegate.h @@ -0,0 +1,15 @@ +// +// AMPLocationManagerDelegate.h + +#import +#import + +@interface AMPLocationManagerDelegate : NSObject + +- (void)locationManager:(CLLocationManager*) manager didFailWithError:(NSError*) error; + +- (void)locationManager:(CLLocationManager*) manager didUpdateToLocation:(CLLocation*) newLocation fromLocation:(CLLocation*) oldLocation; + +- (void)locationManager:(CLLocationManager*) manager didChangeAuthorizationStatus:(CLAuthorizationStatus) status; + +@end diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPRevenue.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPRevenue.h new file mode 100644 index 0000000000..1896026daf --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPRevenue.h @@ -0,0 +1,31 @@ +// +// AMPRevenue.h +// Amplitude +// +// Created by Daniel Jih on 04/18/16. +// Copyright © 2016 Amplitude. All rights reserved. +// + +@interface AMPRevenue : NSObject + +// required fields +@property (nonatomic, strong, readonly) NSString *productId; +@property (nonatomic, readonly) NSInteger quantity; +@property (nonatomic, strong, readonly) NSNumber *price; + +// optional fields +@property (nonatomic, strong, readonly) NSString *revenueType; +@property (nonatomic, strong, readonly) NSData *receipt; +@property (nonatomic, strong, readonly) NSDictionary *properties; + ++ (instancetype)revenue; +- (BOOL) isValidRevenue; +- (AMPRevenue*)setProductIdentifier:(NSString*) productIdentifier; +- (AMPRevenue*)setQuantity:(NSInteger) quantity; +- (AMPRevenue*)setPrice:(NSNumber*) price; +- (AMPRevenue*)setRevenueType:(NSString*) revenueType; +- (AMPRevenue*)setReceipt:(NSData*) receipt; +- (AMPRevenue*)setEventProperties:(NSDictionary*) eventProperties; +- (NSDictionary*)toNSDictionary; + +@end diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPURLConnection.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPURLConnection.h new file mode 100644 index 0000000000..3980a8f016 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPURLConnection.h @@ -0,0 +1,18 @@ +#if AMPLITUDE_SSL_PINNING +// +// AMPURLConnection.h +// Amplitude +// +// Created by Allan on 3/13/15. +// Copyright (c) 2015 Amplitude. All rights reserved. +// + +#import +#import "ISPPinnedNSURLConnectionDelegate.h" + +@interface AMPURLConnection : ISPPinnedNSURLConnectionDelegate + ++ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse *response, NSData *data, NSError *connectionError))handler; + +@end +#endif \ No newline at end of file diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPUtils.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPUtils.h new file mode 100644 index 0000000000..a80d8ff900 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AMPUtils.h @@ -0,0 +1,16 @@ +// +// AMPUtils.h +// Pods +// +// Created by Daniel Jih on 10/4/15. +// +// + +@interface AMPUtils : NSObject + ++ (NSString*)generateUUID; ++ (id) makeJSONSerializable:(id) obj; ++ (BOOL) isEmptyString:(NSString*) str; ++ (NSDictionary*) validateGroups:(NSDictionary*) obj; + +@end diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/Amplitude+SSLPinning.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/Amplitude+SSLPinning.h new file mode 100644 index 0000000000..05d4dd90d1 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/Amplitude+SSLPinning.h @@ -0,0 +1,17 @@ +#ifdef AMPLITUDE_SSL_PINNING +// +// Amplitude+SSLPinning +// Amplitude +// +// Created by Allan on 3/11/15. +// Copyright (c) 2015 Amplitude. All rights reserved. +// + +#import + +@interface Amplitude (SSLPinning) + +@property (nonatomic, assign) BOOL sslPinningEnabled; + +@end +#endif \ No newline at end of file diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/Amplitude.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/Amplitude.h new file mode 100644 index 0000000000..a962b7b0f8 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/Amplitude.h @@ -0,0 +1,419 @@ +// +// Amplitude.h + +#import +#import "AMPIdentify.h" +#import "AMPRevenue.h" + + +/*! + @class + Amplitude API. + + @abstract + The interface for integrating Amplitude with your application. + + @discussion + Use the Amplitude class to track events in your application. + +
+ // In every file that uses analytics, import Amplitude.h at the top
+ #import "Amplitude.h"
+
+ // First, be sure to initialize the API in your didFinishLaunchingWithOptions delegate
+ [[Amplitude instance] initializeApiKey:@"YOUR_API_KEY_HERE"];
+
+ // Track an event anywhere in the app
+ [[Amplitude instance] logEvent:@"EVENT_IDENTIFIER_HERE"];
+
+ // You can attach additional data to any event by passing a NSDictionary object
+ NSMutableDictionary *eventProperties = [NSMutableDictionary dictionary];
+ [eventProperties setValue:@"VALUE_GOES_HERE" forKey:@"KEY_GOES_HERE"];
+ [[Amplitude instance] logEvent:@"Compute Hash" withEventProperties:eventProperties];
+ 
+ + For more details on the setup and usage, be sure to check out the docs here: + https://github.com/amplitude/Amplitude-iOS#setup + */ +@interface Amplitude : NSObject + +#pragma mark - Properties +@property (nonatomic, strong, readonly) NSString *apiKey; +@property (nonatomic, strong, readonly) NSString *userId; +@property (nonatomic, strong, readonly) NSString *deviceId; +@property (nonatomic, strong, readonly) NSString *instanceName; +@property (nonatomic ,strong, readonly) NSString *propertyListPath; +@property (nonatomic, assign) BOOL optOut; + +/*! + The maximum number of events that can be stored locally before forcing an upload. + The default is 30 events. + */ +@property (nonatomic, assign) int eventUploadThreshold; + +/*! + The maximum number of events that can be uploaded in a single request. + The default is 100 events. + */ +@property (nonatomic, assign) int eventUploadMaxBatchSize; + +/*! + The maximum number of events that can be stored lcoally. + The default is 1000 events. + */ +@property (nonatomic, assign) int eventMaxCount; + +/*! + The amount of time after an event is logged that events will be batched before being uploaded to the server. + The default is 30 seconds. + */ +@property (nonatomic, assign) int eventUploadPeriodSeconds; + +/*! + When a user closes and reopens the app within minTimeBetweenSessionsMillis milliseconds, the reopen is considered part of the same session and the session continues. Otherwise, a new session is created. + The default is 15 minutes. + */ +@property (nonatomic, assign) long minTimeBetweenSessionsMillis; + +/*! + Whether to track start and end of session events + */ +@property (nonatomic, assign) BOOL trackingSessionEvents; + + +#pragma mark - Methods + ++ (Amplitude *)instance; + ++ (Amplitude *)instanceWithName:(NSString*) instanceName; + +/*! + @method + + @abstract + Initializes the Amplitude static class with your Amplitude api key. + + @param apiKey Your Amplitude key obtained from your dashboard at https://amplitude.com/settings + @param userId If your app has its own login system that you want to track users with, you can set the userId. + + @discussion + We recommend you first initialize your class within your "didFinishLaunchingWithOptions" method inside your app delegate. + + - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions + { + // Initialize your shared Analytics instance. + [[Amplitude instance] initializeApiKey:@"YOUR_API_KEY_HERE"]; + + // YOUR OTHER APP LAUNCH CODE HERE.... + + return YES; + } + */ +- (void)initializeApiKey:(NSString*) apiKey; +- (void)initializeApiKey:(NSString*) apiKey userId:(NSString*) userId; + + +/*! + @method + + @abstract + Tracks an event + + @param eventType The name of the event you wish to track. + @param eventProperties You can attach additional data to any event by passing a NSDictionary object with property: value pairs. + @param groups You can specify event-level groups for this user by passing a NSDictionary object with groupType: groupName pairs. Note the keys need to be strings, and the values can either be strings or an array of strings. + @param outOfSession If YES, will track the event as out of session. Useful for push notification events. + + @discussion + Events are saved locally. Uploads are batched to occur every 30 events and every 30 seconds, as well as on app close. + After calling logEvent in your app, you will immediately see data appear on the Amplitude Website. + + It's important to think about what types of events you care about as a developer. You should aim to track + between 50 and 200 types of events within your app. Common event types are different screens within the app, + actions the user initiates (such as pressing a button), and events you want the user to complete + (such as filling out a form, completing a level, or making a payment). + */ +- (void)logEvent:(NSString*) eventType; +- (void)logEvent:(NSString*) eventType withEventProperties:(NSDictionary*) eventProperties; +- (void)logEvent:(NSString*) eventType withEventProperties:(NSDictionary*) eventProperties outOfSession:(BOOL) outOfSession; +- (void)logEvent:(NSString*) eventType withEventProperties:(NSDictionary*) eventProperties withGroups:(NSDictionary*) groups; +- (void)logEvent:(NSString*) eventType withEventProperties:(NSDictionary*) eventProperties withGroups:(NSDictionary*) groups outOfSession:(BOOL) outOfSession; + +/*! + @method + + @abstract + Tracks revenue. + + @param amount The amount of revenue to track, e.g. "3.99". + + @discussion + To track revenue from a user, call [[Amplitude instance] logRevenue:[NSNumber numberWithDouble:3.99]] each time the user generates revenue. + logRevenue: takes in an NSNumber with the dollar amount of the sale as the only argument. This allows us to automatically display + data relevant to revenue on the Amplitude website, including average revenue per daily active user (ARPDAU), 7, 30, and 90 day revenue, + lifetime value (LTV) estimates, and revenue by advertising campaign cohort and daily/weekly/monthly cohorts. + + For validating revenue, use [[Amplitude instance] logRevenue:@"com.company.app.productId" quantity:1 price:[NSNumber numberWithDouble:3.99] receipt:transactionReceipt] + */ +- (void)logRevenue:(NSNumber*) amount; +- (void)logRevenue:(NSString*) productIdentifier quantity:(NSInteger) quantity price:(NSNumber*) price; +- (void)logRevenue:(NSString*) productIdentifier quantity:(NSInteger) quantity price:(NSNumber*) price receipt:(NSData*) receipt; + +/*! + @method + + @abstract + Tracks revenue - API v2. + + @param AMPRevenue object revenue object contains all revenue information + + @discussion + To track revenue from a user, create an AMPRevenue object each time the user generates revenue, and set the revenue properties (productIdentifier, price, quantity). + logRevenuev2: takes in an AMPRevenue object. This allows us to automatically display data relevant to revenue on the Amplitude website, including average + revenue per daily active user (ARPDAU), 7, 30, and 90 day revenue, lifetime value (LTV) estimates, and revenue by advertising campaign cohort and + daily/weekly/monthly cohorts. + + For validating revenue, make sure the receipt data is set on the AMPRevenue object. + */ +- (void)logRevenueV2:(AMPRevenue*) revenue; + +/*! + @method + + @abstract + Update user properties using operations provided via Identify API. + + @param identify An AMPIdentify object with the intended user property operations + + @discussion + To update user properties, first create an AMPIdentify object. For example if you wanted to set a user's gender, and then increment their + karma count by 1, you would do: + AMPIdentify *identify = [[[AMPIdentify identify] set:@"gender" value:@"male"] add:@"karma" value:[NSNumber numberWithInt:1]]; + Then you would pass this AMPIdentify object to the identify function to send to the server: [[Amplitude instance] identify:identify]; + The Identify API supports add, set, setOnce, unset operations. See the AMPIdentify.h header file for the method signatures. + */ + +- (void)identify:(AMPIdentify *)identify; + +/*! + @method + + @abstract + Manually forces the class to immediately upload all queued events. + + @discussion + Events are saved locally. Uploads are batched to occur every 30 events and every 30 seconds, as well as on app close. + Use this method to force the class to immediately upload all queued events. + */ +- (void)uploadEvents; + +/*! + @method + + @abstract + Adds properties that are tracked on the user level. + + @param userProperties An NSDictionary containing any additional data to be tracked. + @param replace This is deprecated. In earlier versions of this SDK, this replaced the in-memory userProperties dictionary with the input, but now userProperties are no longer stored in memory. + + @discussion + Property keys must be NSString objects and values must be serializable. + */ + +- (void)setUserProperties:(NSDictionary*) userProperties; +- (void)setUserProperties:(NSDictionary*) userProperties replace:(BOOL) replace; + +/*! + @method + + @abstract + Clears all properties that are tracked on the user level. + */ + +- (void)clearUserProperties; + +/*! + @method + + @abstract + Adds a user to a group or groups. You need to specify a groupType and groupName(s). For example you can group people by their organization. In that case groupType is "orgId", and groupName would be the actual ID(s). groupName can be a string or an array of strings to indicate a user in multiple groups. You can also call setGroup multiple times with different groupTypes to track multiple types of groups (up to 5 per app). Note: this will also set groupType: groupName as a user property. + @param groupType You need to specify a group type (for example "orgId"). + @param groupName The value for the group name, can be a string or an array of strings, (for example for groupType orgId, the groupName would be the actual id number, like 15). + */ + +- (void)setGroup:(NSString*) groupType groupName:(NSObject*) groupName; + +/*! + @method + + @abstract + Sets the userId. + + @param userId If your app has its own login system that you want to track users with, you can set the userId. + + @discussion + If your app has its own login system that you want to track users with, you can set the userId. + */ +- (void)setUserId:(NSString*) userId; + +/*! + @method + + @abstract + Sets the deviceId. + + @param deviceId If your app has its own system for tracking devices, you can set the deviceId. + + @discussion + If your app has its own system for tracking devices, you can set the deviceId. + */ +- (void)setDeviceId:(NSString*) deviceId; + +/*! + @method + + @abstract + Enables tracking opt out. + + @param enabled Whether tracking opt out should be enabled or disabled. + + @discussion + If the user wants to opt out of all tracking, use this method to enable opt out for them. Once opt out is enabled, no events will be saved locally or sent to the server. Calling this method again with enabled set to NO will turn tracking back on for the user. + */ +- (void)setOptOut:(BOOL)enabled; + +/*! + @method + + @abstract + Disables sending logged events to Amplitude servers. + + @param offline Whether logged events should be sent to Amplitude servers. + + @discussion + If you want to stop logged events from being sent to Amplitude severs, use this method to set the client to offline. Once offline is enabled, logged events will not be sent to the server until offline is disabled. Calling this method again with offline set to NO will allow events to be sent to server and the client will attempt to send events that have been queued while offline. + */ +- (void)setOffline:(BOOL)offline; + +/*! + @method + + @abstract + Enables location tracking. + + @discussion + If the user has granted your app location permissions, the SDK will also grab the location of the user. + Amplitude will never prompt the user for location permissions itself, this must be done by your app. + */ +- (void)enableLocationListening; + +/*! + @method + + @abstract + Disables location tracking. + + @discussion + If you want location tracking disabled on startup of the app, call disableLocationListening before you call initializeApiKey. + */ +- (void)disableLocationListening; + +/*! + @method + + @abstract + Forces the SDK to update with the user's last known location if possible. + + @discussion + If you want to manually force the SDK to update with the user's last known location, call updateLocation. + */ +- (void)updateLocation; + +/*! + @method + + @abstract + Uses advertisingIdentifier instead of identifierForVendor as the device ID + + @discussion + Apple prohibits the use of advertisingIdentifier if your app does not have advertising. Useful for tying together data from advertising campaigns to anlaytics data. Must be called before initializeApiKey: is called to function. + */ +- (void)useAdvertisingIdForDeviceId; + +/*! + @method + + @abstract + Prints the number of events in the queue. + + @discussion + Debugging method to find out how many events are being stored locally on the device. + */ +- (void)printEventsCount; + +/*! + @method + + @abstract + Returns deviceId + + @discussion + The deviceId is an identifier used by Amplitude to determine unique users when no userId has been set. + */ +- (NSString*)getDeviceId; + +/*! + @method + + @abstract + Returns the current sessionId + + @discussion + The sessionId is an identifier used by Amplitude to group together events performed during the same session. + */ +- (long long)getSessionId; + + + +#pragma mark - Deprecated methods + +- (void)initializeApiKey:(NSString*) apiKey userId:(NSString*) userId startSession:(BOOL)startSession __attribute((deprecated())); + +- (void)startSession __attribute((deprecated())); + ++ (void)initializeApiKey:(NSString*) apiKey __attribute((deprecated())); + ++ (void)initializeApiKey:(NSString*) apiKey userId:(NSString*) userId __attribute((deprecated())); + ++ (void)logEvent:(NSString*) eventType __attribute((deprecated())); + ++ (void)logEvent:(NSString*) eventType withEventProperties:(NSDictionary*) eventProperties __attribute((deprecated())); + ++ (void)logRevenue:(NSNumber*) amount __attribute((deprecated())); + ++ (void)logRevenue:(NSString*) productIdentifier quantity:(NSInteger) quantity price:(NSNumber*) price __attribute((deprecated())) __attribute((deprecated())); + ++ (void)logRevenue:(NSString*) productIdentifier quantity:(NSInteger) quantity price:(NSNumber*) price receipt:(NSData*) receipt __attribute((deprecated())); + ++ (void)uploadEvents __attribute((deprecated())); + ++ (void)setUserProperties:(NSDictionary*) userProperties __attribute((deprecated())); + ++ (void)setUserId:(NSString*) userId __attribute((deprecated())); + ++ (void)enableLocationListening __attribute((deprecated())); + ++ (void)disableLocationListening __attribute((deprecated())); + ++ (void)useAdvertisingIdForDeviceId __attribute((deprecated())); + ++ (void)printEventsCount __attribute((deprecated())); + ++ (NSString*)getDeviceId __attribute((deprecated())); +@end + +#pragma mark - constants + +extern NSString *const kAMPSessionStartEvent; +extern NSString *const kAMPSessionEndEvent; +extern NSString *const kAMPRevenueEvent; diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AmplitudeFramework.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AmplitudeFramework.h new file mode 100644 index 0000000000..40a3a78af0 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/AmplitudeFramework.h @@ -0,0 +1,22 @@ +#import + +//! Project version number for AmplitudeFramework. +FOUNDATION_EXPORT double AmplitudeFrameworkVersionNumber; + +//! Project version string for AmplitudeFramework. +FOUNDATION_EXPORT const unsigned char AmplitudeFrameworkVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/ISPCertificatePinning.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/ISPCertificatePinning.h new file mode 100644 index 0000000000..d7435bdb7f --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/ISPCertificatePinning.h @@ -0,0 +1,66 @@ +#if AMPLITUDE_SSL_PINNING +// +// ISPCertificatePinning.h +// SSLCertificatePinning v3 +// +// Created by Alban Diquet on 1/14/14. +// Copyright (c) 2014 iSEC Partners. All rights reserved. +// + +#import + +/** This class implements certificate pinning utility functions. + + First, the certificates and domains to pin should be loaded using + setupSSLPinsUsingDictionnary:. This method will store them in + "~/Library/SSLPins.plist". + + Then, the verifyPinnedCertificateForTrust:andDomain: method can be + used to validate that at least one the certificates pinned to a + specific domain is in the server's certificate chain when connecting to + it. This method should be used for example in the + connection:willSendRequestForAuthenticationChallenge: method of the + NSURLConnectionDelegate object that is used to perform the connection. + + Alternatively, the ISPPinnedNSURLSessionDelegate or + ISPPinnedNSURLConnectionDelegate classes can be directly used + to create a delegate class performing certificate pinning. + + */ + +@interface ISPCertificatePinning : NSObject + + +/** + Certificate pinning loading method + + This method takes a dictionary with domain names as keys and arrays of DER- + encoded certificates as values, and stores them in a pre-defined location on + the filesystem. The ability to specify multiple certificates for a single + domain is useful when transitioning from an expiring certificate to a new one. + + @param certificates a dictionnary with domain names as keys and arrays of DER-encoded certificates as values + @return BOOL successfully loaded the public keys and domains + + */ ++ (BOOL)setupSSLPinsUsingDictionnary:(NSDictionary*)domainsAndCertificates; + + +/** + Certificate pinning validation method + + This method accesses the certificates previously loaded using the + setupSSLPinsUsingDictionnary: method and inspects the trust object's + certificate chain in order to find at least one certificate pinned to the + given domain. SecTrustEvaluate() should always be called before this method to + ensure that the certificate chain is valid. + + @param trust the trust object whose certificate chain must contain the certificate previously pinned to the given domain + @param domain the domain we're trying to connect to + @return BOOL found the domain's pinned certificate in the trust object's certificate chain + + */ ++ (BOOL)verifyPinnedCertificateForTrust:(SecTrustRef)trust andDomain:(NSString*)domain; + +@end +#endif \ No newline at end of file diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/ISPPinnedNSURLConnectionDelegate.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/ISPPinnedNSURLConnectionDelegate.h new file mode 100644 index 0000000000..a80efa43e3 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/ISPPinnedNSURLConnectionDelegate.h @@ -0,0 +1,26 @@ +#if AMPLITUDE_SSL_PINNING +// +// ISPPinnedNSURLConnectionDelegate.h +// SSLCertificatePinning +// +// Created by Alban Diquet on 1/14/14. +// Copyright (c) 2014 iSEC Partners. All rights reserved. +// + +#import + +/** Convenience class to automatically perform certificate pinning for NSURLConnection. + + ISPPinnedNSURLConnectionDelegate is designed to be subclassed in order to + implement an NSURLConnectionDelegate class. The + connection:willSendRequestForAuthenticationChallenge: method it implements + will automatically validate that at least one the certificates pinned to the domain the + connection is accessing is part of the server's certificate chain. + + */ +@interface ISPPinnedNSURLConnectionDelegate : NSObject + +- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; + +@end +#endif \ No newline at end of file diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/ISPPinnedNSURLSessionDelegate.h b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/ISPPinnedNSURLSessionDelegate.h new file mode 100644 index 0000000000..cc4071aa4c --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Headers/ISPPinnedNSURLSessionDelegate.h @@ -0,0 +1,26 @@ +#if AMPLITUDE_SSL_PINNING +// +// ISPPinnedNSURLSessionDelegate.h +// SSLCertificatePinning +// +// Created by Alban Diquet on 1/14/14. +// Copyright (c) 2014 iSEC Partners. All rights reserved. +// + +#import + +/** Convenience class to automatically perform certificate pinning for NSURLSession. + + ISPPinnedNSURLSessionDelegate is designed to be subclassed in order to + implement an NSURLSession class. The + URLSession:didReceiveChallenge:completionHandler: method it implements + will automatically validate that at least one the certificates pinned to the domain the + connection is accessing is part of the server's certificate chain. + + */ +@interface ISPPinnedNSURLSessionDelegate : NSObject + +- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler; + +@end +#endif \ No newline at end of file diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Info.plist b/Carthage/Build/iOS/AmplitudeFramework.framework/Info.plist new file mode 100644 index 0000000000..c1976b8db1 Binary files /dev/null and b/Carthage/Build/iOS/AmplitudeFramework.framework/Info.plist differ diff --git a/Carthage/Build/iOS/AmplitudeFramework.framework/Modules/module.modulemap b/Carthage/Build/iOS/AmplitudeFramework.framework/Modules/module.modulemap new file mode 100644 index 0000000000..064b57f765 --- /dev/null +++ b/Carthage/Build/iOS/AmplitudeFramework.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module AmplitudeFramework { + umbrella header "AmplitudeFramework.h" + + export * + module * { export * } +} diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit b/Carthage/Build/iOS/CarbKit.framework/CarbKit new file mode 100755 index 0000000000..3bff67a661 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/CarbKit differ diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/CarbEntryEditViewController.nib b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/CarbEntryEditViewController.nib new file mode 100644 index 0000000000..ef1a5764f3 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/CarbEntryEditViewController.nib differ diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/Info.plist b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/Info.plist new file mode 100644 index 0000000000..5811714e41 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/Info.plist differ diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/LyL-9U-twn-view-9Ci-XW-6nA.nib b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/LyL-9U-twn-view-9Ci-XW-6nA.nib new file mode 100644 index 0000000000..4df6b6d65a Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/LyL-9U-twn-view-9Ci-XW-6nA.nib differ diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/UINavigationController-wgu-gT-TgV.nib b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/UINavigationController-wgu-gT-TgV.nib new file mode 100644 index 0000000000..f0797a1db2 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/UINavigationController-wgu-gT-TgV.nib differ diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/UITableViewController-rUL-yg-cFX.nib b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/UITableViewController-rUL-yg-cFX.nib new file mode 100644 index 0000000000..3cd254f4c9 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/UITableViewController-rUL-yg-cFX.nib differ diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/rUL-yg-cFX-view-b1s-8o-0Wp.nib b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/rUL-yg-cFX-view-b1s-8o-0Wp.nib new file mode 100644 index 0000000000..8d9ffa9969 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/rUL-yg-cFX-view-b1s-8o-0Wp.nib differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Headers/CarbKit-Swift.h b/Carthage/Build/iOS/CarbKit.framework/Headers/CarbKit-Swift.h new file mode 100644 index 0000000000..37240755ba --- /dev/null +++ b/Carthage/Build/iOS/CarbKit.framework/Headers/CarbKit-Swift.h @@ -0,0 +1,158 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import UIKit; +@import HealthKit; +@import Foundation; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +@class HKUnit; +@class UITableView; +@class NSIndexPath; +@class UITableViewCell; +@class UIStoryboardSegue; +@class NSBundle; +@class NSCoder; + +SWIFT_CLASS("_TtC7CarbKit27CarbEntryEditViewController") +@interface CarbEntryEditViewController : UITableViewController +@property (nonatomic, strong) HKUnit * _Nonnull preferredUnit; +- (void)viewDidLoad; +- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView; +- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section; +- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (NSIndexPath * _Nullable)tableView:(UITableView * _Nonnull)tableView willSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView didSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)prepareForSegue:(UIStoryboardSegue * _Nonnull)segue sender:(id _Nullable)sender; +- (nonnull instancetype)initWithStyle:(UITableViewStyle)style OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC7CarbKit28CarbEntryTableViewController") +@interface CarbEntryTableViewController : UITableViewController +- (void)viewDidLoad; +- (void)viewWillAppear:(BOOL)animated; +- (void)viewDidAppear:(BOOL)animated; +- (void)viewWillDisappear:(BOOL)animated; +- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView; +- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section; +- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (BOOL)tableView:(UITableView * _Nonnull)tableView canEditRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (NSIndexPath * _Nullable)tableView:(UITableView * _Nonnull)tableView willSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)prepareForSegue:(UIStoryboardSegue * _Nonnull)segue sender:(id _Nullable)sender; +- (nonnull instancetype)initWithStyle:(UITableViewStyle)style OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + +@interface HKQuantitySample (SWIFT_EXTENSION(CarbKit)) +@property (nonatomic, readonly, copy) NSString * _Nullable foodType; +@property (nonatomic, readonly) BOOL createdByCurrentApp; +@end + + +@interface NSUserDefaults (SWIFT_EXTENSION(CarbKit)) +@end + + +@interface UITableViewCell (SWIFT_EXTENSION(CarbKit)) +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/CarbKit.framework/Headers/CarbKit.h b/Carthage/Build/iOS/CarbKit.framework/Headers/CarbKit.h new file mode 100644 index 0000000000..912c55ffc2 --- /dev/null +++ b/Carthage/Build/iOS/CarbKit.framework/Headers/CarbKit.h @@ -0,0 +1,19 @@ +// +// CarbKit.h +// CarbKit +// +// Created by Nathan Racklyeft on 2/15/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +#import + +//! Project version number for CarbKit. +FOUNDATION_EXPORT double CarbKitVersionNumber; + +//! Project version string for CarbKit. +FOUNDATION_EXPORT const unsigned char CarbKitVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Carthage/Build/iOS/CarbKit.framework/Info.plist b/Carthage/Build/iOS/CarbKit.framework/Info.plist new file mode 100644 index 0000000000..ae255cdb43 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/Info.plist differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..aaca979387 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..82a27976a2 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..d93049e330 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..ea4c67894d Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..ab0cdda33c Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..3c9811bc8d Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..af82d5bf50 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..8ef4a28b9c Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/CarbKit.framework/Modules/module.modulemap b/Carthage/Build/iOS/CarbKit.framework/Modules/module.modulemap new file mode 100644 index 0000000000..975f13df9f --- /dev/null +++ b/Carthage/Build/iOS/CarbKit.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module CarbKit { + umbrella header "CarbKit.h" + + export * + module * { export * } +} + +module CarbKit.Swift { + header "CarbKit-Swift.h" +} diff --git a/Carthage/Build/iOS/CommonCrypto.framework/CommonCrypto b/Carthage/Build/iOS/CommonCrypto.framework/CommonCrypto new file mode 100755 index 0000000000..4df47aaea6 Binary files /dev/null and b/Carthage/Build/iOS/CommonCrypto.framework/CommonCrypto differ diff --git a/Carthage/Build/iOS/CommonCrypto.framework/Info.plist b/Carthage/Build/iOS/CommonCrypto.framework/Info.plist new file mode 100644 index 0000000000..c44f918643 Binary files /dev/null and b/Carthage/Build/iOS/CommonCrypto.framework/Info.plist differ diff --git a/Carthage/Build/iOS/CommonCrypto.framework/Modules/module.modulemap b/Carthage/Build/iOS/CommonCrypto.framework/Modules/module.modulemap new file mode 100644 index 0000000000..125b77209d --- /dev/null +++ b/Carthage/Build/iOS/CommonCrypto.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +module CommonCrypto [system] { + header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h" + export * +} diff --git a/Carthage/Build/iOS/Crypto.framework/Crypto b/Carthage/Build/iOS/Crypto.framework/Crypto new file mode 100755 index 0000000000..dadd6b2206 Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Crypto differ diff --git a/Carthage/Build/iOS/Crypto.framework/Headers/Crypto-Swift.h b/Carthage/Build/iOS/Crypto.framework/Headers/Crypto-Swift.h new file mode 100644 index 0000000000..d5064b8ae0 --- /dev/null +++ b/Carthage/Build/iOS/Crypto.framework/Headers/Crypto-Swift.h @@ -0,0 +1,112 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import Foundation; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" + +@interface NSData (SWIFT_EXTENSION(Crypto)) +@property (nonatomic, readonly, strong) NSData * _Nonnull MD2; +@property (nonatomic, readonly, strong) NSData * _Nonnull MD4; +@property (nonatomic, readonly, strong) NSData * _Nonnull MD5; +@property (nonatomic, readonly, strong) NSData * _Nonnull SHA1; +@property (nonatomic, readonly, strong) NSData * _Nonnull SHA224; +@property (nonatomic, readonly, strong) NSData * _Nonnull SHA256; +@property (nonatomic, readonly, strong) NSData * _Nonnull SHA384; +@property (nonatomic, readonly, strong) NSData * _Nonnull SHA512; +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/Crypto.framework/Headers/Crypto.h b/Carthage/Build/iOS/Crypto.framework/Headers/Crypto.h new file mode 100644 index 0000000000..53063f52ec --- /dev/null +++ b/Carthage/Build/iOS/Crypto.framework/Headers/Crypto.h @@ -0,0 +1,16 @@ +// +// Crypto.h +// Crypto +// +// Created by Sam Soffes on 4/21/15. +// Copyright (c) 2015 Sam Soffes. All rights reserved. +// + +@import Foundation; +//@import CommonCrypto; + +//! Project version number for Crypto. +FOUNDATION_EXPORT double CryptoVersionNumber; + +//! Project version string for Crypto. +FOUNDATION_EXPORT const unsigned char CryptoVersionString[]; diff --git a/Carthage/Build/iOS/Crypto.framework/Info.plist b/Carthage/Build/iOS/Crypto.framework/Info.plist new file mode 100644 index 0000000000..fbab31be79 Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Info.plist differ diff --git a/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..5e026e7740 Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..12686827ee Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..b91807deb7 Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..c5941d6d82 Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..914e539b16 Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..f8b9a30a48 Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..3e7a9ebf40 Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..3ecd8fb6b4 Binary files /dev/null and b/Carthage/Build/iOS/Crypto.framework/Modules/Crypto.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/Crypto.framework/Modules/module.modulemap b/Carthage/Build/iOS/Crypto.framework/Modules/module.modulemap new file mode 100644 index 0000000000..0b0838b09a --- /dev/null +++ b/Carthage/Build/iOS/Crypto.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module Crypto { + umbrella header "Crypto.h" + + export * + module * { export * } +} + +module Crypto.Swift { + header "Crypto-Swift.h" +} diff --git a/Carthage/Build/iOS/GlucoseKit.framework/GlucoseKit b/Carthage/Build/iOS/GlucoseKit.framework/GlucoseKit new file mode 100755 index 0000000000..dc90d3ee77 Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/GlucoseKit differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Headers/GlucoseKit-Swift.h b/Carthage/Build/iOS/GlucoseKit.framework/Headers/GlucoseKit-Swift.h new file mode 100644 index 0000000000..562f147313 --- /dev/null +++ b/Carthage/Build/iOS/GlucoseKit.framework/Headers/GlucoseKit-Swift.h @@ -0,0 +1,104 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import HealthKit; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" + +@interface HKQuantitySample (SWIFT_EXTENSION(GlucoseKit)) +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Headers/GlucoseKit.h b/Carthage/Build/iOS/GlucoseKit.framework/Headers/GlucoseKit.h new file mode 100644 index 0000000000..78da548953 --- /dev/null +++ b/Carthage/Build/iOS/GlucoseKit.framework/Headers/GlucoseKit.h @@ -0,0 +1,19 @@ +// +// GlucoseKit.h +// GlucoseKit +// +// Created by Nathan Racklyeft on 2/15/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +#import + +//! Project version number for GlucoseKit. +FOUNDATION_EXPORT double GlucoseKitVersionNumber; + +//! Project version string for GlucoseKit. +FOUNDATION_EXPORT const unsigned char GlucoseKitVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Info.plist b/Carthage/Build/iOS/GlucoseKit.framework/Info.plist new file mode 100644 index 0000000000..4978c647c7 Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/Info.plist differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..2845a97a4d Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..6e16758432 Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..8b497082d4 Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..04bcba1f4c Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..e6caf8c93d Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..0a6aee654c Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..5da0e4601e Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..35d12a9904 Binary files /dev/null and b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Modules/module.modulemap b/Carthage/Build/iOS/GlucoseKit.framework/Modules/module.modulemap new file mode 100644 index 0000000000..f8229630b3 --- /dev/null +++ b/Carthage/Build/iOS/GlucoseKit.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module GlucoseKit { + umbrella header "GlucoseKit.h" + + export * + module * { export * } +} + +module GlucoseKit.Swift { + header "GlucoseKit-Swift.h" +} diff --git a/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/Info.plist b/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/Info.plist new file mode 100644 index 0000000000..67202dc4c9 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/Info.plist differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/UITableViewController-jGX-GA-nlH.nib b/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/UITableViewController-jGX-GA-nlH.nib new file mode 100644 index 0000000000..6c10eb45a6 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/UITableViewController-jGX-GA-nlH.nib differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/jGX-GA-nlH-view-ccM-3y-LQM.nib b/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/jGX-GA-nlH-view-ccM-3y-LQM.nib new file mode 100644 index 0000000000..f6a9db440d Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/jGX-GA-nlH-view-ccM-3y-LQM.nib differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Headers/InsulinKit-Swift.h b/Carthage/Build/iOS/InsulinKit.framework/Headers/InsulinKit-Swift.h new file mode 100644 index 0000000000..93f6e27ba7 --- /dev/null +++ b/Carthage/Build/iOS/InsulinKit.framework/Headers/InsulinKit-Swift.h @@ -0,0 +1,128 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import Foundation; +@import UIKit; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" + +@interface NSUserDefaults (SWIFT_EXTENSION(InsulinKit)) +@end + +@class UITableView; +@class NSIndexPath; +@class UITableViewCell; +@class NSBundle; +@class NSCoder; + +SWIFT_CLASS("_TtC10InsulinKit28ReservoirTableViewController") +@interface ReservoirTableViewController : UITableViewController +- (void)viewDidLoad; +- (void)viewWillAppear:(BOOL)animated; +- (void)viewDidAppear:(BOOL)animated; +- (void)viewWillDisappear:(BOOL)animated; +- (void)viewDidDisappear:(BOOL)animated; +- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView; +- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section; +- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (BOOL)tableView:(UITableView * _Nonnull)tableView canEditRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (nonnull instancetype)initWithStyle:(UITableViewStyle)style OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/InsulinKit.framework/Headers/InsulinKit.h b/Carthage/Build/iOS/InsulinKit.framework/Headers/InsulinKit.h new file mode 100644 index 0000000000..6ed55d515b --- /dev/null +++ b/Carthage/Build/iOS/InsulinKit.framework/Headers/InsulinKit.h @@ -0,0 +1,19 @@ +// +// InsulinKit.h +// InsulinKit +// +// Created by Nathan Racklyeft on 2/15/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +#import + +//! Project version number for InsulinKit. +FOUNDATION_EXPORT double InsulinKitVersionNumber; + +//! Project version string for InsulinKit. +FOUNDATION_EXPORT const unsigned char InsulinKitVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Carthage/Build/iOS/InsulinKit.framework/Info.plist b/Carthage/Build/iOS/InsulinKit.framework/Info.plist new file mode 100644 index 0000000000..b39873cf78 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Info.plist differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/InsulinKit b/Carthage/Build/iOS/InsulinKit.framework/InsulinKit new file mode 100755 index 0000000000..4f03819e0a Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/InsulinKit differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Model.momd/Model.mom b/Carthage/Build/iOS/InsulinKit.framework/Model.momd/Model.mom new file mode 100644 index 0000000000..7a3a177461 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Model.momd/Model.mom differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Model.momd/VersionInfo.plist b/Carthage/Build/iOS/InsulinKit.framework/Model.momd/VersionInfo.plist new file mode 100644 index 0000000000..11ed1b6ba8 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Model.momd/VersionInfo.plist differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..a592220474 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..55c2adafe4 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..f69ab23919 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..4a33b44822 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..c678c67452 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..91aad333c1 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..876b3d1678 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..29af589312 Binary files /dev/null and b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/InsulinKit.framework/Modules/module.modulemap b/Carthage/Build/iOS/InsulinKit.framework/Modules/module.modulemap new file mode 100644 index 0000000000..94340c2075 --- /dev/null +++ b/Carthage/Build/iOS/InsulinKit.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module InsulinKit { + umbrella header "InsulinKit.h" + + export * + module * { export * } +} + +module InsulinKit.Swift { + header "InsulinKit-Swift.h" +} diff --git a/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeTableViewCell.nib b/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeTableViewCell.nib new file mode 100644 index 0000000000..ffb3d18756 Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeTableViewCell.nib differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Headers/LoopKit-Swift.h b/Carthage/Build/iOS/LoopKit.framework/Headers/LoopKit-Swift.h new file mode 100644 index 0000000000..62f53acb31 --- /dev/null +++ b/Carthage/Build/iOS/LoopKit.framework/Headers/LoopKit-Swift.h @@ -0,0 +1,246 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import UIKit; +@import CoreGraphics; +@import HealthKit; +@import Foundation; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +@class NSCoder; +@class UIBarButtonItem; +@class NSTimeZone; +@class UITableView; +@class NSIndexPath; +@class UITableViewCell; + +SWIFT_CLASS("_TtC7LoopKit37DailyValueScheduleTableViewController") +@interface DailyValueScheduleTableViewController : UITableViewController +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)viewDidLoad; +- (void)setEditing:(BOOL)editing animated:(BOOL)animated; +- (void)viewWillDisappear:(BOOL)animated; +- (UIBarButtonItem * _Nonnull)insertButtonItem; +@property (nonatomic, strong) NSTimeZone * _Nonnull timeZone; +@property (nonatomic, copy) NSString * _Nonnull unitString; +- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView; +- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section; +- (BOOL)tableView:(UITableView * _Nonnull)tableView canEditRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (BOOL)tableView:(UITableView * _Nonnull)tableView canMoveRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (CGFloat)tableView:(UITableView * _Nonnull)tableView heightForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (BOOL)tableView:(UITableView * _Nonnull)tableView shouldHighlightRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (NSIndexPath * _Nullable)tableView:(UITableView * _Nonnull)tableView willSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView didDeselectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView didSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (NSIndexPath * _Nonnull)tableView:(UITableView * _Nonnull)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath * _Nonnull)sourceIndexPath toProposedIndexPath:(NSIndexPath * _Nonnull)proposedDestinationIndexPath; +@end + + +SWIFT_CLASS("_TtC7LoopKit38SingleValueScheduleTableViewController") +@interface SingleValueScheduleTableViewController : DailyValueScheduleTableViewController +- (void)viewDidLoad; +- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section; +- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView moveRowAtIndexPath:(NSIndexPath * _Nonnull)sourceIndexPath toIndexPath:(NSIndexPath * _Nonnull)destinationIndexPath; +- (NSIndexPath * _Nonnull)tableView:(UITableView * _Nonnull)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath * _Nonnull)sourceIndexPath toProposedIndexPath:(NSIndexPath * _Nonnull)proposedDestinationIndexPath; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + +@class HKUnit; + +SWIFT_CLASS("_TtC7LoopKit40DailyQuantityScheduleTableViewController") +@interface DailyQuantityScheduleTableViewController : SingleValueScheduleTableViewController +@property (nonatomic, strong) HKUnit * _Nonnull unit; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + + +SWIFT_CLASS("_TtC7LoopKit39GlucoseRangeScheduleTableViewController") +@interface GlucoseRangeScheduleTableViewController : DailyValueScheduleTableViewController +@property (nonatomic, strong) HKUnit * _Nonnull unit; +- (void)viewDidLoad; +- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section; +- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView moveRowAtIndexPath:(NSIndexPath * _Nonnull)sourceIndexPath toIndexPath:(NSIndexPath * _Nonnull)destinationIndexPath; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + +@interface HKQuantity (SWIFT_EXTENSION(LoopKit)) +@end + + +@interface HKUnit (SWIFT_EXTENSION(LoopKit)) ++ (HKUnit * _Nonnull)milligramsPerDeciliterUnit; ++ (HKUnit * _Nonnull)millimolesPerLiterUnit; + +/// A formatting helper for determining the preferred decimal style for a given unit +@property (nonatomic, readonly) NSInteger preferredMinimumFractionDigits; +@end + + +@interface NSDate (SWIFT_EXTENSION(LoopKit)) +@end + + +@interface NSDate (SWIFT_EXTENSION(LoopKit)) +- (NSDate * _Nonnull)dateFlooredToTimeInterval:(NSTimeInterval)interval; +- (NSDate * _Nonnull)dateCeiledToTimeInterval:(NSTimeInterval)interval; +@end + + +@class UITextField; +@class NSBundle; + +SWIFT_CLASS("_TtC7LoopKit28TextFieldTableViewController") +@interface TextFieldTableViewController : UITableViewController +@property (nonatomic, strong) NSIndexPath * _Nullable indexPath; +@property (nonatomic, copy) NSString * _Nullable placeholder; +@property (nonatomic, copy) NSString * _Nullable value; +@property (nonatomic) UIKeyboardType keyboardType; +- (nonnull instancetype)init; +- (void)viewDidLoad; +- (void)viewDidAppear:(BOOL)animated; +- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section; +- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (BOOL)textFieldShouldEndEditing:(UITextField * _Nonnull)textField; +- (BOOL)textFieldShouldReturn:(UITextField * _Nonnull)textField; +- (nonnull instancetype)initWithStyle:(UITableViewStyle)style OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + +@interface UITableViewCell (SWIFT_EXTENSION(LoopKit)) +@end + + +@interface UIViewController (SWIFT_EXTENSION(LoopKit)) + +/// Convenience method to present an alert controller on the active view controller +/// +/// \param title The title of the alert +/// +/// \param message The message of the alert +/// +/// \param animated Whether to animate the alert +/// +/// \param completion An optional closure to execute after the presentation finishes +- (void)presentAlertControllerWithTitle:(NSString * _Nullable)title message:(NSString * _Nonnull)message animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion; + +/// Convenience method to present a view controller on the active view controller. +/// +/// If the receiver is not in a window, or already has a presented view controller, this method will +/// attempt to find the most appropriate view controller for presenting. +/// +/// \param viewControllerToPresent The view controller to display over the view controller’s content +/// +/// \param animated Whether to animate the presentation +/// +/// \param completion An optional closure to execute after the presentation finishes +- (void)presentViewControllerOnActiveViewController:(UIViewController * _Nonnull)viewControllerToPresent animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/LoopKit.framework/Headers/LoopKit.h b/Carthage/Build/iOS/LoopKit.framework/Headers/LoopKit.h new file mode 100644 index 0000000000..16ad5bea32 --- /dev/null +++ b/Carthage/Build/iOS/LoopKit.framework/Headers/LoopKit.h @@ -0,0 +1,19 @@ +// +// LoopKit.h +// LoopKit +// +// Created by Nathan Racklyeft on 1/18/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +#import + +//! Project version number for LoopKit. +FOUNDATION_EXPORT double LoopKitVersionNumber; + +//! Project version string for LoopKit. +FOUNDATION_EXPORT const unsigned char LoopKitVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Carthage/Build/iOS/LoopKit.framework/Info.plist b/Carthage/Build/iOS/LoopKit.framework/Info.plist new file mode 100644 index 0000000000..9b2056caaa Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/Info.plist differ diff --git a/Carthage/Build/iOS/LoopKit.framework/LoopKit b/Carthage/Build/iOS/LoopKit.framework/LoopKit new file mode 100755 index 0000000000..ccd50c334a Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/LoopKit differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..e651355756 Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..a7502d68f7 Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..c0d1397c43 Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..d04ecd8297 Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..c8006e5df7 Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..9e14a1e252 Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..a58c8a2e26 Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..c1e5bbe44c Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Modules/module.modulemap b/Carthage/Build/iOS/LoopKit.framework/Modules/module.modulemap new file mode 100644 index 0000000000..d5c960cf54 --- /dev/null +++ b/Carthage/Build/iOS/LoopKit.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module LoopKit { + umbrella header "LoopKit.h" + + export * + module * { export * } +} + +module LoopKit.Swift { + header "LoopKit-Swift.h" +} diff --git a/Carthage/Build/iOS/LoopKit.framework/RepeatingScheduleValueTableViewCell.nib b/Carthage/Build/iOS/LoopKit.framework/RepeatingScheduleValueTableViewCell.nib new file mode 100644 index 0000000000..625c1e5f5f Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/RepeatingScheduleValueTableViewCell.nib differ diff --git a/Carthage/Build/iOS/LoopKit.framework/TextFieldTableViewCell.nib b/Carthage/Build/iOS/LoopKit.framework/TextFieldTableViewCell.nib new file mode 100644 index 0000000000..3bf0e10143 Binary files /dev/null and b/Carthage/Build/iOS/LoopKit.framework/TextFieldTableViewCell.nib differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Headers/MinimedKit-Swift.h b/Carthage/Build/iOS/MinimedKit.framework/Headers/MinimedKit-Swift.h new file mode 100644 index 0000000000..575bbe49f6 --- /dev/null +++ b/Carthage/Build/iOS/MinimedKit.framework/Headers/MinimedKit-Swift.h @@ -0,0 +1,120 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import Foundation; +@import ObjectiveC; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" + +@interface NSData (SWIFT_EXTENSION(MinimedKit)) +@end + + +@interface NSDateComponents (SWIFT_EXTENSION(MinimedKit)) +@end + +@class NSDate; + +SWIFT_CLASS("_TtC10MinimedKit10TimeFormat") +@interface TimeFormat : NSObject ++ (NSDateComponents * _Nonnull)parse2ByteDate:(NSData * _Nonnull)data offset:(NSInteger)offset; ++ (NSDate * _Nullable)timestampAsLocalDate:(NSDateComponents * _Nonnull)comps; ++ (NSString * _Nonnull)timestampStr:(NSDateComponents * _Nonnull)comps; ++ (NSString * _Nonnull)timestampStrFromDate:(NSDate * _Nonnull)date; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/MinimedKit.framework/Headers/MinimedKit.h b/Carthage/Build/iOS/MinimedKit.framework/Headers/MinimedKit.h new file mode 100644 index 0000000000..b4f1d1cc90 --- /dev/null +++ b/Carthage/Build/iOS/MinimedKit.framework/Headers/MinimedKit.h @@ -0,0 +1,19 @@ +// +// MinimedKit.h +// MinimedKit +// +// Created by Pete Schwamb on 2/27/16. +// Copyright © 2016 Pete Schwamb. All rights reserved. +// + +#import + +//! Project version number for MinimedKit. +FOUNDATION_EXPORT double MinimedKitVersionNumber; + +//! Project version string for MinimedKit. +FOUNDATION_EXPORT const unsigned char MinimedKitVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Carthage/Build/iOS/MinimedKit.framework/Info.plist b/Carthage/Build/iOS/MinimedKit.framework/Info.plist new file mode 100644 index 0000000000..1fa9d3fe0a Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/Info.plist differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/MinimedKit b/Carthage/Build/iOS/MinimedKit.framework/MinimedKit new file mode 100755 index 0000000000..e5108023cf Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/MinimedKit differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..dbb6d000c7 Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..d3c6725d5b Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..f994dc7584 Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..3b188cfa3e Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..dfe14c0346 Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..0fd6534c9b Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..a884bb4d7e Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..3eaf4e648f Binary files /dev/null and b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/MinimedKit.framework/Modules/module.modulemap b/Carthage/Build/iOS/MinimedKit.framework/Modules/module.modulemap new file mode 100644 index 0000000000..ed1a2e0ddc --- /dev/null +++ b/Carthage/Build/iOS/MinimedKit.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module MinimedKit { + umbrella header "MinimedKit.h" + + export * + module * { export * } +} + +module MinimedKit.Swift { + header "MinimedKit-Swift.h" +} diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit-Swift.h b/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit-Swift.h new file mode 100644 index 0000000000..d9e3f152b7 --- /dev/null +++ b/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit-Swift.h @@ -0,0 +1,108 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import ObjectiveC; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" + +SWIFT_CLASS("_TtC19NightscoutUploadKit18NightscoutUploader") +@interface NightscoutUploader : NSObject +@property (nonatomic, copy) NSString * _Nullable siteURL; +@property (nonatomic, copy) NSString * _Nullable APISecret; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit.h b/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit.h new file mode 100644 index 0000000000..f5a66044aa --- /dev/null +++ b/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit.h @@ -0,0 +1,17 @@ +// +// NightscoutUploadKit.h +// NightscoutUploadKit +// +// Created by Pete Schwamb on 4/26/16. +// Copyright © 2016 Pete Schwamb. All rights reserved. +// + +#import + +//! Project version number for NightscoutUploadKit. +FOUNDATION_EXPORT double NightscoutUploadKitVersionNumber; + +//! Project version string for NightscoutUploadKit. +FOUNDATION_EXPORT const unsigned char NightscoutUploadKitVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Info.plist b/Carthage/Build/iOS/NightscoutUploadKit.framework/Info.plist new file mode 100644 index 0000000000..0338a6cd7b Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Info.plist differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..b8fb2a62b3 Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..db71daa2be Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..f3fc985c2d Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..83c7dea699 Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..c06bf1e264 Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..e6084be97a Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..f9eb98bd9a Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..6a9fbb41f2 Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/module.modulemap b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/module.modulemap new file mode 100644 index 0000000000..5153dc9932 --- /dev/null +++ b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module NightscoutUploadKit { + umbrella header "NightscoutUploadKit.h" + + export * + module * { export * } +} + +module NightscoutUploadKit.Swift { + header "NightscoutUploadKit-Swift.h" +} diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/NightscoutUploadKit b/Carthage/Build/iOS/NightscoutUploadKit.framework/NightscoutUploadKit new file mode 100755 index 0000000000..d65bb9bbdb Binary files /dev/null and b/Carthage/Build/iOS/NightscoutUploadKit.framework/NightscoutUploadKit differ diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/CmdBase.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/CmdBase.h new file mode 100644 index 0000000000..fd81d13117 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/CmdBase.h @@ -0,0 +1,25 @@ +// +// BaseCmd.h +// RileyLink +// +// Created by Pete Schwamb on 12/26/15. +// Copyright © 2015 Pete Schwamb. All rights reserved. +// + +@import Foundation; + +#define RILEYLINK_CMD_GET_STATE 1 +#define RILEYLINK_CMD_GET_VERSION 2 +#define RILEYLINK_CMD_GET_PACKET 3 +#define RILEYLINK_CMD_SEND_PACKET 4 +#define RILEYLINK_CMD_SEND_AND_LISTEN 5 +#define RILEYLINK_CMD_UPDATE_REGISTER 6 +#define RILEYLINK_CMD_RESET 7 + +@interface CmdBase : NSObject + +@property (NS_NONATOMIC_IOSONLY, readonly, copy) NSData *data; + +@property (nonatomic, strong) NSData *response; + +@end diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/GetPacketCmd.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/GetPacketCmd.h new file mode 100644 index 0000000000..284efa8c46 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/GetPacketCmd.h @@ -0,0 +1,18 @@ +// +// GetPacketCmd.h +// RileyLink +// +// Created by Pete Schwamb on 1/2/16. +// Copyright © 2016 Pete Schwamb. All rights reserved. +// + +@import Foundation; +#import "ReceivingPacketCmd.h" + + +@interface GetPacketCmd : ReceivingPacketCmd + +@property (nonatomic, assign) uint8_t listenChannel; +@property (nonatomic, assign) uint16_t timeoutMS; + +@end diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RFPacket.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RFPacket.h new file mode 100644 index 0000000000..2300bca7df --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RFPacket.h @@ -0,0 +1,24 @@ +// +// RFPacket.h +// RileyLink +// +// Created by Pete Schwamb on 2/28/16. +// Copyright © 2016 Pete Schwamb. All rights reserved. +// + +@import Foundation; + +@interface RFPacket : NSObject + +- (nonnull instancetype)initWithData:(nonnull NSData*)data NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithRFSPYResponse:(nonnull NSData*)data NS_DESIGNATED_INITIALIZER; + +- (nonnull NSData*)encodedData; + +@property (nonatomic, nullable, strong) NSData *data; +@property (nonatomic, nullable, strong) NSDate *capturedAt; +@property (nonatomic, assign) int rssi; +@property (nonatomic, assign) int packetNumber; + + +@end diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/ReceivingPacketCmd.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/ReceivingPacketCmd.h new file mode 100644 index 0000000000..cfc55dd86a --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/ReceivingPacketCmd.h @@ -0,0 +1,17 @@ +// +// ReceivingPacketCmd.h +// RileyLink +// +// Created by Pete Schwamb on 3/3/16. +// Copyright © 2016 Pete Schwamb. All rights reserved. +// + +@import Foundation; +#import "CmdBase.h" +#import "RFPacket.h" + +@interface ReceivingPacketCmd : CmdBase + +@property (nonatomic, strong) RFPacket *receivedPacket; + +@end diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEDevice.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEDevice.h new file mode 100644 index 0000000000..da1cbac299 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEDevice.h @@ -0,0 +1,99 @@ +// +// RileyLinkBLE.h +// RileyLink +// +// Created by Pete Schwamb on 7/28/15. +// Copyright (c) 2015 Pete Schwamb. All rights reserved. +// + +@import Foundation; +@import CoreBluetooth; +#import "CmdBase.h" + +typedef NS_ENUM(NSUInteger, RileyLinkState) { + RileyLinkStateConnecting, + RileyLinkStateConnected, + RileyLinkStateDisconnected +}; + +typedef NS_ENUM(NSUInteger, SubgRfspyError) { + SubgRfspyErrorRxTimeout = 0xaa, + SubgRfspyErrorCmdInterrupted = 0xbb, + SubgRfspyErrorZeroData = 0xcc +}; + +typedef NS_ENUM(NSUInteger, SubgRfspyVersionState) { + SubgRfspyVersionStateUnknown = 0, + SubgRfspyVersionStateUpToDate, + SubgRfspyVersionStateOutOfDate, + SubgRfspyVersionStateInvalid +}; + + +#define ERROR_RX_TIMEOUT 0xaa +#define ERROR_CMD_INTERRUPTED 0xbb +#define ERROR_ZERO_DATA 0xcc + +#define RILEYLINK_FREQ_XTAL 24000000 + +#define CC111X_REG_FREQ2 0x09 +#define CC111X_REG_FREQ1 0x0A +#define CC111X_REG_FREQ0 0x0B +#define CC111X_REG_MDMCFG4 0x0C +#define CC111X_REG_MDMCFG3 0x0D +#define CC111X_REG_MDMCFG2 0x0E +#define CC111X_REG_MDMCFG1 0x0F +#define CC111X_REG_MDMCFG0 0x10 +#define CC111X_REG_AGCCTRL2 0x17 +#define CC111X_REG_AGCCTRL1 0x18 +#define CC111X_REG_AGCCTRL0 0x19 +#define CC111X_REG_FREND1 0x1A +#define CC111X_REG_FREND0 0x1B + + +@interface RileyLinkCmdSession : NSObject +/** + Runs a command synchronously. I.E. this method will not return until the command + finishes, or times out. Returns NO if the command timed out. The command's response + is set if the command did not time out. + */ +- (BOOL) doCmd:(nonnull CmdBase*)cmd withTimeoutMs:(NSInteger)timeoutMS; +@end + +@interface RileyLinkBLEDevice : NSObject + +@property (nonatomic, nullable, readonly) NSString * name; +@property (nonatomic, nullable, retain) NSNumber * RSSI; +@property (nonatomic, nonnull, readonly) NSString * peripheralId; +@property (nonatomic, nonnull, readonly, retain) CBPeripheral * peripheral; + +@property (nonatomic, readonly) RileyLinkState state; + +@property (nonatomic, readonly, copy, nonnull) NSString * deviceURI; + +@property (nonatomic, readonly, nullable) NSString *firmwareVersion; + +@property (nonatomic, readonly) SubgRfspyVersionState firmwareState; + +@property (nonatomic, readonly, nullable) NSDate *lastIdle; + +@property (nonatomic) BOOL timerTickEnabled; + +/** + Initializes the device with a specified peripheral + + @param peripheral The peripheral to represent + + @return A newly-initialized device + */ +- (nonnull instancetype)initWithPeripheral:(nonnull CBPeripheral *)peripheral NS_DESIGNATED_INITIALIZER; + +- (void) connectionStateDidChange:(nullable NSError *)error; + +- (void) runSession:(void (^ _Nonnull)(RileyLinkCmdSession* _Nonnull))proc; +- (void) setCustomName:(nonnull NSString*)customName; +- (void) enableIdleListeningOnChannel:(uint8_t)channel; +- (void) disableIdleListening; +- (void) assertIdleListening; + +@end diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEKit.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEKit.h new file mode 100644 index 0000000000..64ce668ea4 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEKit.h @@ -0,0 +1,23 @@ +// +// RileyLinkBLEKit.h +// RileyLinkBLEKit +// +// Created by Nathan Racklyeft on 4/8/16. +// Copyright © 2016 Pete Schwamb. All rights reserved. +// + +#import + +//! Project version number for RileyLinkBLEKit. +FOUNDATION_EXPORT double RileyLinkBLEKitVersionNumber; + +//! Project version string for RileyLinkBLEKit. +FOUNDATION_EXPORT const unsigned char RileyLinkBLEKitVersionString[]; + +#import +#import +#import +#import +#import +#import +#import diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEManager.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEManager.h new file mode 100644 index 0000000000..e960af1559 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEManager.h @@ -0,0 +1,52 @@ +// +// RileyLink.h +// RileyLink +// +// Created by Pete Schwamb on 8/5/14. +// Copyright (c) 2014 Pete Schwamb. All rights reserved. +// + +@import CoreBluetooth; +@import Foundation; + +#define RILEYLINK_EVENT_LIST_UPDATED @"RILEYLINK_EVENT_LIST_UPDATED" +#define RILEYLINK_EVENT_PACKET_RECEIVED @"RILEYLINK_EVENT_PACKET_RECEIVED" +#define RILEYLINK_EVENT_DEVICE_ADDED @"RILEYLINK_EVENT_DEVICE_ADDED" +#define RILEYLINK_EVENT_DEVICE_CONNECTED @"RILEYLINK_EVENT_DEVICE_CONNECTED" +#define RILEYLINK_EVENT_DEVICE_DISCONNECTED @"RILEYLINK_EVENT_DEVICE_DISCONNECTED" +#define RILEYLINK_EVENT_DEVICE_ATTRS_DISCOVERED @"RILEYLINK_EVENT_DEVICE_ATTRS_DISCOVERED" +#define RILEYLINK_EVENT_DEVICE_READY @"RILEYLINK_EVENT_DEVICE_READY" +#define RILEYLINK_EVENT_DEVICE_TIMER_TICK @"RILEYLINK_EVENT_DEVICE_TIMER_TICK" +#define RILEYLINK_EVENT_RSSI_CHANGED @"RILEYLINK_EVENT_RSSI_CHANGED" + +#define RILEYLINK_SERVICE_UUID @"0235733b-99c5-4197-b856-69219c2a3845" +#define RILEYLINK_DATA_UUID @"c842e849-5028-42e2-867c-016adada9155" +#define RILEYLINK_RESPONSE_COUNT_UUID @"6e6c7910-b89e-43a5-a0fe-50c5e2b81f4a" +#define RILEYLINK_CUSTOM_NAME_UUID @"d93b2af0-1e28-11e4-8c21-0800200c9a66" +#define RILEYLINK_TIMER_TICK_UUID @"6e6c7910-b89e-43a5-78af-50c5e2b86f7e" + + +@interface RileyLinkBLEManager : NSObject + +@property (nonatomic, nonnull, readonly, copy) NSArray *rileyLinkList; + +- (void)connectPeripheral:(nonnull CBPeripheral *)peripheral; +- (void)disconnectPeripheral:(nonnull CBPeripheral *)peripheral; + ++ (nonnull instancetype)sharedManager; + +@property (nonatomic, nonnull, strong) NSSet *autoConnectIds; +@property (nonatomic, getter=isScanningEnabled) BOOL scanningEnabled; + +/** + Converts an array of UUID strings to CBUUID objects, excluding those represented in an array of CBAttribute objects. + + @param UUIDStrings An array of UUID string representations to filter + @param attributes An array of CBAttribute objects to exclude + + @return An array of CBUUID objects + */ ++ (nonnull NSArray *)UUIDsFromUUIDStrings:(nonnull NSArray *)UUIDStrings excludingAttributes:(nullable NSArray *)attributes; + +@end + diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/SendAndListenCmd.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/SendAndListenCmd.h new file mode 100644 index 0000000000..1a9263f8a5 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/SendAndListenCmd.h @@ -0,0 +1,23 @@ +// +// SendDataCmd.h +// RileyLink +// +// Created by Pete Schwamb on 8/9/15. +// Copyright (c) 2015 Pete Schwamb. All rights reserved. +// + +@import Foundation; +#import "ReceivingPacketCmd.h" +#import "RFPacket.h" + +@interface SendAndListenCmd : ReceivingPacketCmd + +@property (nonatomic, strong) RFPacket *packet; +@property (nonatomic, assign) uint8_t sendChannel; // In general, 0 = meter, cgm. 2 = pump +@property (nonatomic, assign) uint8_t repeatCount; // 0 = no repeat, i.e. only one packet. 1 repeat = 2 packets sent total. +@property (nonatomic, assign) uint8_t msBetweenPackets; +@property (nonatomic, assign) uint8_t listenChannel; +@property (nonatomic, assign) uint16_t timeoutMS; +@property (nonatomic, assign) uint8_t retryCount; + +@end diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/SendPacketCmd.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/SendPacketCmd.h new file mode 100644 index 0000000000..c5d50e8303 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/SendPacketCmd.h @@ -0,0 +1,20 @@ +// +// SendPacketCmd.h +// RileyLink +// +// Created by Pete Schwamb on 12/27/15. +// Copyright © 2015 Pete Schwamb. All rights reserved. +// + +@import Foundation; +#import "CmdBase.h" +#import "RFPacket.h" + +@interface SendPacketCmd : CmdBase + +@property (nonatomic, strong) RFPacket *packet; +@property (nonatomic, assign) uint8_t sendChannel; // In general, 0 = meter, cgm. 2 = pump +@property (nonatomic, assign) uint8_t repeatCount; // 0 = no repeat, i.e. only one packet. 1 repeat = 2 packets sent total. +@property (nonatomic, assign) uint8_t msBetweenPackets; + +@end diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/UpdateRegisterCmd.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/UpdateRegisterCmd.h new file mode 100644 index 0000000000..61289a45e2 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/UpdateRegisterCmd.h @@ -0,0 +1,16 @@ +// +// UpdateRegisterCmd.h +// RileyLink +// +// Created by Pete Schwamb on 1/25/16. +// Copyright © 2016 Pete Schwamb. All rights reserved. +// + +#import "CmdBase.h" + +@interface UpdateRegisterCmd : CmdBase + +@property (nonatomic, assign) uint8_t addr; +@property (nonatomic, assign) uint8_t value; + +@end diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Info.plist b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Info.plist new file mode 100644 index 0000000000..22d99d0c68 Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Info.plist differ diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Modules/module.modulemap b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Modules/module.modulemap new file mode 100644 index 0000000000..3e72917a43 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module RileyLinkBLEKit { + umbrella header "RileyLinkBLEKit.h" + + export * + module * { export * } +} diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/RileyLinkBLEKit b/Carthage/Build/iOS/RileyLinkBLEKit.framework/RileyLinkBLEKit new file mode 100755 index 0000000000..8c243d565f Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkBLEKit.framework/RileyLinkBLEKit differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Headers/RileyLinkKit-Swift.h b/Carthage/Build/iOS/RileyLinkKit.framework/Headers/RileyLinkKit-Swift.h new file mode 100644 index 0000000000..d545afd5b0 --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkKit.framework/Headers/RileyLinkKit-Swift.h @@ -0,0 +1,141 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import Foundation; +@import UIKit; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" + +@interface NSData (SWIFT_EXTENSION(RileyLinkKit)) +@end + +@class UINib; +@class UISwitch; +@class NSCoder; + +SWIFT_CLASS("_TtC12RileyLinkKit28RileyLinkDeviceTableViewCell") +@interface RileyLinkDeviceTableViewCell : UITableViewCell +@property (nonatomic, weak) IBOutlet UISwitch * _Null_unspecified connectSwitch; ++ (UINib * _Nonnull)nib; +- (void)prepareForReuse; +- (nonnull instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString * _Nullable)reuseIdentifier OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + +@interface RileyLinkDeviceTableViewCell (SWIFT_EXTENSION(RileyLinkKit)) +@end + +@class UITableView; +@class NSIndexPath; +@class NSBundle; + +SWIFT_CLASS("_TtC12RileyLinkKit34RileyLinkDeviceTableViewController") +@interface RileyLinkDeviceTableViewController : UITableViewController +- (void)viewDidLoad; +- (void)viewWillAppear:(BOOL)animated; +- (NSInteger)numberOfSectionsInTableView:(UITableView * _Nonnull)tableView; +- (NSInteger)tableView:(UITableView * _Nonnull)tableView numberOfRowsInSection:(NSInteger)section; +- (UITableViewCell * _Nonnull)tableView:(UITableView * _Nonnull)tableView cellForRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (NSString * _Nullable)tableView:(UITableView * _Nonnull)tableView titleForHeaderInSection:(NSInteger)section; +- (BOOL)tableView:(UITableView * _Nonnull)tableView shouldHighlightRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (void)tableView:(UITableView * _Nonnull)tableView didSelectRowAtIndexPath:(NSIndexPath * _Nonnull)indexPath; +- (nonnull instancetype)initWithStyle:(UITableViewStyle)style OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Headers/RileyLinkKit.h b/Carthage/Build/iOS/RileyLinkKit.framework/Headers/RileyLinkKit.h new file mode 100644 index 0000000000..472a86e7fc --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkKit.framework/Headers/RileyLinkKit.h @@ -0,0 +1,17 @@ +// +// RileyLinkKit.h +// RileyLinkKit +// +// Created by Nathan Racklyeft on 4/9/16. +// Copyright © 2016 Pete Schwamb. All rights reserved. +// + +#import + +//! Project version number for RileyLinkKit. +FOUNDATION_EXPORT double RileyLinkKitVersionNumber; + +//! Project version string for RileyLinkKit. +FOUNDATION_EXPORT const unsigned char RileyLinkKitVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Info.plist b/Carthage/Build/iOS/RileyLinkKit.framework/Info.plist new file mode 100644 index 0000000000..7b02f24b28 Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/Info.plist differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..606bba4dba Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..1ae6973f89 Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..55e4c03f6a Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..1b916eb49d Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..1a801c0494 Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..8e55735ad0 Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..bad6d4ef43 Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..afd93802ea Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/module.modulemap b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/module.modulemap new file mode 100644 index 0000000000..1bb40d9f5c --- /dev/null +++ b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module RileyLinkKit { + umbrella header "RileyLinkKit.h" + + export * + module * { export * } +} + +module RileyLinkKit.Swift { + header "RileyLinkKit-Swift.h" +} diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkDeviceTableViewCell.nib b/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkDeviceTableViewCell.nib new file mode 100644 index 0000000000..94d5028e03 Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkDeviceTableViewCell.nib differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkKit b/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkKit new file mode 100755 index 0000000000..f327113ccf Binary files /dev/null and b/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkKit differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient-Swift.h b/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient-Swift.h new file mode 100644 index 0000000000..f6f83153b0 --- /dev/null +++ b/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient-Swift.h @@ -0,0 +1,99 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient.h b/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient.h new file mode 100644 index 0000000000..2d67034b08 --- /dev/null +++ b/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient.h @@ -0,0 +1,19 @@ +// +// ShareClient.h +// ShareClient +// +// Created by Nathan Racklyeft on 5/8/16. +// Copyright © 2016 Mark Wilson. All rights reserved. +// + +#import + +//! Project version number for ShareClient. +FOUNDATION_EXPORT double ShareClientVersionNumber; + +//! Project version string for ShareClient. +FOUNDATION_EXPORT const unsigned char ShareClientVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Carthage/Build/iOS/ShareClient.framework/Info.plist b/Carthage/Build/iOS/ShareClient.framework/Info.plist new file mode 100644 index 0000000000..ba06aa1698 Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/Info.plist differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..bc49e956d1 Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..cb62ac98b6 Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..d6ffa01050 Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..4c0eae745e Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..e226d82f80 Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..119f89ee67 Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..472c75946c Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..30977dd619 Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Modules/module.modulemap b/Carthage/Build/iOS/ShareClient.framework/Modules/module.modulemap new file mode 100644 index 0000000000..bb522d7b49 --- /dev/null +++ b/Carthage/Build/iOS/ShareClient.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module ShareClient { + umbrella header "ShareClient.h" + + export * + module * { export * } +} + +module ShareClient.Swift { + header "ShareClient-Swift.h" +} diff --git a/Carthage/Build/iOS/ShareClient.framework/ShareClient b/Carthage/Build/iOS/ShareClient.framework/ShareClient new file mode 100755 index 0000000000..01a906b9f0 Binary files /dev/null and b/Carthage/Build/iOS/ShareClient.framework/ShareClient differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Headers/SwiftCharts-Swift.h b/Carthage/Build/iOS/SwiftCharts.framework/Headers/SwiftCharts-Swift.h new file mode 100644 index 0000000000..c03e6be149 --- /dev/null +++ b/Carthage/Build/iOS/SwiftCharts.framework/Headers/SwiftCharts-Swift.h @@ -0,0 +1,232 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import UIKit; +@import CoreGraphics; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +@class NSCoder; + +SWIFT_CLASS("_TtC11SwiftCharts14ChartAreasView") +@interface ChartAreasView : UIView +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC11SwiftCharts9ChartView") +@interface ChartView : UIView +- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + + +/// A UIView subclass for drawing charts +SWIFT_CLASS("_TtC11SwiftCharts13ChartBaseView") +@interface ChartBaseView : ChartView +- (void)drawRect:(CGRect)rect; +- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + +@class UIColor; + +SWIFT_CLASS("_TtC11SwiftCharts20ChartCandleStickView") +@interface ChartCandleStickView : UIView +- (nonnull instancetype)initWithLineX:(CGFloat)lineX width:(CGFloat)width top:(CGFloat)top bottom:(CGFloat)bottom innerRectTop:(CGFloat)innerRectTop innerRectBottom:(CGFloat)innerRectBottom fillColor:(UIColor * _Nonnull)fillColor strokeColor:(UIColor * _Nonnull)strokeColor strokeWidth:(CGFloat)strokeWidth OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)drawRect:(CGRect)rect; +@end + + +SWIFT_CLASS("_TtC11SwiftCharts14ChartLinesView") +@interface ChartLinesView : UIView +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + +@class UITouch; +@class UIEvent; + +SWIFT_CLASS("_TtC11SwiftCharts21ChartPointEllipseView") +@interface ChartPointEllipseView : UIView +@property (nonatomic, strong) UIColor * _Nonnull fillColor; +@property (nonatomic, strong) UIColor * _Nullable borderColor; +@property (nonatomic) float animDelay; +@property (nonatomic) float animDuration; +@property (nonatomic) BOOL animateSize; +@property (nonatomic) BOOL animateAlpha; +@property (nonatomic) CGFloat animDamping; +@property (nonatomic) CGFloat animInitSpringVelocity; +@property (nonatomic, copy) void (^ _Nullable touchHandler)(void); +- (nonnull instancetype)initWithCenter:(CGPoint)center diameter:(CGFloat)diameter; +- (nonnull instancetype)initWithCenter:(CGPoint)center width:(CGFloat)width height:(CGFloat)height OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)didMoveToSuperview; +- (void)drawRect:(CGRect)rect; +- (void)touchesEnded:(NSSet * _Nonnull)touches withEvent:(UIEvent * _Nullable)event; +@end + + +SWIFT_CLASS("_TtC11SwiftCharts23ChartPointTargetingView") +@interface ChartPointTargetingView : UIView +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)didMoveToSuperview; +@end + + +SWIFT_CLASS("_TtC11SwiftCharts24ChartPointTextCircleView") +@interface ChartPointTextCircleView : UILabel +@property (nonatomic, copy) void (^ _Nullable viewTapped)(ChartPointTextCircleView * _Nonnull); +@property (nonatomic) BOOL selected; +- (void)didMoveToSuperview; +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)touchesEnded:(NSSet * _Nonnull)touches withEvent:(UIEvent * _Nullable)event; +@end + + +SWIFT_CLASS("_TtC11SwiftCharts17ChartPointViewBar") +@interface ChartPointViewBar : UIView +- (nonnull instancetype)initWithP1:(CGPoint)p1 p2:(CGPoint)p2 width:(CGFloat)width bgColor:(UIColor * _Nullable)bgColor animDuration:(float)animDuration OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)didMoveToSuperview; +@end + + +SWIFT_CLASS("_TtC11SwiftCharts24ChartPointViewBarGreyOut") +@interface ChartPointViewBarGreyOut : ChartPointViewBar +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)didMoveToSuperview; +@end + + +SWIFT_CLASS("_TtC11SwiftCharts24ChartPointViewBarStacked") +@interface ChartPointViewBarStacked : ChartPointViewBar +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)drawRect:(CGRect)rect; +@end + + + +SWIFT_CLASS("_TtC11SwiftCharts13HandlingLabel") +@interface HandlingLabel : UILabel +@property (nonatomic, copy) void (^ _Nullable movedToSuperViewHandler)(void); +@property (nonatomic, copy) void (^ _Nullable touchHandler)(void); +- (void)didMoveToSuperview; +- (void)touchesEnded:(NSSet * _Nonnull)touches withEvent:(UIEvent * _Nullable)event; +- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC11SwiftCharts12HandlingView") +@interface HandlingView : UIView +@property (nonatomic, copy) void (^ _Nullable movedToSuperViewHandler)(void); +@property (nonatomic, copy) void (^ _Nullable touchHandler)(void); +- (void)didMoveToSuperview; +- (void)touchesEnded:(NSSet * _Nonnull)touches withEvent:(UIEvent * _Nullable)event; +- (nonnull instancetype)initWithFrame:(CGRect)frame OBJC_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +@end + + +SWIFT_CLASS("_TtC11SwiftCharts10InfoBubble") +@interface InfoBubble : UIView +- (nonnull instancetype)initWithFrame:(CGRect)frame arrowWidth:(CGFloat)arrowWidth arrowHeight:(CGFloat)arrowHeight bgColor:(UIColor * _Nonnull)bgColor arrowX:(CGFloat)arrowX OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)drawRect:(CGRect)rect; +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Headers/SwiftCharts.h b/Carthage/Build/iOS/SwiftCharts.framework/Headers/SwiftCharts.h new file mode 100644 index 0000000000..4cfb01e91c --- /dev/null +++ b/Carthage/Build/iOS/SwiftCharts.framework/Headers/SwiftCharts.h @@ -0,0 +1,19 @@ +// +// SwiftCharts.h +// SwiftCharts +// +// Created by Pierre-Marc Airoldi on 2015-08-23. +// Copyright (c) 2015 Pierre-Marc Airoldi. All rights reserved. +// + +#import + +//! Project version number for SwiftCharts. +FOUNDATION_EXPORT double SwiftChartsVersionNumber; + +//! Project version string for SwiftCharts. +FOUNDATION_EXPORT const unsigned char SwiftChartsVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Info.plist b/Carthage/Build/iOS/SwiftCharts.framework/Info.plist new file mode 100644 index 0000000000..9542eff643 Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/Info.plist differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..4da4d1f086 Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..0889e57e11 Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..0994a2a3d7 Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..dd26801df5 Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..fc25fd072b Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..02b713066c Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..745570f489 Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..54bb307ff1 Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Modules/module.modulemap b/Carthage/Build/iOS/SwiftCharts.framework/Modules/module.modulemap new file mode 100644 index 0000000000..bd82053cad --- /dev/null +++ b/Carthage/Build/iOS/SwiftCharts.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module SwiftCharts { + umbrella header "SwiftCharts.h" + + export * + module * { export * } +} + +module SwiftCharts.Swift { + header "SwiftCharts-Swift.h" +} diff --git a/Carthage/Build/iOS/SwiftCharts.framework/SwiftCharts b/Carthage/Build/iOS/SwiftCharts.framework/SwiftCharts new file mode 100755 index 0000000000..55d3982ffd Binary files /dev/null and b/Carthage/Build/iOS/SwiftCharts.framework/SwiftCharts differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Headers/xDripG5-Swift.h b/Carthage/Build/iOS/xDripG5.framework/Headers/xDripG5-Swift.h new file mode 100644 index 0000000000..ca0c189f9d --- /dev/null +++ b/Carthage/Build/iOS/xDripG5.framework/Headers/xDripG5-Swift.h @@ -0,0 +1,108 @@ +// Generated by Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31) +#pragma clang diagnostic push + +#if defined(__has_include) && __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if defined(__has_include) && __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# 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))); +#endif + +#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 +# if defined(__has_feature) && __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if defined(__has_feature) && __has_feature(modules) +@import Foundation; +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" + +@interface NSData (SWIFT_EXTENSION(xDripG5)) +@end + + +@interface NSData (SWIFT_EXTENSION(xDripG5)) +@end + +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/xDripG5.framework/Headers/xDripG5.h b/Carthage/Build/iOS/xDripG5.framework/Headers/xDripG5.h new file mode 100644 index 0000000000..1ac6a8b8a6 --- /dev/null +++ b/Carthage/Build/iOS/xDripG5.framework/Headers/xDripG5.h @@ -0,0 +1,17 @@ +// +// xDripG5.h +// xDripG5 +// +// Created by Nathan Racklyeft on 12/30/15. +// Copyright © 2015 Nathan Racklyeft. All rights reserved. +// + +#import +@import CommonCrypto; + +//! Project version number for xDripG5. +FOUNDATION_EXPORT double xDripG5VersionNumber; + +//! Project version string for xDripG5. +FOUNDATION_EXPORT const unsigned char xDripG5VersionString[]; + diff --git a/Carthage/Build/iOS/xDripG5.framework/Info.plist b/Carthage/Build/iOS/xDripG5.framework/Info.plist new file mode 100644 index 0000000000..1fa9fdf950 Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/Info.plist differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/module.modulemap b/Carthage/Build/iOS/xDripG5.framework/Modules/module.modulemap new file mode 100644 index 0000000000..67b9c75e9f --- /dev/null +++ b/Carthage/Build/iOS/xDripG5.framework/Modules/module.modulemap @@ -0,0 +1,10 @@ +framework module xDripG5 { + umbrella header "xDripG5.h" + + export * + module * { export * } +} + +module xDripG5.Swift { + header "xDripG5-Swift.h" +} diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000000..936f53d6ef Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000000..b6e3c425cd Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000000..5ad4aa2dd8 Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000000..d85afc3e50 Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000000..ce9bd4aa7f Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000000..53fbbc15f3 Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000000..2176a2fd81 Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000000..187967fb48 Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/xDripG5.framework/xDripG5 b/Carthage/Build/iOS/xDripG5.framework/xDripG5 new file mode 100755 index 0000000000..450703d373 Binary files /dev/null and b/Carthage/Build/iOS/xDripG5.framework/xDripG5 differ diff --git a/Documentation/User Icons/LoopingPump.png b/Documentation/User Icons/LoopingPump.png new file mode 100644 index 0000000000..753e486c3d Binary files /dev/null and b/Documentation/User Icons/LoopingPump.png differ diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index 2b177f2b4a..45963db5fa 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -10,9 +10,24 @@ 4315D2871CA5CC3B00589052 /* CarbEntryEditTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4315D2861CA5CC3B00589052 /* CarbEntryEditTableViewController.swift */; }; 4315D28A1CA5F45E00589052 /* DiagnosticLogger+LoopKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4315D2891CA5F45E00589052 /* DiagnosticLogger+LoopKit.swift */; }; 4315D28B1CA5F48100589052 /* DiagnosticLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F4EF1C1BA2A57600526CE1 /* DiagnosticLogger.swift */; }; - 4315D28D1CA5F55F00589052 /* NSDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4315D28C1CA5F55F00589052 /* NSDateFormatter.swift */; }; - 4315D28F1CA5F60000589052 /* DiagnosticLogger+Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4315D28E1CA5F60000589052 /* DiagnosticLogger+Error.swift */; }; 4315D2901CA6332F00589052 /* RemoteSettings.plist in Resources */ = {isa = PBXBuildFile; fileRef = 43E344A71B9EAA8300C85C07 /* RemoteSettings.plist */; }; + 4328E0181CFBE1DA00E199AA /* ContextInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0131CFBE1DA00E199AA /* ContextInterfaceController.swift */; }; + 4328E0191CFBE1DA00E199AA /* InterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0141CFBE1DA00E199AA /* InterfaceController.swift */; }; + 4328E01A1CFBE1DA00E199AA /* StatusInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0151CFBE1DA00E199AA /* StatusInterfaceController.swift */; }; + 4328E01B1CFBE1DA00E199AA /* BolusInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0161CFBE1DA00E199AA /* BolusInterfaceController.swift */; }; + 4328E01C1CFBE1DA00E199AA /* GlanceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0171CFBE1DA00E199AA /* GlanceController.swift */; }; + 4328E01E1CFBE25F00E199AA /* AddCarbsInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E01D1CFBE25F00E199AA /* AddCarbsInterfaceController.swift */; }; + 4328E0261CFBE2C500E199AA /* IdentifiableClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0201CFBE2C500E199AA /* IdentifiableClass.swift */; }; + 4328E0271CFBE2C500E199AA /* NSDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0211CFBE2C500E199AA /* NSDateFormatter.swift */; }; + 4328E0281CFBE2C500E199AA /* CLKComplicationTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0221CFBE2C500E199AA /* CLKComplicationTemplate.swift */; }; + 4328E0291CFBE2C500E199AA /* NSUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0231CFBE2C500E199AA /* NSUserDefaults.swift */; }; + 4328E02A1CFBE2C500E199AA /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0241CFBE2C500E199AA /* UIColor.swift */; }; + 4328E02B1CFBE2C500E199AA /* WKAlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0251CFBE2C500E199AA /* WKAlertAction.swift */; }; + 4328E02D1CFBE2E800E199AA /* DiagnosticLogger+Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E02C1CFBE2E800E199AA /* DiagnosticLogger+Error.swift */; }; + 4328E02F1CFBF81800E199AA /* WKInterfaceImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E02E1CFBF81800E199AA /* WKInterfaceImage.swift */; }; + 4328E0301CFBFAEB00E199AA /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; + 4328E0331CFC091100E199AA /* WatchContext+LoopKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */; }; + 4328E0351CFC0AE100E199AA /* WatchDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0341CFC0AE100E199AA /* WatchDataManager.swift */; }; 4331E0781C85302200FBE832 /* CGPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4331E0771C85302200FBE832 /* CGPoint.swift */; }; 4331E07A1C85650D00FBE832 /* ChartAxisValueDoubleLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4331E0791C85650D00FBE832 /* ChartAxisValueDoubleLog.swift */; }; 4346D1E71C77F5FE00ABAFE3 /* ChartTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4346D1E61C77F5FE00ABAFE3 /* ChartTableViewCell.swift */; }; @@ -21,21 +36,18 @@ 434B2A0C1C97B20F00BC3003 /* LoopKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43F78D4B1C914197002152D1 /* LoopKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 434B2A0D1C97B22D00BC3003 /* InsulinKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43F78D4A1C914197002152D1 /* InsulinKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 434B2A0E1C97B24000BC3003 /* InsulinKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F78D4A1C914197002152D1 /* InsulinKit.framework */; }; + 434F24C91CFCA8940004498F /* TransmitterGlucose.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434F24C81CFCA8940004498F /* TransmitterGlucose.swift */; }; + 434F24CB1CFCB7AB0004498F /* GlucoseRxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434F24CA1CFCB7AB0004498F /* GlucoseRxMessage.swift */; }; 434FF1EA1CF26C29000DB779 /* IdentifiableClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434FF1E91CF26C29000DB779 /* IdentifiableClass.swift */; }; 434FF1EE1CF27EEF000DB779 /* UITableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434FF1ED1CF27EEF000DB779 /* UITableViewCell.swift */; }; 43523ED91CC35082001850F1 /* RileyLinkBLEKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 434AB0B11CBB4C3300422F4A /* RileyLinkBLEKit.framework */; }; 43523EDB1CC35083001850F1 /* RileyLinkKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43523EDA1CC35083001850F1 /* RileyLinkKit.framework */; }; - 4354002D1C9F66C000D5819C /* BolusInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4354002C1C9F66C000D5819C /* BolusInterfaceController.swift */; }; - 4354002F1C9F718600D5819C /* IdentifiableClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4354002E1C9F718600D5819C /* IdentifiableClass.swift */; }; 435400311C9F744E00D5819C /* BolusSuggestionUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 435400301C9F744E00D5819C /* BolusSuggestionUserInfo.swift */; }; 435400321C9F745500D5819C /* BolusSuggestionUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 435400301C9F744E00D5819C /* BolusSuggestionUserInfo.swift */; }; 435400341C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 435400331C9F878D00D5819C /* SetBolusUserInfo.swift */; }; 435400351C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 435400331C9F878D00D5819C /* SetBolusUserInfo.swift */; }; - 435400371C9F970500D5819C /* WKAlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 435400361C9F970500D5819C /* WKAlertAction.swift */; }; - 435400391C9FB7FC00D5819C /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 435400381C9FB7FC00D5819C /* UIColor.swift */; }; 4354003A1C9FB81100D5819C /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92501C541832001FFDE1 /* UIColor.swift */; }; 43649A631C7A347F00523D7F /* CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43649A621C7A347F00523D7F /* CollectionType.swift */; }; - 43757D181C07DA6D00910CB9 /* CLKComplicationTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43757D171C07DA6D00910CB9 /* CLKComplicationTemplate.swift */; }; 43776F901B8022E90074EA36 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43776F8F1B8022E90074EA36 /* AppDelegate.swift */; }; 43776F971B8022E90074EA36 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 43776F951B8022E90074EA36 /* Main.storyboard */; }; 43776F991B8022E90074EA36 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 43776F981B8022E90074EA36 /* Assets.xcassets */; }; @@ -51,23 +63,19 @@ 439897371CD2F80600223065 /* AnalyticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897361CD2F80600223065 /* AnalyticsManager.swift */; }; 439897391CD2F82C00223065 /* AmplitudeFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 439897381CD2F82C00223065 /* AmplitudeFramework.framework */; }; 4398973B1CD2FC2000223065 /* NSDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4398973A1CD2FC2000223065 /* NSDateFormatter.swift */; }; - 439A30B71C540CF600059771 /* AddCarbsInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439A30B61C540CF600059771 /* AddCarbsInterfaceController.swift */; }; 43A567691C94880B00334FAC /* LoopDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A567681C94880B00334FAC /* LoopDataManager.swift */; }; 43A5676B1C96155700334FAC /* SwitchTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A5676A1C96155700334FAC /* SwitchTableViewCell.swift */; }; 43A943761B926B7B0051FA24 /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 43A943741B926B7B0051FA24 /* Interface.storyboard */; }; 43A943781B926B7B0051FA24 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 43A943771B926B7B0051FA24 /* Assets.xcassets */; }; 43A9437F1B926B7B0051FA24 /* WatchApp Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 43A9437E1B926B7B0051FA24 /* WatchApp Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 43A943861B926B7B0051FA24 /* InterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A943851B926B7B0051FA24 /* InterfaceController.swift */; }; 43A943881B926B7B0051FA24 /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A943871B926B7B0051FA24 /* ExtensionDelegate.swift */; }; 43A9438A1B926B7B0051FA24 /* NotificationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A943891B926B7B0051FA24 /* NotificationController.swift */; }; - 43A9438C1B926B7B0051FA24 /* GlanceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A9438B1B926B7B0051FA24 /* GlanceController.swift */; }; 43A9438E1B926B7B0051FA24 /* ComplicationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A9438D1B926B7B0051FA24 /* ComplicationController.swift */; }; 43A943901B926B7B0051FA24 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 43A9438F1B926B7B0051FA24 /* Assets.xcassets */; }; 43A943941B926B7B0051FA24 /* WatchApp.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 43A943721B926B7B0051FA24 /* WatchApp.app */; }; 43B1E3DE1CD48B6B00A46274 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; 43B371861CE583890013C5A6 /* BasalStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B371851CE583890013C5A6 /* BasalStateView.swift */; }; 43B371881CE597D10013C5A6 /* ShareClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43B371871CE597D10013C5A6 /* ShareClient.framework */; }; - 43C094481CAB9A21001F6403 /* NSUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C094471CAB9A21001F6403 /* NSUserDefaults.swift */; }; 43C0944A1CACCC73001F6403 /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C094491CACCC73001F6403 /* NotificationManager.swift */; }; 43C418B31CE0550100405B6A /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E344A51B9E1B3300C85C07 /* NSBundle.swift */; }; 43C418B51CE0575200405B6A /* ShareGlucose+GlucoseKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C418B41CE0575200405B6A /* ShareGlucose+GlucoseKit.swift */; }; @@ -194,25 +202,36 @@ /* Begin PBXFileReference section */ 4315D2861CA5CC3B00589052 /* CarbEntryEditTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CarbEntryEditTableViewController.swift; sourceTree = ""; }; 4315D2891CA5F45E00589052 /* DiagnosticLogger+LoopKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DiagnosticLogger+LoopKit.swift"; sourceTree = ""; }; - 4315D28C1CA5F55F00589052 /* NSDateFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDateFormatter.swift; sourceTree = ""; }; - 4315D28E1CA5F60000589052 /* DiagnosticLogger+Error.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DiagnosticLogger+Error.swift"; sourceTree = ""; }; + 4328E0131CFBE1DA00E199AA /* ContextInterfaceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContextInterfaceController.swift; sourceTree = ""; }; + 4328E0141CFBE1DA00E199AA /* InterfaceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InterfaceController.swift; sourceTree = ""; }; + 4328E0151CFBE1DA00E199AA /* StatusInterfaceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusInterfaceController.swift; sourceTree = ""; }; + 4328E0161CFBE1DA00E199AA /* BolusInterfaceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BolusInterfaceController.swift; sourceTree = ""; }; + 4328E0171CFBE1DA00E199AA /* GlanceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlanceController.swift; sourceTree = ""; }; + 4328E01D1CFBE25F00E199AA /* AddCarbsInterfaceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddCarbsInterfaceController.swift; sourceTree = ""; }; + 4328E0201CFBE2C500E199AA /* IdentifiableClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IdentifiableClass.swift; sourceTree = ""; }; + 4328E0211CFBE2C500E199AA /* NSDateFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDateFormatter.swift; sourceTree = ""; }; + 4328E0221CFBE2C500E199AA /* CLKComplicationTemplate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CLKComplicationTemplate.swift; sourceTree = ""; }; + 4328E0231CFBE2C500E199AA /* NSUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSUserDefaults.swift; sourceTree = ""; }; + 4328E0241CFBE2C500E199AA /* UIColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = ""; }; + 4328E0251CFBE2C500E199AA /* WKAlertAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WKAlertAction.swift; sourceTree = ""; }; + 4328E02C1CFBE2E800E199AA /* DiagnosticLogger+Error.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DiagnosticLogger+Error.swift"; sourceTree = ""; }; + 4328E02E1CFBF81800E199AA /* WKInterfaceImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WKInterfaceImage.swift; sourceTree = ""; }; + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "WatchContext+LoopKit.swift"; sourceTree = ""; }; + 4328E0341CFC0AE100E199AA /* WatchDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchDataManager.swift; sourceTree = ""; }; 4331E0771C85302200FBE832 /* CGPoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGPoint.swift; sourceTree = ""; }; 4331E0791C85650D00FBE832 /* ChartAxisValueDoubleLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartAxisValueDoubleLog.swift; sourceTree = ""; }; 4346D1E61C77F5FE00ABAFE3 /* ChartTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartTableViewCell.swift; sourceTree = ""; }; 4346D1EF1C781BEA00ABAFE3 /* SwiftCharts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftCharts.framework; path = Carthage/Build/iOS/SwiftCharts.framework; sourceTree = ""; }; 4346D1F51C78501000ABAFE3 /* ChartPoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartPoint.swift; sourceTree = ""; }; 434AB0B11CBB4C3300422F4A /* RileyLinkBLEKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RileyLinkBLEKit.framework; path = Carthage/Build/iOS/RileyLinkBLEKit.framework; sourceTree = ""; }; + 434F24C81CFCA8940004498F /* TransmitterGlucose.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransmitterGlucose.swift; sourceTree = ""; }; + 434F24CA1CFCB7AB0004498F /* GlucoseRxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlucoseRxMessage.swift; sourceTree = ""; }; 434FF1E91CF26C29000DB779 /* IdentifiableClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IdentifiableClass.swift; sourceTree = ""; }; 434FF1ED1CF27EEF000DB779 /* UITableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UITableViewCell.swift; sourceTree = ""; }; 43523EDA1CC35083001850F1 /* RileyLinkKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = RileyLinkKit.framework; path = Carthage/Build/iOS/RileyLinkKit.framework; sourceTree = ""; }; - 4354002C1C9F66C000D5819C /* BolusInterfaceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BolusInterfaceController.swift; sourceTree = ""; }; - 4354002E1C9F718600D5819C /* IdentifiableClass.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IdentifiableClass.swift; sourceTree = ""; }; 435400301C9F744E00D5819C /* BolusSuggestionUserInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BolusSuggestionUserInfo.swift; sourceTree = ""; }; 435400331C9F878D00D5819C /* SetBolusUserInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetBolusUserInfo.swift; sourceTree = ""; }; - 435400361C9F970500D5819C /* WKAlertAction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WKAlertAction.swift; sourceTree = ""; }; - 435400381C9FB7FC00D5819C /* UIColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = ""; }; 43649A621C7A347F00523D7F /* CollectionType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionType.swift; sourceTree = ""; }; - 43757D171C07DA6D00910CB9 /* CLKComplicationTemplate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CLKComplicationTemplate.swift; sourceTree = ""; }; 43776F8C1B8022E90074EA36 /* Loop.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Loop.app; sourceTree = BUILT_PRODUCTS_DIR; }; 43776F8F1B8022E90074EA36 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 43776F961B8022E90074EA36 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -229,7 +248,6 @@ 439897361CD2F80600223065 /* AnalyticsManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnalyticsManager.swift; sourceTree = ""; }; 439897381CD2F82C00223065 /* AmplitudeFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AmplitudeFramework.framework; path = Carthage/Build/iOS/AmplitudeFramework.framework; sourceTree = ""; }; 4398973A1CD2FC2000223065 /* NSDateFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDateFormatter.swift; sourceTree = ""; }; - 439A30B61C540CF600059771 /* AddCarbsInterfaceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddCarbsInterfaceController.swift; sourceTree = ""; }; 43A567681C94880B00334FAC /* LoopDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoopDataManager.swift; sourceTree = ""; }; 43A5676A1C96155700334FAC /* SwitchTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwitchTableViewCell.swift; sourceTree = ""; }; 43A943721B926B7B0051FA24 /* WatchApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WatchApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -237,20 +255,18 @@ 43A943771B926B7B0051FA24 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 43A9437E1B926B7B0051FA24 /* WatchApp Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "WatchApp Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 43A943841B926B7B0051FA24 /* PushNotificationPayload.apns */ = {isa = PBXFileReference; lastKnownFileType = text; path = PushNotificationPayload.apns; sourceTree = ""; }; - 43A943851B926B7B0051FA24 /* InterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InterfaceController.swift; sourceTree = ""; }; 43A943871B926B7B0051FA24 /* ExtensionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = ""; }; 43A943891B926B7B0051FA24 /* NotificationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationController.swift; sourceTree = ""; }; - 43A9438B1B926B7B0051FA24 /* GlanceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlanceController.swift; sourceTree = ""; }; 43A9438D1B926B7B0051FA24 /* ComplicationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComplicationController.swift; sourceTree = ""; }; 43A9438F1B926B7B0051FA24 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 43A943911B926B7B0051FA24 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 43B371851CE583890013C5A6 /* BasalStateView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasalStateView.swift; sourceTree = ""; }; 43B371871CE597D10013C5A6 /* ShareClient.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ShareClient.framework; path = Carthage/Build/iOS/ShareClient.framework; sourceTree = ""; }; - 43C094471CAB9A21001F6403 /* NSUserDefaults.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSUserDefaults.swift; sourceTree = ""; }; 43C094491CACCC73001F6403 /* NotificationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationManager.swift; sourceTree = ""; }; 43C418B41CE0575200405B6A /* ShareGlucose+GlucoseKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ShareGlucose+GlucoseKit.swift"; sourceTree = ""; }; 43CA93361CB98079000026B5 /* MinimedKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MinimedKit.framework; path = Carthage/Build/iOS/MinimedKit.framework; sourceTree = ""; }; 43CE7CDD1CA8B63E003CC1B0 /* NSDate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDate.swift; sourceTree = ""; }; + 43D533BB1CFD1DD7009E3085 /* WatchApp Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "WatchApp Extension.entitlements"; sourceTree = ""; }; 43DBF04B1C93B8D700B3C386 /* BolusViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BolusViewController.swift; sourceTree = ""; }; 43DBF0501C93C14100B3C386 /* PopoverInNavigationControllerSegue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PopoverInNavigationControllerSegue.swift; sourceTree = ""; }; 43DBF0521C93EC8200B3C386 /* DeviceDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceDataManager.swift; sourceTree = ""; }; @@ -346,12 +362,44 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 4328E0121CFBE1B700E199AA /* Controllers */ = { + isa = PBXGroup; + children = ( + 4328E01D1CFBE25F00E199AA /* AddCarbsInterfaceController.swift */, + 4328E0161CFBE1DA00E199AA /* BolusInterfaceController.swift */, + 4328E0131CFBE1DA00E199AA /* ContextInterfaceController.swift */, + 4328E0171CFBE1DA00E199AA /* GlanceController.swift */, + 4328E0141CFBE1DA00E199AA /* InterfaceController.swift */, + 43A943891B926B7B0051FA24 /* NotificationController.swift */, + 4328E0151CFBE1DA00E199AA /* StatusInterfaceController.swift */, + ); + path = Controllers; + sourceTree = ""; + }; + 4328E01F1CFBE2B100E199AA /* Extensions */ = { + isa = PBXGroup; + children = ( + 4328E0221CFBE2C500E199AA /* CLKComplicationTemplate.swift */, + 4328E02C1CFBE2E800E199AA /* DiagnosticLogger+Error.swift */, + 4328E0201CFBE2C500E199AA /* IdentifiableClass.swift */, + 4328E0211CFBE2C500E199AA /* NSDateFormatter.swift */, + 4328E0231CFBE2C500E199AA /* NSUserDefaults.swift */, + 4328E0241CFBE2C500E199AA /* UIColor.swift */, + 4328E0251CFBE2C500E199AA /* WKAlertAction.swift */, + 4328E02E1CFBF81800E199AA /* WKInterfaceImage.swift */, + ); + path = Extensions; + sourceTree = ""; + }; 43757D131C06F26C00910CB9 /* Models */ = { isa = PBXGroup; children = ( 43DE92601C555C26001FFDE1 /* AbsorptionTimeType+CarbKit.swift */, 4331E0791C85650D00FBE832 /* ChartAxisValueDoubleLog.swift */, + 434F24CA1CFCB7AB0004498F /* GlucoseRxMessage.swift */, 43C418B41CE0575200405B6A /* ShareGlucose+GlucoseKit.swift */, + 434F24C81CFCA8940004498F /* TransmitterGlucose.swift */, + 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, ); path = Models; sourceTree = ""; @@ -412,23 +460,14 @@ 43A943821B926B7B0051FA24 /* WatchApp Extension */ = { isa = PBXGroup; children = ( + 43D533BB1CFD1DD7009E3085 /* WatchApp Extension.entitlements */, 43A943911B926B7B0051FA24 /* Info.plist */, - 439A30B61C540CF600059771 /* AddCarbsInterfaceController.swift */, - 4354002C1C9F66C000D5819C /* BolusInterfaceController.swift */, - 43757D171C07DA6D00910CB9 /* CLKComplicationTemplate.swift */, 43A9438D1B926B7B0051FA24 /* ComplicationController.swift */, 43DBF0541C93ED3000B3C386 /* DeviceDataManager.swift */, - 4315D28E1CA5F60000589052 /* DiagnosticLogger+Error.swift */, 43A943871B926B7B0051FA24 /* ExtensionDelegate.swift */, - 43A9438B1B926B7B0051FA24 /* GlanceController.swift */, - 4354002E1C9F718600D5819C /* IdentifiableClass.swift */, - 43A943851B926B7B0051FA24 /* InterfaceController.swift */, - 43A943891B926B7B0051FA24 /* NotificationController.swift */, - 4315D28C1CA5F55F00589052 /* NSDateFormatter.swift */, - 43C094471CAB9A21001F6403 /* NSUserDefaults.swift */, - 435400381C9FB7FC00D5819C /* UIColor.swift */, - 435400361C9F970500D5819C /* WKAlertAction.swift */, 43A9438F1B926B7B0051FA24 /* Assets.xcassets */, + 4328E0121CFBE1B700E199AA /* Controllers */, + 4328E01F1CFBE2B100E199AA /* Extensions */, 43DE92571C5479C3001FFDE1 /* Models */, 43A943831B926B7B0051FA24 /* Supporting Files */, ); @@ -522,6 +561,7 @@ 43A567681C94880B00334FAC /* LoopDataManager.swift */, 43C094491CACCC73001F6403 /* NotificationManager.swift */, 43EB40851C82646A00472A8C /* StatusChartManager.swift */, + 4328E0341CFC0AE100E199AA /* WatchDataManager.swift */, ); path = Managers; sourceTree = ""; @@ -816,6 +856,8 @@ files = ( 4315D28A1CA5F45E00589052 /* DiagnosticLogger+LoopKit.swift in Sources */, 43C418B51CE0575200405B6A /* ShareGlucose+GlucoseKit.swift in Sources */, + 434F24C91CFCA8940004498F /* TransmitterGlucose.swift in Sources */, + 434F24CB1CFCB7AB0004498F /* GlucoseRxMessage.swift in Sources */, 43776F901B8022E90074EA36 /* AppDelegate.swift in Sources */, 43CE7CDE1CA8B63E003CC1B0 /* NSDate.swift in Sources */, 43F5C2DB1B92A5E1003EB13D /* SettingsTableViewController.swift in Sources */, @@ -842,10 +884,12 @@ 4315D2871CA5CC3B00589052 /* CarbEntryEditTableViewController.swift in Sources */, 4331E0781C85302200FBE832 /* CGPoint.swift in Sources */, 43DBF04C1C93B8D700B3C386 /* BolusViewController.swift in Sources */, + 4328E0351CFC0AE100E199AA /* WatchDataManager.swift in Sources */, 43DBF0571C93F6EB00B3C386 /* ReservoirTableViewController.swift in Sources */, 435400341C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */, 437CEEBC1CD6DE6A003C8C80 /* HUDView.swift in Sources */, 4354003A1C9FB81100D5819C /* UIColor.swift in Sources */, + 4328E0331CFC091100E199AA /* WatchContext+LoopKit.swift in Sources */, 4398973B1CD2FC2000223065 /* NSDateFormatter.swift in Sources */, 437CEEC01CD6FCD8003C8C80 /* BasalRateHUDView.swift in Sources */, 43DBF0511C93C14100B3C386 /* PopoverInNavigationControllerSegue.swift in Sources */, @@ -868,24 +912,28 @@ files = ( 435400311C9F744E00D5819C /* BolusSuggestionUserInfo.swift in Sources */, 43DBF0551C93ED3000B3C386 /* DeviceDataManager.swift in Sources */, - 4315D28D1CA5F55F00589052 /* NSDateFormatter.swift in Sources */, + 4328E0181CFBE1DA00E199AA /* ContextInterfaceController.swift in Sources */, 43A9438A1B926B7B0051FA24 /* NotificationController.swift in Sources */, - 4354002D1C9F66C000D5819C /* BolusInterfaceController.swift in Sources */, 43A943881B926B7B0051FA24 /* ExtensionDelegate.swift in Sources */, - 435400371C9F970500D5819C /* WKAlertAction.swift in Sources */, + 4328E0291CFBE2C500E199AA /* NSUserDefaults.swift in Sources */, + 4328E0271CFBE2C500E199AA /* NSDateFormatter.swift in Sources */, + 4328E02F1CFBF81800E199AA /* WKInterfaceImage.swift in Sources */, + 4328E02A1CFBE2C500E199AA /* UIColor.swift in Sources */, + 4328E01B1CFBE1DA00E199AA /* BolusInterfaceController.swift in Sources */, 4315D28B1CA5F48100589052 /* DiagnosticLogger.swift in Sources */, - 43757D181C07DA6D00910CB9 /* CLKComplicationTemplate.swift in Sources */, - 4354002F1C9F718600D5819C /* IdentifiableClass.swift in Sources */, - 439A30B71C540CF600059771 /* AddCarbsInterfaceController.swift in Sources */, + 4328E02B1CFBE2C500E199AA /* WKAlertAction.swift in Sources */, + 4328E0281CFBE2C500E199AA /* CLKComplicationTemplate.swift in Sources */, + 4328E01E1CFBE25F00E199AA /* AddCarbsInterfaceController.swift in Sources */, + 4328E0261CFBE2C500E199AA /* IdentifiableClass.swift in Sources */, + 4328E01C1CFBE1DA00E199AA /* GlanceController.swift in Sources */, + 4328E0191CFBE1DA00E199AA /* InterfaceController.swift in Sources */, 43DE925A1C5479E4001FFDE1 /* CarbEntryUserInfo.swift in Sources */, - 4315D28F1CA5F60000589052 /* DiagnosticLogger+Error.swift in Sources */, + 4328E0301CFBFAEB00E199AA /* NSTimeInterval.swift in Sources */, 43A9438E1B926B7B0051FA24 /* ComplicationController.swift in Sources */, - 43C094481CAB9A21001F6403 /* NSUserDefaults.swift in Sources */, + 4328E02D1CFBE2E800E199AA /* DiagnosticLogger+Error.swift in Sources */, 43C418B31CE0550100405B6A /* NSBundle.swift in Sources */, - 43A943861B926B7B0051FA24 /* InterfaceController.swift in Sources */, - 435400391C9FB7FC00D5819C /* UIColor.swift in Sources */, + 4328E01A1CFBE1DA00E199AA /* StatusInterfaceController.swift in Sources */, 43DE925D1C547A20001FFDE1 /* WatchContext.swift in Sources */, - 43A9438C1B926B7B0051FA24 /* GlanceController.swift in Sources */, 435400351C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Loop/Info.plist b/Loop/Info.plist index 7d63900ae4..7d57c3a2bc 100644 --- a/Loop/Info.plist +++ b/Loop/Info.plist @@ -23,6 +23,7 @@ LSApplicationQueriesSchemes dexcomcgm + dexcomshare LSRequiresIPhoneOS diff --git a/Loop/Managers/DeviceDataManager.swift b/Loop/Managers/DeviceDataManager.swift index a07b824689..18ad9d644b 100644 --- a/Loop/Managers/DeviceDataManager.swift +++ b/Loop/Managers/DeviceDataManager.swift @@ -15,7 +15,6 @@ import LoopKit import MinimedKit import RileyLinkKit import ShareClient -import WatchConnectivity import xDripG5 enum State { @@ -24,7 +23,7 @@ enum State { } -class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSessionDelegate { +class DeviceDataManager: CarbStoreDelegate, TransmitterDelegate { /// Notification posted by the instance when new glucose data was processed static let GlucoseUpdatedNotification = "com.loudnate.Naterade.notification.GlucoseUpdated" @@ -57,27 +56,11 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes // MARK: - RileyLink - private var rileyLinkManagerObserver: AnyObject? { - willSet { - if let observer = rileyLinkManagerObserver { - NSNotificationCenter.defaultCenter().removeObserver(observer) - } - } - } - - private var rileyLinkDevicePacketObserver: AnyObject? { - willSet { - if let observer = rileyLinkDevicePacketObserver { - NSNotificationCenter.defaultCenter().removeObserver(observer) - } - } - } - - private func receivedRileyLinkManagerNotification(note: NSNotification) { + @objc private func receivedRileyLinkManagerNotification(note: NSNotification) { NSNotificationCenter.defaultCenter().postNotificationName(note.name, object: self, userInfo: note.userInfo) } - private func receivedRileyLinkPacketNotification(note: NSNotification) { + @objc private func receivedRileyLinkPacketNotification(note: NSNotification) { if let device = note.object as? RileyLinkDevice, data = note.userInfo?[RileyLinkDevice.IdleMessageDataKey] as? NSData, @@ -99,6 +82,12 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes } } + @objc private func receivedRileyLinkTimerTickNotification(note: NSNotification) { + assertCurrentPumpData() + + backfillGlucoseFromShareIfNeeded() + } + func connectToRileyLink(device: RileyLinkDevice) { connectedPeripheralIDs.insert(device.peripheral.identifier.UUIDString) @@ -195,11 +184,10 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes return } - // TODO: Allow RileyLinkManager to enable/disable idle listening device.assertIdleListening() // How long should we wait before we poll for new reservoir data? - let reservoirTolerance = sentryEnabled ? NSTimeInterval(minutes: 11) : NSTimeInterval(minutes: 1) + let reservoirTolerance = rileyLinkManager.idleListeningEnabled ? NSTimeInterval(minutes: 11) : NSTimeInterval(minutes: 4) // If we don't yet have reservoir data, or it's old, poll for it. if latestReservoirValue == nil || latestReservoirValue!.startDate.timeIntervalSinceNow <= -reservoirTolerance { @@ -245,32 +233,33 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes assertCurrentPumpData() } - func transmitter(transmitter: Transmitter, didReadGlucose glucose: GlucoseRxMessage) { + func transmitter(transmitter: Transmitter, didReadGlucose glucoseMessage: GlucoseRxMessage) { transmitterStartTime = transmitter.startTimeInterval - if glucose != latestGlucoseMessage { - latestGlucoseMessage = glucose + assertCurrentPumpData() - if glucose.glucose >= 20, let startDate = latestGlucoseMessageDate, glucoseStore = glucoseStore { - let quantity = HKQuantity(unit: HKUnit.milligramsPerDeciliterUnit(), doubleValue: Double(glucose.glucose)) + guard glucoseMessage != latestGlucoseMessage else { + return + } - let device = HKDevice(name: "xDripG5", manufacturer: "Dexcom", model: "G5 Mobile", hardwareVersion: nil, firmwareVersion: nil, softwareVersion: String(xDripG5VersionNumber), localIdentifier: nil, UDIDeviceIdentifier: "00386270000002") + latestGlucoseMessage = glucoseMessage - glucoseStore.addGlucose(quantity, date: startDate, displayOnly: glucose.glucoseIsDisplayOnly, device: device, resultHandler: { (_, value, error) -> Void in - if let error = error { - self.logger?.addError(error, fromSource: "GlucoseStore") - } + guard let glucose = TransmitterGlucose(glucoseMessage: glucoseMessage, startTime: transmitter.startTimeInterval), glucoseStore = glucoseStore else { + NSNotificationCenter.defaultCenter().postNotificationName(self.dynamicType.GlucoseUpdatedNotification, object: self) + return + } - NSNotificationCenter.defaultCenter().postNotificationName(self.dynamicType.GlucoseUpdatedNotification, object: self) - }) + latestGlucoseValue = glucose - updateWatch() - } else { - NSNotificationCenter.defaultCenter().postNotificationName(self.dynamicType.GlucoseUpdatedNotification, object: self) + let device = HKDevice(name: "xDripG5", manufacturer: "Dexcom", model: "G5 Mobile", hardwareVersion: nil, firmwareVersion: nil, softwareVersion: String(xDripG5VersionNumber), localIdentifier: nil, UDIDeviceIdentifier: "00386270000002") + + glucoseStore.addGlucose(glucose.quantity, date: glucose.startDate, displayOnly: glucoseMessage.glucoseIsDisplayOnly, device: device, resultHandler: { (_, _, error) -> Void in + if let error = error { + self.logger?.addError(error, fromSource: "GlucoseStore") } - } - assertCurrentPumpData() + NSNotificationCenter.defaultCenter().postNotificationName(self.dynamicType.GlucoseUpdatedNotification, object: self) + }) } // MARK: G5 data @@ -289,19 +278,13 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes var latestGlucoseMessage: GlucoseRxMessage? - var latestGlucoseMessageDate: NSDate? { - guard let glucose = latestGlucoseMessage, startTime = transmitterStartTime else { - return nil - } - - return NSDate(timeIntervalSince1970: startTime).dateByAddingTimeInterval(NSTimeInterval(glucose.timestamp)) - } + var latestGlucoseValue: GlucoseValue? /** Attempts to backfill glucose data from the share servers if the G5 connection hasn't been established. */ private func backfillGlucoseFromShareIfNeeded() { - if self.latestGlucoseMessageDate == nil, + if latestGlucoseMessage == nil, let shareClient = self.shareClient, glucoseStore = self.glucoseStore { // Load glucose from Share if our xDripG5 connection hasn't started @@ -324,6 +307,8 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes self.logger?.addError(error, fromSource: "GlucoseStore") } + self.latestGlucoseValue = value + NSNotificationCenter.defaultCenter().postNotificationName(self.dynamicType.GlucoseUpdatedNotification, object: self) } } @@ -415,7 +400,7 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes } case "pumpModel"?: if let sentrySupported = pumpState?.pumpModel?.larger where !sentrySupported { - sentryEnabled = false + rileyLinkManager.idleListeningEnabled = false } NSUserDefaults.standardUserDefaults().pumpModelNumber = pumpState?.pumpModel?.rawValue @@ -519,9 +504,6 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes } } - /// Whether the RileyLink should listen for sentry packets. - var sentryEnabled: Bool = true - // MARK: - CarbKit let carbStore: CarbStore? @@ -542,125 +524,10 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes // MARK: - WatchKit - private var watchSession: WCSession? = { - if WCSession.isSupported() { - return WCSession.defaultSession() - } else { - return nil - } - }() - - private func updateWatch() { - if let session = watchSession { - switch session.activationState { - case .NotActivated, .Inactive: - session.activateSession() - case .Activated: - sendWatchContext() - } - } - } - - private var latestComplicationGlucose: GlucoseRxMessage? - - private func sendWatchContext() { - if let session = watchSession where session.paired && session.watchAppInstalled { - let userInfo = WatchContext(pumpStatus: latestPumpStatus, glucose: latestGlucoseMessage, glucoseMessageDate: latestGlucoseMessageDate).rawValue - - let complicationShouldUpdate: Bool - - if let complicationGlucose = latestComplicationGlucose, glucose = latestGlucoseMessage { - complicationShouldUpdate = Int(glucose.timestamp) - Int(complicationGlucose.timestamp) >= 30 * 60 || abs(Int(glucose.glucose) - Int(complicationGlucose.glucose)) >= 20 - } else { - complicationShouldUpdate = true - } + private(set) var watchManager: WatchDataManager! - if session.complicationEnabled && complicationShouldUpdate, let glucose = latestGlucoseMessage { - session.transferCurrentComplicationUserInfo(userInfo) - latestComplicationGlucose = glucose - } else { - do { - try session.updateApplicationContext(userInfo) - } catch let error { - self.logger?.addError(error, fromSource: "WCSession") - } - } - } - } - - private func addCarbEntryFromWatchMessage(message: [String: AnyObject], completionHandler: ((units: Double?, error: ErrorType?) -> Void)? = nil) { - if let carbStore = carbStore, carbEntry = CarbEntryUserInfo(rawValue: message) { - let newEntry = NewCarbEntry( - quantity: HKQuantity(unit: carbStore.preferredUnit, doubleValue: carbEntry.value), - startDate: carbEntry.startDate, - foodType: nil, - absorptionTime: carbEntry.absorptionTimeType.absorptionTimeFromDefaults(carbStore.defaultAbsorptionTimes) - ) - - loopManager.addCarbEntryAndRecommendBolus(newEntry) { (units, error) in - if let error = error { - self.logger?.addError(error, fromSource: error is CarbStore.Error ? "CarbStore" : "Bolus") - } else { - AnalyticsManager.didAddCarbsFromWatch(carbEntry.value) - } - - completionHandler?(units: units, error: error) - } - } else { - completionHandler?(units: nil, error: Error.ValueError("Unable to parse CarbEntryUserInfo: \(message)")) - } - } - - // MARK: WCSessionDelegate - - func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String: AnyObject]) -> Void) { - switch message["name"] as? String { - case CarbEntryUserInfo.name?: - addCarbEntryFromWatchMessage(message) { (units, error) in - replyHandler(BolusSuggestionUserInfo(recommendedBolus: units ?? 0).rawValue) - } - case SetBolusUserInfo.name?: - if let bolus = SetBolusUserInfo(rawValue: message) { - self.loopManager.enactBolus(bolus.value) { (success, error) in - if !success { - NotificationManager.sendBolusFailureNotificationForAmount(bolus.value, atDate: bolus.startDate) - } else { - AnalyticsManager.didSetBolusFromWatch(bolus.value) - } - - replyHandler([:]) - } - } else { - replyHandler([:]) - } - default: - break - } - } - - func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) { - addCarbEntryFromWatchMessage(userInfo) - } - - func session(session: WCSession, activationDidCompleteWithState activationState: WCSessionActivationState, error: NSError?) { - switch activationState { - case .Activated: - if let error = error { - logger?.addError(error, fromSource: "WCSession") - } - case .Inactive, .NotActivated: - break - } - } - - func sessionDidBecomeInactive(session: WCSession) { - // Nothing to do here - } - - func sessionDidDeactivate(session: WCSession) { - watchSession = WCSession.defaultSession() - watchSession?.delegate = self - watchSession?.activateSession() + @objc private func loopDataDidUpdateNotification(_: NSNotification) { + watchManager.updateWatch() } // MARK: - Initialization @@ -669,7 +536,7 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes private(set) var loopManager: LoopDataManager! - override init() { + init() { let pumpID = NSUserDefaults.standardUserDefaults().pumpID doseStore = DoseStore( @@ -683,6 +550,8 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes insulinSensitivitySchedule: insulinSensitivitySchedule ) + var idleListeningEnabled = true + if let pumpID = pumpID { let pumpState = PumpState(pumpID: pumpID) @@ -694,7 +563,7 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes if let model = PumpModel(rawValue: pumpModelNumber) { pumpState.pumpModel = model - sentryEnabled = model.larger + idleListeningEnabled = model.larger } } @@ -705,6 +574,7 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes pumpState: self.pumpState, autoConnectIDs: connectedPeripheralIDs ) + rileyLinkManager.idleListeningEnabled = idleListeningEnabled if let settings = NSBundle.mainBundle().remoteSettings, username = settings["ShareAccountName"], @@ -716,25 +586,18 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes shareClient = nil } - super.init() - - rileyLinkManagerObserver = NSNotificationCenter.defaultCenter().addObserverForName(nil, object: rileyLinkManager, queue: nil) { [weak self] (note) -> Void in - self?.receivedRileyLinkManagerNotification(note) - } - - // TODO: Use delegation instead. - rileyLinkDevicePacketObserver = NSNotificationCenter.defaultCenter().addObserverForName(RileyLinkDevice.DidReceiveIdleMessageNotification, object: nil, queue: nil) { [weak self] (note) -> Void in - self?.receivedRileyLinkPacketNotification(note) - } + NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(receivedRileyLinkManagerNotification(_:)), name: nil, object: rileyLinkManager) + NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(receivedRileyLinkPacketNotification(_:)), name: RileyLinkDevice.DidReceiveIdleMessageNotification, object: nil) + NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(receivedRileyLinkTimerTickNotification(_:)), name: RileyLinkDevice.DidUpdateTimerTickNotification, object: nil) if let pumpState = pumpState { NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(pumpStateValuesDidChange(_:)), name: PumpState.ValuesDidChangeNotification, object: pumpState) } loopManager = LoopDataManager(deviceDataManager: self) + NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(loopDataDidUpdateNotification(_:)), name: LoopDataManager.LoopDataUpdatedNotification, object: loopManager) - watchSession?.delegate = self - watchSession?.activateSession() + watchManager = WatchDataManager(deviceDataManager: self) carbStore?.delegate = self @@ -742,29 +605,5 @@ class DeviceDataManager: NSObject, CarbStoreDelegate, TransmitterDelegate, WCSes transmitterID = NSUserDefaults.standardUserDefaults().transmitterID } } - - deinit { - rileyLinkManagerObserver = nil - rileyLinkDevicePacketObserver = nil - } -} - - -extension WatchContext { - convenience init(pumpStatus: MySentryPumpStatusMessageBody?, glucose: GlucoseRxMessage?, glucoseMessageDate: NSDate?) { - self.init() - - if let glucose = glucose, date = glucoseMessageDate where glucose.state > 5 { - glucoseValue = Int(glucose.glucose) - glucoseTrend = Int(glucose.trend) - glucoseDate = date - } - - if let status = pumpStatus, date = status.pumpDateComponents.date { - IOB = status.iob - reservoir = status.reservoirRemainingUnits - pumpDate = date - } - } } diff --git a/Loop/Managers/WatchDataManager.swift b/Loop/Managers/WatchDataManager.swift new file mode 100644 index 0000000000..840a1e161e --- /dev/null +++ b/Loop/Managers/WatchDataManager.swift @@ -0,0 +1,201 @@ +// +// WatchDataManager.swift +// Loop +// +// Created by Nathan Racklyeft on 5/29/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import HealthKit +import UIKit +import WatchConnectivity +import CarbKit +import LoopKit +import xDripG5 + + +class WatchDataManager: NSObject, WCSessionDelegate { + + unowned let deviceDataManager: DeviceDataManager + + init(deviceDataManager: DeviceDataManager) { + self.deviceDataManager = deviceDataManager + + super.init() + + watchSession?.delegate = self + watchSession?.activateSession() + } + + private var watchSession: WCSession? = { + if WCSession.isSupported() { + return WCSession.defaultSession() + } else { + return nil + } + }() + + func updateWatch() { + if let session = watchSession { + switch session.activationState { + case .NotActivated, .Inactive: + session.activateSession() + case .Activated: + createWatchContext { (context) in + if let context = context { + self.sendWatchContext(context) + } + } + } + } + } + + private var lastComplicationContext: WatchContext? + + private let minTrendDrift: Double = 20 + private lazy var minTrendUnit = HKUnit.milligramsPerDeciliterUnit() + + private func sendWatchContext(context: WatchContext) { + if let session = watchSession where session.paired && session.watchAppInstalled { + + let complicationShouldUpdate: Bool + + if let lastContext = lastComplicationContext, + lastGlucose = lastContext.glucose, lastGlucoseDate = lastContext.glucoseDate, + newGlucose = context.glucose, newGlucoseDate = context.glucoseDate + { + let enoughTimePassed = newGlucoseDate.timeIntervalSinceDate(lastGlucoseDate).minutes >= 30 + let enoughTrendDrift = abs(newGlucose.doubleValueForUnit(minTrendUnit) - lastGlucose.doubleValueForUnit(minTrendUnit)) >= minTrendDrift + + complicationShouldUpdate = enoughTimePassed || enoughTrendDrift + } else { + complicationShouldUpdate = true + } + + if session.complicationEnabled && complicationShouldUpdate { + session.transferCurrentComplicationUserInfo(context.rawValue) + lastComplicationContext = context + } else { + do { + try session.updateApplicationContext(context.rawValue) + } catch let error { + deviceDataManager.logger?.addError(error, fromSource: "WCSession") + } + } + } + } + + private func createWatchContext(completionHandler: (context: WatchContext?) -> Void) { + + guard let glucoseStore = self.deviceDataManager.glucoseStore else { + completionHandler(context: nil) + return + } + + let glucose = deviceDataManager.latestGlucoseValue + let reservoir = deviceDataManager.latestReservoirValue + + deviceDataManager.loopManager.getLoopStatus { (predictedGlucose, recommendedTempBasal, lastTempBasal, lastLoopCompleted, error) in + + let eventualGlucose = predictedGlucose?.last + + self.deviceDataManager.loopManager.getRecommendedBolus { (units, error) in + glucoseStore.preferredUnit { (unit, error) in + let context = WatchContext(glucose: glucose, eventualGlucose: eventualGlucose, glucoseUnit: unit) + context.reservoir = reservoir?.unitVolume + + context.loopLastRunDate = lastLoopCompleted + context.recommendedBolusDose = units + + if let trend = self.deviceDataManager.latestGlucoseMessage?.trend { + context.glucoseTrend = Int(trend) + } + + completionHandler(context: context) + } + } + } + } + + private func addCarbEntryFromWatchMessage(message: [String: AnyObject], completionHandler: ((units: Double?, error: ErrorType?) -> Void)? = nil) { + if let carbStore = deviceDataManager.carbStore, carbEntry = CarbEntryUserInfo(rawValue: message) { + let newEntry = NewCarbEntry( + quantity: HKQuantity(unit: carbStore.preferredUnit, doubleValue: carbEntry.value), + startDate: carbEntry.startDate, + foodType: nil, + absorptionTime: carbEntry.absorptionTimeType.absorptionTimeFromDefaults(carbStore.defaultAbsorptionTimes) + ) + + deviceDataManager.loopManager.addCarbEntryAndRecommendBolus(newEntry) { (units, error) in + if let error = error { + self.deviceDataManager.logger?.addError(error, fromSource: error is CarbStore.Error ? "CarbStore" : "Bolus") + } else { + AnalyticsManager.didAddCarbsFromWatch(carbEntry.value) + } + + completionHandler?(units: units, error: error) + } + } else { + completionHandler?(units: nil, error: DeviceDataManager.Error.ValueError("Unable to parse CarbEntryUserInfo: \(message)")) + } + } + + // MARK: WCSessionDelegate + + func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String: AnyObject]) -> Void) { + switch message["name"] as? String { + case CarbEntryUserInfo.name?: + addCarbEntryFromWatchMessage(message) { (units, error) in + replyHandler(BolusSuggestionUserInfo(recommendedBolus: units ?? 0).rawValue) + } + case SetBolusUserInfo.name?: + if let bolus = SetBolusUserInfo(rawValue: message) { + self.deviceDataManager.loopManager.enactBolus(bolus.value) { (success, error) in + if !success { + NotificationManager.sendBolusFailureNotificationForAmount(bolus.value, atDate: bolus.startDate) + } else { + AnalyticsManager.didSetBolusFromWatch(bolus.value) + } + + replyHandler([:]) + } + } else { + replyHandler([:]) + } + default: + replyHandler([:]) + } + } + + func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) { + addCarbEntryFromWatchMessage(userInfo) + } + + func session(session: WCSession, activationDidCompleteWithState activationState: WCSessionActivationState, error: NSError?) { + switch activationState { + case .Activated: + if let error = error { + deviceDataManager.logger?.addError(error, fromSource: "WCSession") + } + case .Inactive, .NotActivated: + break + } + } + + func session(session: WCSession, didFinishUserInfoTransfer userInfoTransfer: WCSessionUserInfoTransfer, error: NSError?) { + if let error = error { + deviceDataManager.logger?.addError(error, fromSource: "WCSession") + } + } + + func sessionDidBecomeInactive(session: WCSession) { + // Nothing to do here + } + + func sessionDidDeactivate(session: WCSession) { + watchSession = WCSession.defaultSession() + watchSession?.delegate = self + watchSession?.activateSession() + } + +} diff --git a/Loop/Models/GlucoseRxMessage.swift b/Loop/Models/GlucoseRxMessage.swift new file mode 100644 index 0000000000..bc9c79fa39 --- /dev/null +++ b/Loop/Models/GlucoseRxMessage.swift @@ -0,0 +1,31 @@ +// +// GlucoseRxMessage.swift +// Loop +// +// Created by Nathan Racklyeft on 5/30/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import Foundation +import xDripG5 + + +extension GlucoseRxMessage { + var trendDescription: String { + let direction: String + switch trend { + case let x where x < -10: + direction = "⇊" + case let x where x < 0: + direction = "↓" + case let x where x > 10: + direction = "⇈" + case let x where x > 0: + direction = "↑" + default: + direction = "" + } + + return direction + } +} \ No newline at end of file diff --git a/Loop/Models/TransmitterGlucose.swift b/Loop/Models/TransmitterGlucose.swift new file mode 100644 index 0000000000..fdf61e4d0e --- /dev/null +++ b/Loop/Models/TransmitterGlucose.swift @@ -0,0 +1,35 @@ +// +// TransmitterGlucose.swift +// Loop +// +// Created by Nathan Racklyeft on 5/30/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import LoopKit +import HealthKit +import xDripG5 + + +struct TransmitterGlucose: GlucoseValue { + let glucoseMessage: GlucoseRxMessage + let startTime: NSTimeInterval + + init?(glucoseMessage: GlucoseRxMessage, startTime: NSTimeInterval?) { + + guard glucoseMessage.state > 5 && glucoseMessage.glucose >= 20, let startTime = startTime else { + return nil + } + + self.glucoseMessage = glucoseMessage + self.startTime = startTime + } + + var quantity: HKQuantity { + return HKQuantity(unit: HKUnit.milligramsPerDeciliterUnit(), doubleValue: Double(glucoseMessage.glucose)) + } + + var startDate: NSDate { + return NSDate(timeIntervalSince1970: startTime).dateByAddingTimeInterval(NSTimeInterval(glucoseMessage.timestamp)) + } +} \ No newline at end of file diff --git a/Loop/Models/WatchContext+LoopKit.swift b/Loop/Models/WatchContext+LoopKit.swift new file mode 100644 index 0000000000..ae24ada8ae --- /dev/null +++ b/Loop/Models/WatchContext+LoopKit.swift @@ -0,0 +1,25 @@ +// +// WatchContext+LoopKit.swift +// Loop +// +// Created by Nathan Racklyeft on 5/29/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import Foundation +import HealthKit +import InsulinKit +import LoopKit +import xDripG5 + + +extension WatchContext { + convenience init(glucose: GlucoseValue?, eventualGlucose: GlucoseValue?, glucoseUnit: HKUnit?) { + self.init() + + self.glucose = glucose?.quantity + self.glucoseDate = glucose?.startDate + self.eventualGlucose = eventualGlucose?.quantity + self.preferredGlucoseUnit = glucoseUnit + } +} diff --git a/Loop/View Controllers/StatusTableViewController.swift b/Loop/View Controllers/StatusTableViewController.swift index dd29b40a87..13cecec0f2 100644 --- a/Loop/View Controllers/StatusTableViewController.swift +++ b/Loop/View Controllers/StatusTableViewController.swift @@ -352,6 +352,8 @@ class StatusTableViewController: UITableViewController, UIGestureRecognizerDeleg return formatter }() + private lazy var numberFormatter = NSNumberFormatter() + private lazy var dateFormatter: NSDateFormatter = { let formatter = NSDateFormatter() formatter.dateStyle = .MediumStyle @@ -485,41 +487,33 @@ class StatusTableViewController: UITableViewController, UIGestureRecognizerDeleg case .Date: cell.textLabel?.text = NSLocalizedString("Last Sensor", comment: "The title of the cell containing the last updated sensor date") - if let date = dataManager.latestGlucoseMessageDate { + if let date = dataManager.latestGlucoseValue?.startDate { cell.detailTextLabel?.text = dateFormatter.stringFromDate(date) } else { cell.detailTextLabel?.text = emptyValueString } case .Glucose: cell.textLabel?.text = NSLocalizedString("Glucose", comment: "The title of the cell containing the current glucose") + cell.detailTextLabel?.text = emptyValueString - if let glucose = dataManager.latestGlucoseMessage { - let numberString = NSNumber(unsignedShort: glucose.glucose).descriptionWithLocale(locale) - cell.detailTextLabel?.text = "\(numberString) mg/dL" - } else { - cell.detailTextLabel?.text = emptyValueString + if let glucose = dataManager.latestGlucoseValue, glucoseStore = dataManager.glucoseStore { + + glucoseStore.preferredUnit { (unit, error) in + guard let unit = unit, glucoseString = self.numberFormatter.stringFromNumber(glucose.quantity.doubleValueForUnit(unit)) else { + return + } + + dispatch_async(dispatch_get_main_queue()) { + cell.detailTextLabel?.text = String(format: NSLocalizedString("%1$@ %2$@", comment: "Format string describing glucose: (1: quantity)(2: unit)"), glucoseString, unit.unitString) + } + } } case .Trend: cell.textLabel?.text = NSLocalizedString("Trend", comment: "The title of the cell containing the current glucose trend") - if let glucose = dataManager.latestGlucoseMessage where glucose.state > 5 { - let direction: String - - switch glucose.trend { - case let x where x < -10: - direction = "⇊" - case let x where x < 0: - direction = "↓" - case let x where x > 10: - direction = "⇈" - case let x where x > 0: - direction = "↑" - default: - direction = "" - } + if let glucose = dataManager.latestGlucoseMessage, trendString = numberFormatter.stringFromNumber(NSNumber(char: glucose.trend)) { - let numberString = NSNumber(char: glucose.trend).descriptionWithLocale(locale) - cell.detailTextLabel?.text = "\(numberString)\(direction)" + cell.detailTextLabel?.text = trendString + glucose.trendDescription } else { cell.detailTextLabel?.text = emptyValueString } @@ -558,7 +552,10 @@ class StatusTableViewController: UITableViewController, UIGestureRecognizerDeleg case .Charts: switch ChartRow(rawValue: indexPath.row)! { case .Glucose: - if let URL = NSURL(string: "dexcomcgm://") { + if let URL = NSURL(string: "dexcomcgm://") where UIApplication.sharedApplication().canOpenURL(URL) { + UIApplication.sharedApplication().openURL(URL) + } + else if let URL = NSURL(string: "dexcomshare://") where UIApplication.sharedApplication().canOpenURL(URL) { UIApplication.sharedApplication().openURL(URL) } case .IOB, .Dose: diff --git a/README.md b/README.md index 3e80d954dd..488fb37711 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Loop for iOS -![App Icon](https://raw.githubusercontent.com/loudnate/Loop/master/Loop/Assets.xcassets/AppIcon.appiconset/40%402x.png) ![WatchApp Icon](https://raw.githubusercontent.com/loudnate/Loop/master/WatchApp/Assets.xcassets/AppIcon.appiconset/watch-40%402x.png) +![App Icon](/Loop/Assets.xcassets/AppIcon.appiconset/40%402x.png?raw=true) ![WatchApp Icon](/WatchApp/Assets.xcassets/AppIcon.appiconset/watch-40%402x.png?raw=true) [![Build Status](https://travis-ci.org/loudnate/Loop.svg?branch=master)](https://travis-ci.org/loudnate/Loop) [![Join the chat at https://gitter.im/loudnate/LoopKit](https://badges.gitter.im/loudnate/LoopKit.svg)](https://gitter.im/loudnate/LoopKit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -11,18 +11,18 @@ Please understand that this project: - Is highly experimental - Is not approved for therapy -Screenshot of status screen -Screenshot of bolus screen -Screenshot of battery change notification -Screenshot of loop failure notification -Screenshot of bolus failure notification +Screenshot of status screen +Screenshot of bolus screen +Screenshot of battery change notification +Screenshot of loop failure notification +Screenshot of bolus failure notification -Screenshot of glucose complication on Apple Watch -Screenshot of carb entry on Apple Watch -Screenshot of bolus entry on Apple Watch -Screenshot of bolus failure notification on Apple Watch -Screenshot of bolus failure notification on Apple Watch -Screenshot of bolus failure notification on Apple Watch +Screenshot of glucose complication on Apple Watch +Screenshot of carb entry on Apple Watch +Screenshot of bolus entry on Apple Watch +Screenshot of bolus failure notification on Apple Watch +Screenshot of bolus failure notification on Apple Watch +Screenshot of bolus failure notification on Apple Watch ### Hardware @@ -41,20 +41,19 @@ Please understand that this project: CGM Dexcom G4 + Share - ❌1 2 3 - ✅2 + ✅1 2 + ✅1 Dexcom G5 - ✅3 + ✅2 ✅ -1. Follow [#10](https://github.com/loudnate/Loop/issues/10) for updates -
2. Internet connection required to retrieve glucose -
3. Pump must have a remote ID added in the [Remote Options](https://www.medtronicdiabetes.com/sites/default/files/library/download-library/workbooks/x22_menu_map.pdf) menu +
1. Internet connection required to retrieve glucose +
2. Pump must have a remote ID added in the [Remote Options](https://www.medtronicdiabetes.com/sites/default/files/library/download-library/workbooks/x22_menu_map.pdf) menu ### LoopKit @@ -66,7 +65,7 @@ Fork and clone this repository so you can commit the changes you'll make below. ## Assigning a Bundle Identifier -[![Assigning a bundle identifier](https://raw.githubusercontent.com/loudnate/Loop/master/Documentation/Assigning%20a%20bundle%20identifier.png)](https://raw.githubusercontent.com/loudnate/Loop/master/Documentation/Assigning%20a%20bundle%20identifier.png) +[![Assigning a bundle identifier](/Documentation/Assigning%20a%20bundle%20identifier.png?raw=true)](/Documentation/Assigning%20a%20bundle%20identifier.png) In the Loop project's Build Settings, change the value of `MAIN_APP_BUNDLE_IDENTIFIER` to something unique. Usually this means replacing `com.loudnate` with a reverse-domain name of your choosing. @@ -91,40 +90,38 @@ $ cp Loop/RemoteSettings-template.plist Loop/RemoteSettings.plist | `ShareAccountName` | Your username for Dexcom share (for backfilling glucose data) | `ShareAccountPassword` | Your password for Dexcom share -## Setting up Carthage - -[Carthage](https://github.com/carthage/carthage) is used to manage dependencies. If you haven't installed Carthage on your Mac before, [follow the installation instructions](https://github.com/carthage/carthage#installing-carthage). - -After a fresh clone of the repository, you'll need to do a checkout and build of the dependencies: - -```bash -$ carthage bootstrap -``` - -After pulling new changes, you'll need to run the same command again. - # Making it Your Own You might open this app a lot. Make it the most personal app on your iPhone by changing the name and icon. ### Renaming the Target -[![Changing the target name](https://raw.githubusercontent.com/loudnate/Loop/master/Documentation/Changing%20the%20target%20name.png)](https://raw.githubusercontent.com/loudnate/Loop/master/Documentation/Changing%20the%20target%20name.png) +[![Changing the target name](/Documentation/Changing%20the%20target%20name.png?raw=true)](/Documentation/Changing%20the%20target%20name.png) In the Targets list, rename "Loop" to anything you like. This has the side-effect of changing the display name of the app as well, though you can choose to decouple those if you like later by reading more about Xcode target configuration. ### Changing the Icon -[![Changing the app icon](https://raw.githubusercontent.com/loudnate/Loop/master/Documentation/Changing%20the%20app%20icon.png)](https://raw.githubusercontent.com/loudnate/Loop/master/Documentation/Changing%20the%20app%20icon.png) +[![Changing the app icon](/Documentation/Changing%20the%20app%20icon.png?raw=true)](/Documentation/Changing%20the%20app%20icon.png) 1. Select the application asset library from the Project Navigator 2. Select the image set named AppIcon 3. Replace each image size with your own icon -# Changing the code +Below are some example icons from other Loop users: + +![Icon A](/Documentation/User Icons/LoopingPump.png?raw=true) + +# Changing the Code TODO: Write more documentation! +## Updating Dependencies Using Carthage + +[Carthage](https://github.com/carthage/carthage) is used to manage framework dependencies. If you haven't installed Carthage on your Mac before, [follow the installation instructions](https://github.com/carthage/carthage#installing-carthage). + +The framework versions specified in `Cartfile.resolved` are checked in to the repository for ease of building. If you update the `Cartfile`, make sure to run `carthage update` fetch and build the updated dependencies. + # License and Code of Conduct -Please read the [LICENSE](https://github.com/loudnate/naterade-ios/blob/master/LICENSE) and [CODE_OF_CONDUCT](https://github.com/loudnate/naterade-ios/blob/master/CODE_OF_CONDUCT.md) +Please read the [LICENSE](/LICENSE) and [CODE_OF_CONDUCT](/CODE_OF_CONDUCT.md) diff --git a/WatchApp Extension/ComplicationController.swift b/WatchApp Extension/ComplicationController.swift index cac8c8212a..7642fb260c 100644 --- a/WatchApp Extension/ComplicationController.swift +++ b/WatchApp Extension/ComplicationController.swift @@ -38,14 +38,19 @@ class ComplicationController: NSObject, CLKComplicationDataSource { } // MARK: - Timeline Population - + + private lazy var formatter = NSNumberFormatter() + func getCurrentTimelineEntryForComplication(complication: CLKComplication, withHandler handler: ((CLKComplicationTimelineEntry?) -> Void)) { switch complication.family { case .ModularSmall: if let context = DeviceDataManager.sharedManager.lastContextData, - date = context.glucoseDate where date.timeIntervalSinceNow >= -15.minutes, - let template = CLKComplicationTemplateModularSmallStackText(context: context) + glucose = context.glucose, + unit = context.preferredGlucoseUnit, + glucoseString = formatter.stringFromNumber(glucose.doubleValueForUnit(unit)), + date = context.glucoseDate where date.timeIntervalSinceNow.minutes >= -15, + let template = CLKComplicationTemplateModularSmallStackText(line1: glucoseString, date: date) { handler(CLKComplicationTimelineEntry(date: date, complicationTemplate: template)) } else { @@ -64,8 +69,11 @@ class ComplicationController: NSObject, CLKComplicationDataSource { func getTimelineEntriesForComplication(complication: CLKComplication, afterDate date: NSDate, limit: Int, withHandler handler: (([CLKComplicationTimelineEntry]?) -> Void)) { // Call the handler with the timeline entries after to the given date if let context = DeviceDataManager.sharedManager.lastContextData, + glucose = context.glucose, + unit = context.preferredGlucoseUnit, + glucoseString = formatter.stringFromNumber(glucose.doubleValueForUnit(unit)), glucoseDate = context.glucoseDate where glucoseDate.timeIntervalSinceDate(date) > 0, - let template = CLKComplicationTemplateModularSmallStackText(context: context) + let template = CLKComplicationTemplateModularSmallStackText(line1: glucoseString, date: glucoseDate) { handler([CLKComplicationTimelineEntry(date: glucoseDate, complicationTemplate: template)]) } else { @@ -103,5 +111,5 @@ class ComplicationController: NSObject, CLKComplicationDataSource { handler(nil) } } - + } diff --git a/WatchApp Extension/AddCarbsInterfaceController.swift b/WatchApp Extension/Controllers/AddCarbsInterfaceController.swift similarity index 100% rename from WatchApp Extension/AddCarbsInterfaceController.swift rename to WatchApp Extension/Controllers/AddCarbsInterfaceController.swift diff --git a/WatchApp Extension/BolusInterfaceController.swift b/WatchApp Extension/Controllers/BolusInterfaceController.swift similarity index 100% rename from WatchApp Extension/BolusInterfaceController.swift rename to WatchApp Extension/Controllers/BolusInterfaceController.swift diff --git a/WatchApp Extension/Controllers/ContextInterfaceController.swift b/WatchApp Extension/Controllers/ContextInterfaceController.swift new file mode 100644 index 0000000000..9b1dc82229 --- /dev/null +++ b/WatchApp Extension/Controllers/ContextInterfaceController.swift @@ -0,0 +1,56 @@ +// +// ContextInterfaceController.swift +// Loop +// +// Created by Nathan Racklyeft on 5/29/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import WatchKit +import Foundation + + +class ContextInterfaceController: WKInterfaceController { + + let dataManager = DeviceDataManager.sharedManager + + private var lastContextDataObserverContext = 0 + + override func awakeWithContext(context: AnyObject?) { + super.awakeWithContext(context) + + // Configure interface objects here. + } + + override func willActivate() { + super.willActivate() + + dataManager.addObserver(self, forKeyPath: "lastContextData", options: [], context: &lastContextDataObserverContext) + + updateFromContext(dataManager.lastContextData) + } + + override func didDeactivate() { + super.didDeactivate() + + dataManager.removeObserver(self, forKeyPath: "lastContextData", context: &lastContextDataObserverContext) + + } + + @objc func updateFromContext(context: WatchContext?) { + DeviceDataManager.sharedManager.updateComplicationDataIfNeeded() + } + + // MARK: - KVO + + override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer) { + if context == &lastContextDataObserverContext { + if let context = dataManager.lastContextData { + updateFromContext(context) + } + } else { + super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context) + } + } + +} diff --git a/WatchApp Extension/GlanceController.swift b/WatchApp Extension/Controllers/GlanceController.swift similarity index 100% rename from WatchApp Extension/GlanceController.swift rename to WatchApp Extension/Controllers/GlanceController.swift diff --git a/WatchApp Extension/Controllers/InterfaceController.swift b/WatchApp Extension/Controllers/InterfaceController.swift new file mode 100644 index 0000000000..9c893ea935 --- /dev/null +++ b/WatchApp Extension/Controllers/InterfaceController.swift @@ -0,0 +1,85 @@ +// +// InterfaceController.swift +// WatchApp Extension +// +// Created by Nathan Racklyeft on 8/29/15. +// Copyright © 2015 Nathan Racklyeft. All rights reserved. +// + +import ClockKit +import WatchKit +import Foundation +import WatchConnectivity + + +class InterfaceController: ContextInterfaceController { + + @IBOutlet var glucoseLabel: WKInterfaceLabel! + @IBOutlet var glucoseUnitLabel: WKInterfaceLabel! + @IBOutlet var glucoseDateLabel: WKInterfaceLabel! + @IBOutlet var pumpDateLabel: WKInterfaceLabel? + @IBOutlet var IOBLabel: WKInterfaceLabel! + @IBOutlet var reservoirLabel: WKInterfaceLabel! + + lazy var dateFormatter: NSDateComponentsFormatter = { + let dateFormatter = NSDateComponentsFormatter() + dateFormatter.unitsStyle = .Abbreviated + dateFormatter.allowedUnits = [.Hour, .Minute] + + return dateFormatter + }() + + lazy var numberFormatter = NSNumberFormatter() + + // MARK: - Data + + override func updateFromContext(context: WatchContext?) { + super.updateFromContext(context) + + dispatch_async(dispatch_get_main_queue()) { + if let iob = context?.IOB, reservoir = context?.reservoir + { + let decimalFormatter = NSNumberFormatter() + decimalFormatter.numberStyle = .DecimalStyle + + self.IOBLabel.setText(decimalFormatter.stringFromNumber(iob)) + self.reservoirLabel.setText(decimalFormatter.stringFromNumber(reservoir)) + } else { + self.IOBLabel.setText("-.-") + self.reservoirLabel.setText("-.-") + } + + if let date = context?.glucoseDate where NSDate().timeIntervalSinceDate(date).minutes <= 60, + let context = context, glucose = context.glucose + { + if let dateString = self.dateFormatter.stringFromDate(date, toDate: NSDate()) { + self.glucoseDateLabel.setText("\(dateString) ago") + } + + guard let unit = context.preferredGlucoseUnit else { + return + } + + let glucoseValue = glucose.doubleValueForUnit(unit) + + self.glucoseLabel.setText( + context.glucoseTrendDescription + + (self.numberFormatter.stringFromNumber(glucoseValue) ?? "") + ) + } else { + self.glucoseLabel.setText("--") + self.glucoseUnitLabel.setHidden(false) + } + } + } + + // MARK: - Menu Items + + @IBAction func addCarbs() { + presentControllerWithName(AddCarbsInterfaceController.className, context: nil) + } + + @IBAction func setBolus() { + presentControllerWithName(BolusInterfaceController.className, context: nil) + } +} diff --git a/WatchApp Extension/NotificationController.swift b/WatchApp Extension/Controllers/NotificationController.swift similarity index 100% rename from WatchApp Extension/NotificationController.swift rename to WatchApp Extension/Controllers/NotificationController.swift diff --git a/WatchApp Extension/Controllers/StatusInterfaceController.swift b/WatchApp Extension/Controllers/StatusInterfaceController.swift new file mode 100644 index 0000000000..51a36b5835 --- /dev/null +++ b/WatchApp Extension/Controllers/StatusInterfaceController.swift @@ -0,0 +1,87 @@ +// +// StatusInterfaceController.swift +// Loop +// +// Created by Nathan Racklyeft on 5/29/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import WatchKit +import Foundation + + +class StatusInterfaceController: ContextInterfaceController { + + @IBOutlet var graphImage: WKInterfaceImage! + @IBOutlet var loopHUDImage: WKInterfaceImage! + @IBOutlet var loopTimer: WKInterfaceTimer! + @IBOutlet var glucoseLabel: WKInterfaceLabel! + @IBOutlet var eventualGlucoseLabel: WKInterfaceLabel! + @IBOutlet var statusLabel: WKInterfaceLabel! + + override func updateFromContext(context: WatchContext?) { + super.updateFromContext(context) + + resetInterface() + + dispatch_async(dispatch_get_main_queue()) { + if let date = context?.loopLastRunDate { + self.loopTimer.setDate(date) + self.loopTimer.setHidden(false) + self.loopTimer.start() + + let loopImage: LoopImage + + switch date.timeIntervalSinceNow { + case let t where t.minutes <= 5: + loopImage = .Fresh + case let t where t.minutes <= 15: + loopImage = .Aging + default: + loopImage = .Stale + } + + self.loopHUDImage.setLoopImage(loopImage) + } + } + + let numberFormatter = NSNumberFormatter() + + dispatch_async(dispatch_get_main_queue()) { + if let glucose = context?.glucose, unit = context?.preferredGlucoseUnit { + let glucoseValue = glucose.doubleValueForUnit(unit) + let trend = context?.glucoseTrendDescription ?? "" + + self.glucoseLabel.setText((numberFormatter.stringFromNumber(glucoseValue) ?? "") + trend) + self.glucoseLabel.setHidden(false) + } + + if let eventualGlucose = context?.eventualGlucose, unit = context?.preferredGlucoseUnit { + let glucoseValue = eventualGlucose.doubleValueForUnit(unit) + + self.eventualGlucoseLabel.setText(numberFormatter.stringFromNumber(glucoseValue)) + self.eventualGlucoseLabel.setHidden(false) + } + } + } + + private func resetInterface() { + loopTimer.setHidden(true) + statusLabel.setHidden(true) + graphImage.setHidden(true) + glucoseLabel.setHidden(true) + eventualGlucoseLabel.setHidden(true) + loopHUDImage.setLoopImage(.Unknown) + } + + // MARK: - Menu Items + + @IBAction func addCarbs() { + presentControllerWithName(AddCarbsInterfaceController.className, context: nil) + } + + @IBAction func setBolus() { + presentControllerWithName(BolusInterfaceController.className, context: nil) + } + +} diff --git a/WatchApp Extension/CLKComplicationTemplate.swift b/WatchApp Extension/Extensions/CLKComplicationTemplate.swift similarity index 65% rename from WatchApp Extension/CLKComplicationTemplate.swift rename to WatchApp Extension/Extensions/CLKComplicationTemplate.swift index 4d065752f6..1841201dec 100644 --- a/WatchApp Extension/CLKComplicationTemplate.swift +++ b/WatchApp Extension/Extensions/CLKComplicationTemplate.swift @@ -12,14 +12,14 @@ import Foundation extension CLKComplicationTemplateModularSmallStackText { - convenience init?(context: WatchContext) { - guard let value = context.glucoseValue, date = context.glucoseDate else { + convenience init?(line1: String?, date: NSDate?) { + guard let line1 = line1, date = date else { return nil } self.init() - line1TextProvider = CLKSimpleTextProvider(text: "\(value)") + line1TextProvider = CLKSimpleTextProvider(text: line1) line2TextProvider = CLKTimeTextProvider(date: date) } diff --git a/WatchApp Extension/DiagnosticLogger+Error.swift b/WatchApp Extension/Extensions/DiagnosticLogger+Error.swift similarity index 100% rename from WatchApp Extension/DiagnosticLogger+Error.swift rename to WatchApp Extension/Extensions/DiagnosticLogger+Error.swift diff --git a/WatchApp Extension/IdentifiableClass.swift b/WatchApp Extension/Extensions/IdentifiableClass.swift similarity index 79% rename from WatchApp Extension/IdentifiableClass.swift rename to WatchApp Extension/Extensions/IdentifiableClass.swift index d12a7fe609..ec56068292 100644 --- a/WatchApp Extension/IdentifiableClass.swift +++ b/WatchApp Extension/Extensions/IdentifiableClass.swift @@ -9,13 +9,13 @@ import Foundation -public protocol IdentifiableClass: class { +protocol IdentifiableClass: class { static var className: String { get } } extension IdentifiableClass { - public static var className: String { + static var className: String { return NSStringFromClass(self).componentsSeparatedByString(".").last! } } diff --git a/WatchApp Extension/NSDateFormatter.swift b/WatchApp Extension/Extensions/NSDateFormatter.swift similarity index 92% rename from WatchApp Extension/NSDateFormatter.swift rename to WatchApp Extension/Extensions/NSDateFormatter.swift index d258a29ab4..513eb05eba 100644 --- a/WatchApp Extension/NSDateFormatter.swift +++ b/WatchApp Extension/Extensions/NSDateFormatter.swift @@ -9,7 +9,7 @@ import Foundation -public extension NSDateFormatter { +extension NSDateFormatter { static func ISO8601StrictDateFormatter() -> Self { let dateFormatter = self.init() diff --git a/WatchApp Extension/NSUserDefaults.swift b/WatchApp Extension/Extensions/NSUserDefaults.swift similarity index 100% rename from WatchApp Extension/NSUserDefaults.swift rename to WatchApp Extension/Extensions/NSUserDefaults.swift diff --git a/WatchApp Extension/UIColor.swift b/WatchApp Extension/Extensions/UIColor.swift similarity index 100% rename from WatchApp Extension/UIColor.swift rename to WatchApp Extension/Extensions/UIColor.swift diff --git a/WatchApp Extension/WKAlertAction.swift b/WatchApp Extension/Extensions/WKAlertAction.swift similarity index 100% rename from WatchApp Extension/WKAlertAction.swift rename to WatchApp Extension/Extensions/WKAlertAction.swift diff --git a/WatchApp Extension/Extensions/WKInterfaceImage.swift b/WatchApp Extension/Extensions/WKInterfaceImage.swift new file mode 100644 index 0000000000..6239f6eaeb --- /dev/null +++ b/WatchApp Extension/Extensions/WKInterfaceImage.swift @@ -0,0 +1,23 @@ +// +// WKInterfaceImage.swift +// Loop +// +// Created by Nathan Racklyeft on 5/29/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import WatchKit + +enum LoopImage: String { + case Fresh + case Aging + case Stale + case Unknown +} + + +extension WKInterfaceImage { + func setLoopImage(loopImage: LoopImage) { + setImageNamed("loop_\(loopImage.rawValue.lowercaseString)") + } +} \ No newline at end of file diff --git a/WatchApp Extension/InterfaceController.swift b/WatchApp Extension/InterfaceController.swift deleted file mode 100644 index 0e8acae565..0000000000 --- a/WatchApp Extension/InterfaceController.swift +++ /dev/null @@ -1,134 +0,0 @@ -// -// InterfaceController.swift -// WatchApp Extension -// -// Created by Nathan Racklyeft on 8/29/15. -// Copyright © 2015 Nathan Racklyeft. All rights reserved. -// - -import ClockKit -import WatchKit -import Foundation -import WatchConnectivity - - -extension Int { - var minutes: NSTimeInterval { - return NSTimeInterval(self * 60) - } -} - - -class InterfaceController: WKInterfaceController { - - @IBOutlet var glucoseLabel: WKInterfaceLabel! - @IBOutlet var glucoseUnitLabel: WKInterfaceLabel! - @IBOutlet var glucoseDateLabel: WKInterfaceLabel! - @IBOutlet var pumpDateLabel: WKInterfaceLabel? - @IBOutlet var IOBLabel: WKInterfaceLabel! - @IBOutlet var reservoirLabel: WKInterfaceLabel! - - let dataManager = DeviceDataManager.sharedManager - - let dateFormatter: NSDateComponentsFormatter = { - let dateFormatter = NSDateComponentsFormatter() - dateFormatter.unitsStyle = .Abbreviated - dateFormatter.allowedUnits = [.Hour, .Minute] - - return dateFormatter - }() - - override func awakeWithContext(context: AnyObject?) { - super.awakeWithContext(context) - } - - override func willActivate() { - super.willActivate() - - dataManager.addObserver(self, forKeyPath: "lastContextData", options: [], context: &lastContextDataObserverContext) - - updateFromContext(dataManager.lastContextData) - } - - override func didDeactivate() { - dataManager.removeObserver(self, forKeyPath: "lastContextData", context: &lastContextDataObserverContext) - - super.didDeactivate() - } - - // MARK: - Data - - private var lastContextDataObserverContext = 0 - - private func updateFromContext(context: WatchContext?) { - dispatch_async(dispatch_get_main_queue()) { [weak self] in - if let date = context?.pumpDate where NSDate().timeIntervalSinceDate(date) <= 60.minutes, - let iob = context?.IOB, reservoir = context?.reservoir - { - let decimalFormatter = NSNumberFormatter() - decimalFormatter.numberStyle = .DecimalStyle - - self?.IOBLabel.setText(decimalFormatter.stringFromNumber(iob)) - self?.reservoirLabel.setText(decimalFormatter.stringFromNumber(reservoir)) - - if let dateString = self?.dateFormatter.stringFromDate(date, toDate: NSDate()) { - self?.pumpDateLabel?.setText("\(dateString) ago") - } - } else { - self?.IOBLabel.setText("-.-") - self?.reservoirLabel.setText("-.-") - } - - if let date = context?.glucoseDate where NSDate().timeIntervalSinceDate(date) <= 60.minutes, - let glucose = context?.glucoseValue, trend = context?.glucoseTrend - { - let direction: String - switch trend { - case let x where x < -10: - direction = "⇊" - case let x where x < 0: - direction = "↓" - case let x where x > 10: - direction = "⇈" - case let x where x > 0: - direction = "↑" - default: - direction = "" - } - - self?.glucoseLabel.setText("\(direction)\(glucose)") - - if let dateString = self?.dateFormatter.stringFromDate(date, toDate: NSDate()) { - self?.glucoseDateLabel.setText("\(dateString) ago") - } - } else { - self?.glucoseLabel.setText("--") - self?.glucoseUnitLabel.setHidden(false) - } - } - - DeviceDataManager.sharedManager.updateComplicationDataIfNeeded() - } - - // MARK: - KVO - - override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer) { - if context == &lastContextDataObserverContext { - if let context = dataManager.lastContextData { - updateFromContext(context) - } - } else { - super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context) - } - } - - // MARK: - Menu Items - - @IBAction func addCarbs() { - presentControllerWithName(AddCarbsInterfaceController.className, context: nil) - } - - @IBAction func setBolus() { - presentControllerWithName(BolusInterfaceController.className, context: nil) - } -} diff --git a/WatchApp Extension/Models/WatchContext.swift b/WatchApp Extension/Models/WatchContext.swift index 280de168fa..f0aa9dce2f 100644 --- a/WatchApp Extension/Models/WatchContext.swift +++ b/WatchApp Extension/Models/WatchContext.swift @@ -7,18 +7,31 @@ // import Foundation +import HealthKit -class WatchContext: NSObject, NSSecureCoding, RawRepresentable { +class WatchContext: NSObject, RawRepresentable { typealias RawValue = [String: AnyObject] - let version = 1 - var glucoseValue: Int? + private let version = 2 + + var preferredGlucoseUnit: HKUnit? + + var glucose: HKQuantity? var glucoseTrend: Int? + var eventualGlucose: HKQuantity? var glucoseDate: NSDate? + + var loopLastRunDate: NSDate? + var lastNetTempBasalDose: Double? + var lastNetTempBasalDate: NSDate? + var recommendedBolusDose: Double? + + var COB: Double? var IOB: Double? var reservoir: Double? - var pumpDate: NSDate? + var reservoirPercentage: Double? + var batteryPercentage: Double? override init() { super.init() @@ -31,28 +44,31 @@ class WatchContext: NSObject, NSSecureCoding, RawRepresentable { return nil } - glucoseValue = rawValue["gv"] as? Int + if let unitString = rawValue["gu"] as? String { + let unit = HKUnit(fromString: unitString) + preferredGlucoseUnit = unit + + if let glucoseValue = rawValue["gv"] as? Double { + glucose = HKQuantity(unit: unit, doubleValue: glucoseValue) + } + + if let glucoseValue = rawValue["egv"] as? Double { + eventualGlucose = HKQuantity(unit: unit, doubleValue: glucoseValue) + } + } glucoseTrend = rawValue["gt"] as? Int glucoseDate = rawValue["gd"] as? NSDate + IOB = rawValue["iob"] as? Double reservoir = rawValue["r"] as? Double - pumpDate = rawValue["pd"] as? NSDate - } - - required convenience init?(coder: NSCoder) { - guard let rawValue = coder.decodeObjectOfClass(NSDictionary.self, forKey: "rawValue") as? [String: AnyObject] else { - return nil - } + reservoirPercentage = rawValue["rp"] as? Double + batteryPercentage = rawValue["bp"] as? Double - self.init(rawValue: rawValue) - } - - func encodeWithCoder(coder: NSCoder) { - coder.encodeObject(rawValue, forKey: "rawValue") - } - - static func supportsSecureCoding() -> Bool { - return true + loopLastRunDate = rawValue["ld"] as? NSDate + lastNetTempBasalDose = rawValue["ba"] as? Double + lastNetTempBasalDate = rawValue["bad"] as? NSDate + recommendedBolusDose = rawValue["rbo"] as? Double + COB = rawValue["cob"] as? Double } var rawValue: RawValue { @@ -60,13 +76,43 @@ class WatchContext: NSObject, NSSecureCoding, RawRepresentable { "v": version ] - raw["gv"] = glucoseValue + raw["ba"] = lastNetTempBasalDose + raw["bad"] = lastNetTempBasalDate + raw["bp"] = batteryPercentage + raw["cob"] = COB + + if let unit = preferredGlucoseUnit { + raw["egv"] = eventualGlucose?.doubleValueForUnit(unit) + raw["gu"] = unit.unitString + raw["gv"] = glucose?.doubleValueForUnit(unit) + } + raw["gt"] = glucoseTrend raw["gd"] = glucoseDate raw["iob"] = IOB + raw["ld"] = loopLastRunDate raw["r"] = reservoir - raw["pd"] = pumpDate + raw["rbo"] = recommendedBolusDose + raw["rp"] = reservoirPercentage return raw } + + var glucoseTrendDescription: String { + let direction: String + switch glucoseTrend { + case let x? where x < -10: + direction = "⇊" + case let x? where x < 0: + direction = "↓" + case let x? where x > 10: + direction = "⇈" + case let x? where x > 0: + direction = "↑" + default: + direction = "→" + } + + return direction + } } \ No newline at end of file diff --git a/WatchApp Extension/WatchApp Extension.entitlements b/WatchApp Extension/WatchApp Extension.entitlements new file mode 100644 index 0000000000..0c67376eba --- /dev/null +++ b/WatchApp Extension/WatchApp Extension.entitlements @@ -0,0 +1,5 @@ + + + + + diff --git a/WatchApp/Assets.xcassets/Contents.json b/WatchApp/Assets.xcassets/Contents.json new file mode 100644 index 0000000000..da4a164c91 --- /dev/null +++ b/WatchApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/loop/Contents.json b/WatchApp/Assets.xcassets/loop/Contents.json new file mode 100644 index 0000000000..da4a164c91 --- /dev/null +++ b/WatchApp/Assets.xcassets/loop/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/loop/loop_aging.imageset/Contents.json b/WatchApp/Assets.xcassets/loop/loop_aging.imageset/Contents.json new file mode 100644 index 0000000000..cb4811aff0 --- /dev/null +++ b/WatchApp/Assets.xcassets/loop/loop_aging.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "loop-aging@38mm.png", + "screen-width" : "<=145", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "loop-aging@42mm.png", + "screen-width" : ">145", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/loop/loop_aging.imageset/loop-aging@38mm.png b/WatchApp/Assets.xcassets/loop/loop_aging.imageset/loop-aging@38mm.png new file mode 100644 index 0000000000..f670d5bc20 Binary files /dev/null and b/WatchApp/Assets.xcassets/loop/loop_aging.imageset/loop-aging@38mm.png differ diff --git a/WatchApp/Assets.xcassets/loop/loop_aging.imageset/loop-aging@42mm.png b/WatchApp/Assets.xcassets/loop/loop_aging.imageset/loop-aging@42mm.png new file mode 100644 index 0000000000..c1ba3ad82b Binary files /dev/null and b/WatchApp/Assets.xcassets/loop/loop_aging.imageset/loop-aging@42mm.png differ diff --git a/WatchApp/Assets.xcassets/loop/loop_fresh.imageset/Contents.json b/WatchApp/Assets.xcassets/loop/loop_fresh.imageset/Contents.json new file mode 100644 index 0000000000..585f56d7fa --- /dev/null +++ b/WatchApp/Assets.xcassets/loop/loop_fresh.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "loop-fresh@38mm.png", + "screen-width" : "<=145", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "loop-fresh@42mm.png", + "screen-width" : ">145", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/loop/loop_fresh.imageset/loop-fresh@38mm.png b/WatchApp/Assets.xcassets/loop/loop_fresh.imageset/loop-fresh@38mm.png new file mode 100644 index 0000000000..576184a7e1 Binary files /dev/null and b/WatchApp/Assets.xcassets/loop/loop_fresh.imageset/loop-fresh@38mm.png differ diff --git a/WatchApp/Assets.xcassets/loop/loop_fresh.imageset/loop-fresh@42mm.png b/WatchApp/Assets.xcassets/loop/loop_fresh.imageset/loop-fresh@42mm.png new file mode 100644 index 0000000000..dd33947526 Binary files /dev/null and b/WatchApp/Assets.xcassets/loop/loop_fresh.imageset/loop-fresh@42mm.png differ diff --git a/WatchApp/Assets.xcassets/loop/loop_stale.imageset/Contents.json b/WatchApp/Assets.xcassets/loop/loop_stale.imageset/Contents.json new file mode 100644 index 0000000000..d849fa9344 --- /dev/null +++ b/WatchApp/Assets.xcassets/loop/loop_stale.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "loop-stale@38mm.png", + "screen-width" : "<=145", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "loop-stale@42mm.png", + "screen-width" : ">145", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/loop/loop_stale.imageset/loop-stale@38mm.png b/WatchApp/Assets.xcassets/loop/loop_stale.imageset/loop-stale@38mm.png new file mode 100644 index 0000000000..2e0644cd15 Binary files /dev/null and b/WatchApp/Assets.xcassets/loop/loop_stale.imageset/loop-stale@38mm.png differ diff --git a/WatchApp/Assets.xcassets/loop/loop_stale.imageset/loop-stale@42mm.png b/WatchApp/Assets.xcassets/loop/loop_stale.imageset/loop-stale@42mm.png new file mode 100644 index 0000000000..ac18028dab Binary files /dev/null and b/WatchApp/Assets.xcassets/loop/loop_stale.imageset/loop-stale@42mm.png differ diff --git a/WatchApp/Assets.xcassets/loop/loop_unknown.imageset/Contents.json b/WatchApp/Assets.xcassets/loop/loop_unknown.imageset/Contents.json new file mode 100644 index 0000000000..91ea68fbd0 --- /dev/null +++ b/WatchApp/Assets.xcassets/loop/loop_unknown.imageset/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "idiom" : "watch", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "loop-unknown@38mm.png", + "screen-width" : "<=145", + "scale" : "2x" + }, + { + "idiom" : "watch", + "filename" : "loop-unknown@42mm.png", + "screen-width" : ">145", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/WatchApp/Assets.xcassets/loop/loop_unknown.imageset/loop-unknown@38mm.png b/WatchApp/Assets.xcassets/loop/loop_unknown.imageset/loop-unknown@38mm.png new file mode 100644 index 0000000000..3e30a9160f Binary files /dev/null and b/WatchApp/Assets.xcassets/loop/loop_unknown.imageset/loop-unknown@38mm.png differ diff --git a/WatchApp/Assets.xcassets/loop/loop_unknown.imageset/loop-unknown@42mm.png b/WatchApp/Assets.xcassets/loop/loop_unknown.imageset/loop-unknown@42mm.png new file mode 100644 index 0000000000..a74ccb086f Binary files /dev/null and b/WatchApp/Assets.xcassets/loop/loop_unknown.imageset/loop-unknown@42mm.png differ diff --git a/WatchApp/Base.lproj/Interface.storyboard b/WatchApp/Base.lproj/Interface.storyboard index e093599833..e6b64548ed 100644 --- a/WatchApp/Base.lproj/Interface.storyboard +++ b/WatchApp/Base.lproj/Interface.storyboard @@ -1,125 +1,14 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + @@ -190,7 +79,7 @@ -