Przeglądaj źródła

Merge pull request #15 from avouspierre/loopkit_dev_submodules

Loopkit dev using submodules only and CGM plugin systems
Pierre L 2 lat temu
rodzic
commit
b8f68ee414
100 zmienionych plików z 37 dodań i 5504 usunięć
  1. 36 0
      .gitmodules
  2. 1 0
      CGMBLEKit
  3. 0 36
      Dependencies/CGMBLEKit/.gitignore
  4. 0 13
      Dependencies/CGMBLEKit/.travis.yml
  5. 0 140
      Dependencies/CGMBLEKit/CGMBLEKit Example/AppDelegate.swift
  6. 0 98
      Dependencies/CGMBLEKit/CGMBLEKit Example/Assets.xcassets/AppIcon.appiconset/Contents.json
  7. 0 25
      Dependencies/CGMBLEKit/CGMBLEKit Example/Base.lproj/LaunchScreen.storyboard
  8. 0 172
      Dependencies/CGMBLEKit/CGMBLEKit Example/Base.lproj/Main.storyboard
  9. 0 34
      Dependencies/CGMBLEKit/CGMBLEKit Example/CommandQueue.swift
  10. 0 49
      Dependencies/CGMBLEKit/CGMBLEKit Example/Info.plist
  11. 0 39
      Dependencies/CGMBLEKit/CGMBLEKit Example/NSUserDefaults.swift
  12. 0 200
      Dependencies/CGMBLEKit/CGMBLEKit Example/ViewController.swift
  13. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/da.lproj/InfoPlist.strings
  14. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/da.lproj/Localizable.strings
  15. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/da.lproj/Main.strings
  16. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/de.lproj/InfoPlist.strings
  17. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/de.lproj/Localizable.strings
  18. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/de.lproj/Main.strings
  19. 0 8
      Dependencies/CGMBLEKit/CGMBLEKit Example/en.lproj/Localizable.strings
  20. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/en.lproj/Main.strings
  21. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/es.lproj/InfoPlist.strings
  22. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/es.lproj/Localizable.strings
  23. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/es.lproj/Main.strings
  24. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/fi.lproj/InfoPlist.strings
  25. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/fi.lproj/Localizable.strings
  26. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/fi.lproj/Main.strings
  27. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/fr.lproj/InfoPlist.strings
  28. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/fr.lproj/Localizable.strings
  29. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/fr.lproj/Main.strings
  30. 0 1
      Dependencies/CGMBLEKit/CGMBLEKit Example/he.lproj/LaunchScreen.strings
  31. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/he.lproj/Localizable.strings
  32. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/he.lproj/Main.strings
  33. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/it.lproj/InfoPlist.strings
  34. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/it.lproj/Localizable.strings
  35. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/it.lproj/Main.strings
  36. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/ja.lproj/Localizable.strings
  37. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/ja.lproj/Main.strings
  38. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/nb.lproj/InfoPlist.strings
  39. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/nb.lproj/Localizable.strings
  40. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/nb.lproj/Main.strings
  41. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/nl.lproj/InfoPlist.strings
  42. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/nl.lproj/Localizable.strings
  43. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/nl.lproj/Main.strings
  44. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/pl.lproj/InfoPlist.strings
  45. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/pl.lproj/Localizable.strings
  46. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/pl.lproj/Main.strings
  47. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/pt-BR.lproj/Localizable.strings
  48. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/pt-BR.lproj/Main.strings
  49. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/ro.lproj/InfoPlist.strings
  50. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/ro.lproj/Localizable.strings
  51. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/ro.lproj/Main.strings
  52. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/ru.lproj/InfoPlist.strings
  53. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/ru.lproj/Localizable.strings
  54. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/ru.lproj/Main.strings
  55. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/sk.lproj/InfoPlist.strings
  56. 0 6
      Dependencies/CGMBLEKit/CGMBLEKit Example/sk.lproj/Localizable.strings
  57. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/sk.lproj/Main.strings
  58. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/sv.lproj/InfoPlist.strings
  59. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/sv.lproj/Localizable.strings
  60. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/sv.lproj/Main.strings
  61. 0 3
      Dependencies/CGMBLEKit/CGMBLEKit Example/tr.lproj/InfoPlist.strings
  62. 0 1
      Dependencies/CGMBLEKit/CGMBLEKit Example/tr.lproj/LaunchScreen.strings
  63. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/tr.lproj/Localizable.strings
  64. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/tr.lproj/Main.strings
  65. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/vi.lproj/Localizable.strings
  66. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/vi.lproj/Main.strings
  67. 0 9
      Dependencies/CGMBLEKit/CGMBLEKit Example/zh-Hans.lproj/Localizable.strings
  68. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit Example/zh-Hans.lproj/Main.strings
  69. 0 2493
      Dependencies/CGMBLEKit/CGMBLEKit.xcodeproj/project.pbxproj
  70. 0 7
      Dependencies/CGMBLEKit/CGMBLEKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  71. 0 8
      Dependencies/CGMBLEKit/CGMBLEKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  72. 0 8
      Dependencies/CGMBLEKit/CGMBLEKit.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  73. 0 19
      Dependencies/CGMBLEKit/CGMBLEKit/AESCrypt.h
  74. 0 33
      Dependencies/CGMBLEKit/CGMBLEKit/AESCrypt.m
  75. 0 41
      Dependencies/CGMBLEKit/CGMBLEKit/Base.lproj/Localizable.strings
  76. 0 350
      Dependencies/CGMBLEKit/CGMBLEKit/BluetoothManager.swift
  77. 0 87
      Dependencies/CGMBLEKit/CGMBLEKit/BluetoothServices.swift
  78. 0 45
      Dependencies/CGMBLEKit/CGMBLEKit/CBPeripheral.swift
  79. 0 17
      Dependencies/CGMBLEKit/CGMBLEKit/CGMBLEKit.h
  80. 0 27
      Dependencies/CGMBLEKit/CGMBLEKit/Calibration.swift
  81. 0 106
      Dependencies/CGMBLEKit/CGMBLEKit/CalibrationState.swift
  82. 0 79
      Dependencies/CGMBLEKit/CGMBLEKit/Command.swift
  83. 0 85
      Dependencies/CGMBLEKit/CGMBLEKit/Glucose+SensorDisplayable.swift
  84. 0 111
      Dependencies/CGMBLEKit/CGMBLEKit/Glucose.swift
  85. 0 26
      Dependencies/CGMBLEKit/CGMBLEKit/Info.plist
  86. 0 28
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/AuthChallengeRxMessage.swift
  87. 0 20
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/AuthChallengeTxMessage.swift
  88. 0 28
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/AuthRequestRxMessage.swift
  89. 0 29
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/AuthRequestTxMessage.swift
  90. 0 16
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/BatteryStatusTxMessage.swift
  91. 0 17
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/BondRequestTxMessage.swift
  92. 0 22
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/CalibrateGlucoseRxMessage.swift
  93. 0 24
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/CalibrateGlucoseTxMessage.swift
  94. 0 28
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/CalibrationDataRxMessage.swift
  95. 0 18
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/CalibrationDataTxMessage.swift
  96. 0 16
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/DisconnectTxMessage.swift
  97. 0 14
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/FirmwareVersionTxMessage.swift
  98. 0 122
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/GlucoseBackfillMessage.swift
  99. 0 14
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/GlucoseHistoryTxMessage.swift
  100. 0 0
      Dependencies/CGMBLEKit/CGMBLEKit/Messages/GlucoseRxMessage.swift

+ 36 - 0
.gitmodules

@@ -0,0 +1,36 @@
+[submodule "LoopKit"]
+	path = LoopKit
+	url = https://github.com/LoopKit/LoopKit.git
+	branch = dev
+[submodule "CGMBLEKit"]
+	path = CGMBLEKit
+	url = https://github.com/LoopKit/CGMBLEKit.git
+	branch = dev
+[submodule "dexcom-share-client-swift"]
+	path = dexcom-share-client-swift
+	url = https://github.com/LoopKit/dexcom-share-client-swift.git
+	branch = dev
+[submodule "RileyLinkKit"]
+	path = RileyLinkKit
+	url = https://github.com/LoopKit/RileyLinkKit
+	branch = dev
+[submodule "OmniBLE"]
+	path = OmniBLE
+	url = https://github.com/LoopKit/OmniBLE.git
+	branch = dev
+[submodule "G7SensorKit"]
+	path = G7SensorKit
+	url = https://github.com/LoopKit/G7SensorKit.git
+	branch = main
+[submodule "OmniKit"]
+	path = OmniKit
+	url = https://github.com/LoopKit/OmniKit.git
+	branch = main
+[submodule "MinimedKit"]
+	path = MinimedKit
+	url = https://github.com/LoopKit/MinimedKit.git
+	branch = main
+[submodule "LibreTransmitter"]
+	path = LibreTransmitter
+	url = https://github.com/LoopKit/LibreTransmitter.git
+	branch = main

+ 1 - 0
CGMBLEKit

@@ -0,0 +1 @@
+Subproject commit 4eb3c940b0e99ae2715fc6462babd2597d46a845

+ 0 - 36
Dependencies/CGMBLEKit/.gitignore

@@ -1,36 +0,0 @@
-# OS X
-.DS_Store
-
-# Xcode
-build/
-*.pbxuser
-!default.pbxuser
-*.mode1v3
-!default.mode1v3
-*.mode2v3
-!default.mode2v3
-*.perspectivev3
-!default.perspectivev3
-xcuserdata
-*.xccheckout
-profile
-*.moved-aside
-DerivedData
-*.hmap
-*.ipa
-
-# Bundler
-.bundle
-
-Carthage
-# We recommend against adding the Pods directory to your .gitignore. However
-# you should judge for yourself, the pros and cons are mentioned at:
-# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
-#
-# Note: if you ignore the Pods directory, make sure to uncomment
-# `pod install` in .travis.yml
-#
-
-Pods/
-Carthage/
-.gitmodules

+ 0 - 13
Dependencies/CGMBLEKit/.travis.yml

@@ -1,13 +0,0 @@
-language: objective-c
-osx_image: xcode12.2
-
-before_script:
-    - ./Scripts/carthage.sh bootstrap
-
-script:
-    # Build frameworks and run tests
-    - travis_wait 25 xcodebuild -project CGMBLEKit.xcodeproj -scheme Shared build -destination name="iPhone 8" test | xcpretty
-    # Build apps
-    - xcodebuild -project CGMBLEKit.xcodeproj -scheme "CGMBLEKit Example" build -destination name="iPhone 8" | xcpretty
-    - xcodebuild -project CGMBLEKit.xcodeproj -scheme ResetTransmitter build -destination name="iPhone 8"
-

+ 0 - 140
Dependencies/CGMBLEKit/CGMBLEKit Example/AppDelegate.swift

