diff --git a/Cartfile b/Cartfile index b31582783e..507d127d22 100644 --- a/Cartfile +++ b/Cartfile @@ -1,7 +1,7 @@ -github "LoopKit/LoopKit" ~> 1.1.0 +github "LoopKit/LoopKit" ~> 1.2.0 github "LoopKit/xDripG5" ~> 0.8.0 github "i-schuetz/SwiftCharts" ~> 0.5.0 github "mddub/dexcom-share-client-swift" ~> 0.2.0 github "mddub/G4ShareSpy" ~> 0.3.1 -github "ps2/rileylink_ios" ~> 0.13 +github "ps2/rileylink_ios" ~> 1.0 github "amplitude/Amplitude-iOS" ~> 3.8.5 diff --git a/Cartfile.resolved b/Cartfile.resolved index a1e070f364..7ba4700e45 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,7 +1,7 @@ -github "amplitude/Amplitude-iOS" "v3.11.1" +github "amplitude/Amplitude-iOS" "v3.14.0" github "mddub/G4ShareSpy" "v0.3.1" -github "LoopKit/LoopKit" "v1.1.0" +github "LoopKit/LoopKit" "v1.2.0" github "i-schuetz/SwiftCharts" "0.5.1" github "mddub/dexcom-share-client-swift" "v0.2.0" -github "ps2/rileylink_ios" "v0.13" +github "ps2/rileylink_ios" "v1.0" github "LoopKit/xDripG5" "v0.8.0" diff --git a/Carthage/Build/iOS/Amplitude.framework/Amplitude b/Carthage/Build/iOS/Amplitude.framework/Amplitude index d0f9c86f0d..333aa4c002 100755 Binary files a/Carthage/Build/iOS/Amplitude.framework/Amplitude and b/Carthage/Build/iOS/Amplitude.framework/Amplitude differ diff --git a/Carthage/Build/iOS/Amplitude.framework/Headers/AMPConstants.h b/Carthage/Build/iOS/Amplitude.framework/Headers/AMPConstants.h index b5de4235b6..3015ab5524 100644 --- a/Carthage/Build/iOS/Amplitude.framework/Headers/AMPConstants.h +++ b/Carthage/Build/iOS/Amplitude.framework/Headers/AMPConstants.h @@ -4,6 +4,7 @@ extern NSString *const kAMPLibrary; extern NSString *const kAMPPlatform; +extern NSString *const kAMPOSName; extern NSString *const kAMPVersion; extern NSString *const kAMPEventLogDomain; extern NSString *const kAMPEventLogUrl; diff --git a/Carthage/Build/iOS/Amplitude.framework/Headers/AMPDeviceInfo.h b/Carthage/Build/iOS/Amplitude.framework/Headers/AMPDeviceInfo.h index f6cf0b6e9a..1e18cd5f93 100644 --- a/Carthage/Build/iOS/Amplitude.framework/Headers/AMPDeviceInfo.h +++ b/Carthage/Build/iOS/Amplitude.framework/Headers/AMPDeviceInfo.h @@ -15,6 +15,6 @@ @property (readonly) NSString *advertiserID; @property (readonly) NSString *vendorID; --(NSString*) generateUUID; ++(NSString*) generateUUID; -@end \ No newline at end of file +@end diff --git a/Carthage/Build/iOS/Amplitude.framework/Headers/AMPUtils.h b/Carthage/Build/iOS/Amplitude.framework/Headers/AMPUtils.h index a80d8ff900..f16cd95903 100644 --- a/Carthage/Build/iOS/Amplitude.framework/Headers/AMPUtils.h +++ b/Carthage/Build/iOS/Amplitude.framework/Headers/AMPUtils.h @@ -8,9 +8,10 @@ @interface AMPUtils : NSObject -+ (NSString*)generateUUID; ++ (NSString*) generateUUID; + (id) makeJSONSerializable:(id) obj; + (BOOL) isEmptyString:(NSString*) str; + (NSDictionary*) validateGroups:(NSDictionary*) obj; ++ (NSString*) platformDataDirectory; @end diff --git a/Carthage/Build/iOS/Amplitude.framework/Headers/Amplitude.h b/Carthage/Build/iOS/Amplitude.framework/Headers/Amplitude.h index 5dff5a6d8c..729509d045 100644 --- a/Carthage/Build/iOS/Amplitude.framework/Headers/Amplitude.h +++ b/Carthage/Build/iOS/Amplitude.framework/Headers/Amplitude.h @@ -239,7 +239,7 @@ @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 longLongtimestamp You can specify a custom timestamp by passing the milliseconds since epoch UTC time as a long long. + @param longLongTimestamp You can specify a custom timestamp by passing the milliseconds since epoch UTC time as a long long. @param outOfSession If YES, will track the event as out of session. Useful for push notification events. @see [Tracking Events](https://github.com/amplitude/amplitude-ios#tracking-events) @@ -248,7 +248,7 @@ @see [Tracking Sessions](https://github.com/amplitude/Amplitude-iOS#tracking-sessions) */ -- (void)logEvent:(NSString*) eventType withEventProperties:(NSDictionary*) eventProperties withGroups:(NSDictionary*) groups withLongLongTimestamp:(long long) timestamp outOfSession:(BOOL)outOfSession; +- (void)logEvent:(NSString*) eventType withEventProperties:(NSDictionary*) eventProperties withGroups:(NSDictionary*) groups withLongLongTimestamp:(long long) longLongTimestamp outOfSession:(BOOL)outOfSession; /** Tracks an event. Events are saved locally. @@ -292,7 +292,7 @@ Tracks revenue. 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. - @param productidentifier The identifier for the product in the transaction, e.g. "com.amplitude.productId" + @param productIdentifier The identifier for the product in the transaction, e.g. "com.amplitude.productId" @param quantity The number of products in the transaction. Revenue amount is calculated as quantity * price @param price The price of the products in the transaction. Revenue amount is calculated as quantity * price @@ -308,7 +308,7 @@ For validating revenue, use [[Amplitude instance] logRevenue:@"com.company.app.productId" quantity:1 price:[NSNumber numberWithDouble:3.99] receipt:transactionReceipt] - @param productidentifier The identifier for the product in the transaction, e.g. "com.amplitude.productId" + @param productIdentifier The identifier for the product in the transaction, e.g. "com.amplitude.productId" @param quantity The number of products in the transaction. Revenue amount is calculated as quantity * price @param price The price of the products in the transaction. Revenue amount is calculated as quantity * price @param receipt The receipt data from the App Store. Required if you want to verify this revenue event. @@ -326,7 +326,7 @@ 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. - @param AMPRevenue object revenue object contains all revenue information + @param revenue AMPRevenue object revenue object contains all revenue information @see [Tracking Revenue](https://github.com/amplitude/Amplitude-iOS#tracking-revenue) */ @@ -528,6 +528,13 @@ */ - (NSString*)getDeviceId; +/** + Regenerates a new random deviceId for current user. Note: this is not recommended unless you know what you are doing. This can be used in conjunction with setUserId:nil to anonymize users after they log out. With a nil userId and a completely new deviceId, the current user would appear as a brand new user in dashboard. + + @see [Logging Out Users](https://github.com/amplitude/Amplitude-iOS#logging-out-and-anonymous-users) + */ +- (void)regenerateDeviceId; + /** Fetches the current sessionId, an identifier used by Amplitude to group together events tracked during the same session. diff --git a/Carthage/Build/iOS/Amplitude.framework/Info.plist b/Carthage/Build/iOS/Amplitude.framework/Info.plist index c4760a8015..84e1477cbc 100644 Binary files a/Carthage/Build/iOS/Amplitude.framework/Info.plist and b/Carthage/Build/iOS/Amplitude.framework/Info.plist differ diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit b/Carthage/Build/iOS/CarbKit.framework/CarbKit index afbe631ccd..107040f280 100755 Binary files a/Carthage/Build/iOS/CarbKit.framework/CarbKit 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 index d193e066f7..20a3565b3c 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/CarbEntryEditViewController.nib and b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/CarbEntryEditViewController.nib differ diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/CarbEntryTableViewController.nib b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/CarbEntryTableViewController.nib new file mode 100644 index 0000000000..093d0aedc7 Binary files /dev/null and b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/CarbEntryTableViewController.nib differ diff --git a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/Info.plist b/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/Info.plist index 5811714e41..913d5f108d 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/Info.plist 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 index 1799d25298..93b094211a 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/LyL-9U-twn-view-9Ci-XW-6nA.nib 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 index 8e9f4e566a..55994e1fb7 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/UINavigationController-wgu-gT-TgV.nib 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 deleted file mode 100644 index f4dacb0772..0000000000 Binary files a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/UITableViewController-rUL-yg-cFX.nib and /dev/null 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 index 17636671f7..0f3dbed21d 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/CarbKit.storyboardc/rUL-yg-cFX-view-b1s-8o-0Wp.nib 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 index 13185c08e9..edb968c063 100644 --- a/Carthage/Build/iOS/CarbKit.framework/Headers/CarbKit-Swift.h +++ b/Carthage/Build/iOS/CarbKit.framework/Headers/CarbKit-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() diff --git a/Carthage/Build/iOS/CarbKit.framework/Info.plist b/Carthage/Build/iOS/CarbKit.framework/Info.plist index 21e10580a3..54d1649d13 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/Info.plist 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 index 21401712a0..4dfe1a824a 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm.swiftdoc 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 index 39b48ebe86..54282f15cb 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm.swiftmodule 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 index d59ec549f8..214b3b0fe2 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm64.swiftdoc 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 index 350ee163f8..0eccb79b41 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/arm64.swiftmodule 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 index e660e46fa6..6bea3caeac 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/i386.swiftdoc 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 index 6169fc28c9..3996369073 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/i386.swiftmodule 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 index 0950c077a3..196a3a0083 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/x86_64.swiftdoc 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 index 79567112f2..48c06b3caf 100644 Binary files a/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/CarbKit.framework/Modules/CarbKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/Crypto.framework/Crypto b/Carthage/Build/iOS/Crypto.framework/Crypto index f319d084c8..abd0381f7d 100755 Binary files a/Carthage/Build/iOS/Crypto.framework/Crypto and b/Carthage/Build/iOS/Crypto.framework/Crypto differ diff --git a/Carthage/Build/iOS/Crypto.framework/Info.plist b/Carthage/Build/iOS/Crypto.framework/Info.plist index 0d4b8f3f2c..8524b063a0 100644 Binary files a/Carthage/Build/iOS/Crypto.framework/Info.plist and b/Carthage/Build/iOS/Crypto.framework/Info.plist differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/G4ShareSpy b/Carthage/Build/iOS/G4ShareSpy.framework/G4ShareSpy index 44315d31c0..ed56283782 100755 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/G4ShareSpy and b/Carthage/Build/iOS/G4ShareSpy.framework/G4ShareSpy differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Headers/G4ShareSpy-Swift.h b/Carthage/Build/iOS/G4ShareSpy.framework/Headers/G4ShareSpy-Swift.h index edb321dbfb..78dd1701a7 100644 --- a/Carthage/Build/iOS/G4ShareSpy.framework/Headers/G4ShareSpy-Swift.h +++ b/Carthage/Build/iOS/G4ShareSpy.framework/Headers/G4ShareSpy-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Info.plist b/Carthage/Build/iOS/G4ShareSpy.framework/Info.plist index e79e6fb14b..a92a76dc44 100644 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/Info.plist and b/Carthage/Build/iOS/G4ShareSpy.framework/Info.plist differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm.swiftdoc index 32c0c5e861..0d6430e039 100644 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm.swiftdoc and b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm.swiftmodule index 4154f8e746..c5d410fd71 100644 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm.swiftmodule and b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm64.swiftdoc index 0eea818fcd..439ead1d05 100644 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm64.swiftdoc and b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm64.swiftmodule index 94554a2f3e..17929fd92d 100644 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm64.swiftmodule and b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/i386.swiftdoc index 1cc1e13ecd..848b6cf79a 100644 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/i386.swiftdoc and b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/i386.swiftmodule index 05624b314e..86cb86d5a9 100644 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/i386.swiftmodule and b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/x86_64.swiftdoc index 2032a22004..e0133ef91c 100644 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/x86_64.swiftdoc and b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/x86_64.swiftmodule index f4095c522e..1439edddb6 100644 Binary files a/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/G4ShareSpy.framework/Modules/G4ShareSpy.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/GlucoseKit.framework/GlucoseKit b/Carthage/Build/iOS/GlucoseKit.framework/GlucoseKit index 9c6148173d..72a615ae28 100755 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/GlucoseKit 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 index 3dd820d614..6a25e6e71b 100644 --- a/Carthage/Build/iOS/GlucoseKit.framework/Headers/GlucoseKit-Swift.h +++ b/Carthage/Build/iOS/GlucoseKit.framework/Headers/GlucoseKit-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() diff --git a/Carthage/Build/iOS/GlucoseKit.framework/Info.plist b/Carthage/Build/iOS/GlucoseKit.framework/Info.plist index 83496b92f8..3de89700c7 100644 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/Info.plist 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 index 9338b822b9..7ab3632e1d 100644 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm.swiftdoc 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 index dbaf3bc6e6..cb27f5e8aa 100644 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm.swiftmodule 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 index c0875002db..c63ea4280d 100644 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm64.swiftdoc 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 index 7f492d450c..ccfd8a1e20 100644 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/arm64.swiftmodule 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 index a4de46db7d..4038d484aa 100644 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/i386.swiftdoc 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 index 6daf0e9bd1..eed5a0e407 100644 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/i386.swiftmodule 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 index 1562cb3d4e..28ded75cb6 100644 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/x86_64.swiftdoc 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 index 8cb1b61cb2..c4ffe66796 100644 Binary files a/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/GlucoseKit.framework/Modules/GlucoseKit.swiftmodule/x86_64.swiftmodule 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 index c33b19b9b7..de5b811add 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/UITableViewController-jGX-GA-nlH.nib 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 index 79b475636e..24553bc05b 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Base.lproj/InsulinKit.storyboardc/jGX-GA-nlH-view-ccM-3y-LQM.nib 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 index 328deddb2a..2626db417e 100644 --- a/Carthage/Build/iOS/InsulinKit.framework/Headers/InsulinKit-Swift.h +++ b/Carthage/Build/iOS/InsulinKit.framework/Headers/InsulinKit-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() diff --git a/Carthage/Build/iOS/InsulinKit.framework/Info.plist b/Carthage/Build/iOS/InsulinKit.framework/Info.plist index 07d56f9afc..c1a4e7f364 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Info.plist 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 index 0ab7460e72..b3f0089fda 100755 Binary files a/Carthage/Build/iOS/InsulinKit.framework/InsulinKit and b/Carthage/Build/iOS/InsulinKit.framework/InsulinKit 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 index 4ccb1e0113..7f4192d59f 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm.swiftdoc 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 index 0c93064e3f..f49c0d4f46 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm.swiftmodule 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 index 545e8fb744..80dc38086a 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm64.swiftdoc 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 index 1ff1e1a649..4486f27774 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/arm64.swiftmodule 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 index df6160b1e0..b9debb8384 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/i386.swiftdoc 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 index b5cfcf1f56..7d01e8b44d 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/i386.swiftmodule 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 index 24e2f11fca..90eaab32eb 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/x86_64.swiftdoc 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 index f61c0b10e7..eb78189d31 100644 Binary files a/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/InsulinKit.framework/Modules/InsulinKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/LoopKit.framework/Assets.car b/Carthage/Build/iOS/LoopKit.framework/Assets.car index 082f5e49ab..43a3bf27ef 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Assets.car and b/Carthage/Build/iOS/LoopKit.framework/Assets.car differ diff --git a/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeOverrideTableViewCell.nib b/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeOverrideTableViewCell.nib index 0bfca4bc15..fe5b87ac40 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeOverrideTableViewCell.nib and b/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeOverrideTableViewCell.nib differ diff --git a/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeTableViewCell.nib b/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeTableViewCell.nib index 1f9a29f99c..e0912c14d7 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/GlucoseRangeTableViewCell.nib 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 index 37793a365c..0a8387188d 100644 --- a/Carthage/Build/iOS/LoopKit.framework/Headers/LoopKit-Swift.h +++ b/Carthage/Build/iOS/LoopKit.framework/Headers/LoopKit-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() @@ -236,7 +236,7 @@ SWIFT_CLASS("_TtC7LoopKit39GlucoseRangeScheduleTableViewController") /** A formatting helper for determining the preferred decimal style for a given unit */ -@property (nonatomic, readonly) NSInteger preferredMinimumFractionDigits; +@property (nonatomic, readonly) NSInteger preferredFractionDigits; /** A presentation helper for the localized unit string */ diff --git a/Carthage/Build/iOS/LoopKit.framework/Info.plist b/Carthage/Build/iOS/LoopKit.framework/Info.plist index a6af3642fa..2c8cf6a726 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Info.plist 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 index 8f18ee305d..c5800299b1 100755 Binary files a/Carthage/Build/iOS/LoopKit.framework/LoopKit 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 index 80cdc0fac3..3c26c3cfe9 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm.swiftdoc 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 index ca3383e9de..022e31ee3c 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm.swiftmodule 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 index 434785f1ec..33583a5923 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm64.swiftdoc 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 index 5e1b1582b8..85f9e9ef39 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/arm64.swiftmodule 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 index d2c1441853..568a30a508 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/i386.swiftdoc 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 index ace1d01ec6..6f7897c64d 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/i386.swiftmodule 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 index 2ba7e7fd5b..7d0dbaade5 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/x86_64.swiftdoc 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 index 3afbbcb4c4..da652406e9 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/LoopKit.framework/Modules/LoopKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/LoopKit.framework/RepeatingScheduleValueTableViewCell.nib b/Carthage/Build/iOS/LoopKit.framework/RepeatingScheduleValueTableViewCell.nib index c617671e42..05a309a2bc 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/RepeatingScheduleValueTableViewCell.nib 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 index a456b14a28..a7e2be8fac 100644 Binary files a/Carthage/Build/iOS/LoopKit.framework/TextFieldTableViewCell.nib 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 index f6e51dd3a9..1f71a2c30e 100644 --- a/Carthage/Build/iOS/MinimedKit.framework/Headers/MinimedKit-Swift.h +++ b/Carthage/Build/iOS/MinimedKit.framework/Headers/MinimedKit-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() diff --git a/Carthage/Build/iOS/MinimedKit.framework/Info.plist b/Carthage/Build/iOS/MinimedKit.framework/Info.plist index 19ba481d1d..8f59db0318 100644 Binary files a/Carthage/Build/iOS/MinimedKit.framework/Info.plist 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 index 151de0bd46..62d748b049 100755 Binary files a/Carthage/Build/iOS/MinimedKit.framework/MinimedKit 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 index c3c8072875..3789883e70 100644 Binary files a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm.swiftdoc 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 index 26ce1a102b..f750e64b5b 100644 Binary files a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm.swiftmodule 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 index c0d66fa8f2..38d864255d 100644 Binary files a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm64.swiftdoc 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 index b14a3646e1..6842457c85 100644 Binary files a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/arm64.swiftmodule 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 index 49d9845b9a..468a41d30a 100644 Binary files a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/i386.swiftdoc 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 index baca9c635b..84df5e364a 100644 Binary files a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/i386.swiftmodule 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 index ae54bb7209..c818a18ba8 100644 Binary files a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/x86_64.swiftdoc 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 index 1dc7ce5950..b7b9132281 100644 Binary files a/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/MinimedKit.framework/Modules/MinimedKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit-Swift.h b/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit-Swift.h index 370a1ca7bb..dde7654dfb 100644 --- a/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit-Swift.h +++ b/Carthage/Build/iOS/NightscoutUploadKit.framework/Headers/NightscoutUploadKit-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() @@ -117,6 +117,7 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); #if defined(__has_feature) && __has_feature(modules) @import Foundation; @import HealthKit; +@import ObjectiveC; #endif #pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" @@ -130,6 +131,12 @@ typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); @end +SWIFT_CLASS("_TtC19NightscoutUploadKit20NightscoutPumpEvents") +@interface NightscoutPumpEvents : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + + @interface NSUserDefaults (SWIFT_EXTENSION(NightscoutUploadKit)) @end diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/Info.plist b/Carthage/Build/iOS/NightscoutUploadKit.framework/Info.plist index 5dada430a2..440015b818 100644 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/Info.plist 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 index 74634d265a..87fc0a96d4 100644 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm.swiftdoc 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 index 46f360bf86..97d9d20058 100644 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm.swiftmodule 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 index 40299c8557..a5e1eaba44 100644 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm64.swiftdoc 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 index 795cf43257..b5a2637367 100644 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/arm64.swiftmodule 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 index 64cf2ec702..8577f05f1f 100644 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/i386.swiftdoc 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 index 7306848d5b..4fc3d5f55d 100644 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/i386.swiftmodule 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 index f56cef176b..7b7a991ac1 100644 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/x86_64.swiftdoc 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 index c48b8a61fc..162c061536 100644 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/NightscoutUploadKit.framework/Modules/NightscoutUploadKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/NightscoutUploadKit.framework/NightscoutUploadKit b/Carthage/Build/iOS/NightscoutUploadKit.framework/NightscoutUploadKit index e9fb5ff933..7f2a3bbb8d 100755 Binary files a/Carthage/Build/iOS/NightscoutUploadKit.framework/NightscoutUploadKit and b/Carthage/Build/iOS/NightscoutUploadKit.framework/NightscoutUploadKit differ diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEManager.h b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEManager.h index e7d2d4601c..b699c5ba93 100644 --- a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEManager.h +++ b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Headers/RileyLinkBLEManager.h @@ -10,7 +10,7 @@ @import Foundation; #define RILEYLINK_EVENT_LIST_UPDATED @"RILEYLINK_EVENT_LIST_UPDATED" -#define RILEYLINK_EVENT_PACKET_RECEIVED @"RILEYLINK_EVENT_PACKET_RECEIVED" +#define RILEYLINK_IDLE_RESPONSE_RECEIVED @"RILEYLINK_IDLE_RESPONSE_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" diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Info.plist b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Info.plist index 6b463c848a..1551a88659 100644 Binary files a/Carthage/Build/iOS/RileyLinkBLEKit.framework/Info.plist and b/Carthage/Build/iOS/RileyLinkBLEKit.framework/Info.plist differ diff --git a/Carthage/Build/iOS/RileyLinkBLEKit.framework/RileyLinkBLEKit b/Carthage/Build/iOS/RileyLinkBLEKit.framework/RileyLinkBLEKit index 27f8cf9793..8d0c4b4db6 100755 Binary files a/Carthage/Build/iOS/RileyLinkBLEKit.framework/RileyLinkBLEKit 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 index e46ac85acc..287c4ea246 100644 --- a/Carthage/Build/iOS/RileyLinkKit.framework/Headers/RileyLinkKit-Swift.h +++ b/Carthage/Build/iOS/RileyLinkKit.framework/Headers/RileyLinkKit-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/Info.plist b/Carthage/Build/iOS/RileyLinkKit.framework/Info.plist index c696b6370d..b79627389b 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/Info.plist 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 index dff4963744..c94c1e84bc 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm.swiftdoc 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 index 5d19d8ebae..ad317349ec 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm.swiftmodule 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 index fb265fdc50..93656f360b 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm64.swiftdoc 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 index 401a39ed78..804969a62b 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/arm64.swiftmodule 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 index fbbc405426..f48bc1c64a 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/i386.swiftdoc 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 index e3d55c1a5a..6a11be9dac 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/i386.swiftmodule 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 index ca3d7821da..5f249c893d 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/x86_64.swiftdoc 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 index f7dac05344..b324fb1780 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/RileyLinkKit.framework/Modules/RileyLinkKit.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkDeviceTableViewCell.nib b/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkDeviceTableViewCell.nib index c235fc993e..f3af917915 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkDeviceTableViewCell.nib 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 index cc7985fc92..40edc7a492 100755 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkKit and b/Carthage/Build/iOS/RileyLinkKit.framework/RileyLinkKit differ diff --git a/Carthage/Build/iOS/RileyLinkKit.framework/TextFieldTableViewCell.nib b/Carthage/Build/iOS/RileyLinkKit.framework/TextFieldTableViewCell.nib index 63040633ee..6178a01e13 100644 Binary files a/Carthage/Build/iOS/RileyLinkKit.framework/TextFieldTableViewCell.nib and b/Carthage/Build/iOS/RileyLinkKit.framework/TextFieldTableViewCell.nib differ diff --git a/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient-Swift.h b/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient-Swift.h index edb321dbfb..78dd1701a7 100644 --- a/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient-Swift.h +++ b/Carthage/Build/iOS/ShareClient.framework/Headers/ShareClient-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() diff --git a/Carthage/Build/iOS/ShareClient.framework/Info.plist b/Carthage/Build/iOS/ShareClient.framework/Info.plist index cfb5f8820b..b43873e3c2 100644 Binary files a/Carthage/Build/iOS/ShareClient.framework/Info.plist 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 index 32c0c5e861..0d6430e039 100644 Binary files a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm.swiftdoc 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 index b07af66f3e..669913f927 100644 Binary files a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm.swiftmodule 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 index 0eea818fcd..439ead1d05 100644 Binary files a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm64.swiftdoc 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 index 23b77dff24..e5c61428a2 100644 Binary files a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/arm64.swiftmodule 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 index 1cc1e13ecd..848b6cf79a 100644 Binary files a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/i386.swiftdoc 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 index 903f88398a..070e846202 100644 Binary files a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/i386.swiftmodule 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 index 2032a22004..e0133ef91c 100644 Binary files a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/x86_64.swiftdoc 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 index b563fc3824..ed3b4248cd 100644 Binary files a/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/ShareClient.framework/Modules/ShareClient.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/ShareClient.framework/ShareClient b/Carthage/Build/iOS/ShareClient.framework/ShareClient index d36f061f7e..97251f633e 100755 Binary files a/Carthage/Build/iOS/ShareClient.framework/ShareClient 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 index 5baac790f2..040ab82111 100644 --- a/Carthage/Build/iOS/SwiftCharts.framework/Headers/SwiftCharts-Swift.h +++ b/Carthage/Build/iOS/SwiftCharts.framework/Headers/SwiftCharts-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() diff --git a/Carthage/Build/iOS/SwiftCharts.framework/Info.plist b/Carthage/Build/iOS/SwiftCharts.framework/Info.plist index 816090ea91..f4c009b18c 100644 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/Info.plist 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 index 7e796a4bee..35858e029a 100644 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm.swiftdoc 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 index c1b0d4bb7f..572a60d9b8 100644 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm.swiftmodule 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 index 890b5032f3..13d050b8f4 100644 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm64.swiftdoc 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 index 6ed11328f2..b19cde5bc8 100644 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/arm64.swiftmodule 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 index ea2c52c369..ae241858cc 100644 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/i386.swiftdoc 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 index 44ff729d5e..d56730e167 100644 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/i386.swiftmodule 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 index 0316fa76ee..84d3472f17 100644 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/x86_64.swiftdoc 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 index acd8714c06..d1c4246351 100644 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/x86_64.swiftmodule and b/Carthage/Build/iOS/SwiftCharts.framework/Modules/SwiftCharts.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/SwiftCharts.framework/SwiftCharts b/Carthage/Build/iOS/SwiftCharts.framework/SwiftCharts index 19414e0cad..6e2f4da09e 100755 Binary files a/Carthage/Build/iOS/SwiftCharts.framework/SwiftCharts 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 index cb44e665fa..eaf3e9ac6c 100644 --- a/Carthage/Build/iOS/xDripG5.framework/Headers/xDripG5-Swift.h +++ b/Carthage/Build/iOS/xDripG5.framework/Headers/xDripG5-Swift.h @@ -1,4 +1,4 @@ -// Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) +// Generated by Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) #pragma clang diagnostic push #if defined(__has_include) && __has_include() diff --git a/Carthage/Build/iOS/xDripG5.framework/Info.plist b/Carthage/Build/iOS/xDripG5.framework/Info.plist index c509bba059..e232ee82ec 100644 Binary files a/Carthage/Build/iOS/xDripG5.framework/Info.plist and b/Carthage/Build/iOS/xDripG5.framework/Info.plist differ diff --git a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftdoc index 3c5d71ac22..6c86fb0868 100644 Binary files a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftdoc 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 index f1a09da8a7..631bfa05d2 100644 Binary files a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm.swiftmodule 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 index 59d04b3f9c..46b67caad3 100644 Binary files a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm64.swiftdoc 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 index f995615b43..539116d2ec 100644 Binary files a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/arm64.swiftmodule 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 index cdd5a6e17b..b494c7bfd7 100644 Binary files a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/i386.swiftdoc 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 index f4c0b29577..951e0e5cc4 100644 Binary files a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/i386.swiftmodule 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 index b1aad0dc01..a78b0c40aa 100644 Binary files a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/x86_64.swiftdoc 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 index bf0596e8ba..363f574812 100644 Binary files a/Carthage/Build/iOS/xDripG5.framework/Modules/xDripG5.swiftmodule/x86_64.swiftmodule 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 index f67fb14aa6..5882169dea 100755 Binary files a/Carthage/Build/iOS/xDripG5.framework/xDripG5 and b/Carthage/Build/iOS/xDripG5.framework/xDripG5 differ diff --git a/Loop Status Extension/HKUnit.swift b/Common/Extensions/HKUnit.swift similarity index 93% rename from Loop Status Extension/HKUnit.swift rename to Common/Extensions/HKUnit.swift index ffa2e62951..a4b7df21f6 100644 --- a/Loop Status Extension/HKUnit.swift +++ b/Common/Extensions/HKUnit.swift @@ -11,9 +11,9 @@ import HealthKit // Code in this extension is duplicated from: // https://github.com/LoopKit/LoopKit/blob/master/LoopKit/HKUnit.swift // to avoid pulling in the LoopKit extension since it's not extension-API safe. -public extension HKUnit { +extension HKUnit { // A formatting helper for determining the preferred decimal style for a given unit - var preferredMinimumFractionDigits: Int { + var preferredFractionDigits: Int { if self.unitString == "mg/dL" { return 0 } else { diff --git a/Loop/Extensions/IdentifiableClass.swift b/Common/Extensions/IdentifiableClass.swift similarity index 100% rename from Loop/Extensions/IdentifiableClass.swift rename to Common/Extensions/IdentifiableClass.swift diff --git a/Loop/Extensions/NSBundle.swift b/Common/Extensions/NSBundle.swift similarity index 69% rename from Loop/Extensions/NSBundle.swift rename to Common/Extensions/NSBundle.swift index 3cb84759e2..e9202624d6 100644 --- a/Loop/Extensions/NSBundle.swift +++ b/Common/Extensions/NSBundle.swift @@ -22,7 +22,19 @@ extension Bundle { return String(format: NSLocalizedString("%1$@ v%2$@", comment: "The format string for the app name and version number. (1: bundle name)(2: bundle version)"), bundleDisplayName, shortVersionString) } + private var mainAppBundleIdentifier: String? { + return object(forInfoDictionaryKey: "MainAppBundleIdentifier") as? String + } + var appGroupSuiteName: String { return object(forInfoDictionaryKey: "AppGroupIdentifier") as! String } + + var mainAppUrl: URL? { + if let mainAppBundleIdentifier = mainAppBundleIdentifier { + return URL(string: "\(mainAppBundleIdentifier)://") + } else { + return nil + } + } } diff --git a/Loop/Extensions/NSTimeInterval.swift b/Common/Extensions/NSTimeInterval.swift similarity index 100% rename from Loop/Extensions/NSTimeInterval.swift rename to Common/Extensions/NSTimeInterval.swift diff --git a/Loop/Extensions/NSUserDefaults+StatusExtension.swift b/Common/Extensions/NSUserDefaults+StatusExtension.swift similarity index 86% rename from Loop/Extensions/NSUserDefaults+StatusExtension.swift rename to Common/Extensions/NSUserDefaults+StatusExtension.swift index 76a01b454e..02c9a3b69d 100644 --- a/Loop/Extensions/NSUserDefaults+StatusExtension.swift +++ b/Common/Extensions/NSUserDefaults+StatusExtension.swift @@ -14,6 +14,10 @@ extension UserDefaults { case StatusExtensionContext = "com.loopkit.Loop.StatusExtensionContext" } + var statusExtensionContextObservableKey: String { + return Key.StatusExtensionContext.rawValue + } + var statusExtensionContext: StatusExtensionContext? { get { if let rawValue = dictionary(forKey: Key.StatusExtensionContext.rawValue) { diff --git a/Loop/Extensions/NibLoadable.swift b/Common/Extensions/NibLoadable.swift similarity index 100% rename from Loop/Extensions/NibLoadable.swift rename to Common/Extensions/NibLoadable.swift diff --git a/Common/Extensions/NumberFormatter.swift b/Common/Extensions/NumberFormatter.swift new file mode 100644 index 0000000000..e7e3cf35a4 --- /dev/null +++ b/Common/Extensions/NumberFormatter.swift @@ -0,0 +1,42 @@ +// +// NSNumberFormatter.swift +// Loop +// +// Created by Nate Racklyeft on 9/5/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import Foundation +import HealthKit + + +extension NumberFormatter { + static func glucoseFormatter(for unit: HKUnit) -> NumberFormatter { + let numberFormatter = NumberFormatter() + + numberFormatter.numberStyle = .decimal + numberFormatter.minimumFractionDigits = unit.preferredFractionDigits + numberFormatter.maximumFractionDigits = unit.preferredFractionDigits + return numberFormatter + } + + func describingGlucose(_ value: Double, for unit: HKUnit) -> String? { + guard let stringValue = string(from: NSNumber(value: value)) else { + return nil + } + + return String( + format: NSLocalizedString("GLUCOSE_VALUE_AND_UNIT", + value: "%1$@ %2$@", + comment: "Format string for combining localized glucose value and unit. (1: glucose value)(2: unit)" + ), + stringValue, + unit.glucoseUnitDisplayString + ) + } + + @nonobjc func describingGlucose(_ value: HKQuantity, for unit: HKUnit) -> String? { + return describingGlucose(value.doubleValue(for: unit), for: unit) + } + +} diff --git a/Common/Extensions/UIColor+HIG.swift b/Common/Extensions/UIColor+HIG.swift new file mode 100644 index 0000000000..8c3c382ce8 --- /dev/null +++ b/Common/Extensions/UIColor+HIG.swift @@ -0,0 +1,52 @@ +// +// UIColor+HIG.swift +// Naterade +// +// Created by Nathan Racklyeft on 1/23/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import UIKit + + +extension UIColor { + // MARK: - HIG colors + // See: https://developer.apple.com/ios/human-interface-guidelines/visual-design/color/ + + static func HIGTealBlueColor() -> UIColor { + return UIColor(red: 90 / 255, green: 200 / 255, blue: 250 / 255, alpha: 1) + } + + static func HIGYellowColor() -> UIColor { + return UIColor(red: 1, green: 204 / 255, blue: 0, alpha: 1) + } + + static func HIGOrangeColor() -> UIColor { + return UIColor(red: 1, green: 149 / 255, blue: 0 / 255, alpha: 1) + } + + static func HIGPinkColor() -> UIColor { + return UIColor(red: 1, green: 45 / 255, blue: 85 / 255, alpha: 1) + } + + static func HIGBlueColor() -> UIColor { + return UIColor(red: 0, green: 122 / 255, blue: 1, alpha: 1) + } + + static func HIGGreenColor() -> UIColor { + return UIColor(red: 76 / 255, green: 217 / 255, blue: 100 / 255, alpha: 1) + } + + static func HIGRedColor() -> UIColor { + return UIColor(red: 1, green: 59 / 255, blue: 48 / 255, alpha: 1) + } + + static func HIGPurpleColor() -> UIColor { + return UIColor(red: 88 / 255, green: 86 / 255, blue: 214 / 255, alpha: 1) + } + + static func HIGGrayColor() -> UIColor { + return UIColor(red: 142 / 255, green: 143 / 255, blue: 147 / 255, alpha: 1) + } + +} diff --git a/Common/Extensions/UIColor.swift b/Common/Extensions/UIColor.swift new file mode 100644 index 0000000000..9087d2d41c --- /dev/null +++ b/Common/Extensions/UIColor.swift @@ -0,0 +1,32 @@ +// +// UIColor.swift +// Naterade +// +// Created by Nathan Racklyeft on 1/23/16. +// Copyright © 2016 Nathan Racklyeft. All rights reserved. +// + +import UIKit + + +extension UIColor { + @nonobjc static var tintColor: UIColor? = nil + + @nonobjc static let secondaryLabelColor = UIColor.HIGGrayColor() + + @nonobjc static let cellBackgroundColor = UIColor(white: 239 / 255, alpha: 1) + + @nonobjc static let gridColor = UIColor(white: 193 / 255, alpha: 1) + + @nonobjc static let IOBTintColor = UIColor.HIGOrangeColor() + + @nonobjc static let COBTintColor = UIColor(red: 99 / 255, green: 218 / 255, blue: 56 / 255, alpha: 1) + + @nonobjc static let agingColor = UIColor.HIGYellowColor() + + @nonobjc static let staleColor = UIColor.HIGRedColor() + + @nonobjc static let unknownColor = UIColor(red: 198 / 255, green: 199 / 255, blue: 201 / 255, alpha: 1) + + @nonobjc static let deleteColor = UIColor.HIGRedColor() +} diff --git a/WatchApp Extension/Models/BolusSuggestionUserInfo.swift b/Common/Models/BolusSuggestionUserInfo.swift similarity index 100% rename from WatchApp Extension/Models/BolusSuggestionUserInfo.swift rename to Common/Models/BolusSuggestionUserInfo.swift diff --git a/WatchApp Extension/Models/CarbEntryUserInfo.swift b/Common/Models/CarbEntryUserInfo.swift similarity index 100% rename from WatchApp Extension/Models/CarbEntryUserInfo.swift rename to Common/Models/CarbEntryUserInfo.swift diff --git a/Loop/Models/GlucoseTrend.swift b/Common/Models/GlucoseTrend.swift similarity index 98% rename from Loop/Models/GlucoseTrend.swift rename to Common/Models/GlucoseTrend.swift index a79e75afa7..99b2999708 100644 --- a/Loop/Models/GlucoseTrend.swift +++ b/Common/Models/GlucoseTrend.swift @@ -9,7 +9,7 @@ import Foundation -enum GlucoseTrend: Int { +public enum GlucoseTrend: Int { case upUpUp = 1 case upUp = 2 case up = 3 diff --git a/WatchApp Extension/Models/SetBolusUserInfo.swift b/Common/Models/SetBolusUserInfo.swift similarity index 100% rename from WatchApp Extension/Models/SetBolusUserInfo.swift rename to Common/Models/SetBolusUserInfo.swift diff --git a/Common/Models/StatusExtensionContext.swift b/Common/Models/StatusExtensionContext.swift new file mode 100644 index 0000000000..526517ae82 --- /dev/null +++ b/Common/Models/StatusExtensionContext.swift @@ -0,0 +1,260 @@ +// +// StatusExtensionContext.swift +// Loop Status Extension +// +// Created by Bharat Mediratta on 11/25/16. +// Copyright © 2016 LoopKit Authors. All rights reserved. +// +// This class allows Loop to pass context data to the Loop Status Extension. + +import Foundation +import HealthKit +import LoopUI + +struct ReservoirContext { + let startDate: Date + let unitVolume: Double + let capacity: Int +} + +struct LoopContext { + let dosingEnabled: Bool + let lastCompleted: Date? +} + +struct NetBasalContext { + let rate: Double + let percentage: Double + let startDate: Date +} + +struct SensorDisplayableContext: SensorDisplayable { + let isStateValid: Bool + let stateDescription: String + let trendType: GlucoseTrend? + let isLocal: Bool +} + +struct GlucoseContext { + let value: Double + let unit: HKUnit + let startDate: Date + let sensor: SensorDisplayableContext? + + var quantity: HKQuantity { + return HKQuantity(unit: unit, doubleValue: value) + } +} + +extension ReservoirContext: RawRepresentable { + typealias RawValue = [String: Any] + + var rawValue: RawValue { + return [ + "startDate": startDate, + "unitVolume": unitVolume, + "capacity": capacity + ] + } + + init?(rawValue: RawValue) { + guard + let startDate = rawValue["startDate"] as? Date, + let unitVolume = rawValue["unitVolume"] as? Double, + let capacity = rawValue["capacity"] as? Int + else { + return nil + } + + self.startDate = startDate + self.unitVolume = unitVolume + self.capacity = capacity + } +} + +extension LoopContext: RawRepresentable { + typealias RawValue = [String: Any] + + var rawValue: RawValue { + var raw: RawValue = [ + "dosingEnabled": dosingEnabled + ] + raw["lastCompleted"] = lastCompleted + return raw + } + + init?(rawValue: RawValue) { + guard let dosingEnabled = rawValue["dosingEnabled"] as? Bool + else { + return nil + } + + self.dosingEnabled = dosingEnabled + self.lastCompleted = rawValue["lastCompleted"] as? Date + } +} + +extension NetBasalContext: RawRepresentable { + typealias RawValue = [String: Any] + + var rawValue: RawValue { + return [ + "rate": rate, + "percentage": percentage, + "startDate": startDate + ] + } + + init?(rawValue: RawValue) { + guard + let rate = rawValue["rate"] as? Double, + let percentage = rawValue["percentage"] as? Double, + let startDate = rawValue["startDate"] as? Date + else { + return nil + } + + self.rate = rate + self.percentage = percentage + self.startDate = startDate + } +} + +extension SensorDisplayableContext: RawRepresentable { + typealias RawValue = [String: Any] + + var rawValue: RawValue { + var raw: RawValue = [ + "isStateValid": isStateValid, + "stateDescription": stateDescription, + "isLocal": isLocal + ] + raw["trendType"] = trendType?.rawValue + + return raw + } + + init(_ other: SensorDisplayable) { + isStateValid = other.isStateValid + stateDescription = other.stateDescription + isLocal = other.isLocal + trendType = other.trendType + } + + init?(rawValue: RawValue) { + guard + let isStateValid = rawValue["isStateValid"] as? Bool, + let stateDescription = rawValue["stateDescription"] as? String, + let isLocal = rawValue["isLocal"] as? Bool + else { + return nil + } + + self.isStateValid = isStateValid + self.stateDescription = stateDescription + self.isLocal = isLocal + + if let rawValue = rawValue["trendType"] as? GlucoseTrend.RawValue { + trendType = GlucoseTrend(rawValue: rawValue) + } else { + trendType = nil + } + } +} + +extension GlucoseContext: RawRepresentable { + typealias RawValue = [String: Any] + + var rawValue: RawValue { + var raw: RawValue = [ + "value": value, + "unit": unit.unitString, + "startDate": startDate + ] + raw["sensor"] = sensor?.rawValue + + return raw + } + + init?(rawValue: RawValue) { + guard + let value = rawValue["value"] as? Double, + let unitString = rawValue["unit"] as? String, + let startDate = rawValue["startDate"] as? Date + else { + return nil + } + + self.value = value + self.unit = HKUnit(from: unitString) + self.startDate = startDate + + if let rawValue = rawValue["sensor"] as? SensorDisplayableContext.RawValue { + self.sensor = SensorDisplayableContext(rawValue: rawValue) + } else { + self.sensor = nil + } + } +} + +struct StatusExtensionContext: RawRepresentable { + typealias RawValue = [String: Any] + private let version = 2 + + var latestGlucose: GlucoseContext? + var reservoir: ReservoirContext? + var loop: LoopContext? + var netBasal: NetBasalContext? + var batteryPercentage: Double? + var eventualGlucose: GlucoseContext? + + init() { } + + init?(rawValue: RawValue) { + guard let version = rawValue["version"] as? Int, version == self.version else { + return nil + } + + if let rawValue = rawValue["latestGlucose"] as? GlucoseContext.RawValue { + latestGlucose = GlucoseContext(rawValue: rawValue) + } + + if let rawValue = rawValue["reservoir"] as? ReservoirContext.RawValue { + reservoir = ReservoirContext(rawValue: rawValue) + } + + if let rawValue = rawValue["loop"] as? LoopContext.RawValue { + loop = LoopContext(rawValue: rawValue) + } + + if let rawValue = rawValue["netBasal"] as? NetBasalContext.RawValue { + netBasal = NetBasalContext(rawValue: rawValue) + } + + batteryPercentage = rawValue["batteryPercentage"] as? Double + + if let rawValue = rawValue["eventualGlucose"] as? GlucoseContext.RawValue { + eventualGlucose = GlucoseContext(rawValue: rawValue) + } + } + + var rawValue: RawValue { + var raw: RawValue = [ + "version": version + ] + raw["latestGlucose"] = latestGlucose?.rawValue + raw["reservoir"] = reservoir?.rawValue + raw["loop"] = loop?.rawValue + raw["netBasal"] = netBasal?.rawValue + raw["batteryPercentage"] = batteryPercentage + raw["eventualGlucose"] = eventualGlucose?.rawValue + return raw + } +} + + +extension StatusExtensionContext: CustomDebugStringConvertible { + var debugDescription: String { + return String(reflecting: rawValue) + } +} diff --git a/WatchApp Extension/Models/WatchContext.swift b/Common/Models/WatchContext.swift similarity index 93% rename from WatchApp Extension/Models/WatchContext.swift rename to Common/Models/WatchContext.swift index f5cbe7176e..e5e7af322f 100644 --- a/WatchApp Extension/Models/WatchContext.swift +++ b/Common/Models/WatchContext.swift @@ -9,7 +9,6 @@ import Foundation import HealthKit - final class WatchContext: NSObject, RawRepresentable { typealias RawValue = [String: Any] @@ -19,7 +18,7 @@ final class WatchContext: NSObject, RawRepresentable { var maxBolus: Double? var glucose: HKQuantity? - var glucoseTrend: GlucoseTrend? + var glucoseTrendRawValue: Int? var eventualGlucose: HKQuantity? var glucoseDate: Date? @@ -64,9 +63,7 @@ final class WatchContext: NSObject, RawRepresentable { } } - if let rawTrend = rawValue["gt"] as? Int { - glucoseTrend = GlucoseTrend(rawValue: rawTrend) - } + glucoseTrendRawValue = rawValue["gt"] as? Int glucoseDate = rawValue["gd"] as? Date IOB = rawValue["iob"] as? Double @@ -98,7 +95,7 @@ final class WatchContext: NSObject, RawRepresentable { raw["gv"] = glucose?.doubleValue(for: unit) } - raw["gt"] = glucoseTrend?.rawValue + raw["gt"] = glucoseTrendRawValue raw["gd"] = glucoseDate raw["iob"] = IOB raw["ld"] = loopLastRunDate diff --git a/DoseMathTests/DoseMathTests.swift b/DoseMathTests/DoseMathTests.swift index 4a52f5b772..5c9e22d992 100644 --- a/DoseMathTests/DoseMathTests.swift +++ b/DoseMathTests/DoseMathTests.swift @@ -87,6 +87,10 @@ class RecommendTempBasalTests: XCTestCase { var insulinSensitivitySchedule: InsulinSensitivitySchedule { return InsulinSensitivitySchedule(unit: HKUnit.milligramsPerDeciliterUnit(), dailyItems: [RepeatingScheduleValue(startTime: 0.0, value: 60.0)])! } + + var minimumBGGuard: GlucoseThreshold { + return GlucoseThreshold(unit: HKUnit.milligramsPerDeciliterUnit(), value: 55) + } func testNoChange() { let glucose = loadGlucoseValueFixture("recommend_temp_basal_no_change_glucose") @@ -97,7 +101,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertNil(dose) @@ -112,7 +117,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertNil(dose) @@ -132,7 +138,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqual(0, dose!.rate) @@ -148,7 +155,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertNil(dose) @@ -167,7 +175,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqual(0, dose!.rate) @@ -192,7 +201,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqual(0, dose!.rate) @@ -205,7 +215,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertNil(dose) @@ -224,7 +235,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqual(0, dose!.rate) @@ -240,7 +252,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqual(0, dose!.rate) @@ -257,7 +270,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertNil(dose) @@ -276,7 +290,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqual(0, dose!.rate) @@ -292,7 +307,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqual(3.0, dose!.rate) @@ -308,7 +324,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqualWithAccuracy(1.425, dose!.rate, accuracy: 1.0 / 40.0) @@ -324,7 +341,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqualWithAccuracy(1.475, dose!.rate, accuracy: 1.0 / 40.0) @@ -340,7 +358,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: self.insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqual(3.0, dose!.rate) @@ -355,7 +374,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqualWithAccuracy(2.975, dose!.rate, accuracy: 1.0 / 40.0) @@ -371,7 +391,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: self.insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertEqual(0.0, dose!.rate) @@ -385,7 +406,8 @@ class RecommendTempBasalTests: XCTestCase { maxBasalRate: maxBasalRate, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + minimumBGGuard: minimumBGGuard ) XCTAssertNil(dose) @@ -430,55 +452,41 @@ class RecommendBolusTests: XCTestCase { var insulinSensitivitySchedule: InsulinSensitivitySchedule { return InsulinSensitivitySchedule(unit: HKUnit.milligramsPerDeciliterUnit(), dailyItems: [RepeatingScheduleValue(startTime: 0.0, value: 60.0)])! } + + var minimumBGGuard: GlucoseThreshold { + return GlucoseThreshold(unit: HKUnit.milligramsPerDeciliterUnit(), value: 55) + } func testNoChange() { let glucose = loadGlucoseValueFixture("recommend_temp_basal_no_change_glucose") let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: nil, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqual(0, dose) + XCTAssertEqual(0, dose.amount) } func testStartHighEndInRange() { let glucose = loadGlucoseValueFixture("recommend_temp_basal_start_high_end_in_range") - var dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, - atDate: glucose.first!.startDate, - lastTempBasal: nil, - maxBolus: maxBolus, - glucoseTargetRange: glucoseTargetRange, - insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule - ) - - XCTAssertEqual(0, dose) - - // Don't consider net-negative temp basal - let lastTempBasal = DoseEntry( - type: .tempBasal, - startDate: glucose.first!.startDate.addingTimeInterval(TimeInterval(minutes: -11)), - endDate: glucose.first!.startDate.addingTimeInterval(TimeInterval(minutes: 19)), - value: 0.01, - unit: .unitsPerHour - ) - - dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, + let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: lastTempBasal, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqual(0, dose) + XCTAssertEqual(0, dose.amount) } func testStartLowEndInRange() { @@ -486,14 +494,15 @@ class RecommendBolusTests: XCTestCase { let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: nil, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqual(0, dose) + XCTAssertEqual(0, dose.amount) } func testStartHighEndLow() { @@ -501,14 +510,15 @@ class RecommendBolusTests: XCTestCase { let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: nil, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqual(0, dose) + XCTAssertEqual(0, dose.amount) } func testStartLowEndHigh() { @@ -516,14 +526,66 @@ class RecommendBolusTests: XCTestCase { let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: nil, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqual(0, dose) + XCTAssertEqual(1.325, dose.amount) + XCTAssertEqual(BolusRecommendationNotice.currentGlucoseBelowTarget, dose.notice!) + } + + func testDroppingBelowRangeThenRising() { + let glucose = loadGlucoseValueFixture("recommend_temp_basal_dropping_then_rising") + + let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, + atDate: glucose.first!.startDate, + maxBolus: maxBolus, + glucoseTargetRange: glucoseTargetRange, + insulinSensitivity: insulinSensitivitySchedule, + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard + ) + + XCTAssertEqual(1.325, dose.amount) + XCTAssertEqual(BolusRecommendationNotice.predictedGlucoseBelowTarget(minGlucose: glucose[1], unit: glucoseTargetRange.unit), dose.notice!) + } + + + func testStartLowEndHighWithPendingBolus() { + let glucose = loadGlucoseValueFixture("recommend_temp_basal_start_low_end_high") + + let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, + atDate: glucose.first!.startDate, + maxBolus: maxBolus, + glucoseTargetRange: glucoseTargetRange, + insulinSensitivity: insulinSensitivitySchedule, + basalRateSchedule: basalRateSchedule, + pendingInsulin: 1, + minimumBGGuard: minimumBGGuard + ) + + XCTAssertEqual(0.325, dose.amount) + } + + func testStartVeryLowEndHigh() { + let glucose = loadGlucoseValueFixture("recommend_temp_basal_start_very_low_end_high") + + let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, + atDate: glucose.first!.startDate, + maxBolus: maxBolus, + glucoseTargetRange: glucoseTargetRange, + insulinSensitivity: insulinSensitivitySchedule, + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard + ) + + XCTAssertEqual(0, dose.amount) } func testFlatAndHigh() { @@ -531,14 +593,15 @@ class RecommendBolusTests: XCTestCase { let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: nil, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqualWithAccuracy(1.333, dose, accuracy: 1.0 / 40.0) + XCTAssertEqualWithAccuracy(1.333, dose.amount, accuracy: 1.0 / 40.0) } func testHighAndFalling() { @@ -546,14 +609,15 @@ class RecommendBolusTests: XCTestCase { let dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: nil, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqualWithAccuracy(0.067, dose, accuracy: 1.0 / 40.0) + XCTAssertEqualWithAccuracy(0.067, dose.amount, accuracy: 1.0 / 40.0) } func testInRangeAndRising() { @@ -561,54 +625,41 @@ class RecommendBolusTests: XCTestCase { var dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: nil, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqualWithAccuracy(0.083, dose, accuracy: 1.0 / 40.0) + XCTAssertEqualWithAccuracy(0.083, dose.amount, accuracy: 1.0 / 40.0) // Less existing temp - var lastTempBasal = DoseEntry( - type: .tempBasal, - startDate: glucose.first!.startDate.addingTimeInterval(TimeInterval(minutes: -11)), - endDate: glucose.first!.startDate.addingTimeInterval(TimeInterval(minutes: 19)), - value: 1.225, - unit: .unitsPerHour - ) dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: lastTempBasal, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0.8, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqualWithAccuracy(0, dose, accuracy: 1e-13) - - // But not a finished temp - lastTempBasal = DoseEntry( - type: .tempBasal, - startDate: glucose.first!.startDate.addingTimeInterval(TimeInterval(minutes: -35)), - endDate: glucose.first!.startDate.addingTimeInterval(TimeInterval(minutes: -5)), - value: 1.225, - unit: .unitsPerHour - ) + XCTAssertEqualWithAccuracy(0, dose.amount, accuracy: 1e-13) dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: lastTempBasal, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqualWithAccuracy(0.083, dose, accuracy: 1.0 / 40.0) + XCTAssertEqualWithAccuracy(0.083, dose.amount, accuracy: 1.0 / 40.0) } func testHighAndRising() { @@ -616,35 +667,42 @@ class RecommendBolusTests: XCTestCase { var dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: nil, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: self.insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqual(1.0, dose) + XCTAssertEqual(1.0, dose.amount) // Use mmol sensitivity value let insulinSensitivitySchedule = InsulinSensitivitySchedule(unit: HKUnit.millimolesPerLiterUnit(), dailyItems: [RepeatingScheduleValue(startTime: 0.0, value: 10.0 / 3)])! dose = DoseMath.recommendBolusFromPredictedGlucose(glucose, atDate: glucose.first!.startDate, - lastTempBasal: nil, maxBolus: maxBolus, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard ) - XCTAssertEqualWithAccuracy(1.0, dose, accuracy: 1.0 / 40.0) + XCTAssertEqualWithAccuracy(1.0, dose.amount, accuracy: 1.0 / 40.0) } func testNoInputGlucose() { - let dose = DoseMath.recommendBolusFromPredictedGlucose([], lastTempBasal: nil, maxBolus: 4, glucoseTargetRange: glucoseTargetRange, insulinSensitivity: insulinSensitivitySchedule, - basalRateSchedule: basalRateSchedule) + let dose = DoseMath.recommendBolusFromPredictedGlucose([], + maxBolus: 4, + glucoseTargetRange: glucoseTargetRange, + insulinSensitivity: insulinSensitivitySchedule, + basalRateSchedule: basalRateSchedule, + pendingInsulin: 0, + minimumBGGuard: minimumBGGuard) - XCTAssertEqual(0, dose) + XCTAssertEqual(0, dose.amount) } } diff --git a/DoseMathTests/Fixtures/recommend_temp_basal_dropping_then_rising.json b/DoseMathTests/Fixtures/recommend_temp_basal_dropping_then_rising.json new file mode 100644 index 0000000000..9643057fc0 --- /dev/null +++ b/DoseMathTests/Fixtures/recommend_temp_basal_dropping_then_rising.json @@ -0,0 +1,7 @@ +[ + {"date": "2015-07-19T18:00:00", "amount": 90}, + {"date": "2015-07-19T18:30:00", "amount": 80}, + {"date": "2015-07-19T19:00:00", "amount": 100}, + {"date": "2015-07-19T19:30:00", "amount": 160}, + {"date": "2015-07-19T20:00:00", "amount": 200} + ] diff --git a/DoseMathTests/Fixtures/recommend_temp_basal_start_very_low_end_high.json b/DoseMathTests/Fixtures/recommend_temp_basal_start_very_low_end_high.json new file mode 100644 index 0000000000..fed8e6c7b1 --- /dev/null +++ b/DoseMathTests/Fixtures/recommend_temp_basal_start_very_low_end_high.json @@ -0,0 +1,7 @@ + [ + {"date": "2015-07-19T18:00:00", "amount": 40}, + {"date": "2015-07-19T18:30:00", "amount": 50}, + {"date": "2015-07-19T19:00:00", "amount": 80}, + {"date": "2015-07-19T19:30:00", "amount": 160}, + {"date": "2015-07-19T20:00:00", "amount": 200} + ] diff --git a/DoseMathTests/Info.plist b/DoseMathTests/Info.plist index 631d44c4bd..3fee538d88 100644 --- a/DoseMathTests/Info.plist +++ b/DoseMathTests/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleSignature ???? CFBundleVersion diff --git a/Loop Status Extension/Base.lproj/MainInterface.storyboard b/Loop Status Extension/Base.lproj/MainInterface.storyboard index 71370e45c5..2386d61a45 100644 --- a/Loop Status Extension/Base.lproj/MainInterface.storyboard +++ b/Loop Status Extension/Base.lproj/MainInterface.storyboard @@ -1,12 +1,11 @@ - + - - + @@ -23,286 +22,26 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + @@ -312,11 +51,7 @@ - - - - - + @@ -325,10 +60,4 @@ - - - - - - diff --git a/Loop Status Extension/Info.plist b/Loop Status Extension/Info.plist index 66633dc7e3..bbdd7de906 100644 --- a/Loop Status Extension/Info.plist +++ b/Loop Status Extension/Info.plist @@ -4,6 +4,8 @@ CFBundleDevelopmentRegion en + MainAppBundleIdentifier + $(MAIN_APP_BUNDLE_IDENTIFIER) CFBundleDisplayName Loop CFBundleExecutable @@ -17,7 +19,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) AppGroupIdentifier diff --git a/Loop Status Extension/StateColorPalette.swift b/Loop Status Extension/StateColorPalette.swift new file mode 100644 index 0000000000..c4e67ba9c4 --- /dev/null +++ b/Loop Status Extension/StateColorPalette.swift @@ -0,0 +1,16 @@ +// +// StateColorPalette.swift +// Loop +// +// Copyright © 2017 LoopKit Authors. All rights reserved. +// + +import LoopUI + +extension StateColorPalette { + static let loopStatus = StateColorPalette(unknown: .unknownColor, normal: .freshColor, warning: .agingColor, error: .staleColor) + + static let cgmStatus = loopStatus + + static let pumpStatus = StateColorPalette(unknown: .unknownColor, normal: .pumpStatusNormal, warning: .agingColor, error: .staleColor) +} diff --git a/Loop Status Extension/StatusExtensionContext.swift b/Loop Status Extension/StatusExtensionContext.swift deleted file mode 100644 index d733fae7f8..0000000000 --- a/Loop Status Extension/StatusExtensionContext.swift +++ /dev/null @@ -1,167 +0,0 @@ -// -// StatusExtensionContext.swift -// Loop Status Extension -// -// Created by Bharat Mediratta on 11/25/16. -// Copyright © 2016 LoopKit Authors. All rights reserved. -// -// This class allows Loop to pass context data to the Loop Status Extension. - -import Foundation -import HealthKit - -struct ReservoirContext { - let startDate: Date - let unitVolume: Double - let capacity: Int -} - -struct LoopContext { - let dosingEnabled: Bool - let lastCompleted: Date? -} - -struct NetBasalContext { - let rate: Double - let percentage: Double - let startDate: Date -} - -struct SensorDisplayableContext: SensorDisplayable { - let isStateValid: Bool - let stateDescription: String - let trendType: GlucoseTrend? - let isLocal: Bool -} - -struct GlucoseContext { - let quantity: Double - let startDate: Date - let sensor: SensorDisplayable? -} - -final class StatusExtensionContext: RawRepresentable { - typealias RawValue = [String: Any] - private let version = 1 - - var preferredUnitString: String? - var latestGlucose: GlucoseContext? - var reservoir: ReservoirContext? - var loop: LoopContext? - var netBasal: NetBasalContext? - var batteryPercentage: Double? - var eventualGlucose: Double? - - init() { } - - required init?(rawValue: RawValue) { - let raw = rawValue - - if let preferredString = raw["preferredUnitString"] as? String, - let latestValue = raw["latestGlucose_value"] as? Double, - let startDate = raw["latestGlucose_startDate"] as? Date { - - var sensor: SensorDisplayableContext? = nil - if let state = raw["latestGlucose_sensor_isStateValid"] as? Bool, - let desc = raw["latestGlucose_sensor_stateDescription"] as? String, - let local = raw["latestGlucose_sensor_isLocal"] as? Bool { - - var glucoseTrend: GlucoseTrend? - if let trendType = raw["latestGlucose_sensor_trendType"] as? Int { - glucoseTrend = GlucoseTrend(rawValue: trendType) - } - - sensor = SensorDisplayableContext( - isStateValid: state, - stateDescription: desc, - trendType: glucoseTrend, - isLocal: local) - } - - preferredUnitString = preferredString - latestGlucose = GlucoseContext( - quantity: latestValue, - startDate: startDate, - sensor: sensor) - } - - batteryPercentage = raw["batteryPercentage"] as? Double - - if let startDate = raw["reservoir_startDate"] as? Date, - let unitVolume = raw["reservoir_unitVolume"] as? Double, - let capacity = raw["reservoir_capacity"] as? Int { - reservoir = ReservoirContext(startDate: startDate, unitVolume: unitVolume, capacity: capacity) - } - - if let dosingEnabled = raw["loop_dosingEnabled"] as? Bool, - let lastCompleted = raw["loop_lastCompleted"] as? Date { - loop = LoopContext(dosingEnabled: dosingEnabled, lastCompleted: lastCompleted) - } - - if let rate = raw["netBasal_rate"] as? Double, - let percentage = raw["netBasal_percentage"] as? Double, - let startDate = raw["netBasal_startDate"] as? Date { - netBasal = NetBasalContext(rate: rate, percentage: percentage, startDate: startDate) - } - - eventualGlucose = raw["eventualGlucose"] as? Double - } - - var rawValue: RawValue { - var raw: RawValue = [ - "version": version - ] - - raw["preferredUnitString"] = preferredUnitString - - if preferredUnitString != nil, - let glucose = latestGlucose { - raw["latestGlucose_value"] = glucose.quantity - raw["latestGlucose_startDate"] = glucose.startDate - } - - if let sensor = latestGlucose?.sensor { - raw["latestGlucose_sensor_isStateValid"] = sensor.isStateValid - raw["latestGlucose_sensor_stateDescription"] = sensor.stateDescription - raw["latestGlucose_sensor_isLocal"] = sensor.isLocal - - if let trendType = sensor.trendType { - raw["latestGlucose_sensor_trendType"] = trendType.rawValue - } - } - - if let batteryPercentage = batteryPercentage { - raw["batteryPercentage"] = batteryPercentage - } - - if let reservoir = reservoir { - raw["reservoir_startDate"] = reservoir.startDate - raw["reservoir_unitVolume"] = reservoir.unitVolume - raw["reservoir_capacity"] = reservoir.capacity - } - - if let loop = loop { - raw["loop_dosingEnabled"] = loop.dosingEnabled - raw["loop_lastCompleted"] = loop.lastCompleted - } - - if let netBasal = netBasal { - raw["netBasal_rate"] = netBasal.rate - raw["netBasal_percentage"] = netBasal.percentage - raw["netBasal_startDate"] = netBasal.startDate - } - - if let eventualGlucose = eventualGlucose { - raw["eventualGlucose"] = eventualGlucose - } - - return raw - } -} - - -extension StatusExtensionContext: CustomDebugStringConvertible { - var debugDescription: String { - return String(reflecting: rawValue) - } -} diff --git a/Loop Status Extension/StatusViewController.swift b/Loop Status Extension/StatusViewController.swift index 0de511aa87..d2ecf5a65f 100644 --- a/Loop Status Extension/StatusViewController.swift +++ b/Loop Status Extension/StatusViewController.swift @@ -6,54 +6,117 @@ // Copyright © 2016 LoopKit Authors. All rights reserved. // -import UIKit -import NotificationCenter -import HealthKit import CoreData +import HealthKit +import LoopUI +import NotificationCenter +import UIKit class StatusViewController: UIViewController, NCWidgetProviding { - - @IBOutlet weak var loopCompletionHUD: LoopCompletionHUDView! - @IBOutlet weak var glucoseHUD: GlucoseHUDView! - @IBOutlet weak var basalRateHUD: BasalRateHUDView! - @IBOutlet weak var reservoirVolumeHUD: ReservoirVolumeHUDView! - @IBOutlet weak var batteryHUD: BatteryLevelHUDView! + + @IBOutlet weak var hudView: HUDView! { + didSet { + hudView.loopCompletionHUD.stateColors = .loopStatus + hudView.glucoseHUD.stateColors = .cgmStatus + hudView.glucoseHUD.tintColor = .glucoseTintColor + hudView.basalRateHUD.tintColor = .doseTintColor + hudView.reservoirVolumeHUD.stateColors = .pumpStatus + hudView.batteryHUD.stateColors = .pumpStatus + } + } @IBOutlet weak var subtitleLabel: UILabel! - + + var statusExtensionContext: StatusExtensionContext? + var defaults: UserDefaults? + final var observationContext = 1 + + var loopCompletionHUD: LoopCompletionHUDView! { + get { + return hudView.loopCompletionHUD + } + } + + var glucoseHUD: GlucoseHUDView! { + get { + return hudView.glucoseHUD + } + } + + var basalRateHUD: BasalRateHUDView! { + get { + return hudView.basalRateHUD + } + } + + var reservoirVolumeHUD: ReservoirVolumeHUDView! { + get { + return hudView.reservoirVolumeHUD + } + } + + var batteryHUD: BatteryLevelHUDView! { + get { + return hudView.batteryHUD + } + } + override func viewDidLoad() { super.viewDidLoad() subtitleLabel.alpha = 0 - subtitleLabel.textColor = UIColor.secondaryLabelColor + subtitleLabel.textColor = .subtitleLabelColor + + let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(openLoopApp(_:))) + view.addGestureRecognizer(tapGestureRecognizer) + + defaults = UserDefaults(suiteName: Bundle.main.appGroupSuiteName) + if let defaults = defaults { + defaults.addObserver( + self, + forKeyPath: defaults.statusExtensionContextObservableKey, + options: [], + context: &observationContext + ) + } } - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() + deinit { + if let defaults = defaults { + defaults.removeObserver(self, forKeyPath: defaults.statusExtensionContextObservableKey, context: &observationContext) + } } - func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) { - guard - let context = UserDefaults(suiteName: Bundle.main.appGroupSuiteName)?.statusExtensionContext - else { - completionHandler(NCUpdateResult.failed) + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + guard context == &observationContext else { + super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) return } + + update() + } + + @objc private func openLoopApp(_: Any) { + if let url = Bundle.main.mainAppUrl { + self.extensionContext?.open(url) + } + } - // We should never have the case where there's glucose values but no preferred - // unit. However, if that case were to happen we might show quantities against - // the wrong units and that could be very harmful. So unless there's a preferred - // unit, assume that none of the rest of the data is reliable. - guard - let preferredUnitString = context.preferredUnitString - else { - completionHandler(NCUpdateResult.failed) - return + func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) { + let result = update() + completionHandler(result) + } + + @discardableResult + func update() -> NCUpdateResult { + guard let context = defaults?.statusExtensionContext else { + return NCUpdateResult.failed } if let glucose = context.latestGlucose { - glucoseHUD.set(glucoseQuantity: glucose.quantity, - at: glucose.startDate, - unitString: preferredUnitString, - from: glucose.sensor) + glucoseHUD.setGlucoseQuantity(glucose.value, + at: glucose.startDate, + unit: glucose.unit, + sensor: glucose.sensor + ) } if let batteryPercentage = context.batteryPercentage { @@ -74,24 +137,25 @@ class StatusViewController: UIViewController, NCWidgetProviding { loopCompletionHUD.lastLoopCompleted = loop.lastCompleted } - let preferredUnit = HKUnit(from: preferredUnitString) - let formatter = NumberFormatter.glucoseFormatter(for: preferredUnit) - if let eventualGlucose = context.eventualGlucose, - let eventualGlucoseNumberString = formatter.string(from: NSNumber(value: eventualGlucose)) { - subtitleLabel.text = String( + subtitleLabel.alpha = 0 + + if let eventualGlucose = context.eventualGlucose { + let formatter = NumberFormatter.glucoseFormatter(for: eventualGlucose.unit) + + if let eventualGlucoseNumberString = formatter.string(from: NSNumber(value: eventualGlucose.value)) { + subtitleLabel.text = String( format: NSLocalizedString( "Eventually %1$@ %2$@", comment: "The subtitle format describing eventual glucose. (1: localized glucose value description) (2: localized glucose units description)"), eventualGlucoseNumberString, - preferredUnit.glucoseUnitDisplayString) - subtitleLabel.alpha = 1 - } else { - subtitleLabel.alpha = 0 + eventualGlucose.unit.glucoseUnitDisplayString + ) + subtitleLabel.alpha = 1 + } } - + // Right now we always act as if there's new data. // TODO: keep track of data changes and return .noData if necessary - completionHandler(NCUpdateResult.newData) + return NCUpdateResult.newData } - } diff --git a/Loop Status Extension/UIColor+Widget.swift b/Loop Status Extension/UIColor+Widget.swift new file mode 100644 index 0000000000..f0e9109222 --- /dev/null +++ b/Loop Status Extension/UIColor+Widget.swift @@ -0,0 +1,23 @@ +// +// UIColor+Widget.swift +// Loop +// +// Created by Nathan Racklyeft on 1/23/16. +// Copyright © 2016 LoopKit Authors. All rights reserved. +// + +import UIKit + +extension UIColor { + @nonobjc static let doseTintColor = UIColor(red: 255 / 255, green: 109 / 255, blue: 0, alpha: 1) + + @nonobjc static let glucoseTintColor = UIColor(red: 0 / 255, green: 122 / 255, blue: 244 / 255, alpha: 1) + + @nonobjc static let pumpStatusNormal = UIColor(red: 100 / 255, green: 101 / 255, blue: 105 / 255, alpha: 1) + + @nonobjc static let subtitleLabelColor = UIColor(white: 0, alpha: 0.4) +} + +extension UIColor { + @nonobjc static let freshColor = UIColor(red: 64 / 255, green: 219 / 255, blue: 89 / 255, alpha: 1) +} diff --git a/Loop.xcodeproj/project.pbxproj b/Loop.xcodeproj/project.pbxproj index 71b1498b67..8bdf86109e 100644 --- a/Loop.xcodeproj/project.pbxproj +++ b/Loop.xcodeproj/project.pbxproj @@ -7,12 +7,12 @@ objects = { /* Begin PBXBuildFile section */ - 43027F0E1DFE0EC200C51989 /* NSNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */; }; 43027F0F1DFE0EC900C51989 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; 4302F4E11D4E9C8900F0FCAF /* TextFieldTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4302F4E01D4E9C8900F0FCAF /* TextFieldTableViewController.swift */; }; 4302F4E31D4EA54200F0FCAF /* InsulinDeliveryTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4302F4E21D4EA54200F0FCAF /* InsulinDeliveryTableViewController.swift */; }; 4302F4E51D4EA75100F0FCAF /* DoseStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4302F4E41D4EA75100F0FCAF /* DoseStore.swift */; }; 43076BF31DFDBC4B0012A723 /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 43076BF21DFDBC4B0012A723 /* it.lproj */; }; + 430C1ABD1E5568A80067F1AE /* StatusChartManager+LoopKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430C1ABC1E5568A80067F1AE /* StatusChartManager+LoopKit.swift */; }; 430DA58E1D4AEC230097D1CA /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; }; 430DA5901D4B0E4C0097D1CA /* MySentryPumpStatusMessageBody.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58F1D4B0E4C0097D1CA /* MySentryPumpStatusMessageBody.swift */; }; 4313EDE01D8A6BF90060FA79 /* ChartContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4313EDDF1D8A6BF90060FA79 /* ChartContentView.swift */; }; @@ -27,13 +27,11 @@ 4328E02A1CFBE2C500E199AA /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0241CFBE2C500E199AA /* UIColor.swift */; }; 4328E02B1CFBE2C500E199AA /* WKAlertAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4328E0251CFBE2C500E199AA /* WKAlertAction.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 */; }; 432E73CB1D24B3D6009AD15D /* RemoteDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 432E73CA1D24B3D6009AD15D /* RemoteDataManager.swift */; }; 4331E0781C85302200FBE832 /* CGPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4331E0771C85302200FBE832 /* CGPoint.swift */; }; 4331E07A1C85650D00FBE832 /* ChartAxisValueDoubleLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4331E0791C85650D00FBE832 /* ChartAxisValueDoubleLog.swift */; }; - 4337615F1D52F487004A3647 /* GlucoseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */; }; 433EA4C21D9F39C900CD78FB /* PumpIDTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 433EA4C11D9F39C900CD78FB /* PumpIDTableViewController.swift */; }; 433EA4C41D9F71C800CD78FB /* CommandResponseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 433EA4C31D9F71C800CD78FB /* CommandResponseViewController.swift */; }; 4346D1E71C77F5FE00ABAFE3 /* ChartTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4346D1E61C77F5FE00ABAFE3 /* ChartTableViewCell.swift */; }; @@ -53,10 +51,8 @@ 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 */; }; - 4354003A1C9FB81100D5819C /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92501C541832001FFDE1 /* UIColor.swift */; }; 43649A631C7A347F00523D7F /* CollectionType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43649A621C7A347F00523D7F /* CollectionType.swift */; }; 436A0DA51D236A2A00104B24 /* LoopError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436A0DA41D236A2A00104B24 /* LoopError.swift */; }; - 436A0E7B1D7DE13400D6475D /* NSNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */; }; 436FACEE1D0BA636004E2427 /* InsulinDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436FACED1D0BA636004E2427 /* InsulinDataSource.swift */; }; 43776F901B8022E90074EA36 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43776F8F1B8022E90074EA36 /* AppDelegate.swift */; }; 43776F971B8022E90074EA36 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 43776F951B8022E90074EA36 /* Main.storyboard */; }; @@ -65,15 +61,9 @@ 437CCADC1D284B830075D2C3 /* ButtonTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CCADB1D284B830075D2C3 /* ButtonTableViewCell.swift */; }; 437CCADE1D2858FD0075D2C3 /* AuthenticationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CCADD1D2858FD0075D2C3 /* AuthenticationViewController.swift */; }; 437CCAE01D285C7B0075D2C3 /* ServiceAuthentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CCADF1D285C7B0075D2C3 /* ServiceAuthentication.swift */; }; - 437CEEBC1CD6DE6A003C8C80 /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */; }; - 437CEEBE1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */; }; - 437CEEC01CD6FCD8003C8C80 /* BasalRateHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */; }; - 437CEEC81CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */; }; - 437CEECA1CD84DB7003C8C80 /* BatteryLevelHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */; }; 437CEEE41CDE5C0A003C8C80 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEE31CDE5C0A003C8C80 /* UIImage.swift */; }; 437D9BA31D7BC977007245E8 /* PredictionTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437D9BA21D7BC977007245E8 /* PredictionTableViewController.swift */; }; 43846AD51D8FA67800799272 /* Base.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 43846AD41D8FA67800799272 /* Base.lproj */; }; - 43846AD91D8FA84B00799272 /* gallery.ckcomplication in Resources */ = {isa = PBXBuildFile; fileRef = 43846AD81D8FA84B00799272 /* gallery.ckcomplication */; }; 43846ADB1D91057000799272 /* ContextUpdatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43846ADA1D91057000799272 /* ContextUpdatable.swift */; }; 43880F951D9CD54A009061A8 /* ChartPointsScatterDownTrianglesLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43880F941D9CD54A009061A8 /* ChartPointsScatterDownTrianglesLayer.swift */; }; 438849EA1D297CB6003B3F23 /* NightscoutService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438849E91D297CB6003B3F23 /* NightscoutService.swift */; }; @@ -82,8 +72,6 @@ 438A95A81D8B9B24009D12E1 /* xDripG5.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 438A95A71D8B9B24009D12E1 /* xDripG5.framework */; }; 438D42F91D7C88BC003244B0 /* PredictionInputEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438D42F81D7C88BC003244B0 /* PredictionInputEffect.swift */; }; 438D42FB1D7D11A4003244B0 /* PredictionInputEffectTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438D42FA1D7D11A4003244B0 /* PredictionInputEffectTableViewCell.swift */; }; - 438DADC81CDE8F8B007697A5 /* LoopStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */; }; - 439897351CD2F7DE00223065 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; 439897371CD2F80600223065 /* AnalyticsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897361CD2F80600223065 /* AnalyticsManager.swift */; }; 4398973B1CD2FC2000223065 /* NSDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4398973A1CD2FC2000223065 /* NSDateFormatter.swift */; }; 43A567691C94880B00334FAC /* LoopDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43A567681C94880B00334FAC /* LoopDataManager.swift */; }; @@ -96,8 +84,19 @@ 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 */; }; - 43B371861CE583890013C5A6 /* BasalStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B371851CE583890013C5A6 /* BasalStateView.swift */; }; 43B371881CE597D10013C5A6 /* ShareClient.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43B371871CE597D10013C5A6 /* ShareClient.framework */; }; + 43BFF0B21E45C18400FF19A9 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0B11E45C18400FF19A9 /* UIColor.swift */; }; + 43BFF0B51E45C1E700FF19A9 /* NumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0B31E45C1BE00FF19A9 /* NumberFormatter.swift */; }; + 43BFF0B71E45C20C00FF19A9 /* NumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0B31E45C1BE00FF19A9 /* NumberFormatter.swift */; }; + 43BFF0BC1E45C80600FF19A9 /* UIColor+Loop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0BB1E45C80600FF19A9 /* UIColor+Loop.swift */; }; + 43BFF0BF1E45C8EA00FF19A9 /* UIColor+Widget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0BE1E45C8EA00FF19A9 /* UIColor+Widget.swift */; }; + 43BFF0C21E464ACB00FF19A9 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0B11E45C18400FF19A9 /* UIColor.swift */; }; + 43BFF0C51E465A2D00FF19A9 /* UIColor+HIG.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0C31E4659E700FF19A9 /* UIColor+HIG.swift */; }; + 43BFF0C61E465A4400FF19A9 /* UIColor+HIG.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0C31E4659E700FF19A9 /* UIColor+HIG.swift */; }; + 43BFF0C71E465A4F00FF19A9 /* UIColor+HIG.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0C31E4659E700FF19A9 /* UIColor+HIG.swift */; }; + 43BFF0C91E465B0A00FF19A9 /* StateColorPalette.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0C81E465B0A00FF19A9 /* StateColorPalette.swift */; }; + 43BFF0CB1E466C0900FF19A9 /* StateColorPalette.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0CA1E466C0900FF19A9 /* StateColorPalette.swift */; }; + 43BFF0CD1E466C8400FF19A9 /* StateColorPalette.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0CC1E466C8400FF19A9 /* StateColorPalette.swift */; }; 43C0944A1CACCC73001F6403 /* NotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C094491CACCC73001F6403 /* NotificationManager.swift */; }; 43C246A81D89990F0031F8D1 /* Crypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43C246A71D89990F0031F8D1 /* Crypto.framework */; }; 43C418B51CE0575200405B6A /* ShareGlucose+GlucoseKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43C418B41CE0575200405B6A /* ShareGlucose+GlucoseKit.swift */; }; @@ -105,14 +104,14 @@ 43CA93371CB98079000026B5 /* MinimedKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43CA93361CB98079000026B5 /* MinimedKit.framework */; }; 43CB2B2B1D924D450079823D /* WCSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CB2B2A1D924D450079823D /* WCSession.swift */; }; 43CE7CDE1CA8B63E003CC1B0 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CDD1CA8B63E003CC1B0 /* Data.swift */; }; + 43CEE6E61E56AFD400CB9116 /* NightscoutUploader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CEE6E51E56AFD400CB9116 /* NightscoutUploader.swift */; }; 43DBF04C1C93B8D700B3C386 /* BolusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DBF04B1C93B8D700B3C386 /* BolusViewController.swift */; }; 43DBF0531C93EC8200B3C386 /* DeviceDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DBF0521C93EC8200B3C386 /* DeviceDataManager.swift */; }; 43DBF0591C93F73800B3C386 /* CarbEntryTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DBF0581C93F73800B3C386 /* CarbEntryTableViewController.swift */; }; 43DE92591C5479E4001FFDE1 /* CarbEntryUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92581C5479E4001FFDE1 /* CarbEntryUserInfo.swift */; }; 43DE925A1C5479E4001FFDE1 /* CarbEntryUserInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92581C5479E4001FFDE1 /* CarbEntryUserInfo.swift */; }; - 43DE925C1C547A20001FFDE1 /* WatchContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE925B1C547A20001FFDE1 /* WatchContext.swift */; }; - 43DE925D1C547A20001FFDE1 /* WatchContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE925B1C547A20001FFDE1 /* WatchContext.swift */; }; 43DE92611C555C26001FFDE1 /* AbsorptionTimeType+CarbKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92601C555C26001FFDE1 /* AbsorptionTimeType+CarbKit.swift */; }; + 43E0F0A51E46D1670064F7CE /* LevelHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E0F0A41E46D1670064F7CE /* LevelHUDView.swift */; }; 43E2D8C61D204678004DA55F /* KeychainManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E2D8C51D204678004DA55F /* KeychainManager.swift */; }; 43E2D8C81D208D5B004DA55F /* KeychainManager+Loop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E2D8C71D208D5B004DA55F /* KeychainManager+Loop.swift */; }; 43E2D8D41D20BF42004DA55F /* DoseMathTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E2D8D31D20BF42004DA55F /* DoseMathTests.swift */; }; @@ -135,9 +134,9 @@ 43E3449F1B9D68E900C85C07 /* StatusTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E3449E1B9D68E900C85C07 /* StatusTableViewController.swift */; }; 43E344A41B9E1B1C00C85C07 /* NSUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E344A31B9E1B1C00C85C07 /* NSUserDefaults.swift */; }; 43E397A31D56B9E40028E321 /* Glucose.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43E397A21D56B9E40028E321 /* Glucose.swift */; }; - 43EA285F1D50ED3D001BC233 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; - 43EA28601D50ED4D001BC233 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; - 43EA28621D517E42001BC233 /* SensorDisplayable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA28611D517E42001BC233 /* SensorDisplayable.swift */; }; + 43E93FB51E4675E800EAB8DB /* NumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0B31E45C1BE00FF19A9 /* NumberFormatter.swift */; }; + 43E93FB61E469A4000EAB8DB /* NumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43BFF0B31E45C1BE00FF19A9 /* NumberFormatter.swift */; }; + 43E93FB71E469A5100EAB8DB /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; 43EB40861C82646A00472A8C /* StatusChartManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EB40851C82646A00472A8C /* StatusChartManager.swift */; }; 43F41C331D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F41C321D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift */; }; 43F41C351D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43F41C341D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift */; }; @@ -151,45 +150,71 @@ 43F78D4C1C914197002152D1 /* CarbKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F78D481C914197002152D1 /* CarbKit.framework */; }; 43F78D4D1C914197002152D1 /* GlucoseKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F78D491C914197002152D1 /* GlucoseKit.framework */; }; 43F78D4F1C914197002152D1 /* LoopKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43F78D4B1C914197002152D1 /* LoopKit.framework */; }; - 43FBEDD81D73843700B21F22 /* LevelMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */; }; + 43FCBBC21E51710B00343C1B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 43776F9A1B8022E90074EA36 /* LaunchScreen.storyboard */; }; 4D3B40041D4A9E1A00BC6334 /* G4ShareSpy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D3B40021D4A9DFE00BC6334 /* G4ShareSpy.framework */; }; 4D5B7A4B1D457CCA00796CA9 /* GlucoseG4.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D5B7A4A1D457CCA00796CA9 /* GlucoseG4.swift */; }; + 4F2C15741E0209F500E160D4 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; + 4F2C15751E0209FA00E160D4 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; + 4F2C15811E0495B200E160D4 /* WatchContext+WatchApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2C15801E0495B200E160D4 /* WatchContext+WatchApp.swift */; }; + 4F2C15821E074FC600E160D4 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; + 4F2C15831E0757E600E160D4 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; + 4F2C15851E075B8700E160D4 /* LoopUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F75288D1DFE1DC600C322D6 /* LoopUI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4F2C15931E09BF2C00E160D4 /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2C15921E09BF2C00E160D4 /* HUDView.swift */; }; + 4F2C15951E09BF3C00E160D4 /* HUDView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4F2C15941E09BF3C00E160D4 /* HUDView.xib */; }; + 4F2C15971E09E94E00E160D4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4F2C15961E09E94E00E160D4 /* Assets.xcassets */; }; + 4F2C159A1E0C9E5600E160D4 /* LoopUI.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4F526D5D1DF0FD6500A04910 /* InsulinKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43C6407B1DA051850093E25D /* InsulinKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4F526D5F1DF2459000A04910 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; 4F526D611DF8D9A900A04910 /* NetBasal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D601DF8D9A900A04910 /* NetBasal.swift */; }; 4F526D621DF9D95200A04910 /* NSBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430DA58D1D4AEC230097D1CA /* NSBundle.swift */; }; 4F70C1DE1DE8DCA7006380B7 /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F70C1DD1DE8DCA7006380B7 /* NotificationCenter.framework */; }; 4F70C1E11DE8DCA7006380B7 /* StatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C1E01DE8DCA7006380B7 /* StatusViewController.swift */; }; 4F70C1E41DE8DCA7006380B7 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4F70C1E21DE8DCA7006380B7 /* MainInterface.storyboard */; }; 4F70C1E81DE8DCA7006380B7 /* Loop Status Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 4F70C1ED1DE8DEDA006380B7 /* GlucoseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */; }; - 4F70C1EF1DE8DF15006380B7 /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */; }; - 4F70C1F01DE8DF22006380B7 /* SensorDisplayable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA28611D517E42001BC233 /* SensorDisplayable.swift */; }; - 4F70C1F21DE8DF3A006380B7 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DE92501C541832001FFDE1 /* UIColor.swift */; }; - 4F70C1F31DE8DF47006380B7 /* NSNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */; }; - 4F70C1F41DE8E3E1006380B7 /* BasalRateHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */; }; - 4F70C1F51DE8E3E9006380B7 /* BasalStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B371851CE583890013C5A6 /* BasalStateView.swift */; }; - 4F70C1F61DE8E3F1006380B7 /* BatteryLevelHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */; }; - 4F70C1F71DE8E3FD006380B7 /* LevelMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */; }; - 4F70C1F81DE8E403006380B7 /* LoopCompletionHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */; }; - 4F70C1F91DE8E409006380B7 /* LoopStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */; }; - 4F70C1FA1DE8E42D006380B7 /* ReservoirVolumeHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */; }; - 4F70C1FB1DE8E45E006380B7 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; 4F70C1FC1DE8E5FB006380B7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 43776F981B8022E90074EA36 /* Assets.xcassets */; }; - 4F70C20B1DE8E9F4006380B7 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; 4F70C2101DE8FAC5006380B7 /* StatusExtensionDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C20F1DE8FAC5006380B7 /* StatusExtensionDataManager.swift */; }; 4F70C2121DE900EA006380B7 /* StatusExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */; }; 4F70C2131DE90339006380B7 /* StatusExtensionContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */; }; + 4F7528941DFE1E9500C322D6 /* LoopUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */; }; + 4F7528951DFE1E9B00C322D6 /* LoopUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */; }; + 4F75289A1DFE1F6000C322D6 /* BasalRateHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */; }; + 4F75289B1DFE1F6000C322D6 /* BatteryLevelHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */; }; + 4F75289C1DFE1F6000C322D6 /* GlucoseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */; }; + 4F75289D1DFE1F6000C322D6 /* BaseHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBB1CD6DE6A003C8C80 /* BaseHUDView.swift */; }; + 4F75289E1DFE1F6000C322D6 /* LoopCompletionHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */; }; + 4F75289F1DFE1F6000C322D6 /* ReservoirVolumeHUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */; }; + 4F7528A01DFE1F9D00C322D6 /* LoopStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */; }; + 4F7528A11DFE200B00C322D6 /* BasalStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B371851CE583890013C5A6 /* BasalStateView.swift */; }; + 4F7528A21DFE200B00C322D6 /* LevelMaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */; }; + 4F7528A51DFE208C00C322D6 /* NSTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 439897341CD2F7DE00223065 /* NSTimeInterval.swift */; }; + 4F7528A71DFE20CE00C322D6 /* SensorDisplayable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA28611D517E42001BC233 /* SensorDisplayable.swift */; }; + 4F7528A91DFE212600C322D6 /* GlucoseTrend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */; }; + 4F7528AA1DFE215100C322D6 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; 4FC8C8011DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */; }; 4FC8C8021DEB943800A1452E /* NSUserDefaults+StatusExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */; }; + 4FF4D0F81E1725B000846527 /* NibLoadable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434F54561D287FDB002A9274 /* NibLoadable.swift */; }; + 4FF4D0F91E17268800846527 /* IdentifiableClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 434FF1E91CF26C29000DB779 /* IdentifiableClass.swift */; }; + 4FF4D1001E18374700846527 /* WatchContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FF4D0FF1E18374700846527 /* WatchContext.swift */; }; + 4FF4D1011E18375000846527 /* WatchContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FF4D0FF1E18374700846527 /* WatchContext.swift */; }; + 540DED971E14C75F002B2491 /* EnliteSensorDisplayable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 540DED961E14C75F002B2491 /* EnliteSensorDisplayable.swift */; }; C10428971D17BAD400DD539A /* NightscoutUploadKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C10428961D17BAD400DD539A /* NightscoutUploadKit.framework */; }; + C11C87DD1E21E53500BB71D3 /* GlucoseThreshold.swift in Sources */ = {isa = PBXBuildFile; fileRef = C178249D1E19B62300D9D25C /* GlucoseThreshold.swift */; }; + C11C87DE1E21EAAD00BB71D3 /* HKUnit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F526D5E1DF2459000A04910 /* HKUnit.swift */; }; C12F21A71DFA79CB00748193 /* recommend_tamp_basal_very_low_end_in_range.json in Resources */ = {isa = PBXBuildFile; fileRef = C12F21A61DFA79CB00748193 /* recommend_tamp_basal_very_low_end_in_range.json */; }; C15713821DAC6983005BC4D2 /* MealBolusNightscoutTreatment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C15713811DAC6983005BC4D2 /* MealBolusNightscoutTreatment.swift */; }; + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17824991E1999FA00D9D25C /* CaseCountable.swift */; }; + C17824A01E19CF9800D9D25C /* GlucoseThresholdTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C178249F1E19CF9800D9D25C /* GlucoseThresholdTableViewController.swift */; }; + C17824A11E19E8C200D9D25C /* GlucoseThreshold.swift in Sources */ = {isa = PBXBuildFile; fileRef = C178249D1E19B62300D9D25C /* GlucoseThreshold.swift */; }; + C17824A31E19EAB600D9D25C /* recommend_temp_basal_start_very_low_end_high.json in Resources */ = {isa = PBXBuildFile; fileRef = C17824A21E19EAB600D9D25C /* recommend_temp_basal_start_very_low_end_high.json */; }; + C17824A51E1AD4D100D9D25C /* BolusRecommendation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17824A41E1AD4D100D9D25C /* BolusRecommendation.swift */; }; + C17824A61E1AF91F00D9D25C /* BolusRecommendation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17824A41E1AD4D100D9D25C /* BolusRecommendation.swift */; }; C17884631D51A7A400405663 /* BatteryIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C17884621D51A7A400405663 /* BatteryIndicator.swift */; }; C18C8C511D5A351900E043FB /* NightscoutDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18C8C501D5A351900E043FB /* NightscoutDataManager.swift */; }; + C1C6591A1E1B1F430025CC58 /* (null) in Sources */ = {isa = PBXBuildFile; }; + C1C6591C1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json in Resources */ = {isa = PBXBuildFile; fileRef = C1C6591B1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json */; }; C1C73F021DE3D0250022FC89 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = C1C73F041DE3D0250022FC89 /* Localizable.strings */; }; C1C73F081DE3D0260022FC89 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C1C73F0A1DE3D0260022FC89 /* InfoPlist.strings */; }; C1C73F0D1DE3D0270022FC89 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = C1C73F0F1DE3D0270022FC89 /* InfoPlist.strings */; }; + C9886AE51E5B2FAD00473BB8 /* gallery.ckcomplication in Resources */ = {isa = PBXBuildFile; fileRef = C9886AE41E5B2FAD00473BB8 /* gallery.ckcomplication */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -221,6 +246,20 @@ remoteGlobalIDString = 4F70C1DB1DE8DCA7006380B7; remoteInfo = "Loop Status Extension"; }; + 4F7528961DFE1ED400C322D6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 43776F841B8022E90074EA36 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4F75288A1DFE1DC600C322D6; + remoteInfo = LoopUI; + }; + 4F7528981DFE1ED800C322D6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 43776F841B8022E90074EA36 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4F75288A1DFE1DC600C322D6; + remoteInfo = LoopUI; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -252,6 +291,7 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( + 4F2C159A1E0C9E5600E160D4 /* LoopUI.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -295,6 +335,7 @@ 4302F4E21D4EA54200F0FCAF /* InsulinDeliveryTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InsulinDeliveryTableViewController.swift; sourceTree = ""; }; 4302F4E41D4EA75100F0FCAF /* DoseStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DoseStore.swift; sourceTree = ""; }; 43076BF21DFDBC4B0012A723 /* it.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = it.lproj; sourceTree = ""; }; + 430C1ABC1E5568A80067F1AE /* StatusChartManager+LoopKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "StatusChartManager+LoopKit.swift"; sourceTree = ""; }; 430DA58D1D4AEC230097D1CA /* NSBundle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSBundle.swift; sourceTree = ""; }; 430DA58F1D4B0E4C0097D1CA /* MySentryPumpStatusMessageBody.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MySentryPumpStatusMessageBody.swift; sourceTree = ""; }; 4313EDDF1D8A6BF90060FA79 /* ChartContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartContentView.swift; sourceTree = ""; }; @@ -335,7 +376,6 @@ 435400331C9F878D00D5819C /* SetBolusUserInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetBolusUserInfo.swift; sourceTree = ""; }; 43649A621C7A347F00523D7F /* CollectionType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionType.swift; sourceTree = ""; }; 436A0DA41D236A2A00104B24 /* LoopError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoopError.swift; sourceTree = ""; }; - 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSNumberFormatter.swift; sourceTree = ""; }; 436FACED1D0BA636004E2427 /* InsulinDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InsulinDataSource.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; lineEnding = 0; path = AppDelegate.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; @@ -346,7 +386,7 @@ 437CCADB1D284B830075D2C3 /* ButtonTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonTableViewCell.swift; sourceTree = ""; }; 437CCADD1D2858FD0075D2C3 /* AuthenticationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthenticationViewController.swift; sourceTree = ""; }; 437CCADF1D285C7B0075D2C3 /* ServiceAuthentication.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceAuthentication.swift; sourceTree = ""; }; - 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HUDView.swift; sourceTree = ""; }; + 437CEEBB1CD6DE6A003C8C80 /* BaseHUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseHUDView.swift; sourceTree = ""; }; 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoopCompletionHUDView.swift; sourceTree = ""; }; 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BasalRateHUDView.swift; sourceTree = ""; }; 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReservoirVolumeHUDView.swift; sourceTree = ""; }; @@ -355,7 +395,6 @@ 437D9BA11D7B5203007245E8 /* Loop.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Loop.xcconfig; sourceTree = ""; }; 437D9BA21D7BC977007245E8 /* PredictionTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PredictionTableViewController.swift; sourceTree = ""; }; 43846AD41D8FA67800799272 /* Base.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Base.lproj; sourceTree = ""; }; - 43846AD81D8FA84B00799272 /* gallery.ckcomplication */ = {isa = PBXFileReference; lastKnownFileType = folder; path = gallery.ckcomplication; sourceTree = ""; }; 43846ADA1D91057000799272 /* ContextUpdatable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContextUpdatable.swift; sourceTree = ""; }; 43880F941D9CD54A009061A8 /* ChartPointsScatterDownTrianglesLayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChartPointsScatterDownTrianglesLayer.swift; sourceTree = ""; }; 438849E91D297CB6003B3F23 /* NightscoutService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NightscoutService.swift; sourceTree = ""; }; @@ -382,6 +421,14 @@ 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 = ""; }; + 43BFF0B11E45C18400FF19A9 /* UIColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = ""; }; + 43BFF0B31E45C1BE00FF19A9 /* NumberFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumberFormatter.swift; sourceTree = ""; }; + 43BFF0BB1E45C80600FF19A9 /* UIColor+Loop.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Loop.swift"; sourceTree = ""; }; + 43BFF0BE1E45C8EA00FF19A9 /* UIColor+Widget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Widget.swift"; sourceTree = ""; }; + 43BFF0C31E4659E700FF19A9 /* UIColor+HIG.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+HIG.swift"; sourceTree = ""; }; + 43BFF0C81E465B0A00FF19A9 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + 43BFF0CA1E466C0900FF19A9 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; + 43BFF0CC1E466C8400FF19A9 /* StateColorPalette.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StateColorPalette.swift; sourceTree = ""; }; 43C094491CACCC73001F6403 /* NotificationManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationManager.swift; sourceTree = ""; }; 43C246A71D89990F0031F8D1 /* Crypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crypto.framework; path = Carthage/Build/iOS/Crypto.framework; sourceTree = ""; }; 43C418B41CE0575200405B6A /* ShareGlucose+GlucoseKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ShareGlucose+GlucoseKit.swift"; sourceTree = ""; }; @@ -389,14 +436,14 @@ 43CA93361CB98079000026B5 /* MinimedKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MinimedKit.framework; path = Carthage/Build/iOS/MinimedKit.framework; sourceTree = ""; }; 43CB2B2A1D924D450079823D /* WCSession.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WCSession.swift; sourceTree = ""; }; 43CE7CDD1CA8B63E003CC1B0 /* Data.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Data.swift; sourceTree = ""; }; + 43CEE6E51E56AFD400CB9116 /* NightscoutUploader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NightscoutUploader.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; lineEnding = 0; path = BolusViewController.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 43DBF0521C93EC8200B3C386 /* DeviceDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = DeviceDataManager.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 43DBF0581C93F73800B3C386 /* CarbEntryTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CarbEntryTableViewController.swift; sourceTree = ""; }; - 43DE92501C541832001FFDE1 /* UIColor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = ""; }; 43DE92581C5479E4001FFDE1 /* CarbEntryUserInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CarbEntryUserInfo.swift; sourceTree = ""; }; - 43DE925B1C547A20001FFDE1 /* WatchContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchContext.swift; sourceTree = ""; }; 43DE92601C555C26001FFDE1 /* AbsorptionTimeType+CarbKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AbsorptionTimeType+CarbKit.swift"; sourceTree = ""; }; + 43E0F0A41E46D1670064F7CE /* LevelHUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LevelHUDView.swift; sourceTree = ""; }; 43E2D8C51D204678004DA55F /* KeychainManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeychainManager.swift; sourceTree = ""; }; 43E2D8C71D208D5B004DA55F /* KeychainManager+Loop.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "KeychainManager+Loop.swift"; sourceTree = ""; }; 43E2D8C91D20B9E7004DA55F /* KeychainManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeychainManagerTests.swift; sourceTree = ""; }; @@ -440,6 +487,10 @@ 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LevelMaskView.swift; sourceTree = ""; }; 4D3B40021D4A9DFE00BC6334 /* G4ShareSpy.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = G4ShareSpy.framework; path = Carthage/Build/iOS/G4ShareSpy.framework; sourceTree = ""; }; 4D5B7A4A1D457CCA00796CA9 /* GlucoseG4.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GlucoseG4.swift; path = Loop/Models/GlucoseG4.swift; sourceTree = SOURCE_ROOT; }; + 4F2C15801E0495B200E160D4 /* WatchContext+WatchApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "WatchContext+WatchApp.swift"; sourceTree = ""; }; + 4F2C15921E09BF2C00E160D4 /* HUDView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HUDView.swift; sourceTree = ""; }; + 4F2C15941E09BF3C00E160D4 /* HUDView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HUDView.xib; sourceTree = ""; }; + 4F2C15961E09E94E00E160D4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 4F526D5E1DF2459000A04910 /* HKUnit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HKUnit.swift; sourceTree = ""; }; 4F526D601DF8D9A900A04910 /* NetBasal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetBasal.swift; sourceTree = ""; }; 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Loop Status Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -450,15 +501,27 @@ 4F70C1FD1DE8E662006380B7 /* Loop Status Extension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Loop Status Extension.entitlements"; sourceTree = ""; }; 4F70C20F1DE8FAC5006380B7 /* StatusExtensionDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusExtensionDataManager.swift; sourceTree = ""; }; 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatusExtensionContext.swift; sourceTree = ""; }; + 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LoopUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4F75288D1DFE1DC600C322D6 /* LoopUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoopUI.h; sourceTree = ""; }; + 4F75288E1DFE1DC600C322D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSUserDefaults+StatusExtension.swift"; sourceTree = ""; }; + 4FF4D0FF1E18374700846527 /* WatchContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WatchContext.swift; sourceTree = ""; }; + 540DED961E14C75F002B2491 /* EnliteSensorDisplayable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnliteSensorDisplayable.swift; sourceTree = ""; }; C10428961D17BAD400DD539A /* NightscoutUploadKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NightscoutUploadKit.framework; path = Carthage/Build/iOS/NightscoutUploadKit.framework; sourceTree = ""; }; C12F21A61DFA79CB00748193 /* recommend_tamp_basal_very_low_end_in_range.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_tamp_basal_very_low_end_in_range.json; sourceTree = ""; }; C15713811DAC6983005BC4D2 /* MealBolusNightscoutTreatment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MealBolusNightscoutTreatment.swift; sourceTree = ""; }; + C17824991E1999FA00D9D25C /* CaseCountable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CaseCountable.swift; sourceTree = ""; }; + C178249D1E19B62300D9D25C /* GlucoseThreshold.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlucoseThreshold.swift; sourceTree = ""; }; + C178249F1E19CF9800D9D25C /* GlucoseThresholdTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlucoseThresholdTableViewController.swift; sourceTree = ""; }; + C17824A21E19EAB600D9D25C /* recommend_temp_basal_start_very_low_end_high.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_temp_basal_start_very_low_end_high.json; sourceTree = ""; }; + C17824A41E1AD4D100D9D25C /* BolusRecommendation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BolusRecommendation.swift; sourceTree = ""; }; C17884621D51A7A400405663 /* BatteryIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatteryIndicator.swift; sourceTree = ""; }; C18C8C501D5A351900E043FB /* NightscoutDataManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NightscoutDataManager.swift; sourceTree = ""; }; + C1C6591B1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = recommend_temp_basal_dropping_then_rising.json; sourceTree = ""; }; C1C73F031DE3D0250022FC89 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; C1C73F091DE3D0260022FC89 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; C1C73F0E1DE3D0270022FC89 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/InfoPlist.strings; sourceTree = ""; }; + C9886AE41E5B2FAD00473BB8 /* gallery.ckcomplication */ = {isa = PBXFileReference; lastKnownFileType = folder; path = gallery.ckcomplication; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -473,6 +536,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4F7528941DFE1E9500C322D6 /* LoopUI.framework in Frameworks */, 43C6407C1DA051850093E25D /* InsulinKit.framework in Frameworks */, 438A95A81D8B9B24009D12E1 /* xDripG5.framework in Frameworks */, 43C246A81D89990F0031F8D1 /* Crypto.framework in Frameworks */, @@ -516,10 +580,18 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4F7528951DFE1E9B00C322D6 /* LoopUI.framework in Frameworks */, 4F70C1DE1DE8DCA7006380B7 /* NotificationCenter.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; + 4F7528871DFE1DC600C322D6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -542,6 +614,7 @@ 4328E0201CFBE2C500E199AA /* IdentifiableClass.swift */, 4328E0231CFBE2C500E199AA /* NSUserDefaults.swift */, 4328E0241CFBE2C500E199AA /* UIColor.swift */, + 4F2C15801E0495B200E160D4 /* WatchContext+WatchApp.swift */, 43CB2B2A1D924D450079823D /* WCSession.swift */, 4328E0251CFBE2C500E199AA /* WKAlertAction.swift */, 4328E02E1CFBF81800E199AA /* WKInterfaceImage.swift */, @@ -558,15 +631,16 @@ 43F41C321D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift */, 43E397A21D56B9E40028E321 /* Glucose.swift */, 4D5B7A4A1D457CCA00796CA9 /* GlucoseG4.swift */, - 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */, 436FACED1D0BA636004E2427 /* InsulinDataSource.swift */, 436A0DA41D236A2A00104B24 /* LoopError.swift */, 430DA58F1D4B0E4C0097D1CA /* MySentryPumpStatusMessageBody.swift */, 4F526D601DF8D9A900A04910 /* NetBasal.swift */, 438D42F81D7C88BC003244B0 /* PredictionInputEffect.swift */, - 43EA28611D517E42001BC233 /* SensorDisplayable.swift */, 43C418B41CE0575200405B6A /* ShareGlucose+GlucoseKit.swift */, 4328E0311CFC068900E199AA /* WatchContext+LoopKit.swift */, + C178249D1E19B62300D9D25C /* GlucoseThreshold.swift */, + C17824A41E1AD4D100D9D25C /* BolusRecommendation.swift */, + 540DED961E14C75F002B2491 /* EnliteSensorDisplayable.swift */, ); path = Models; sourceTree = ""; @@ -574,12 +648,14 @@ 43776F831B8022E90074EA36 = { isa = PBXGroup; children = ( + 4FF4D0FA1E1834BD00846527 /* Common */, 43776F8E1B8022E90074EA36 /* Loop */, 4F70C1DF1DE8DCA7006380B7 /* Loop Status Extension */, 43A943731B926B7B0051FA24 /* WatchApp */, 43A943821B926B7B0051FA24 /* WatchApp Extension */, 43F78D2C1C8FC58F002152D1 /* LoopTests */, 43E2D8D21D20BF42004DA55F /* DoseMathTests */, + 4F75288C1DFE1DC600C322D6 /* LoopUI */, 968DCD53F724DE56FFE51920 /* Frameworks */, 43776F8D1B8022E90074EA36 /* Products */, 437D9BA11D7B5203007245E8 /* Loop.xcconfig */, @@ -595,6 +671,7 @@ 43E2D8D11D20BF42004DA55F /* DoseMathTests.xctest */, 43E2D90B1D20C581004DA55F /* LoopTests.xctest */, 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */, + 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */, ); name = Products; sourceTree = ""; @@ -602,7 +679,7 @@ 43776F8E1B8022E90074EA36 /* Loop */ = { isa = PBXGroup; children = ( - 43846AD81D8FA84B00799272 /* gallery.ckcomplication */, + C9886AE41E5B2FAD00473BB8 /* gallery.ckcomplication */, 43EDEE6B1CF2E12A00393BE3 /* Loop.entitlements */, 43F5C2D41B92A4A6003EB13D /* Info.plist */, 43776F8F1B8022E90074EA36 /* AppDelegate.swift */, @@ -656,7 +733,6 @@ 43A9438F1B926B7B0051FA24 /* Assets.xcassets */, 4328E0121CFBE1B700E199AA /* Controllers */, 4328E01F1CFBE2B100E199AA /* Extensions */, - 43DE92571C5479C3001FFDE1 /* Models */, 43A943831B926B7B0051FA24 /* Supporting Files */, ); path = "WatchApp Extension"; @@ -670,17 +746,6 @@ name = "Supporting Files"; sourceTree = ""; }; - 43DE92571C5479C3001FFDE1 /* Models */ = { - isa = PBXGroup; - children = ( - 435400301C9F744E00D5819C /* BolusSuggestionUserInfo.swift */, - 43DE92581C5479E4001FFDE1 /* CarbEntryUserInfo.swift */, - 435400331C9F878D00D5819C /* SetBolusUserInfo.swift */, - 43DE925B1C547A20001FFDE1 /* WatchContext.swift */, - ); - path = Models; - sourceTree = ""; - }; 43E2D8D21D20BF42004DA55F /* DoseMathTests */ = { isa = PBXGroup; children = ( @@ -706,6 +771,8 @@ 43E2D8EA1D20C0DB004DA55F /* recommend_temp_basal_start_low_end_high.json */, 43E2D8EB1D20C0DB004DA55F /* recommend_temp_basal_start_low_end_in_range.json */, C12F21A61DFA79CB00748193 /* recommend_tamp_basal_very_low_end_in_range.json */, + C17824A21E19EAB600D9D25C /* recommend_temp_basal_start_very_low_end_high.json */, + C1C6591B1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json */, ); path = Fixtures; sourceTree = ""; @@ -713,25 +780,22 @@ 43E344A01B9E144300C85C07 /* Extensions */ = { isa = PBXGroup; children = ( - C15713811DAC6983005BC4D2 /* MealBolusNightscoutTreatment.swift */, C17884621D51A7A400405663 /* BatteryIndicator.swift */, 4331E0771C85302200FBE832 /* CGPoint.swift */, 4346D1F51C78501000ABAFE3 /* ChartPoint.swift */, 43649A621C7A347F00523D7F /* CollectionType.swift */, - 4302F4E41D4EA75100F0FCAF /* DoseStore.swift */, - 434FF1E91CF26C29000DB779 /* IdentifiableClass.swift */, - 434F54561D287FDB002A9274 /* NibLoadable.swift */, - 430DA58D1D4AEC230097D1CA /* NSBundle.swift */, 43CE7CDD1CA8B63E003CC1B0 /* Data.swift */, + 4302F4E41D4EA75100F0FCAF /* DoseStore.swift */, + C15713811DAC6983005BC4D2 /* MealBolusNightscoutTreatment.swift */, + 43CEE6E51E56AFD400CB9116 /* NightscoutUploader.swift */, 4398973A1CD2FC2000223065 /* NSDateFormatter.swift */, - 436A0E7A1D7DE13400D6475D /* NSNumberFormatter.swift */, - 439897341CD2F7DE00223065 /* NSTimeInterval.swift */, 43E344A31B9E1B1C00C85C07 /* NSUserDefaults.swift */, - 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */, + 43BFF0CA1E466C0900FF19A9 /* StateColorPalette.swift */, 43F41C361D3BF32400C11ED6 /* UIAlertController.swift */, - 43DE92501C541832001FFDE1 /* UIColor.swift */, + 43BFF0BB1E45C80600FF19A9 /* UIColor+Loop.swift */, 437CEEE31CDE5C0A003C8C80 /* UIImage.swift */, 434FF1ED1CF27EEF000DB779 /* UITableViewCell.swift */, + C17824991E1999FA00D9D25C /* CaseCountable.swift */, ); path = Extensions; sourceTree = ""; @@ -751,6 +815,7 @@ 43F5C2DA1B92A5E1003EB13D /* SettingsTableViewController.swift */, 43E3449E1B9D68E900C85C07 /* StatusTableViewController.swift */, 4302F4E01D4E9C8900F0FCAF /* TextFieldTableViewController.swift */, + C178249F1E19CF9800D9D25C /* GlucoseThresholdTableViewController.swift */, ); path = "View Controllers"; sourceTree = ""; @@ -760,22 +825,13 @@ children = ( 437CCAD91D284ADF0075D2C3 /* AuthenticationTableViewCell.swift */, 434F545A1D2880D4002A9274 /* AuthenticationTableViewCell.xib */, - 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */, - 43B371851CE583890013C5A6 /* BasalStateView.swift */, - 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */, 437CCADB1D284B830075D2C3 /* ButtonTableViewCell.swift */, 434F54581D28805E002A9274 /* ButtonTableViewCell.xib */, 4313EDDF1D8A6BF90060FA79 /* ChartContentView.swift */, 43880F941D9CD54A009061A8 /* ChartPointsScatterDownTrianglesLayer.swift */, 43F41C341D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift */, 4346D1E61C77F5FE00ABAFE3 /* ChartTableViewCell.swift */, - 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */, - 437CEEBB1CD6DE6A003C8C80 /* HUDView.swift */, - 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */, - 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */, - 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */, 438D42FA1D7D11A4003244B0 /* PredictionInputEffectTableViewCell.swift */, - 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */, 43A5676A1C96155700334FAC /* SwitchTableViewCell.swift */, 43F64DD81D9C92C900D24DC6 /* TitleSubtitleTableViewCell.swift */, 434F54621D28DD80002A9274 /* ValidatingIndicatorView.swift */, @@ -798,6 +854,7 @@ 43C094491CACCC73001F6403 /* NotificationManager.swift */, 432E73CA1D24B3D6009AD15D /* RemoteDataManager.swift */, 43EB40851C82646A00472A8C /* StatusChartManager.swift */, + 430C1ABC1E5568A80067F1AE /* StatusChartManager+LoopKit.swift */, 4F70C20F1DE8FAC5006380B7 /* StatusExtensionDataManager.swift */, 4328E0341CFC0AE100E199AA /* WatchDataManager.swift */, ); @@ -817,14 +874,92 @@ isa = PBXGroup; children = ( 4F70C1FD1DE8E662006380B7 /* Loop Status Extension.entitlements */, + 4F70C1E51DE8DCA7006380B7 /* Info.plist */, + 43BFF0CC1E466C8400FF19A9 /* StateColorPalette.swift */, 4F70C1E01DE8DCA7006380B7 /* StatusViewController.swift */, + 43BFF0BE1E45C8EA00FF19A9 /* UIColor+Widget.swift */, 4F70C1E21DE8DCA7006380B7 /* MainInterface.storyboard */, - 4F70C1E51DE8DCA7006380B7 /* Info.plist */, + ); + path = "Loop Status Extension"; + sourceTree = ""; + }; + 4F75288C1DFE1DC600C322D6 /* LoopUI */ = { + isa = PBXGroup; + children = ( + 4F7528A61DFE20AE00C322D6 /* Models */, + 4F7528931DFE1E1600C322D6 /* Views */, + 4F75288D1DFE1DC600C322D6 /* LoopUI.h */, + 4F75288E1DFE1DC600C322D6 /* Info.plist */, + 4F2C15941E09BF3C00E160D4 /* HUDView.xib */, + 4F2C15961E09E94E00E160D4 /* Assets.xcassets */, + ); + path = LoopUI; + sourceTree = ""; + }; + 4F7528931DFE1E1600C322D6 /* Views */ = { + isa = PBXGroup; + children = ( + 437CEEBF1CD6FCD8003C8C80 /* BasalRateHUDView.swift */, + 43B371851CE583890013C5A6 /* BasalStateView.swift */, + 437CEEBB1CD6DE6A003C8C80 /* BaseHUDView.swift */, + 437CEEC91CD84DB7003C8C80 /* BatteryLevelHUDView.swift */, + 4337615E1D52F487004A3647 /* GlucoseHUDView.swift */, + 4F2C15921E09BF2C00E160D4 /* HUDView.swift */, + 43FBEDD71D73843700B21F22 /* LevelMaskView.swift */, + 437CEEBD1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift */, + 438DADC71CDE8F8B007697A5 /* LoopStateView.swift */, + 437CEEC71CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift */, + 43E0F0A41E46D1670064F7CE /* LevelHUDView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 4F7528A61DFE20AE00C322D6 /* Models */ = { + isa = PBXGroup; + children = ( + 43EA28611D517E42001BC233 /* SensorDisplayable.swift */, + 43BFF0C81E465B0A00FF19A9 /* StateColorPalette.swift */, + ); + path = Models; + sourceTree = ""; + }; + 4FF4D0FA1E1834BD00846527 /* Common */ = { + isa = PBXGroup; + children = ( + 4FF4D0FC1E1834CC00846527 /* Extensions */, + 4FF4D0FB1E1834C400846527 /* Models */, + ); + path = Common; + sourceTree = ""; + }; + 4FF4D0FB1E1834C400846527 /* Models */ = { + isa = PBXGroup; + children = ( + 435400301C9F744E00D5819C /* BolusSuggestionUserInfo.swift */, + 43DE92581C5479E4001FFDE1 /* CarbEntryUserInfo.swift */, + 43EA285E1D50ED3D001BC233 /* GlucoseTrend.swift */, + 435400331C9F878D00D5819C /* SetBolusUserInfo.swift */, 4F70C2111DE900EA006380B7 /* StatusExtensionContext.swift */, + 4FF4D0FF1E18374700846527 /* WatchContext.swift */, + ); + path = Models; + sourceTree = ""; + }; + 4FF4D0FC1E1834CC00846527 /* Extensions */ = { + isa = PBXGroup; + children = ( 4F526D5E1DF2459000A04910 /* HKUnit.swift */, + 434FF1E91CF26C29000DB779 /* IdentifiableClass.swift */, + 434F54561D287FDB002A9274 /* NibLoadable.swift */, + 430DA58D1D4AEC230097D1CA /* NSBundle.swift */, + 439897341CD2F7DE00223065 /* NSTimeInterval.swift */, + 4FC8C8001DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift */, + 43BFF0B31E45C1BE00FF19A9 /* NumberFormatter.swift */, + 43BFF0B11E45C18400FF19A9 /* UIColor.swift */, + 43BFF0C31E4659E700FF19A9 /* UIColor+HIG.swift */, ); - path = "Loop Status Extension"; - sourceTree = SOURCE_ROOT; + path = Extensions; + sourceTree = ""; }; 968DCD53F724DE56FFE51920 /* Frameworks */ = { isa = PBXGroup; @@ -851,6 +986,17 @@ }; /* End PBXGroup section */ +/* Begin PBXHeadersBuildPhase section */ + 4F7528881DFE1DC600C322D6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F2C15851E075B8700E160D4 /* LoopUI.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + /* Begin PBXNativeTarget section */ 43776F8B1B8022E90074EA36 /* Loop */ = { isa = PBXNativeTarget; @@ -867,6 +1013,7 @@ buildRules = ( ); dependencies = ( + 4F7528971DFE1ED400C322D6 /* PBXTargetDependency */, 43A943931B926B7B0051FA24 /* PBXTargetDependency */, 4F70C1E71DE8DCA7006380B7 /* PBXTargetDependency */, ); @@ -958,12 +1105,31 @@ buildRules = ( ); dependencies = ( + 4F7528991DFE1ED800C322D6 /* PBXTargetDependency */, ); name = "Loop Status Extension"; productName = "Loop Status Extension"; productReference = 4F70C1DC1DE8DCA7006380B7 /* Loop Status Extension.appex */; productType = "com.apple.product-type.app-extension"; }; + 4F75288A1DFE1DC600C322D6 /* LoopUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4F7528921DFE1DC600C322D6 /* Build configuration list for PBXNativeTarget "LoopUI" */; + buildPhases = ( + 4F7528861DFE1DC600C322D6 /* Sources */, + 4F7528871DFE1DC600C322D6 /* Frameworks */, + 4F7528881DFE1DC600C322D6 /* Headers */, + 4F7528891DFE1DC600C322D6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LoopUI; + productName = LoopUI; + productReference = 4F75288B1DFE1DC600C322D6 /* LoopUI.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -971,7 +1137,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0810; + LastUpgradeCheck = 0820; ORGANIZATIONNAME = "LoopKit Authors"; TargetAttributes = { 43776F8B1B8022E90074EA36 = { @@ -1037,6 +1203,10 @@ }; }; }; + 4F75288A1DFE1DC600C322D6 = { + CreatedOnToolsVersion = 8.1; + ProvisioningStyle = Automatic; + }; }; }; buildConfigurationList = 43776F871B8022E90074EA36 /* Build configuration list for PBXProject "Loop" */; @@ -1056,6 +1226,7 @@ 4F70C1DB1DE8DCA7006380B7 /* Loop Status Extension */, 43A943711B926B7B0051FA24 /* WatchApp */, 43A9437D1B926B7B0051FA24 /* WatchApp Extension */, + 4F75288A1DFE1DC600C322D6 /* LoopUI */, 43E2D8D01D20BF42004DA55F /* DoseMathTests */, 43E2D90A1D20C581004DA55F /* LoopTests */, ); @@ -1068,11 +1239,12 @@ buildActionMask = 2147483647; files = ( C1C73F081DE3D0260022FC89 /* InfoPlist.strings in Resources */, + 43FCBBC21E51710B00343C1B /* LaunchScreen.storyboard in Resources */, 43776F991B8022E90074EA36 /* Assets.xcassets in Resources */, 434F54591D28805E002A9274 /* ButtonTableViewCell.xib in Resources */, C1C73F021DE3D0250022FC89 /* Localizable.strings in Resources */, 43776F971B8022E90074EA36 /* Main.storyboard in Resources */, - 43846AD91D8FA84B00799272 /* gallery.ckcomplication in Resources */, + C9886AE51E5B2FAD00473BB8 /* gallery.ckcomplication in Resources */, 434F545B1D2880D4002A9274 /* AuthenticationTableViewCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1103,6 +1275,7 @@ files = ( 43E2D8F21D20C0DB004DA55F /* recommend_temp_basal_no_change_glucose.json in Resources */, 43E2D8F61D20C0DB004DA55F /* recommend_temp_basal_start_low_end_in_range.json in Resources */, + C17824A31E19EAB600D9D25C /* recommend_temp_basal_start_very_low_end_high.json in Resources */, 43E2D8F41D20C0DB004DA55F /* recommend_temp_basal_start_high_end_low.json in Resources */, 43E2D8EF1D20C0DB004DA55F /* recommend_temp_basal_high_and_falling.json in Resources */, 43E2D8ED1D20C0DB004DA55F /* recommend_temp_basal_correct_low_at_min.json in Resources */, @@ -1110,6 +1283,7 @@ C12F21A71DFA79CB00748193 /* recommend_tamp_basal_very_low_end_in_range.json in Resources */, 43E2D8F11D20C0DB004DA55F /* recommend_temp_basal_in_range_and_rising.json in Resources */, 43E2D8EE1D20C0DB004DA55F /* recommend_temp_basal_flat_and_high.json in Resources */, + C1C6591C1E1B1FDA0025CC58 /* recommend_temp_basal_dropping_then_rising.json in Resources */, 43E2D8F31D20C0DB004DA55F /* recommend_temp_basal_start_high_end_in_range.json in Resources */, 43E2D8F51D20C0DB004DA55F /* recommend_temp_basal_start_low_end_high.json in Resources */, 43E2D8EC1D20C0DB004DA55F /* read_selected_basal_profile.json in Resources */, @@ -1132,6 +1306,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4F7528891DFE1DC600C322D6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F2C15971E09E94E00E160D4 /* Assets.xcassets in Resources */, + 4F2C15951E09BF3C00E160D4 /* HUDView.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -1169,18 +1352,22 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + C17824A51E1AD4D100D9D25C /* BolusRecommendation.swift in Sources */, 4F70C2131DE90339006380B7 /* StatusExtensionContext.swift in Sources */, 434F54571D287FDB002A9274 /* NibLoadable.swift in Sources */, + 4FF4D1001E18374700846527 /* WatchContext.swift in Sources */, 4315D28A1CA5F45E00589052 /* DiagnosticLogger+LoopKit.swift in Sources */, 43C418B51CE0575200405B6A /* ShareGlucose+GlucoseKit.swift in Sources */, + 4F2C15821E074FC600E160D4 /* NSTimeInterval.swift in Sources */, 430DA58E1D4AEC230097D1CA /* NSBundle.swift in Sources */, 43776F901B8022E90074EA36 /* AppDelegate.swift in Sources */, 437CCADA1D284ADF0075D2C3 /* AuthenticationTableViewCell.swift in Sources */, 43CE7CDE1CA8B63E003CC1B0 /* Data.swift in Sources */, + 43BFF0CB1E466C0900FF19A9 /* StateColorPalette.swift in Sources */, 43F41C331D3A17AA00C11ED6 /* ChartAxisValueDoubleUnit.swift in Sources */, 43F5C2DB1B92A5E1003EB13D /* SettingsTableViewController.swift in Sources */, + C11C87DD1E21E53500BB71D3 /* GlucoseThreshold.swift in Sources */, 4313EDE01D8A6BF90060FA79 /* ChartContentView.swift in Sources */, - 43B371861CE583890013C5A6 /* BasalStateView.swift in Sources */, 434FF1EA1CF26C29000DB779 /* IdentifiableClass.swift in Sources */, 437CCADE1D2858FD0075D2C3 /* AuthenticationViewController.swift in Sources */, 43A5676B1C96155700334FAC /* SwitchTableViewCell.swift in Sources */, @@ -1189,22 +1376,21 @@ 4302F4E11D4E9C8900F0FCAF /* TextFieldTableViewController.swift in Sources */, 43E344A41B9E1B1C00C85C07 /* NSUserDefaults.swift in Sources */, 43649A631C7A347F00523D7F /* CollectionType.swift in Sources */, - 437CEEBE1CD6E0CB003C8C80 /* LoopCompletionHUDView.swift in Sources */, 43F64DD91D9C92C900D24DC6 /* TitleSubtitleTableViewCell.swift in Sources */, C15713821DAC6983005BC4D2 /* MealBolusNightscoutTreatment.swift in Sources */, - 43EA28621D517E42001BC233 /* SensorDisplayable.swift in Sources */, 435400321C9F745500D5819C /* BolusSuggestionUserInfo.swift in Sources */, 43E3449F1B9D68E900C85C07 /* StatusTableViewController.swift in Sources */, 43DBF0531C93EC8200B3C386 /* DeviceDataManager.swift in Sources */, 43E2D8C81D208D5B004DA55F /* KeychainManager+Loop.swift in Sources */, + C17824A01E19CF9800D9D25C /* GlucoseThresholdTableViewController.swift in Sources */, 4346D1E71C77F5FE00ABAFE3 /* ChartTableViewCell.swift in Sources */, 437CEEE41CDE5C0A003C8C80 /* UIImage.swift in Sources */, 43DBF0591C93F73800B3C386 /* CarbEntryTableViewController.swift in Sources */, - 43DE925C1C547A20001FFDE1 /* WatchContext.swift in Sources */, 43F41C351D3B623800C11ED6 /* ChartPointsTouchHighlightLayerViewCache.swift in Sources */, + 43E93FB71E469A5100EAB8DB /* HKUnit.swift in Sources */, 43EB40861C82646A00472A8C /* StatusChartManager.swift in Sources */, C17884631D51A7A400405663 /* BatteryIndicator.swift in Sources */, - 437CEEC81CD84CBB003C8C80 /* ReservoirVolumeHUDView.swift in Sources */, + 43BFF0BC1E45C80600FF19A9 /* UIColor+Loop.swift in Sources */, 43C0944A1CACCC73001F6403 /* NotificationManager.swift in Sources */, 434FF1EE1CF27EEF000DB779 /* UITableViewCell.swift in Sources */, C18C8C511D5A351900E043FB /* NightscoutDataManager.swift in Sources */, @@ -1213,8 +1399,10 @@ 4315D2871CA5CC3B00589052 /* CarbEntryEditTableViewController.swift in Sources */, 43F5173D1D713DB0000FA422 /* RadioSelectionTableViewController.swift in Sources */, 4331E0781C85302200FBE832 /* CGPoint.swift in Sources */, + C178249A1E1999FA00D9D25C /* CaseCountable.swift in Sources */, 43DBF04C1C93B8D700B3C386 /* BolusViewController.swift in Sources */, 4328E0351CFC0AE100E199AA /* WatchDataManager.swift in Sources */, + 43BFF0C51E465A2D00FF19A9 /* UIColor+HIG.swift in Sources */, 4302F4E31D4EA54200F0FCAF /* InsulinDeliveryTableViewController.swift in Sources */, 437CCAE01D285C7B0075D2C3 /* ServiceAuthentication.swift in Sources */, 4FC8C8011DEB93E400A1452E /* NSUserDefaults+StatusExtension.swift in Sources */, @@ -1222,23 +1410,22 @@ 430DA5901D4B0E4C0097D1CA /* MySentryPumpStatusMessageBody.swift in Sources */, 4D5B7A4B1D457CCA00796CA9 /* GlucoseG4.swift in Sources */, 438849EC1D29EC34003B3F23 /* AmplitudeService.swift in Sources */, + 43E93FB61E469A4000EAB8DB /* NumberFormatter.swift in Sources */, 435400341C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */, 437D9BA31D7BC977007245E8 /* PredictionTableViewController.swift in Sources */, 43F41C371D3BF32400C11ED6 /* UIAlertController.swift in Sources */, - 437CEEBC1CD6DE6A003C8C80 /* HUDView.swift in Sources */, + 430C1ABD1E5568A80067F1AE /* StatusChartManager+LoopKit.swift in Sources */, 433EA4C41D9F71C800CD78FB /* CommandResponseViewController.swift in Sources */, - 436A0E7B1D7DE13400D6475D /* NSNumberFormatter.swift in Sources */, 434F545F1D288345002A9274 /* ShareService.swift in Sources */, - 43FBEDD81D73843700B21F22 /* LevelMaskView.swift in Sources */, - 4354003A1C9FB81100D5819C /* UIColor.swift in Sources */, + 43CEE6E61E56AFD400CB9116 /* NightscoutUploader.swift in Sources */, 4328E0331CFC091100E199AA /* WatchContext+LoopKit.swift in Sources */, 4F526D611DF8D9A900A04910 /* NetBasal.swift in Sources */, 4398973B1CD2FC2000223065 /* NSDateFormatter.swift in Sources */, + 540DED971E14C75F002B2491 /* EnliteSensorDisplayable.swift in Sources */, 436A0DA51D236A2A00104B24 /* LoopError.swift in Sources */, - 437CEEC01CD6FCD8003C8C80 /* BasalRateHUDView.swift in Sources */, 43E2D8C61D204678004DA55F /* KeychainManager.swift in Sources */, - 437CEECA1CD84DB7003C8C80 /* BatteryLevelHUDView.swift in Sources */, 433EA4C21D9F39C900CD78FB /* PumpIDTableViewController.swift in Sources */, + 43BFF0B21E45C18400FF19A9 /* UIColor.swift in Sources */, 43F78D261C8FC000002152D1 /* DoseMath.swift in Sources */, 438D42F91D7C88BC003244B0 /* PredictionInputEffect.swift in Sources */, 4331E07A1C85650D00FBE832 /* ChartAxisValueDoubleLog.swift in Sources */, @@ -1247,17 +1434,13 @@ 436FACEE1D0BA636004E2427 /* InsulinDataSource.swift in Sources */, 439897371CD2F80600223065 /* AnalyticsManager.swift in Sources */, 4346D1F61C78501000ABAFE3 /* ChartPoint.swift in Sources */, - 43EA28601D50ED4D001BC233 /* GlucoseTrend.swift in Sources */, - 4337615F1D52F487004A3647 /* GlucoseHUDView.swift in Sources */, 438849EE1D2A1EBB003B3F23 /* MLabService.swift in Sources */, 438D42FB1D7D11A4003244B0 /* PredictionInputEffectTableViewCell.swift in Sources */, 43880F951D9CD54A009061A8 /* ChartPointsScatterDownTrianglesLayer.swift in Sources */, 43F4EF1D1BA2A57600526CE1 /* DiagnosticLogger.swift in Sources */, 432E73CB1D24B3D6009AD15D /* RemoteDataManager.swift in Sources */, - 438DADC81CDE8F8B007697A5 /* LoopStateView.swift in Sources */, 43DE92591C5479E4001FFDE1 /* CarbEntryUserInfo.swift in Sources */, 434F54631D28DD80002A9274 /* ValidatingIndicatorView.swift in Sources */, - 439897351CD2F7DE00223065 /* NSTimeInterval.swift in Sources */, 43DE92611C555C26001FFDE1 /* AbsorptionTimeType+CarbKit.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1266,27 +1449,28 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4F2C15751E0209FA00E160D4 /* GlucoseTrend.swift in Sources */, + 4F2C15741E0209F500E160D4 /* NSTimeInterval.swift in Sources */, + 4FF4D1011E18375000846527 /* WatchContext.swift in Sources */, 435400311C9F744E00D5819C /* BolusSuggestionUserInfo.swift in Sources */, 43A9438A1B926B7B0051FA24 /* NotificationController.swift in Sources */, 43A943881B926B7B0051FA24 /* ExtensionDelegate.swift in Sources */, 4328E0291CFBE2C500E199AA /* NSUserDefaults.swift in Sources */, 4328E02F1CFBF81800E199AA /* WKInterfaceImage.swift in Sources */, + 4F2C15811E0495B200E160D4 /* WatchContext+WatchApp.swift in Sources */, 4328E02A1CFBE2C500E199AA /* UIColor.swift in Sources */, 4328E01B1CFBE1DA00E199AA /* BolusInterfaceController.swift in Sources */, 4328E02B1CFBE2C500E199AA /* WKAlertAction.swift in Sources */, 4328E0281CFBE2C500E199AA /* CLKComplicationTemplate.swift in Sources */, 4328E01E1CFBE25F00E199AA /* AddCarbsInterfaceController.swift in Sources */, 43846ADB1D91057000799272 /* ContextUpdatable.swift in Sources */, - 43EA285F1D50ED3D001BC233 /* GlucoseTrend.swift in Sources */, 4328E0261CFBE2C500E199AA /* IdentifiableClass.swift in Sources */, - 43027F0E1DFE0EC200C51989 /* NSNumberFormatter.swift in Sources */, 43027F0F1DFE0EC900C51989 /* HKUnit.swift in Sources */, 43CB2B2B1D924D450079823D /* WCSession.swift in Sources */, 43DE925A1C5479E4001FFDE1 /* CarbEntryUserInfo.swift in Sources */, - 4328E0301CFBFAEB00E199AA /* NSTimeInterval.swift in Sources */, + 43BFF0B51E45C1E700FF19A9 /* NumberFormatter.swift in Sources */, 43A9438E1B926B7B0051FA24 /* ComplicationController.swift in Sources */, 4328E01A1CFBE1DA00E199AA /* StatusInterfaceController.swift in Sources */, - 43DE925D1C547A20001FFDE1 /* WatchContext.swift in Sources */, 435400351C9F878D00D5819C /* SetBolusUserInfo.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1295,9 +1479,13 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + C17824A11E19E8C200D9D25C /* GlucoseThreshold.swift in Sources */, 43E2D8DC1D20C049004DA55F /* DoseMath.swift in Sources */, 43E2D8DB1D20C03B004DA55F /* NSTimeInterval.swift in Sources */, 43E2D8D41D20BF42004DA55F /* DoseMathTests.swift in Sources */, + C11C87DE1E21EAAD00BB71D3 /* HKUnit.swift in Sources */, + C1C6591A1E1B1F430025CC58 /* (null) in Sources */, + C17824A61E1AF91F00D9D25C /* BolusRecommendation.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1313,28 +1501,46 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4F2C15831E0757E600E160D4 /* HKUnit.swift in Sources */, + 43E93FB51E4675E800EAB8DB /* NumberFormatter.swift in Sources */, + 43BFF0CD1E466C8400FF19A9 /* StateColorPalette.swift in Sources */, + 43BFF0C21E464ACB00FF19A9 /* UIColor.swift in Sources */, 4F526D621DF9D95200A04910 /* NSBundle.swift in Sources */, 4FC8C8021DEB943800A1452E /* NSUserDefaults+StatusExtension.swift in Sources */, - 4F70C20B1DE8E9F4006380B7 /* GlucoseTrend.swift in Sources */, - 4F526D5F1DF2459000A04910 /* HKUnit.swift in Sources */, - 4F70C1FB1DE8E45E006380B7 /* NSTimeInterval.swift in Sources */, - 4F70C1FA1DE8E42D006380B7 /* ReservoirVolumeHUDView.swift in Sources */, - 4F70C1F91DE8E409006380B7 /* LoopStateView.swift in Sources */, - 4F70C1F81DE8E403006380B7 /* LoopCompletionHUDView.swift in Sources */, - 4F70C1F71DE8E3FD006380B7 /* LevelMaskView.swift in Sources */, - 4F70C1F61DE8E3F1006380B7 /* BatteryLevelHUDView.swift in Sources */, - 4F70C1F51DE8E3E9006380B7 /* BasalStateView.swift in Sources */, - 4F70C1F41DE8E3E1006380B7 /* BasalRateHUDView.swift in Sources */, + 43BFF0C71E465A4F00FF19A9 /* UIColor+HIG.swift in Sources */, + 43BFF0BF1E45C8EA00FF19A9 /* UIColor+Widget.swift in Sources */, 4F70C2121DE900EA006380B7 /* StatusExtensionContext.swift in Sources */, - 4F70C1F31DE8DF47006380B7 /* NSNumberFormatter.swift in Sources */, - 4F70C1F21DE8DF3A006380B7 /* UIColor.swift in Sources */, - 4F70C1F01DE8DF22006380B7 /* SensorDisplayable.swift in Sources */, - 4F70C1EF1DE8DF15006380B7 /* HUDView.swift in Sources */, - 4F70C1ED1DE8DEDA006380B7 /* GlucoseHUDView.swift in Sources */, 4F70C1E11DE8DCA7006380B7 /* StatusViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; + 4F7528861DFE1DC600C322D6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4FF4D0F91E17268800846527 /* IdentifiableClass.swift in Sources */, + 4FF4D0F81E1725B000846527 /* NibLoadable.swift in Sources */, + 4F7528AA1DFE215100C322D6 /* HKUnit.swift in Sources */, + 4F7528A91DFE212600C322D6 /* GlucoseTrend.swift in Sources */, + 4F7528A71DFE20CE00C322D6 /* SensorDisplayable.swift in Sources */, + 4F2C15931E09BF2C00E160D4 /* HUDView.swift in Sources */, + 43BFF0B71E45C20C00FF19A9 /* NumberFormatter.swift in Sources */, + 4F7528A51DFE208C00C322D6 /* NSTimeInterval.swift in Sources */, + 4F7528A11DFE200B00C322D6 /* BasalStateView.swift in Sources */, + 4F7528A21DFE200B00C322D6 /* LevelMaskView.swift in Sources */, + 43BFF0C61E465A4400FF19A9 /* UIColor+HIG.swift in Sources */, + 4F7528A01DFE1F9D00C322D6 /* LoopStateView.swift in Sources */, + 4F75289A1DFE1F6000C322D6 /* BasalRateHUDView.swift in Sources */, + 4F75289B1DFE1F6000C322D6 /* BatteryLevelHUDView.swift in Sources */, + 4F75289C1DFE1F6000C322D6 /* GlucoseHUDView.swift in Sources */, + 4F75289D1DFE1F6000C322D6 /* BaseHUDView.swift in Sources */, + 43BFF0C91E465B0A00FF19A9 /* StateColorPalette.swift in Sources */, + 43E0F0A51E46D1670064F7CE /* LevelHUDView.swift in Sources */, + 4F75289E1DFE1F6000C322D6 /* LoopCompletionHUDView.swift in Sources */, + 4F75289F1DFE1F6000C322D6 /* ReservoirVolumeHUDView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1358,6 +1564,16 @@ target = 4F70C1DB1DE8DCA7006380B7 /* Loop Status Extension */; targetProxy = 4F70C1E61DE8DCA7006380B7 /* PBXContainerItemProxy */; }; + 4F7528971DFE1ED400C322D6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4F75288A1DFE1DC600C322D6 /* LoopUI */; + targetProxy = 4F7528961DFE1ED400C322D6 /* PBXContainerItemProxy */; + }; + 4F7528991DFE1ED800C322D6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4F75288A1DFE1DC600C322D6 /* LoopUI */; + targetProxy = 4F7528981DFE1ED800C322D6 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -1444,7 +1660,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer: loudnate@gmail.com (XZN842LDLT)"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 31; + CURRENT_PROJECT_VERSION = 32; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -1498,7 +1714,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "iPhone Developer: loudnate@gmail.com (XZN842LDLT)"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 31; + CURRENT_PROJECT_VERSION = 32; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -1566,6 +1782,7 @@ 43A943961B926B7B0051FA24 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; DEVELOPMENT_TEAM = ""; @@ -1583,6 +1800,7 @@ 43A943971B926B7B0051FA24 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=watchos*]" = "iPhone Developer"; DEVELOPMENT_TEAM = ""; @@ -1748,6 +1966,61 @@ }; name = Release; }; + 4F7528901DFE1DC600C322D6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + CURRENT_PROJECT_VERSION = 32; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 32; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = LoopUI/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER).LoopUI"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 3.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 4F7528911DFE1DC600C322D6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + CURRENT_PROJECT_VERSION = 32; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 32; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = LoopUI/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "$(MAIN_APP_BUNDLE_IDENTIFIER).LoopUI"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1814,6 +2087,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 4F7528921DFE1DC600C322D6 /* Build configuration list for PBXNativeTarget "LoopUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4F7528901DFE1DC600C322D6 /* Debug */, + 4F7528911DFE1DC600C322D6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 43776F841B8022E90074EA36 /* Project object */; diff --git a/Loop.xcodeproj/xcshareddata/xcschemes/Complication - WatchApp.xcscheme b/Loop.xcodeproj/xcshareddata/xcschemes/Complication - WatchApp.xcscheme index bf7d22a5ca..e9d45e8f1f 100644 --- a/Loop.xcodeproj/xcshareddata/xcschemes/Complication - WatchApp.xcscheme +++ b/Loop.xcodeproj/xcshareddata/xcschemes/Complication - WatchApp.xcscheme @@ -1,6 +1,6 @@ - + + + + + - - + @@ -13,23 +15,26 @@ - + - + - + - + + + @@ -46,21 +51,21 @@ - + - +