Skip to content

Commit 25aed15

Browse files
committed
Merge pull request #30 from loudnate/dev
Version 0.4.0
2 parents 0e1f448 + 6f69e51 commit 25aed15

20 files changed

+251
-23
lines changed

Example/xDripG5/NSUserDefaults.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ extension NSUserDefaults {
2929
if let value = newValue {
3030
setDouble(value, forKey: "startTimeInterval")
3131
} else {
32-
removeObjectforKey("startTimeInterval")
32+
setObject(nil, forKey: "startTimeInterval")
3333
}
3434
}
3535
}

xDripG5.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = "xDripG5"
3-
s.version = "0.3.1"
3+
s.version = "0.4.0"
44
s.summary = "An interface for communicating with the G5 glucose transmitter over Bluetooth."
55

66
s.description = <<-DESC

xDripG5.xcodeproj/project.pbxproj

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
430D64C51CB7846A00FCA750 /* NSData+CRC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 430D64C41CB7846A00FCA750 /* NSData+CRC.swift */; };
1011
4337D7EB1C351B0B0016851F /* CommonCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4337D7EA1C351B0B0016851F /* CommonCrypto.framework */; };
1112
4337D7ED1C3521210016851F /* CommonCrypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4337D7EA1C351B0B0016851F /* CommonCrypto.framework */; };
1213
434FD68A1C3523A7000B4E2E /* CommonCrypto.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4337D7EA1C351B0B0016851F /* CommonCrypto.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@@ -28,6 +29,14 @@
2829
43CABE2C1C350B3D00005705 /* TransmitterMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CABE201C350B3D00005705 /* TransmitterMessage.swift */; };
2930
43CABE2D1C350B3D00005705 /* TransmitterTimeRxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CABE211C350B3D00005705 /* TransmitterTimeRxMessage.swift */; };
3031
43CABE2E1C350B3D00005705 /* TransmitterTimeTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CABE221C350B3D00005705 /* TransmitterTimeTxMessage.swift */; };
32+
43CE7CC81CA73AEB003CC1B0 /* FirmwareVersionTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CC71CA73AEB003CC1B0 /* FirmwareVersionTxMessage.swift */; };
33+
43CE7CCA1CA73B94003CC1B0 /* TransmitterVersionTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CC91CA73B94003CC1B0 /* TransmitterVersionTxMessage.swift */; };
34+
43CE7CCC1CA73BCC003CC1B0 /* BatteryStatusTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CCB1CA73BCC003CC1B0 /* BatteryStatusTxMessage.swift */; };
35+
43CE7CCE1CA73C22003CC1B0 /* SessionStartTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CCD1CA73C22003CC1B0 /* SessionStartTxMessage.swift */; };
36+
43CE7CD01CA73C57003CC1B0 /* SessionStopTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CCF1CA73C57003CC1B0 /* SessionStopTxMessage.swift */; };
37+
43CE7CD21CA73CBC003CC1B0 /* CalibrateGlucoseTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CD11CA73CBC003CC1B0 /* CalibrateGlucoseTxMessage.swift */; };
38+
43CE7CD41CA73CE8003CC1B0 /* GlucoseHistoryTxMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CD31CA73CE8003CC1B0 /* GlucoseHistoryTxMessage.swift */; };
39+
43CE7CDC1CA77468003CC1B0 /* TransmitterStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43CE7CDB1CA77468003CC1B0 /* TransmitterStatus.swift */; };
3140
43DC87C01C8B509B005BC30D /* NSData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DC87BF1C8B509B005BC30D /* NSData.swift */; };
3241
43DC87C21C8B520F005BC30D /* GlucoseRxMessageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DC87C11C8B520F005BC30D /* GlucoseRxMessageTests.swift */; };
3342
/* End PBXBuildFile section */
@@ -56,6 +65,7 @@
5665
/* End PBXCopyFilesBuildPhase section */
5766