@@ -1,140 +0,0 @@
-//
-//  AppDelegate.swift
-//  xDrip5
-//
-//  Created by Nathan Racklyeft on 10/1/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import UIKit
-import CGMBLEKit
-import CoreBluetooth
-
-@UIApplicationMain
-class AppDelegate: UIResponder, UIApplicationDelegate, TransmitterDelegate, TransmitterCommandSource {
-    
-    var window: UIWindow?
-
-    static var sharedDelegate: AppDelegate {
-        return UIApplication.shared.delegate as! AppDelegate
-    }
-
-    var transmitterID: String? {
-        didSet {
-            if let id = transmitterID {
-                transmitter = Transmitter(
-                    id: id,
-                    passiveModeEnabled: UserDefaults.standard.passiveModeEnabled
-                )
-                transmitter?.stayConnected = UserDefaults.standard.stayConnected
-                transmitter?.delegate = self
-                transmitter?.commandSource = self
-
-                UserDefaults.standard.transmitterID = id
-            }
-            glucose = nil
-        }
-    }
-
-    var transmitter: Transmitter?
-
-    let commandQueue = CommandQueue()
-
-    var glucose: Glucose?
-
-    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
-
-        transmitterID = UserDefaults.standard.transmitterID
-
-        return true
-    }
-
-    func applicationWillResignActive(_ application: UIApplication) {
-        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
-        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
-    }
-
-    func applicationDidEnterBackground(_ application: UIApplication) {
-        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
-        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
-
-        if let transmitter = transmitter, !transmitter.stayConnected {
-            transmitter.stopScanning()
-        }
-    }
-
-    func applicationWillEnterForeground(_ application: UIApplication) {
-        // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
-    }
-
-    func applicationDidBecomeActive(_ application: UIApplication) {
-        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
-
-        transmitter?.resumeScanning()
-    }
-
-    func applicationWillTerminate(_ application: UIApplication) {
-        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
-    }
-
-    // MARK: - TransmitterDelegate
-
-    private let dateFormatter: DateFormatter = {
-        let dateFormatter = DateFormatter()
-
-        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
-        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
-
-        return dateFormatter
-    }()
-
-    func dequeuePendingCommand(for transmitter: Transmitter) -> Command? {
-        return commandQueue.dequeue()
-    }
-
-    func transmitter(_ transmitter: Transmitter, didFail command: Command, with error: Error) {
-        // TODO: implement
-    }
-
-    func transmitter(_ transmitter: Transmitter, didComplete command: Command) {
-        // TODO: implement
-    }
-
-    func transmitter(_ transmitter: Transmitter, didError error: Error) {
-        DispatchQueue.main.async {
-            if let vc = self.window?.rootViewController as? TransmitterDelegate {
-                vc.transmitter(transmitter, didError: error)
-            }
-        }
-    }
-
-    func transmitter(_ transmitter: Transmitter, didRead glucose: Glucose) {
-        self.glucose = glucose
-        DispatchQueue.main.async {
-            if let vc = self.window?.rootViewController as? TransmitterDelegate {
-                vc.transmitter(transmitter, didRead: glucose)
-            }
-        }
-    }
-
-    func transmitter(_ transmitter: Transmitter, didReadUnknownData data: Data) {
-        DispatchQueue.main.async {
-            if let vc = self.window?.rootViewController as? TransmitterDelegate {
-                vc.transmitter(transmitter, didReadUnknownData: data)
-            }
-        }
-    }
-    
-    func transmitter(_ transmitter: Transmitter, didReadBackfill glucose: [Glucose]) {
-        DispatchQueue.main.async {
-            if let vc = self.window?.rootViewController as? TransmitterDelegate {
-                vc.transmitter(transmitter, didReadBackfill: glucose)
-            }
-        }
-    }
-    
-    func transmitterDidConnect(_ transmitter: Transmitter) {
-        // Ignore
-    }
-
-}

+ 0 - 98
Dependencies/CGMBLEKit/CGMBLEKit Example/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -1,98 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "iphone",
-      "size" : "20x20",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "20x20",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "29x29",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "29x29",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "40x40",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "40x40",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "60x60",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "iphone",
-      "size" : "60x60",
-      "scale" : "3x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "20x20",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "20x20",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "29x29",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "29x29",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "40x40",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "40x40",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "76x76",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "76x76",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ipad",
-      "size" : "83.5x83.5",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "ios-marketing",
-      "size" : "1024x1024",
-      "scale" : "1x"
-    }
-  ],
-  "info" : {
-    "version" : 1,
-    "author" : "xcode"
-  }
-}

+ 0 - 25
Dependencies/CGMBLEKit/CGMBLEKit Example/Base.lproj/LaunchScreen.storyboard

@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" systemVersion="17A277" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
-    <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
-        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <scenes>
-        <!--View Controller-->
-        <scene sceneID="EHf-IW-A2E">
-            <objects>
-                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
-                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
-                        <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                        <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
-                    </view>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="53" y="375"/>
-        </scene>
-    </scenes>
-</document>

+ 0 - 172
Dependencies/CGMBLEKit/CGMBLEKit Example/Base.lproj/Main.storyboard

@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
-    <device id="retina5_5" orientation="portrait">
-        <adaptation id="fullscreen"/>
-    </device>
-    <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
-        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
-        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
-    </dependencies>
-    <scenes>
-        <!--View Controller-->
-        <scene sceneID="tne-QT-ifu">
-            <objects>
-                <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="CGMBLEKit_Example" customModuleProvider="target" sceneMemberID="viewController">
-                    <layoutGuides>
-                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
-                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
-                    </layoutGuides>
-                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
-                        <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="mqJ-p6-sSU">
-                                <rect key="frame" x="20" y="40" width="374" height="676"/>
-                                <subviews>
-                                    <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="K5I-e5-MvQ">
-                                        <rect key="frame" x="15.666666666666657" y="0.0" width="343" height="52"/>
-                                        <subviews>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Transmitter ID" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5y6-vU-qC3">
-                                                <rect key="frame" x="8" y="14.333333333333334" width="249" height="20.333333333333329"/>
-                                                <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
-                                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oUg-jb-mCK">
-                                                <rect key="frame" x="265" y="42" width="70" height="1"/>
-                                                <color key="backgroundColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="height" constant="1" id="Rjq-qn-DaB"/>
-                                                </constraints>
-                                            </view>
-                                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="500000" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="e0T-ru-tWD">
-                                                <rect key="frame" x="265" y="8" width="70" height="34"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="width" constant="70" id="1v1-n5-aT4"/>
-                                                    <constraint firstAttribute="height" constant="34" id="CVt-L0-Ts1"/>
-                                                </constraints>
-                                                <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
-                                                <textInputTraits key="textInputTraits" autocapitalizationType="allCharacters" autocorrectionType="no" spellCheckingType="no" keyboardType="alphabet" returnKeyType="done"/>
-                                                <connections>
-                                                    <outlet property="delegate" destination="BYZ-38-t0r" id="XHs-Ei-i6K"/>
-                                                </connections>
-                                            </textField>
-                                        </subviews>
-                                        <constraints>
-                                            <constraint firstItem="e0T-ru-tWD" firstAttribute="leading" secondItem="5y6-vU-qC3" secondAttribute="trailing" constant="8" id="1Y6-Tc-fCe"/>
-                                            <constraint firstItem="5y6-vU-qC3" firstAttribute="leading" secondItem="K5I-e5-MvQ" secondAttribute="leadingMargin" id="2up-6R-sUw"/>
-                                            <constraint firstItem="e0T-ru-tWD" firstAttribute="top" secondItem="K5I-e5-MvQ" secondAttribute="topMargin" id="9sj-7n-OeZ"/>
-                                            <constraint firstAttribute="trailingMargin" secondItem="e0T-ru-tWD" secondAttribute="trailing" id="BGc-6v-F21"/>
-                                            <constraint firstItem="5y6-vU-qC3" firstAttribute="baseline" secondItem="e0T-ru-tWD" secondAttribute="baseline" id="Ieq-vZ-reG"/>
-                                            <constraint firstItem="e0T-ru-tWD" firstAttribute="leading" secondItem="oUg-jb-mCK" secondAttribute="leading" id="PU1-pi-afh"/>
-                                            <constraint firstAttribute="bottomMargin" secondItem="e0T-ru-tWD" secondAttribute="bottom" constant="2" id="S63-7X-au0"/>
-                                            <constraint firstItem="oUg-jb-mCK" firstAttribute="width" secondItem="e0T-ru-tWD" secondAttribute="width" id="bYX-uk-kK1"/>
-                                            <constraint firstItem="oUg-jb-mCK" firstAttribute="top" secondItem="e0T-ru-tWD" secondAttribute="bottom" id="xJ6-dd-9PN"/>
-                                        </constraints>
-                                    </view>
-                                    <stackView opaque="NO" contentMode="scaleToFill" spacing="8" baselineRelativeArrangement="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4lp-eb-b4C">
-                                        <rect key="frame" x="74.333333333333329" y="129" width="225.33333333333337" height="31"/>
-                                        <subviews>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Stay connected" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NSs-9e-3Sl">
-                                                <rect key="frame" x="0.0" y="0.0" width="168.33333333333334" height="31"/>
-                                                <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
-                                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="DR7-3h-biq">
-                                                <rect key="frame" x="176.33333333333337" y="0.0" width="51" height="31"/>
-                                                <connections>
-                                                    <action selector="toggleStayConnected:" destination="BYZ-38-t0r" eventType="valueChanged" id="Wci-5s-BJm"/>
-                                                </connections>
-                                            </switch>
-                                        </subviews>
-                                    </stackView>
-                                    <stackView opaque="NO" contentMode="scaleToFill" spacing="8" baselineRelativeArrangement="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lPZ-HJ-Wji">
-                                        <rect key="frame" x="74.333333333333329" y="237.33333333333331" width="225.33333333333337" height="31"/>
-                                        <subviews>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Run alongside G5 app" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3i8-2m-QFG">
-                                                <rect key="frame" x="0.0" y="0.0" width="168.33333333333334" height="31"/>
-                                                <fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
-                                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="mjL-My-zyc">
-                                                <rect key="frame" x="176.33333333333337" y="0.0" width="51" height="31"/>
-                                                <connections>
-                                                    <action selector="togglePassiveMode:" destination="BYZ-38-t0r" eventType="valueChanged" id="vGB-RZ-H3T"/>
-                                                </connections>
-                                            </switch>
-                                        </subviews>
-                                    </stackView>
-                                    <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" animating="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="v7k-HB-Hm0">
-                                        <rect key="frame" x="177" y="345.33333333333331" width="20" height="20"/>
-                                    </activityIndicatorView>
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="––" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zAF-A7-1Oc">
-                                        <rect key="frame" x="173.66666666666666" y="442.33333333333331" width="27" height="31.333333333333314"/>
-                                        <fontDescription key="fontDescription" style="UICTFontTextStyleTitle1"/>
-                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                        <nil key="highlightedColor"/>
-                                    </label>
-                                    <stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" alignment="center" spacing="20" baselineRelativeArrangement="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VKn-a6-Gbj">
-                                        <rect key="frame" x="74" y="551" width="226" height="30"/>
-                                        <subviews>
-                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="HEQ-Bp-kx7" userLabel="Start">
-                                                <rect key="frame" x="0.0" y="0.0" width="62" height="30"/>
-                                                <state key="normal" title="Start"/>
-                                                <connections>
-                                                    <action selector="start:" destination="BYZ-38-t0r" eventType="touchUpInside" id="CoA-cH-SFe"/>
-                                                </connections>
-                                            </button>
-                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="HYW-Ex-7LC">
-                                                <rect key="frame" x="82" y="0.0" width="62" height="30"/>
-                                                <state key="normal" title="Calibrate"/>
-                                                <connections>
-                                                    <action selector="calibrate:" destination="BYZ-38-t0r" eventType="touchUpInside" id="5Ft-BY-tyB"/>
-                                                </connections>
-                                            </button>
-                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JAM-9K-KeE" userLabel="Stop">
-                                                <rect key="frame" x="164" y="0.0" width="62" height="30"/>
-                                                <state key="normal" title="Stop"/>
-                                                <connections>
-                                                    <action selector="stop:" destination="BYZ-38-t0r" eventType="touchUpInside" id="hWH-qi-m3s"/>
-                                                </connections>
-                                            </button>
-                                        </subviews>
-                                    </stackView>
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Waiting for first reading" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9p7-LX-EMK">
-                                        <rect key="frame" x="-20" y="658" width="0.0" height="18"/>
-                                        <fontDescription key="fontDescription" style="UICTFontTextStyleSubhead"/>
-                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                        <nil key="highlightedColor"/>
-                                    </label>
-                                </subviews>
-                                <constraints>
-                                    <constraint firstItem="NSs-9e-3Sl" firstAttribute="width" secondItem="3i8-2m-QFG" secondAttribute="width" id="drg-Lk-TNg"/>
-                                </constraints>
-                            </stackView>
-                        </subviews>
-                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                        <constraints>
-                            <constraint firstItem="mqJ-p6-sSU" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="20" id="9eQ-5E-KMl"/>
-                            <constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="mqJ-p6-sSU" secondAttribute="bottom" constant="20" id="A1x-Bz-xwd"/>
-                            <constraint firstAttribute="trailingMargin" secondItem="mqJ-p6-sSU" secondAttribute="trailing" id="DSk-No-ziO"/>
-                            <constraint firstItem="mqJ-p6-sSU" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" id="m2Y-0g-gsl"/>
-                        </constraints>
-                    </view>
-                    <connections>
-                        <outlet property="passiveModeEnabledSwitch" destination="mjL-My-zyc" id="GAn-9j-EwV"/>
-                        <outlet property="scanningIndicatorView" destination="v7k-HB-Hm0" id="HgS-lj-R6v"/>
-                        <outlet property="stayConnectedSwitch" destination="DR7-3h-biq" id="cN5-a1-x8J"/>
-                        <outlet property="subtitleLabel" destination="9p7-LX-EMK" id="jTI-sZ-dNb"/>
-                        <outlet property="titleLabel" destination="zAF-A7-1Oc" id="W9K-V8-bIj"/>
-                        <outlet property="transmitterIDField" destination="e0T-ru-tWD" id="MTX-44-H7O"/>
-                    </connections>
-                </viewController>
-                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
-            </objects>
-            <point key="canvasLocation" x="231" y="399"/>
-        </scene>
-    </scenes>
-</document>

+ 0 - 34
Dependencies/CGMBLEKit/CGMBLEKit Example/CommandQueue.swift

@@ -1,34 +0,0 @@
-//
-//  CommandQueue.swift
-//  CGMBLEKit Example
-//
-//  Created by Paul Dickens on 25/03/2018.
-//  Copyright © 2018 LoopKit Authors. All rights reserved.
-//
-
-import Foundation
-import CGMBLEKit
-
-
-class CommandQueue {
-    private var list = Array<Command>()
-    private var lock = os_unfair_lock()
-
-    func enqueue(_ element: Command) {
-        os_unfair_lock_lock(&lock)
-        list.append(element)
-        os_unfair_lock_unlock(&lock)
-    }
-
-    func dequeue() -> Command? {
-        os_unfair_lock_lock(&lock)
-        defer {
-            os_unfair_lock_unlock(&lock)
-        }
-        if !list.isEmpty {
-            return list.removeFirst()
-        } else {
-            return nil
-        }
-    }
-}

+ 0 - 49
Dependencies/CGMBLEKit/CGMBLEKit Example/Info.plist

@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>$(DEVELOPMENT_LANGUAGE)</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>$(PRODUCT_NAME)</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>3.2</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-	<key>LSRequiresIPhoneOS</key>
-	<true/>
-	<key>UIBackgroundModes</key>
-	<array>
-		<string>bluetooth-central</string>
-	</array>
-	<key>UILaunchStoryboardName</key>
-	<string>LaunchScreen</string>
-	<key>UIMainStoryboardFile</key>
-	<string>Main</string>
-	<key>UIRequiredDeviceCapabilities</key>
-	<array>
-		<string>armv7</string>
-	</array>
-	<key>UISupportedInterfaceOrientations</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-	<key>UISupportedInterfaceOrientations~ipad</key>
-	<array>
-		<string>UIInterfaceOrientationPortrait</string>
-		<string>UIInterfaceOrientationPortraitUpsideDown</string>
-		<string>UIInterfaceOrientationLandscapeLeft</string>
-		<string>UIInterfaceOrientationLandscapeRight</string>
-	</array>
-</dict>
-</plist>

+ 0 - 39
Dependencies/CGMBLEKit/CGMBLEKit Example/NSUserDefaults.swift

@@ -1,39 +0,0 @@
-//
-//  NSUserDefaults.swift
-//  xDripG5
-//
-//  Created by Nathan Racklyeft on 11/24/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-extension UserDefaults {
-    var passiveModeEnabled: Bool {
-        get {
-            return bool(forKey: "passiveModeEnabled")
-        }
-        set {
-            set(newValue, forKey: "passiveModeEnabled")
-        }
-    }
-
-    var stayConnected: Bool {
-        get {
-            return object(forKey: "stayConnected") != nil ? bool(forKey: "stayConnected") : true
-        }
-        set {
-            set(newValue, forKey: "stayConnected")
-        }
-    }
-
-    var transmitterID: String {
-        get {
-            return string(forKey: "transmitterID") ?? "500000"
-        }
-        set {
-            set(newValue, forKey: "transmitterID")
-        }
-    }
-}

+ 0 - 200
Dependencies/CGMBLEKit/CGMBLEKit Example/ViewController.swift

@@ -1,200 +0,0 @@
-//
-//  ViewController.swift
-//  xDrip5
-//
-//  Created by Nathan Racklyeft on 10/1/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import UIKit
-import HealthKit
-import CGMBLEKit
-
-class ViewController: UIViewController, TransmitterDelegate, UITextFieldDelegate {
-
-    @IBOutlet weak var titleLabel: UILabel!
-
-    @IBOutlet weak var subtitleLabel: UILabel!
-
-    @IBOutlet weak var passiveModeEnabledSwitch: UISwitch!
-
-    @IBOutlet weak var stayConnectedSwitch: UISwitch!
-
-    @IBOutlet weak var transmitterIDField: UITextField!
-
-    @IBOutlet weak var scanningIndicatorView: UIActivityIndicatorView!
-
-    override func viewDidLoad() {
-        super.viewDidLoad()
-
-        passiveModeEnabledSwitch.isOn = AppDelegate.sharedDelegate.transmitter?.passiveModeEnabled ?? false
-
-        stayConnectedSwitch.isOn = AppDelegate.sharedDelegate.transmitter?.stayConnected ?? false
-
-        transmitterIDField.text = AppDelegate.sharedDelegate.transmitter?.ID
-    }
-
-    override func viewDidAppear(_ animated: Bool) {
-        super.viewDidAppear(animated)
-
-        updateIndicatorViewDisplay()
-    }
-
-    // MARK: - Actions
-
-    func updateIndicatorViewDisplay() {
-        if let transmitter = AppDelegate.sharedDelegate.transmitter, transmitter.isScanning {
-            scanningIndicatorView.startAnimating()
-        } else {
-            scanningIndicatorView.stopAnimating()
-        }
-    }
-
-    @IBAction func toggleStayConnected(_ sender: UISwitch) {
-        AppDelegate.sharedDelegate.transmitter?.stayConnected = sender.isOn
-        UserDefaults.standard.stayConnected = sender.isOn
-
-        updateIndicatorViewDisplay()
-    }
-
-    @IBAction func togglePassiveMode(_ sender: UISwitch) {
-        AppDelegate.sharedDelegate.transmitter?.passiveModeEnabled = sender.isOn
-        UserDefaults.standard.passiveModeEnabled = sender.isOn
-    }
-
-    @IBAction func start(_ sender: UIButton) {
-        let dialog = UIAlertController(title: "Confirm", message: "Start sensor session.", preferredStyle: .alert)
-
-        dialog.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action: UIAlertAction!) in
-            AppDelegate.sharedDelegate.commandQueue.enqueue(.startSensor(at: Date()))
-        }))
-
-        dialog.addAction(UIAlertAction(title: "Cancel", style: .cancel))
-
-        present(dialog, animated: true, completion: nil)
-    }
-
-    @IBAction func calibrate(_ sender: UIButton) {
-        let dialog = UIAlertController(title: "Enter BG", message: "Calibrate sensor.", preferredStyle: .alert)
-
-        let unit = HKUnit.milligramsPerDeciliter
-
-        dialog.addTextField { (textField : UITextField!) in
-            textField.placeholder = unit.unitString
-            textField.keyboardType = .numberPad
-        }
-
-        dialog.addAction(UIAlertAction(title: "Calibrate", style: .default, handler: { (action: UIAlertAction!) in
-            let textField = dialog.textFields![0] as UITextField
-            let minGlucose = HKQuantity(unit: HKUnit.milligramsPerDeciliter, doubleValue: 40)
-            let maxGlucose = HKQuantity(unit: HKUnit.milligramsPerDeciliter, doubleValue: 400)
-
-            if let text = textField.text, let entry = Double(text) {
-                guard entry >= minGlucose.doubleValue(for: unit) && entry <= maxGlucose.doubleValue(for: unit) else {
-                    // TODO: notify the user if the glucose is not in range
-                    return
-                }
-                let glucose = HKQuantity(unit: unit, doubleValue: Double(entry))
-                AppDelegate.sharedDelegate.commandQueue.enqueue(.calibrateSensor(to: glucose, at: Date()))
-            }
-        }))
-
-        dialog.addAction(UIAlertAction(title: "Cancel", style: .cancel))
-
-        present(dialog, animated: true, completion: nil)
-    }
-
-    @IBAction func stop(_ sender: UIButton) {
-        let dialog = UIAlertController(title: "Confirm", message: "Stop sensor session.", preferredStyle: .alert)
-
-        dialog.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action: UIAlertAction!) in
-            AppDelegate.sharedDelegate.commandQueue.enqueue(.stopSensor(at: Date()))
-        }))
-
-        dialog.addAction(UIAlertAction(title: "Cancel", style: .cancel))
-
-        present(dialog, animated: true, completion: nil)
-    }
-
-    // MARK: - UITextFieldDelegate
-
-    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
-        if let text = textField.text {
-            let newString = text.replacingCharacters(in: range.rangeOfString(text), with: string)
-
-            if newString.count > 6 {
-                return false
-            } else if newString.count == 6 {
-                AppDelegate.sharedDelegate.transmitterID = newString
-                textField.text = newString
-
-                textField.resignFirstResponder()
-
-                return false
-            }
-        }
-
-        return true
-    }
-
-    func textFieldDidEndEditing(_ textField: UITextField) {
-        if textField.text?.count != 6 {
-            textField.text = UserDefaults.standard.transmitterID
-        }
-    }
-
-    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
-        return true
-    }
-
-    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
-        return true
-    }
-
-    // MARK: - TransmitterDelegate
-
-    func transmitter(_ transmitter: Transmitter, didError error: Error) {
-        print("Transmitter Error: \(error)")
-        titleLabel.text = NSLocalizedString("Error", comment: "Title displayed during error response")
-
-        subtitleLabel.text = "\(error)"
-    }
-
-    func transmitter(_ transmitter: Transmitter, didRead glucose: Glucose) {
-        let unit = HKUnit.milligramsPerDeciliter
-        if let value = glucose.glucose?.doubleValue(for: unit) {
-            titleLabel.text = "\(value) \(unit.unitString)"
-        } else {
-            titleLabel.text = String(describing: glucose.state)
-        }
-
-
-        let date = glucose.readDate
-        subtitleLabel.text = DateFormatter.localizedString(from: date, dateStyle: .none, timeStyle: .long)
-    }
-
-    func transmitter(_ transmitter: Transmitter, didReadUnknownData data: Data) {
-        titleLabel.text = NSLocalizedString("Unknown Data", comment: "Title displayed during unknown data response")
-        subtitleLabel.text = data.hexadecimalString
-    }
-    
-    func transmitter(_ transmitter: Transmitter, didReadBackfill glucose: [Glucose]) {
-        titleLabel.text = NSLocalizedString("Backfill", comment: "Title displayed during backfill response")
-        subtitleLabel.text = String(describing: glucose.map { $0.glucose })
-    }
-    
-    func transmitterDidConnect(_ transmitter: Transmitter) {
-        // Ignore
-    }
-
-}
-
-
-private extension NSRange {
-    func rangeOfString(_ string: String) -> Range<String.Index> {
-        let startIndex = string.index(string.startIndex, offsetBy: location)
-        let endIndex = string.index(startIndex, offsetBy: length)
-        return startIndex..<endIndex
-    }
-}
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/da.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "Eksempel på CGMBLEKit";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/da.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Backfill";
-
-/* Title displayed during error response */
-"Error" = "Fejl";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Ukendte data";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/da.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Kør sammen med G5-appen";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Sender ID";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Venter på første aflæsning";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Start";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Kalibrer";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stop";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Forbliv forbundet";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/de.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "CGMBLEKit Beispiel";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/de.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Auffüllen";
-
-/* Title displayed during error response */
-"Error" = "Fehler";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Unbekannte Daten";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/de.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Neben G5-App ausführen";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Transmitter-ID";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Warte auf den ersten Wert";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Start";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Kalibrieren";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stop";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Verbunden bleiben";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 8
Dependencies/CGMBLEKit/CGMBLEKit Example/en.lproj/Localizable.strings