5867
/* Begin PBXFileReference section */
68+
430D64C41CB7846A00FCA750 /* NSData+CRC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSData+CRC.swift"; sourceTree = "<group>"; };
5969
4337D7EA1C351B0B0016851F /* CommonCrypto.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CommonCrypto.framework; path = Carthage/Build/iOS/CommonCrypto.framework; sourceTree = "<group>"; };
6070
43CABDF31C3506F100005705 /* xDripG5.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = xDripG5.framework; sourceTree = BUILT_PRODUCTS_DIR; };
6171
43CABDF61C3506F100005705 /* xDripG5.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xDripG5.h; sourceTree = "<group>"; };
@@ -78,6 +88,14 @@
7888
43CABE201C350B3D00005705 /* TransmitterMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransmitterMessage.swift; sourceTree = "<group>"; };
7989
43CABE211C350B3D00005705 /* TransmitterTimeRxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransmitterTimeRxMessage.swift; sourceTree = "<group>"; };
8090
43CABE221C350B3D00005705 /* TransmitterTimeTxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransmitterTimeTxMessage.swift; sourceTree = "<group>"; };
91+
43CE7CC71CA73AEB003CC1B0 /* FirmwareVersionTxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirmwareVersionTxMessage.swift; sourceTree = "<group>"; };
92+
43CE7CC91CA73B94003CC1B0 /* TransmitterVersionTxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransmitterVersionTxMessage.swift; sourceTree = "<group>"; };
93+
43CE7CCB1CA73BCC003CC1B0 /* BatteryStatusTxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatteryStatusTxMessage.swift; sourceTree = "<group>"; };
94+
43CE7CCD1CA73C22003CC1B0 /* SessionStartTxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SessionStartTxMessage.swift; sourceTree = "<group>"; };
95+
43CE7CCF1CA73C57003CC1B0 /* SessionStopTxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SessionStopTxMessage.swift; sourceTree = "<group>"; };
96+
43CE7CD11CA73CBC003CC1B0 /* CalibrateGlucoseTxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CalibrateGlucoseTxMessage.swift; sourceTree = "<group>"; };
97+
43CE7CD31CA73CE8003CC1B0 /* GlucoseHistoryTxMessage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlucoseHistoryTxMessage.swift; sourceTree = "<group>"; };
98+
43CE7CDB1CA77468003CC1B0 /* TransmitterStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransmitterStatus.swift; sourceTree = "<group>"; };
8199
43DC87BF1C8B509B005BC30D /* NSData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSData.swift; sourceTree = "<group>"; };
82100
43DC87C11C8B520F005BC30D /* GlucoseRxMessageTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlucoseRxMessageTests.swift; sourceTree = "<group>"; };
83101
/* End PBXFileReference section */
@@ -130,7 +148,9 @@
130148
43CABE0E1C350B2800005705 /* BluetoothManager.swift */,
131149
43CABE0F1C350B2800005705 /* BluetoothServices.swift */,
132150
43CABE101C350B2800005705 /* NSData.swift */,
151+
430D64C41CB7846A00FCA750 /* NSData+CRC.swift */,
133152
43CABE111C350B2800005705 /* Transmitter.swift */,
153+
43CE7CDB1CA77468003CC1B0 /* TransmitterStatus.swift */,
134154
43CABE161C350B2E00005705 /* Messages */,
135155
);
136156
path = xDripG5;
@@ -153,14 +173,21 @@
153173
43CABE181C350B3D00005705 /* AuthChallengeTxMessage.swift */,
154174
43CABE191C350B3D00005705 /* AuthRequestTxMessage.swift */,
155175
43CABE1A1C350B3D00005705 /* AuthStatusRxMessage.swift */,
176+
43CE7CCB1CA73BCC003CC1B0 /* BatteryStatusTxMessage.swift */,
156177
43CABE1B1C350B3D00005705 /* BondRequestTxMessage.swift */,
178+
43CE7CD11CA73CBC003CC1B0 /* CalibrateGlucoseTxMessage.swift */,
157179
43CABE1C1C350B3D00005705 /* DisconnectTxMessage.swift */,
180+
43CE7CC71CA73AEB003CC1B0 /* FirmwareVersionTxMessage.swift */,
181+
43CE7CD31CA73CE8003CC1B0 /* GlucoseHistoryTxMessage.swift */,
158182
43CABE1D1C350B3D00005705 /* GlucoseRxMessage.swift */,
159183
43CABE1E1C350B3D00005705 /* GlucoseTxMessage.swift */,
160184
43CABE1F1C350B3D00005705 /* KeepAliveTxMessage.swift */,
185+
43CE7CCD1CA73C22003CC1B0 /* SessionStartTxMessage.swift */,
186+
43CE7CCF1CA73C57003CC1B0 /* SessionStopTxMessage.swift */,
161187
43CABE201C350B3D00005705 /* TransmitterMessage.swift */,
162188
43CABE211C350B3D00005705 /* TransmitterTimeRxMessage.swift */,
163189
43CABE221C350B3D00005705 /* TransmitterTimeTxMessage.swift */,
190+
43CE7CC91CA73B94003CC1B0 /* TransmitterVersionTxMessage.swift */,
164191
);
165192
path = Messages;
166193
sourceTree = "<group>";
@@ -274,12 +301,19 @@
274301
isa = PBXSourcesBuildPhase;
275302
buildActionMask = 2147483647;
276303
files = (
304+
43CE7CCA1CA73B94003CC1B0 /* TransmitterVersionTxMessage.swift in Sources */,
277305
43CABE2D1C350B3D00005705 /* TransmitterTimeRxMessage.swift in Sources */,
278306
43CABE291C350B3D00005705 /* GlucoseRxMessage.swift in Sources */,
307+
43CE7CDC1CA77468003CC1B0 /* TransmitterStatus.swift in Sources */,
279308
43CABE271C350B3D00005705 /* BondRequestTxMessage.swift in Sources */,
280309
43CABE231C350B3D00005705 /* AuthChallengeRxMessage.swift in Sources */,
281310
43CABE261C350B3D00005705 /* AuthStatusRxMessage.swift in Sources */,
311+
43CE7CD41CA73CE8003CC1B0 /* GlucoseHistoryTxMessage.swift in Sources */,
312+
43CE7CD01CA73C57003CC1B0 /* SessionStopTxMessage.swift in Sources */,
282313
43CABE2A1C350B3D00005705 /* GlucoseTxMessage.swift in Sources */,
314+
43CE7CC81CA73AEB003CC1B0 /* FirmwareVersionTxMessage.swift in Sources */,
315+
43CE7CCC1CA73BCC003CC1B0 /* BatteryStatusTxMessage.swift in Sources */,
316+
43CE7CCE1CA73C22003CC1B0 /* SessionStartTxMessage.swift in Sources */,
283317
43CABE2E1C350B3D00005705 /* TransmitterTimeTxMessage.swift in Sources */,
284318
43CABE2C1C350B3D00005705 /* TransmitterMessage.swift in Sources */,
285319
43CABE131C350B2800005705 /* BluetoothServices.swift in Sources */,
@@ -289,7 +323,9 @@
289323
43CABE121C350B2800005705 /* BluetoothManager.swift in Sources */,
290324
43CABE2B1C350B3D00005705 /* KeepAliveTxMessage.swift in Sources */,
291325
43CABE241C350B3D00005705 /* AuthChallengeTxMessage.swift in Sources */,
326+
43CE7CD21CA73CBC003CC1B0 /* CalibrateGlucoseTxMessage.swift in Sources */,
292327
43CABE251C350B3D00005705 /* AuthRequestTxMessage.swift in Sources */,
328+
430D64C51CB7846A00FCA750 /* NSData+CRC.swift in Sources */,
293329
);
294330
runOnlyForDeploymentPostprocessing = 0;
295331
};
@@ -332,7 +368,7 @@
332368
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
333369
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
334370
COPY_PHASE_STRIP = NO;
335-
CURRENT_PROJECT_VERSION = 1;
371+
CURRENT_PROJECT_VERSION = 8;
336372
DEBUG_INFORMATION_FORMAT = dwarf;
337373
ENABLE_STRICT_OBJC_MSGSEND = YES;
338374
ENABLE_TESTABILITY = YES;
@@ -380,7 +416,7 @@
380416
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
381417
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
382418
COPY_PHASE_STRIP = NO;
383-
CURRENT_PROJECT_VERSION = 1;
419+
CURRENT_PROJECT_VERSION = 8;
384420
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
385421
ENABLE_NS_ASSERTIONS = NO;
386422
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -408,7 +444,7 @@
408444
CLANG_ENABLE_MODULES = YES;
409445
DEFINES_MODULE = YES;
410446
DYLIB_COMPATIBILITY_VERSION = 1;
411-
DYLIB_CURRENT_VERSION = 1;
447+
DYLIB_CURRENT_VERSION = 8;
412448
DYLIB_INSTALL_NAME_BASE = "@rpath";
413449
FRAMEWORK_SEARCH_PATHS = (
414450
"$(inherited)",
@@ -430,7 +466,7 @@
430466
CLANG_ENABLE_MODULES = YES;
431467
DEFINES_MODULE = YES;
432468
DYLIB_COMPATIBILITY_VERSION = 1;
433-
DYLIB_CURRENT_VERSION = 1;
469+
DYLIB_CURRENT_VERSION = 8;
434470
DYLIB_INSTALL_NAME_BASE = "@rpath";
435471
FRAMEWORK_SEARCH_PATHS = (
436472
"$(inherited)",

xDripG5/BluetoothManager.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class BluetoothManager: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate
7676

7777
// MARK: - GCD Management
7878

79-
private var managerQueue = dispatch_queue_create("com.loudnate.xDripG5.bluetoothManagerQueue", DISPATCH_QUEUE_SERIAL)
79+
private var managerQueue = dispatch_queue_create("com.loudnate.xDripG5.bluetoothManagerQueue", dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, 0))
8080

8181
override init() {
8282
super.init()

xDripG5/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<key>CFBundlePackageType</key>
1616
<string>FMWK</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>0.3.1</string>
18+
<string>0.4.0</string>
1919
<key>CFBundleSignature</key>
2020
<string>????</string>
2121
<key>CFBundleVersion</key>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// BatteryStatusTxMessage.swift
3+
// xDripG5
4+
//
5+
// Created by Nathan Racklyeft on 3/26/16.
6+
// Copyright © 2016 Nathan Racklyeft. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
12+
struct BatteryStatusTxMessage {
13+
let opcode: UInt8 = 0x22
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// CalibrateGlucoseTxMessage.swift
3+
// xDripG5
4+
//
5+
// Created by Nathan Racklyeft on 3/26/16.
6+
// Copyright © 2016 Nathan Racklyeft. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
12+
struct CalibrateGlucoseTxMessage {
13+
let opcode: UInt8 = 0x34
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// FirmwareVersionTxMessage.swift
3+
// xDripG5
4+
//
5+
// Created by Nathan Racklyeft on 3/26/16.
6+
// Copyright © 2016 Nathan Racklyeft. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
12+
struct FirmwareVersionTxMessage {
13+
let opcode: UInt8 = 0x20
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//
2+
// GlucoseHistoryTxMessage.swift
3+
// xDripG5
4+
//
5+
// Created by Nathan Racklyeft on 3/26/16.
6+
// Copyright © 2016 Nathan Racklyeft. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
12+
struct GlucoseHistoryTxMessage {
13+
let opcode: UInt8 = 0x3e
14+
}

xDripG5/Messages/GlucoseRxMessage.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import Foundation
1111

1212
public struct GlucoseRxMessage: TransmitterRxMessage {
1313
static let opcode: UInt8 = 0x31
14-
public let status: UInt8
14+
public let status: TransmitterStatus
1515
public let sequence: UInt32
1616
public let timestamp: UInt32
1717
public let glucoseIsDisplayOnly: Bool
@@ -20,9 +20,9 @@ public struct GlucoseRxMessage: TransmitterRxMessage {
2020
public let trend: Int8
2121

2222
init?(data: NSData) {
23-
if data.length >= 14 {
23+
if data.length == 16 && data.crcValid() {
2424
if data[0] == self.dynamicType.opcode {
25-
status = data[1]
25+
status = TransmitterStatus(rawValue: data[1])
2626
sequence = data[2...5]
2727
timestamp = data[6...9]
2828

0 commit comments

Comments
 (0)