@@ -1,8 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Backfill";
-
-/* Title displayed during error response */
-"Error" = "Error";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Unknown Data";

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/en.lproj/Main.strings

@@ -1,27 +0,0 @@
-
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Run alongside G5 app";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Transmitter ID";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Waiting for first reading";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Start";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Calibrate";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stop";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Stay connected";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/es.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "Ejemplo de CGMBLEKit";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/es.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Rellenar";
-
-/* Title displayed during error response */
-"Error" = "Error";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Datos desconocidos";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/es.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Ejecutar junto con la aplicación del G5";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Identificación del transmisor";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Esperando el primero dato";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Comenzar";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Calibrar";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Parar";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Mantenerse conectado";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/fi.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "CGMBLEKit esimerkki";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/fi.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Täyttö";
-
-/* Title displayed during error response */
-"Error" = "Virhe";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Tuntematon tieto";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/fi.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Käytä G5-sovelluksen rinnalla";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Lähettimen tunniste";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Odotetaan ensimmäistä lukemaa";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Aloita";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Kalibroi";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Pysäytä";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Pidä yhdistettynä";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/fr.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "Exemple CGMBLEKit";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/fr.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Récupération des données antérieures";
-
-/* Title displayed during error response */
-"Error" = "Erreur";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Donnée inconnue";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/fr.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Exécuter en même temps que l'application G5";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "ID du transmetteur";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "En attente de la première mesure";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Commencer";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Étalonner";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Arrêter";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Rester connecté";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 1
Dependencies/CGMBLEKit/CGMBLEKit Example/he.lproj/LaunchScreen.strings

@@ -1 +0,0 @@
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/he.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Backfill";
-
-/* Title displayed during error response */
-"Error" = "Error";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Unknown Data";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/he.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Run alongside G5 app";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Transmitter ID";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Waiting for first reading";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Start";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Calibrate";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stop";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Stay connected";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/it.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "esempio CGMBLE kit";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/it.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Riempimento";
-
-/* Title displayed during error response */
-"Error" = "Errore";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Unknown Data";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/it.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Esegui insieme all’app G5";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "ID trasmettitore";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "In attesa della prima lettura";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Avvia";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Calibra";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Interrompi";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Rimani connesso";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/ja.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "埋め戻し";
-
-/* Title displayed during error response */
-"Error" = "エラー";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "不明なデータ";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/ja.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "G5アプリのそばで使用してください";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "トランスミッタ ID";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "最初の読み取りを待っています";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "開始";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "較正";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "停止";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "接続を維持";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/nb.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "CGMBLEKit Eksempel";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/nb.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Hent historikk";
-
-/* Title displayed during error response */
-"Error" = "Feil";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Ukjent data";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/nb.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Kjør parallelt med G5 app";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Sender ID";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Venter på første måling";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Start";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Kalibrer";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stop";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Vær tilkoblet";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/nl.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "CGMBLEKit Voorbeeld";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/nl.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Aanvullen";
-
-/* Title displayed during error response */
-"Error" = "Fout";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Onbekende Gegevens";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/nl.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Gebruik tegelijk met G5 app";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Zenderserienummer";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Wachten op eerste meting";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Start";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Kalibreren";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stop";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Blijf verbonden";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/pl.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "CGMBLEKit Example";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/pl.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Backfill";
-
-/* Title displayed during error response */
-"Error" = "Błąd";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Unknown Data";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/pl.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Uruchom aplikację G5";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "ID nadajnika";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Czekam na pierwszy odczyt";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Start";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Kalibruj";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stop";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Nie rozłączaj się";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/pt-BR.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Preenchimento";
-
-/* Title displayed during error response */
-"Error" = "Erro";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Dados Desconhecidos";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/pt-BR.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Executa em paralelo com o aplicativo G5";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "ID do Transmissor";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Esperando a primeira leitura";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Iniciar";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Calibrar";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Parar";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Permanecer conectado";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/ro.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "Exemplu CGMBLEKit";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/ro.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Completare retroactivă";
-
-/* Title displayed during error response */
-"Error" = "Eroare";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Date necunoscute";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/ro.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Rulează împreună cu aplicația G5";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "ID transmițător";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Se așteaptă prima citire";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Pornește";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Calibrează";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stop";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Păstrează conexiunea";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/ru.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "Пример CGMBLEKit";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/ru.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Заполнение данными";
-
-/* Title displayed during error response */
-"Error" = "Ошибка";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Неизвестные данные";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/ru.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Запустить совместно с приложением G5";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "ID трансмиттера";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Ожидание первого показания";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Начать";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Калибровка";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Стоп";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Оставайтесь подключенными";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/sk.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "Príklad CGMBLEKit";
-

+ 0 - 6
Dependencies/CGMBLEKit/CGMBLEKit Example/sk.lproj/Localizable.strings

@@ -1,6 +0,0 @@
-/* Title displayed during error response */
-"Error" = "Chyba";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Neznáme dáta";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/sk.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Beží spolu s aplikáciou G5";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "ID vysielača";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Čaká sa na prvé načítanie";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Štart";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Kalibrovať";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stop";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Zostať pripojený";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/sv.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "CGMBLEKit Example";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/sv.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Fyller i historisk data";
-
-/* Title displayed during error response */
-"Error" = "Fel";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Okänd data";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/sv.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Kör samtidigt som G5-appen";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Sändari-ID";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Väntar på första värdet";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Starta";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Kalibrera";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Stoppa";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Fortsätt att vara ansluten";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 3
Dependencies/CGMBLEKit/CGMBLEKit Example/tr.lproj/InfoPlist.strings

@@ -1,3 +0,0 @@
-/* Bundle name */
-"CFBundleName" = "CGMBLEKit Örneği";
-

+ 0 - 1
Dependencies/CGMBLEKit/CGMBLEKit Example/tr.lproj/LaunchScreen.strings

@@ -1 +0,0 @@
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/tr.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Dolgu";
-
-/* Title displayed during error response */
-"Error" = "Hata";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Bilinmeyen Veri";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/tr.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "G5 uygulamasıyla birlikte çalıştırın";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Verici Kimliği";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "İlk okuma bekleniyor..";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Başlat";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Kalibrasyon";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Durdur";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Bağlı kalın";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/vi.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "Lấp đầy";
-
-/* Title displayed during error response */
-"Error" = "Lỗi";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "Không nhận biết dữ liệu";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/vi.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "Chạy song song cùng ứng dụng G5";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "Số ID của Transmitter";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "Đang đợi đọc kết quả đầu tiên";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "Bắt đầu";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "Hiệu chỉnh";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "Dừng lại";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "Giữ kết  nối";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

+ 0 - 9
Dependencies/CGMBLEKit/CGMBLEKit Example/zh-Hans.lproj/Localizable.strings

@@ -1,9 +0,0 @@
-/* Title displayed during backfill response */
-"Backfill" = "数据回填";
-
-/* Title displayed during error response */
-"Error" = "错误";
-
-/* Title displayed during unknown data response */
-"Unknown Data" = "未知数据";
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit Example/zh-Hans.lproj/Main.strings

@@ -1,27 +0,0 @@
-/* Class = "UILabel"; text = "Run alongside G5 app"; ObjectID = "3i8-2m-QFG"; */
-"3i8-2m-QFG.text" = "与G5 App同时使用";
-
-/* Class = "UILabel"; text = "Transmitter ID"; ObjectID = "5y6-vU-qC3"; */
-"5y6-vU-qC3.text" = "发射器编号";
-
-/* Class = "UILabel"; text = "Waiting for first reading"; ObjectID = "9p7-LX-EMK"; */
-"9p7-LX-EMK.text" = "输入第一个校准值";
-
-/* Class = "UITextField"; text = "500000"; ObjectID = "e0T-ru-tWD"; */
-"e0T-ru-tWD.text" = "500000";
-
-/* Class = "UIButton"; normalTitle = "Start"; ObjectID = "HEQ-Bp-kx7"; */
-"HEQ-Bp-kx7.normalTitle" = "启动";
-
-/* Class = "UIButton"; normalTitle = "Calibrate"; ObjectID = "HYW-Ex-7LC"; */
-"HYW-Ex-7LC.normalTitle" = "校准";
-
-/* Class = "UIButton"; normalTitle = "Stop"; ObjectID = "JAM-9K-KeE"; */
-"JAM-9K-KeE.normalTitle" = "停止";
-
-/* Class = "UILabel"; text = "Stay connected"; ObjectID = "NSs-9e-3Sl"; */
-"NSs-9e-3Sl.text" = "保持连接";
-
-/* Class = "UILabel"; text = "––"; ObjectID = "zAF-A7-1Oc"; */
-"zAF-A7-1Oc.text" = "––";
-

Plik diff jest za duży
+ 0 - 2493
Dependencies/CGMBLEKit/CGMBLEKit.xcodeproj/project.pbxproj


+ 0 - 7
Dependencies/CGMBLEKit/CGMBLEKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
-   version = "1.0">
-   <FileRef
-      location = "self:">
-   </FileRef>
-</Workspace>

+ 0 - 8
Dependencies/CGMBLEKit/CGMBLEKit.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IDEDidComputeMac32BitWarning</key>
-	<true/>
-</dict>
-</plist>

+ 0 - 8
Dependencies/CGMBLEKit/CGMBLEKit.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
-	<false/>
-</dict>
-</plist>

+ 0 - 19
Dependencies/CGMBLEKit/CGMBLEKit/AESCrypt.h

@@ -1,19 +0,0 @@
-//
-//  AESCrypt.h
-//  xDripG5
-//
-//  Created by Nate Racklyeft on 6/17/16.
-//  Copyright © 2016 Nathan Racklyeft. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-@interface AESCrypt : NSObject
-
-NS_ASSUME_NONNULL_BEGIN
-
-+ (nullable NSData *)encryptData:(NSData *)data usingKey:(NSData *)key error:(NSError **)error;
-
-NS_ASSUME_NONNULL_END
-
-@end

+ 0 - 33
Dependencies/CGMBLEKit/CGMBLEKit/AESCrypt.m

@@ -1,33 +0,0 @@
-//
-//  AESCrypt.m
-//  xDripG5
-//
-//  Created by Nate Racklyeft on 6/17/16.
-//  Copyright © 2016 Nathan Racklyeft. All rights reserved.
-//
-
-#import "AESCrypt.h"
-#import <CommonCrypto/CommonCryptor.h>
-
-@implementation AESCrypt
-
-+ (NSData *)encryptData:(NSData *)data usingKey:(NSData *)key error:(NSError * _Nullable __autoreleasing *)error
-{
-    NSMutableData *dataOut = [NSMutableData dataWithLength: data.length + kCCBlockSizeAES128];
-
-    CCCryptorStatus status = CCCrypt(kCCEncrypt,
-                                     kCCAlgorithmAES,
-                                     kCCOptionECBMode,
-                                     key.bytes,
-                                     key.length,
-                                     NULL,
-                                     data.bytes,
-                                     data.length,
-                                     dataOut.mutableBytes,
-                                     dataOut.length,
-                                     NULL);
-
-    return status == kCCSuccess ? dataOut : nil;
-}
-
-@end

+ 0 - 41
Dependencies/CGMBLEKit/CGMBLEKit/Base.lproj/Localizable.strings

@@ -1,41 +0,0 @@
-/* CGM display title */
-"Dexcom G5" = "Dexcom G5";
-
-/* CGM display title */
-"Dexcom G6" = "Dexcom G6";
-
-/* Error description for unreliable state */
-"Glucose data is unavailable" = "Glucose data is unavailable";
-
-/* Describes a low battery */
-"Low Battery" = "Low Battery";
-
-/* Describes a functioning transmitter */
-"OK" = "OK";
-
-/* invlid config error description */
-"Peripheral command was invalid" = "Peripheral command was invalid";
-
-/* Timeout error description */
-"Peripheral did not respond in time" = "Peripheral did not respond in time";
-
-/* Not ready error description */
-"Peripheral isnʼt connected" = "Peripheral isnʼt connected";
-
-/* The description of sensor calibration state when sensor calibration is ok. */
-"Sensor calibration is OK" = "Sensor calibration is OK";
-
-/* The description of sensor calibration state when raw value is unknown. (1: missing data details) */
-"Sensor is in unknown state %1$d" = "Sensor is in unknown state %1$d";
-
-/* The description of sensor calibration state when sensor sensor is stopped. */
-"Sensor is stopped" = "Sensor is stopped";
-
-/* The description of sensor calibration state when sensor sensor is warming up. */
-"Sensor is warming up" = "Sensor is warming up";
-
-/* The description of sensor calibration state when sensor needs calibration. */
-"Sensor needs calibration" = "Sensor needs calibration";
-
-/* Error description */
-"Unknown characteristic" = "Unknown characteristic";

+ 0 - 350
Dependencies/CGMBLEKit/CGMBLEKit/BluetoothManager.swift

@@ -1,350 +0,0 @@
-//
-//  BluetoothManager.swift
-//  xDripG5
-//
-//  Created by Nathan Racklyeft on 10/1/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import CoreBluetooth
-import Foundation
-import os.log
-
-
-protocol BluetoothManagerDelegate: AnyObject {
-
-    /**
-     Tells the delegate that the bluetooth manager has finished connecting to and discovering all required services of its peripheral, or that it failed to do so
-
-     - parameter manager: The bluetooth manager
-     - parameter peripheralManager: The peripheral manager
-     - parameter error:   An error describing why bluetooth setup failed
-     */
-    func bluetoothManager(_ manager: BluetoothManager, peripheralManager: PeripheralManager, isReadyWithError error: Error?)
-
-    /**
-     Asks the delegate whether the discovered or restored peripheral should be connected
-
-     - parameter manager:    The bluetooth manager
-     - parameter peripheral: The found peripheral
-
-     - returns: True if the peripheral should connect
-     */
-    func bluetoothManager(_ manager: BluetoothManager, shouldConnectPeripheral peripheral: CBPeripheral) -> Bool
-
-    /// Informs the delegate that the bluetooth manager received new data in the control characteristic
-    ///
-    /// - Parameters:
-    ///   - manager: The bluetooth manager
-    ///   - peripheralManager: The peripheral manager
-    ///   - response: The data received on the control characteristic
-    func bluetoothManager(_ manager: BluetoothManager, peripheralManager: PeripheralManager, didReceiveControlResponse response: Data)
-
-    /// Informs the delegate that the bluetooth manager received new data in the backfill characteristic
-    ///
-    /// - Parameters:
-    ///   - manager: The bluetooth manager
-    ///   - response: The data received on the backfill characteristic
-    func bluetoothManager(_ manager: BluetoothManager, didReceiveBackfillResponse response: Data)
-
-    /// Informs the delegate that the bluetooth manager received new data in the authentication characteristic
-    ///
-    /// - Parameters:
-    ///   - manager: The bluetooth manager
-    ///   - peripheralManager: The peripheral manager
-    ///   - response: The data received on the authentication characteristic
-    func bluetoothManager(_ manager: BluetoothManager, peripheralManager: PeripheralManager, didReceiveAuthenticationResponse response: Data)
-}
-
-
-class BluetoothManager: NSObject {
-
-    var stayConnected: Bool {
-        get {
-            return lockedStayConnected.value
-        }
-        set {
-            lockedStayConnected.value = newValue
-        }
-    }
-    private let lockedStayConnected: Locked<Bool> = Locked(true)
-
-    weak var delegate: BluetoothManagerDelegate?
-
-    private let log = OSLog(category: "BluetoothManager")
-
-    /// Isolated to `managerQueue`
-    private var manager: CBCentralManager! = nil
-
-    /// Isolated to `managerQueue`
-    private var peripheral: CBPeripheral? {
-        get {
-            return peripheralManager?.peripheral
-        }
-        set {
-            guard let peripheral = newValue else {
-                peripheralManager = nil
-                return
-            }
-
-            if let peripheralManager = peripheralManager {
-                peripheralManager.peripheral = peripheral
-            } else {
-                peripheralManager = PeripheralManager(
-                    peripheral: peripheral,
-                    configuration: .dexcomG5,
-                    centralManager: manager
-                )
-            }
-        }
-    }
-
-    var peripheralIdentifier: UUID? {
-        get {
-            return lockedPeripheralIdentifier.value
-        }
-        set {
-            lockedPeripheralIdentifier.value = newValue
-        }
-    }
-    private let lockedPeripheralIdentifier: Locked<UUID?> = Locked(nil)
-
-    /// Isolated to `managerQueue`
-    private var peripheralManager: PeripheralManager? {
-        didSet {
-            oldValue?.delegate = nil
-            peripheralManager?.delegate = self
-
-            peripheralIdentifier = peripheralManager?.peripheral.identifier
-        }
-    }
-
-    // MARK: - Synchronization
-
-    private let managerQueue = DispatchQueue(label: "com.loudnate.CGMBLEKit.bluetoothManagerQueue", qos: .unspecified)
-
-    override init() {
-        super.init()
-
-        managerQueue.sync {
-            self.manager = CBCentralManager(delegate: self, queue: managerQueue, options: [CBCentralManagerOptionRestoreIdentifierKey: "com.loudnate.CGMBLEKit"])
-        }
-    }
-
-    // MARK: - Actions
-
-    func scanForPeripheral() {
-        dispatchPrecondition(condition: .notOnQueue(managerQueue))
-
-        managerQueue.sync {
-            self.managerQueue_scanForPeripheral()
-        }
-    }
-
-    func disconnect() {
-        dispatchPrecondition(condition: .notOnQueue(managerQueue))
-
-        managerQueue.sync {
-            if manager.isScanning {
-                manager.stopScan()
-            }
-
-            if let peripheral = peripheral {
-                manager.cancelPeripheralConnection(peripheral)
-            }
-        }
-    }
-
-    private func managerQueue_scanForPeripheral() {
-        dispatchPrecondition(condition: .onQueue(managerQueue))
-
-        guard manager.state == .poweredOn else {
-            return
-        }
-
-        let currentState = peripheral?.state ?? .disconnected
-        guard currentState != .connected else {
-            return
-        }
-
-        if let peripheralID = peripheralIdentifier, let peripheral = manager.retrievePeripherals(withIdentifiers: [peripheralID]).first {
-            log.debug("Re-connecting to known peripheral %{public}@", peripheral.identifier.uuidString)
-            self.peripheral = peripheral
-            self.manager.connect(peripheral)
-        } else if let peripheral = manager.retrieveConnectedPeripherals(withServices: [
-                TransmitterServiceUUID.advertisement.cbUUID,
-                TransmitterServiceUUID.cgmService.cbUUID
-            ]).first,
-            delegate == nil || delegate!.bluetoothManager(self, shouldConnectPeripheral: peripheral)
-        {
-            log.debug("Found system-connected peripheral: %{public}@", peripheral.identifier.uuidString)
-            self.peripheral = peripheral
-            self.manager.connect(peripheral)
-        } else {
-            log.debug("Scanning for peripherals")
-            manager.scanForPeripherals(withServices: [
-                    TransmitterServiceUUID.advertisement.cbUUID
-                ],
-                options: nil
-            )
-        }
-    }
-
-    /**
-    
-     Persistent connections don't seem to work with the transmitter shutoff: The OS won't re-wake the
-     app unless it's scanning.
-     
-     The sleep gives the transmitter time to shut down, but keeps the app running.
-
-     */
-    fileprivate func scanAfterDelay() {
-        DispatchQueue.global(qos: .utility).async {
-            Thread.sleep(forTimeInterval: 2)
-
-            self.scanForPeripheral()
-        }
-    }
-
-    // MARK: - Accessors
-
-    var isScanning: Bool {
-        dispatchPrecondition(condition: .notOnQueue(managerQueue))
-
-        var isScanning = false
-        managerQueue.sync {
-            isScanning = manager.isScanning
-        }
-        return isScanning
-    }
-
-    override var debugDescription: String {
-        return [
-            "## BluetoothManager",
-            peripheralManager.map(String.init(reflecting:)) ?? "No peripheral",
-        ].joined(separator: "\n")
-    }
-}
-
-
-extension BluetoothManager: CBCentralManagerDelegate {
-    func centralManagerDidUpdateState(_ central: CBCentralManager) {
-        dispatchPrecondition(condition: .onQueue(managerQueue))
-
-        peripheralManager?.centralManagerDidUpdateState(central)
-        log.default("%{public}@: %{public}@", #function, String(describing: central.state.rawValue))
-
-        switch central.state {
-        case .poweredOn:
-            managerQueue_scanForPeripheral()
-        case .resetting, .poweredOff, .unauthorized, .unknown, .unsupported:
-            fallthrough
-        @unknown default:
-            if central.isScanning {
-                central.stopScan()
-            }
-        }
-    }
-
-    func centralManager(_ central: CBCentralManager, willRestoreState dict: [String : Any]) {
-        dispatchPrecondition(condition: .onQueue(managerQueue))
-
-        if let peripherals = dict[CBCentralManagerRestoredStatePeripheralsKey] as? [CBPeripheral] {
-            for peripheral in peripherals {
-                if delegate == nil || delegate!.bluetoothManager(self, shouldConnectPeripheral: peripheral) {
-                    log.default("Restoring peripheral from state: %{public}@", peripheral.identifier.uuidString)
-                    self.peripheral = peripheral
-                }
-            }
-        }
-    }
-
-    func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
-        dispatchPrecondition(condition: .onQueue(managerQueue))
-
-        log.info("%{public}@: %{public}@", #function, peripheral)
-        if delegate == nil || delegate!.bluetoothManager(self, shouldConnectPeripheral: peripheral) {
-            self.peripheral = peripheral
-
-            central.connect(peripheral, options: nil)
-
-            central.stopScan()
-        }
-    }
-
-    func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
-        dispatchPrecondition(condition: .onQueue(managerQueue))
-
-        log.default("%{public}@: %{public}@", #function, peripheral)
-        if central.isScanning {
-            central.stopScan()
-        }
-
-        peripheralManager?.centralManager(central, didConnect: peripheral)
-
-        if case .poweredOn = manager.state, case .connected = peripheral.state, let peripheralManager = peripheralManager {
-            self.delegate?.bluetoothManager(self, peripheralManager: peripheralManager, isReadyWithError: nil)
-        }
-    }
-
-    func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
-        dispatchPrecondition(condition: .onQueue(managerQueue))
-        log.default("%{public}@: %{public}@", #function, peripheral)
-        // Ignore errors indicating the peripheral disconnected remotely, as that's expected behavior
-        if let error = error as NSError?, CBError(_nsError: error).code != .peripheralDisconnected {
-            log.error("%{public}@: %{public}@", #function, error)
-            if let peripheralManager = peripheralManager {
-                self.delegate?.bluetoothManager(self, peripheralManager: peripheralManager, isReadyWithError: error)
-            }
-        }
-
-        if stayConnected {
-            scanAfterDelay()
-        }
-    }
-
-    func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
-        dispatchPrecondition(condition: .onQueue(managerQueue))
-
-        log.error("%{public}@: %{public}@", #function, String(describing: error))
-        if let error = error, let peripheralManager = peripheralManager {
-            self.delegate?.bluetoothManager(self, peripheralManager: peripheralManager, isReadyWithError: error)
-        }
-
-        if stayConnected {
-            scanAfterDelay()
-        }
-    }
-}
-
-
-extension BluetoothManager: PeripheralManagerDelegate {
-    func peripheralManager(_ manager: PeripheralManager, didReadRSSI RSSI: NSNumber, error: Error?) {
-        
-    }
-
-    func peripheralManagerDidUpdateName(_ manager: PeripheralManager) {
-
-    }
-
-    func completeConfiguration(for manager: PeripheralManager) throws {
-
-    }
-
-    func peripheralManager(_ manager: PeripheralManager, didUpdateValueFor characteristic: CBCharacteristic) {
-        guard let value = characteristic.value else {
-            return
-        }
-
-        switch CGMServiceCharacteristicUUID(rawValue: characteristic.uuid.uuidString.uppercased()) {
-        case .none, .communication?:
-            return
-        case .control?:
-            self.delegate?.bluetoothManager(self, peripheralManager: manager, didReceiveControlResponse: value)
-        case .backfill?:
-            self.delegate?.bluetoothManager(self, didReceiveBackfillResponse: value)
-        case .authentication?:
-            self.delegate?.bluetoothManager(self, peripheralManager: manager, didReceiveAuthenticationResponse: value)
-        }
-    }
-}

+ 0 - 87
Dependencies/CGMBLEKit/CGMBLEKit/BluetoothServices.swift

@@ -1,87 +0,0 @@
-//
-//  BluetoothServices.swift
-//  xDripG5
-//
-//  Created by Nathan Racklyeft on 10/16/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import CoreBluetooth
-
-/*
-G5 BLE attributes, retrieved using LightBlue on 2015-10-01
-
-These are the G4 details, for reference:
-https://github.com/StephenBlackWasAlreadyTaken/xDrip/blob/af20e32652d19aa40becc1a39f6276cad187fdce/app/src/main/java/com/eveningoutpost/dexdrip/UtilityModels/DexShareAttributes.java
-*/
-
-protocol CBUUIDRawValue: RawRepresentable {}
-extension CBUUIDRawValue where RawValue == String {
-    var cbUUID: CBUUID {
-        return CBUUID(string: rawValue)
-    }
-}
-
-
-enum TransmitterServiceUUID: String, CBUUIDRawValue {
-    case deviceInfo = "180A"
-    case advertisement = "FEBC"
-    case cgmService = "F8083532-849E-531C-C594-30F1F86A4EA5"
-
-    case serviceB = "F8084532-849E-531C-C594-30F1F86A4EA5"
-}
-
-
-enum DeviceInfoCharacteristicUUID: String, CBUUIDRawValue {
-    // Read
-    // "DexcomUN"
-    case manufacturerNameString = "2A29"
-}
-
-
-enum CGMServiceCharacteristicUUID: String, CBUUIDRawValue {
-
-    // Read/Notify
-    case communication = "F8083533-849E-531C-C594-30F1F86A4EA5"
-
-    // Write/Indicate
-    case control = "F8083534-849E-531C-C594-30F1F86A4EA5"
-
-    // Write/Indicate
-    case authentication = "F8083535-849E-531C-C594-30F1F86A4EA5"
-
-    // Read/Write/Notify
-    case backfill = "F8083536-849E-531C-C594-30F1F86A4EA5"
-
-//    // Unknown attribute present on older G6 transmitters
-//    case unknown1 = "F8083537-849E-531C-C594-30F1F86A4EA5"
-//
-//    // Updated G6 characteristic (read/notify)
-//    case unknown2 = "F8083538-849E-531C-C594-30F1F86A4EA5"
-}
-
-
-enum ServiceBCharacteristicUUID: String, CBUUIDRawValue {
-    // Write/Indicate
-    case characteristicE = "F8084533-849E-531C-C594-30F1F86A4EA5"
-    // Read/Write/Notify
-    case characteristicF = "F8084534-849E-531C-C594-30F1F86A4EA5"
-}
-
-
-extension PeripheralManager.Configuration {
-    static var dexcomG5: PeripheralManager.Configuration {
-        return PeripheralManager.Configuration(
-            serviceCharacteristics: [
-                TransmitterServiceUUID.cgmService.cbUUID: [
-                    CGMServiceCharacteristicUUID.communication.cbUUID,
-                    CGMServiceCharacteristicUUID.authentication.cbUUID,
-                    CGMServiceCharacteristicUUID.control.cbUUID,
-                    CGMServiceCharacteristicUUID.backfill.cbUUID,
-                ]
-            ],
-            notifyingCharacteristics: [:],
-            valueUpdateMacros: [:]
-        )
-    }
-}

+ 0 - 45
Dependencies/CGMBLEKit/CGMBLEKit/CBPeripheral.swift

@@ -1,45 +0,0 @@
-//
-//  CBPeripheral.swift
-//  xDripG5
-//
-//  Copyright © 2017 LoopKit Authors. All rights reserved.
-//
-
-import CoreBluetooth
-
-
-// MARK: - Discovery helpers.
-extension CBPeripheral {
-    func servicesToDiscover(from serviceUUIDs: [CBUUID]) -> [CBUUID] {
-        let knownServiceUUIDs = services?.compactMap({ $0.uuid }) ?? []
-        return serviceUUIDs.filter({ !knownServiceUUIDs.contains($0) })
-    }
-
-    func characteristicsToDiscover(from characteristicUUIDs: [CBUUID], for service: CBService) -> [CBUUID] {
-        let knownCharacteristicUUIDs = service.characteristics?.compactMap({ $0.uuid }) ?? []
-        return characteristicUUIDs.filter({ !knownCharacteristicUUIDs.contains($0) })
-    }
-}
-
-
-extension Collection where Element: CBAttribute {
-    func itemWithUUID(_ uuid: CBUUID) -> Element? {
-        for attribute in self {
-            if attribute.uuid == uuid {
-                return attribute
-            }
-        }
-
-        return nil
-    }
-
-    func itemWithUUIDString(_ uuidString: String) -> Element? {
-        for attribute in self {
-            if attribute.uuid.uuidString == uuidString {
-                return attribute
-            }
-        }
-
-        return nil
-    }
-}

+ 0 - 17
Dependencies/CGMBLEKit/CGMBLEKit/CGMBLEKit.h

@@ -1,17 +0,0 @@
-//
-//  CGMBLEKit.h
-//  xDripG5
-//
-//  Created by Nathan Racklyeft on 12/30/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <CGMBLEKit/AESCrypt.h>
-
-//! Project version number for CGMBLEKIt.
-FOUNDATION_EXPORT double CGMBLEKitVersionNumber;
-
-//! Project version string for CGMBLEKit.
-FOUNDATION_EXPORT const unsigned char CGMBLEKitVersionString[];
-

+ 0 - 27
Dependencies/CGMBLEKit/CGMBLEKit/Calibration.swift

@@ -1,27 +0,0 @@
-//
-//  Calibration.swift
-//  xDripG5
-//
-//  Created by Paul Dickens on 17/03/2018.
-//  Copyright © 2018 LoopKit Authors. All rights reserved.
-//
-
-import Foundation
-import HealthKit
-
-
-public struct Calibration {
-    init?(calibrationMessage: CalibrationDataRxMessage, activationDate: Date) {
-        guard calibrationMessage.glucose > 0 else {
-            return nil
-        }
-
-        let unit = HKUnit.milligramsPerDeciliter
-
-        glucose = HKQuantity(unit: unit, doubleValue: Double(calibrationMessage.glucose))
-        date = activationDate.addingTimeInterval(TimeInterval(calibrationMessage.timestamp))
-    }
-
-    public let glucose: HKQuantity
-    public let date: Date
-}

+ 0 - 106
Dependencies/CGMBLEKit/CGMBLEKit/CalibrationState.swift

@@ -1,106 +0,0 @@
-//
-//  CalibrationState.swift
-//  xDripG5
-//
-//  Created by Nate Racklyeft on 8/6/16.
-//  Copyright © 2016 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-public enum CalibrationState: RawRepresentable {
-    public typealias RawValue = UInt8
-
-    public enum State: RawValue {
-        case stopped = 1
-        case warmup = 2
-
-        case needFirstInitialCalibration = 4
-        case needSecondInitialCalibration = 5
-        case ok = 6
-        case needCalibration7 = 7
-        case calibrationError8 = 8
-        case calibrationError9 = 9
-        case calibrationError10 = 10
-        case sensorFailure11 = 11
-        case sensorFailure12 = 12
-        case calibrationError13 = 13
-        case needCalibration14 = 14
-        case sessionFailure15 = 15
-        case sessionFailure16 = 16
-        case sessionFailure17 = 17
-        case questionMarks = 18
-    }
-
-    case known(State)
-    case unknown(RawValue)
-
-    public init(rawValue: RawValue) {
-        guard let state = State(rawValue: rawValue) else {
-            self = .unknown(rawValue)
-            return
-        }
-
-        self = .known(state)
-    }
-
-    public var rawValue: RawValue {
-        switch self {
-        case .known(let state):
-            return state.rawValue
-        case .unknown(let rawValue):
-            return rawValue
-        }
-    }
-
-    public var hasReliableGlucose: Bool {
-        guard case .known(let state) = self else {
-            return false
-        }
-
-        switch state {
-        case .stopped,
-             .warmup,
-             .needFirstInitialCalibration,
-             .needSecondInitialCalibration,
-             .calibrationError8,
-             .calibrationError9,
-             .calibrationError10,
-             .sensorFailure11,
-             .sensorFailure12,
-             .calibrationError13,
-             .sessionFailure15,
-             .sessionFailure16,
-             .sessionFailure17,
-             .questionMarks:
-            return false
-        case .ok, .needCalibration7, .needCalibration14:
-            return true
-        }
-    }
-}
-
-extension CalibrationState: Equatable {
-    public static func ==(lhs: CalibrationState, rhs: CalibrationState) -> Bool {
-        switch (lhs, rhs) {
-        case (.known(let lhs), .known(let rhs)):
-            return lhs == rhs
-        case (.unknown(let lhs), .unknown(let rhs)):
-            return lhs == rhs
-        default:
-            return false
-        }
-    }
-}
-
-extension CalibrationState: CustomStringConvertible {
-    public var description: String {
-        switch self {
-        case .known(let state):
-            return String(describing: state)
-        case .unknown(let value):
-            return ".unknown(\(value))"
-        }
-    }
-}

+ 0 - 79
Dependencies/CGMBLEKit/CGMBLEKit/Command.swift

@@ -1,79 +0,0 @@
-//
-//  Command.swift
-//  xDripG5
-//
-//  Created by Paul Dickens on 22/03/2018.
-//  Copyright © 2018 LoopKit Authors. All rights reserved.
-//
-
-import Foundation
-import HealthKit
-
-
-public enum Command: RawRepresentable {
-    public typealias RawValue = [String: Any]
-
-    case startSensor(at: Date)
-    case stopSensor(at: Date)
-    case calibrateSensor(to: HKQuantity, at: Date)
-    case resetTransmitter
-
-    public init?(rawValue: RawValue) {
-        guard let action = rawValue["action"] as? Action.RawValue else {
-            return nil
-        }
-
-        let date = rawValue["date"] as? Date
-
-        switch Action(rawValue: action) {
-        case .startSensor?:
-            guard let date = date else {
-                return nil
-            }
-            self = .startSensor(at: date)
-        case .stopSensor?:
-            guard let date = date else {
-                return nil
-            }
-            self = .stopSensor(at: date)
-        case .calibrateSensor?:
-            guard let date = date, let glucose = rawValue["glucose"] as? HKQuantity else {
-                return nil
-            }
-            self = .calibrateSensor(to: glucose, at: date)
-        case .resetTransmitter?:
-            self = .resetTransmitter
-        case .none:
-            return nil
-        }
-    }
-
-    private enum Action: Int {
-        case startSensor, stopSensor, calibrateSensor, resetTransmitter
-    }
-
-    public var rawValue: RawValue {
-        switch self {
-        case .startSensor(let date):
-            return [
-                "action": Action.startSensor.rawValue,
-                "date": date
-            ]
-        case .stopSensor(let date):
-            return [
-                "action": Action.stopSensor.rawValue,
-                "date": date
-            ]
-        case .calibrateSensor(let glucose, let date):
-            return [
-                "action": Action.calibrateSensor.rawValue,
-                "date": date,
-                "glucose": glucose
-            ]
-        case .resetTransmitter:
-            return [
-                "action": Action.resetTransmitter.rawValue
-            ]
-        }
-    }
-}

+ 0 - 85
Dependencies/CGMBLEKit/CGMBLEKit/Glucose+SensorDisplayable.swift

@@ -1,85 +0,0 @@
-//
-//  GlucoseRxMessage.swift
-//  Loop
-//
-//  Created by Nathan Racklyeft on 5/30/16.
-//  Copyright © 2016 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-import LoopKit
-
-
-extension Glucose: GlucoseDisplayable {
-    public var isStateValid: Bool {
-        return state == .known(.ok) && status == .ok
-    }
-
-    public var stateDescription: String {
-        var messages = [String]()
-
-        switch state {
-        case .known(.ok):
-            break  // Suppress the "OK" message
-        default:
-            messages.append(state.localizedDescription)
-        }
-
-        switch self.status {
-        case .ok:
-            if messages.isEmpty {
-                messages.append(status.localizedDescription)
-            } else {
-                break  // Suppress the "OK" message
-            }
-        case .lowBattery, .unknown:
-            messages.append(status.localizedDescription)
-        }
-
-        return messages.joined(separator: ". ")
-    }
-
-    public var trendType: GlucoseTrend? {
-        guard trend < Int(Int8.max) else {
-            return nil
-        }
-
-        switch trend {
-        case let x where x <= -30:
-            return .downDownDown
-        case let x where x <= -20:
-            return .downDown
-        case let x where x <= -10:
-            return .down
-        case let x where x < 10:
-            return .flat
-        case let x where x < 20:
-            return .up
-        case let x where x < 30:
-            return .upUp
-        default:
-            return .upUpUp
-        }
-    }
-
-    public var isLocal: Bool {
-        return true
-    }
-    
-    // TODO Placeholders. This functionality will come with LOOP-1311
-    public var glucoseRangeCategory: GlucoseRangeCategory? {
-        return nil
-    }
-}
-
-extension Glucose {
-    public var condition: GlucoseCondition? {
-        if glucoseMessage.glucose < GlucoseLimits.minimum {
-            return .belowRange
-        } else if glucoseMessage.glucose > GlucoseLimits.maximum {
-            return .aboveRange
-        } else {
-            return nil
-        }
-    }
-}

+ 0 - 111
Dependencies/CGMBLEKit/CGMBLEKit/Glucose.swift

@@ -1,111 +0,0 @@
-//
-//  Glucose.swift
-//  xDripG5
-//
-//  Created by Nate Racklyeft on 8/6/16.
-//  Copyright © 2016 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-import HealthKit
-
-enum GlucoseLimits {
-    static var minimum: UInt16 = 40
-    static var maximum: UInt16 = 400
-}
-
-public struct Glucose {
-    let glucoseMessage: GlucoseSubMessage
-    let timeMessage: TransmitterTimeRxMessage
-
-    init(
-        transmitterID: String,
-        glucoseMessage: GlucoseRxMessage,
-        timeMessage: TransmitterTimeRxMessage,
-        calibrationMessage: CalibrationDataRxMessage? = nil,
-        activationDate: Date
-    ) {
-        self.init(
-            transmitterID: transmitterID,
-            status: glucoseMessage.status,
-            glucoseMessage: glucoseMessage.glucose,
-            timeMessage: timeMessage,
-            calibrationMessage: calibrationMessage,
-            activationDate: activationDate
-        )
-    }
-
-    init(
-        transmitterID: String,
-        status: UInt8,
-        glucoseMessage: GlucoseSubMessage,
-        timeMessage: TransmitterTimeRxMessage,
-        calibrationMessage: CalibrationDataRxMessage? = nil,
-        activationDate: Date
-    ) {
-        self.transmitterID = transmitterID
-        self.glucoseMessage = glucoseMessage
-        self.timeMessage = timeMessage
-        self.status = TransmitterStatus(rawValue: status)
-        self.activationDate = activationDate
-
-        sessionStartDate = activationDate.addingTimeInterval(TimeInterval(timeMessage.sessionStartTime))
-        sessionExpDate = activationDate.addingTimeInterval(TimeInterval(timeMessage.sessionStartTime) + (10*24*60*60))
-        readDate = activationDate.addingTimeInterval(TimeInterval(glucoseMessage.timestamp))
-        lastCalibration = calibrationMessage != nil ? Calibration(calibrationMessage: calibrationMessage!, activationDate: activationDate) : nil
-    }
-
-    // MARK: - Transmitter Info
-    public let transmitterID: String
-    public let status: TransmitterStatus
-    public let activationDate: Date
-    public let sessionStartDate: Date
-    public let sessionExpDate: Date
-
-    // MARK: - Glucose Info
-    public let lastCalibration: Calibration?
-    public let readDate: Date
-
-    public var isDisplayOnly: Bool {
-        return glucoseMessage.glucoseIsDisplayOnly
-    }
-
-    public var glucose: HKQuantity? {
-        guard state.hasReliableGlucose && glucoseMessage.glucose >= 39 else { 
-            return nil
-        }
-
-        let unit = HKUnit.milligramsPerDeciliter
-
-        return HKQuantity(unit: unit, doubleValue: Double(min(max(glucoseMessage.glucose, GlucoseLimits.minimum), GlucoseLimits.maximum)))
-    }
-
-    public var state: CalibrationState {
-        return CalibrationState(rawValue: glucoseMessage.state)
-    }
-
-    public var trend: Int {
-        return Int(glucoseMessage.trend)
-    }
-
-    public var trendRate: HKQuantity? {
-        guard glucoseMessage.trend < Int8.max && glucoseMessage.trend > Int8.min else {
-            return nil
-        }
-
-        let unit = HKUnit.milligramsPerDeciliterPerMinute
-        return HKQuantity(unit: unit, doubleValue: Double(glucoseMessage.trend) / 10)
-    }
-
-    // An identifier for this reading thatʼs consistent between backfill/live data
-    public var syncIdentifier: String {
-        return "\(transmitterID) \(glucoseMessage.timestamp)"
-    }
-}
-
-
-extension Glucose: Equatable {
-    public static func ==(lhs: Glucose, rhs: Glucose) -> Bool {
-        return lhs.glucoseMessage == rhs.glucoseMessage && lhs.syncIdentifier == rhs.syncIdentifier
-    }
-}

+ 0 - 26
Dependencies/CGMBLEKit/CGMBLEKit/Info.plist

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>en</string>
-	<key>CFBundleExecutable</key>
-	<string>$(EXECUTABLE_NAME)</string>
-	<key>CFBundleIdentifier</key>
-	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>$(PRODUCT_NAME)</string>
-	<key>CFBundlePackageType</key>
-	<string>FMWK</string>
-	<key>CFBundleShortVersionString</key>
-	<string>3.2</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>$(CURRENT_PROJECT_VERSION)</string>
-	<key>NSPrincipalClass</key>
-	<string></string>
-</dict>
-</plist>

+ 0 - 28
Dependencies/CGMBLEKit/CGMBLEKit/Messages/AuthChallengeRxMessage.swift

@@ -1,28 +0,0 @@
-//
-//  AuthChallengeRxMessage.swift
-//  xDrip5
-//
-//  Created by Nathan Racklyeft on 11/22/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-struct AuthChallengeRxMessage: TransmitterRxMessage {
-    let isAuthenticated: Bool
-    let isBonded: Bool
-
-    init?(data: Data) {
-        guard data.count >= 3 else {
-            return nil
-        }
-
-        guard data.starts(with: .authChallengeRx) else {
-            return nil
-        }
-
-        isAuthenticated = data[1] == 0x1
-        isBonded = data[2] == 0x1
-    }
-}

+ 0 - 20
Dependencies/CGMBLEKit/CGMBLEKit/Messages/AuthChallengeTxMessage.swift

@@ -1,20 +0,0 @@
-//
-//  AuthChallengeTxMessage.swift
-//  xDrip5
-//
-//  Created by Nathan Racklyeft on 11/22/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-struct AuthChallengeTxMessage: TransmitterTxMessage {
-    let challengeHash: Data
-
-    var data: Data {
-        var data = Data(for: .authChallengeTx)
-        data.append(challengeHash)
-        return data
-    }
-}

+ 0 - 28
Dependencies/CGMBLEKit/CGMBLEKit/Messages/AuthRequestRxMessage.swift

@@ -1,28 +0,0 @@
-//
-//  AuthRequestRxMessage.swift
-//  xDrip5
-//
-//  Created by Nathan Racklyeft on 11/22/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-struct AuthRequestRxMessage: TransmitterRxMessage {
-    let tokenHash: Data
-    let challenge: Data
-
-    init?(data: Data) {
-        guard data.count >= 17 else {
-            return nil
-        }
-
-        guard data.starts(with: .authRequestRx) else {
-            return nil
-        }
-
-        tokenHash = data.subdata(in: 1..<9)
-        challenge = data.subdata(in: 9..<17)
-    }
-}

+ 0 - 29
Dependencies/CGMBLEKit/CGMBLEKit/Messages/AuthRequestTxMessage.swift

@@ -1,29 +0,0 @@
-//
-//  AuthRequestTxMessage.swift
-//  xDrip5
-//
-//  Created by Nathan Racklyeft on 11/22/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-struct AuthRequestTxMessage: TransmitterTxMessage {
-    let singleUseToken: Data
-    let endByte: UInt8 = 0x2
-
-    init() {
-        let uuid = UUID().uuid
-
-        singleUseToken = Data([uuid.0, uuid.1, uuid.2, uuid.3,
-                               uuid.4, uuid.5, uuid.6, uuid.7])
-    }
-
-    var data: Data {
-        var data = Data(for: .authRequestTx)
-        data.append(singleUseToken)
-        data.append(endByte)
-        return data
-    }
-}

+ 0 - 16
Dependencies/CGMBLEKit/CGMBLEKit/Messages/BatteryStatusTxMessage.swift

@@ -1,16 +0,0 @@
-//
-//  BatteryStatusTxMessage.swift
-//  xDripG5
-//
-//  Created by Nathan Racklyeft on 3/26/16.
-//  Copyright © 2016 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-struct BatteryStatusTxMessage {
-    let opcode: Opcode = .batteryStatusTx
-
-    // Response: 23003c012f01cd021f247bae
-}

+ 0 - 17
Dependencies/CGMBLEKit/CGMBLEKit/Messages/BondRequestTxMessage.swift

@@ -1,17 +0,0 @@
-//
-//  BondRequestTxMessage.swift
-//  xDrip5
-//
-//  Created by Nathan Racklyeft on 11/23/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-/// Initiates a bond with the central
-struct BondRequestTxMessage: TransmitterTxMessage {
-    var data: Data {
-        return Data(for: .bondRequest)
-    }
-}

+ 0 - 22
Dependencies/CGMBLEKit/CGMBLEKit/Messages/CalibrateGlucoseRxMessage.swift

@@ -1,22 +0,0 @@
-//
-//  CalibrateGlucoseRxMessage.swift
-//  xDripG5
-//
-//  Created by Paul Dickens on 25/02/2018.
-//  Copyright © 2018 LoopKit Authors. All rights reserved.
-//
-
-import Foundation
-
-
-public struct CalibrateGlucoseRxMessage: TransmitterRxMessage {
-    init?(data: Data) {
-        guard data.count == 5 && data.isCRCValid else {
-            return nil
-        }
-
-        guard data.starts(with: .calibrateGlucoseRx) else {
-            return nil
-        }
-    }
-}

+ 0 - 24
Dependencies/CGMBLEKit/CGMBLEKit/Messages/CalibrateGlucoseTxMessage.swift

@@ -1,24 +0,0 @@
-//
-//  CalibrateGlucoseTxMessage.swift
-//  xDripG5
-//
-//  Created by Nathan Racklyeft on 3/26/16.
-//  Copyright © 2016 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-struct CalibrateGlucoseTxMessage: RespondableMessage {
-    typealias Response = CalibrateGlucoseRxMessage
-
-    let time: UInt32
-    let glucose: UInt16
-
-    var data: Data {
-        var data = Data(for: .calibrateGlucoseTx)
-        data.append(glucose)
-        data.append(time)
-        return data.appendingCRC()
-    }
-}

+ 0 - 28
Dependencies/CGMBLEKit/CGMBLEKit/Messages/CalibrationDataRxMessage.swift

@@ -1,28 +0,0 @@
-//
-//  CalibrationDataRxMessage.swift
-//  Pods
-//
-//  Created by Nate Racklyeft on 9/18/16.
-//
-//
-
-import Foundation
-
-
-struct CalibrationDataRxMessage: TransmitterRxMessage {
-    let glucose: UInt16
-    let timestamp: UInt32
-
-    init?(data: Data) {
-        guard data.count == 19 && data.isCRCValid else {
-            return nil
-        }
-
-        guard data.starts(with: .calibrationDataRx) else {
-            return nil
-        }
-
-        glucose = data[11..<13].toInt() & 0xfff
-        timestamp = data[13..<17].toInt()
-    }
-}

+ 0 - 18
Dependencies/CGMBLEKit/CGMBLEKit/Messages/CalibrationDataTxMessage.swift

@@ -1,18 +0,0 @@
-//
-//  CalibrationDataTxMessage.swift
-//  xDripG5
-//
-//  Created by Paul Dickens on 17/03/2018.
-//  Copyright © 2018 LoopKit Authors. All rights reserved.
-//
-
-import Foundation
-
-
-struct CalibrationDataTxMessage: RespondableMessage {
-    typealias Response = CalibrationDataRxMessage
-
-    var data: Data {
-        return Data(for: .calibrationDataTx).appendingCRC()
-    }
-}

+ 0 - 16
Dependencies/CGMBLEKit/CGMBLEKit/Messages/DisconnectTxMessage.swift

@@ -1,16 +0,0 @@
-//
-//  DisconnectTxMessage.swift
-//  xDrip5
-//
-//  Created by Nathan Racklyeft on 11/23/15.
-//  Copyright © 2015 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-struct DisconnectTxMessage: TransmitterTxMessage {
-    var data: Data {
-        return Data(for: .disconnectTx)
-    }
-}

+ 0 - 14
Dependencies/CGMBLEKit/CGMBLEKit/Messages/FirmwareVersionTxMessage.swift

@@ -1,14 +0,0 @@
-//
-//  FirmwareVersionTxMessage.swift
-//  xDripG5
-//
-//  Created by Nathan Racklyeft on 3/26/16.
-//  Copyright © 2016 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-struct FirmwareVersionTxMessage {
-    let opcode: Opcode = .firmwareVersionTx
-}

+ 0 - 122
Dependencies/CGMBLEKit/CGMBLEKit/Messages/GlucoseBackfillMessage.swift

@@ -1,122 +0,0 @@
-//
-//  GlucoseBackfillMessage.swift
-//  xDripG5
-//
-//  Copyright © 2018 LoopKit Authors. All rights reserved.
-//
-
-import Foundation
-
-// 50 05 02 00 b7ff5200 66045300 00000000 0000 7138
-
-struct GlucoseBackfillTxMessage: RespondableMessage {
-    typealias Response = GlucoseBackfillRxMessage
-
-    let byte1: UInt8
-    let byte2: UInt8
-    let identifier: UInt8
-
-    let startTime: UInt32
-    let endTime: UInt32
-
-    let length: UInt32 = 0
-    let backfillCRC: UInt16 = 0
-
-    var data: Data {
-        var data = Data(for: .glucoseBackfillTx)
-        data.append(contentsOf: [byte1, byte2, identifier])
-        data.append(startTime)
-        data.append(endTime)
-        data.append(length)
-        data.append(backfillCRC)
-
-        return data.appendingCRC()
-    }
-}
-
-// 51 00 01 00 b7ff5200 66045300 32000000 e6cb 9805
-
-struct GlucoseBackfillRxMessage: TransmitterRxMessage {
-    let status: UInt8
-    let backfillStatus: UInt8
-    let identifier: UInt8
-    let startTime: UInt32
-    let endTime: UInt32
-    let bufferLength: UInt32
-    let bufferCRC: UInt16
-
-    init?(data: Data) {
-        guard data.count == 20,
-            data.isCRCValid,
-            data.starts(with: .glucoseBackfillRx)
-        else {
-            return nil
-        }
-
-        status = data[1]
-        backfillStatus = data[2]
-        identifier = data[3]
-        startTime = data[4..<8].toInt()
-        endTime = data[8..<12].toInt()
-        bufferLength = data[12..<16].toInt()
-        bufferCRC = data[16..<18].toInt()
-    }
-}
-
-// 0100bc460000b7ff52008b0006eee30053008500
-// 020006eb0f025300800006ee3a0353007e0006f5
-// 030066045300790006f8
-
-struct GlucoseBackfillFrameBuffer {
-    let identifier: UInt8
-    private var frames: [Data] = []
-
-    init(identifier: UInt8) {
-        self.identifier = identifier
-    }
-
-    mutating func append(_ frame: Data) {
-        // Byte 0 is the frame index
-        // Byte 1 is the identifier
-        guard frame.count > 2,
-            frame[0] == frames.count + 1,
-            frame[1] == identifier else {
-            return
-        }
-
-        frames.append(frame)
-    }
-
-    var count: Int {
-        return frames.reduce(0, { $0 + $1.count })
-    }
-
-    var crc16: UInt16 {
-        return frames.reduce(into: Data(), { $0.append($1) }).crc16
-    }
-
-    var glucose: [GlucoseSubMessage] {
-        // Drop the first 2 bytes from each frame
-        let data = frames.reduce(into: Data(), { $0.append($1.dropFirst(2)) })
-
-        // Drop the first 4 bytes from the combined message
-        // Byte 0: ??
-        // Byte 1: ??
-        // Byte 2: ?? (only seen 0 so far)
-        // Byte 3: ?? (only seen 0 so far)
-        let glucoseData = data.dropFirst(4)
-
-        return stride(
-            from: glucoseData.startIndex,
-            to: glucoseData.endIndex,
-            by: GlucoseSubMessage.size
-        ).compactMap {
-            let range = $0..<$0.advanced(by: GlucoseSubMessage.size)
-            guard glucoseData.endIndex >= range.endIndex else {
-                return nil
-            }
-
-            return GlucoseSubMessage(data: glucoseData[range])
-        }
-    }
-}

+ 0 - 14
Dependencies/CGMBLEKit/CGMBLEKit/Messages/GlucoseHistoryTxMessage.swift

@@ -1,14 +0,0 @@
-//
-//  GlucoseHistoryTxMessage.swift
-//  xDripG5
-//
-//  Created by Nathan Racklyeft on 3/26/16.
-//  Copyright © 2016 Nathan Racklyeft. All rights reserved.
-//
-
-import Foundation
-
-
-struct GlucoseHistoryTxMessage {
-    let opcode: Opcode = .glucoseHistoryTx
-}

+ 0 - 0
Dependencies/CGMBLEKit/CGMBLEKit/Messages/GlucoseRxMessage.swift


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików