Skip to content

Commit

Permalink
Version 0.6.0 (#146)
Browse files Browse the repository at this point in the history
* Renaming RL from RileyLinkDeviceTableViewController

* Change default autocapitalization type

* Revert debugging code. Avoid reloading table on start of rename op. Add disclosure indicator to RL Name row, to indicate it can be edited

* Adding the read clock command

For LoopKit/Loop#49

* Fixing missing idle status row

* Fix ChangeSensorSetup2PumpEvent parsing on 551 pumps

* Some NSUploadKit framework refactoring; ensuring tests are running (#144)

* Adding easy sharing to the CommandResponseViewController (#143)

* agvtool
  • Loading branch information
loudnate committed Jul 2, 2016
1 parent 933b17b commit b671e4b
Show file tree
Hide file tree
Showing 32 changed files with 491 additions and 192 deletions.
2 changes: 1 addition & 1 deletion MinimedKit/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>0.5.0</string>
<string>0.6.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
Expand Down
4 changes: 2 additions & 2 deletions MinimedKit/Messages/ReadSettingsCarelinkMessageBody.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,10 @@ public class ReadSettingsCarelinkMessageBody: CarelinkLongMessageBody {
}

let maxBolusTicks: UInt8 = rxData[7]
maxBolus = Double(maxBolusTicks) * self.dynamicType.maxBolusMultiplier
maxBolus = Double(maxBolusTicks) / self.dynamicType.maxBolusMultiplier

let maxBasalTicks: Int = Int(bigEndianBytes: rxData[8...9])
maxBasal = Double(maxBasalTicks) * self.dynamicType.maxBasalMultiplier
maxBasal = Double(maxBasalTicks) / self.dynamicType.maxBasalMultiplier

let rawSelectedBasalProfile: UInt8 = rxData[12]
selectedBasalProfile = BasalProfile(rawValue: rawSelectedBasalProfile)
Expand Down
8 changes: 6 additions & 2 deletions MinimedKit/PumpEvents/ChangeSensorSetup2PumpEvent.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ public struct ChangeSensorSetup2PumpEvent: TimestampedPumpEvent {
public let timestamp: NSDateComponents

public init?(availableData: NSData, pumpModel: PumpModel) {
length = 37

if pumpModel.hasLowSuspend {
length = 41
} else {
length = 37
}

guard length <= availableData.length else {
return nil
}
Expand Down
2 changes: 1 addition & 1 deletion MinimedKitTests/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>0.5.0</string>
<string>0.6.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
Expand Down
25 changes: 0 additions & 25 deletions MinimedKitTests/PumpMessageTests.swift

This file was deleted.

2 changes: 1 addition & 1 deletion NightscoutUploadKit/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>0.5.0</string>
<string>0.6.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
Expand Down
77 changes: 32 additions & 45 deletions NightscoutUploadKit/NightscoutUploader.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ public enum UploadError: ErrorType {
case MissingTimezone
}

public class NightscoutUploader: NSObject {
private let defaultNightscoutEntriesPath = "/api/v1/entries.json"
private let defaultNightscoutTreatmentPath = "/api/v1/treatments.json"
private let defaultNightscoutDeviceStatusPath = "/api/v1/devicestatus.json"

enum DexcomSensorError: UInt8 {
public class NightscoutUploader {

enum DexcomSensorError: Int {
case SensorNotActive = 1
case SensorNotCalibrated = 5
case BadRF = 12
Expand All @@ -29,46 +33,35 @@ public class NightscoutUploader: NSObject {
public var siteURL: String?
public var APISecret: String?

var entries: [AnyObject]
var deviceStatuses: [AnyObject]
var treatmentsQueue: [NightscoutTreatment]
private(set) var entries = [[String: AnyObject]]()
private(set) var deviceStatuses = [[String: AnyObject]]()
private(set) var treatmentsQueue = [NightscoutTreatment]()

var lastMeterMessageRxTime: NSDate?
private(set) var lastMeterMessageRxTime: NSDate?

public private(set) var observingPumpEventsSince: NSDate
public private(set) var observingPumpEventsSince: NSDate!

var lastStoredTreatmentTimestamp: NSDate = NSDate.distantPast() {
didSet {
NSUserDefaults.standardUserDefaults().lastStoredTreatmentTimestamp = lastStoredTreatmentTimestamp
private(set) var lastStoredTreatmentTimestamp: NSDate? {
get {
return NSUserDefaults.standardUserDefaults().lastStoredTreatmentTimestamp
}
set {
NSUserDefaults.standardUserDefaults().lastStoredTreatmentTimestamp = newValue
}
}

let defaultNightscoutEntriesPath = "/api/v1/entries.json"
let defaultNightscoutTreatmentPath = "/api/v1/treatments.json"
let defaultNightscoutDeviceStatusPath = "/api/v1/devicestatus.json"


public var errorHandler: ((error: ErrorType, context: String) -> Void)?

public var pumpID: String? {
didSet {
if oldValue != nil {
self.observingPumpEventsSince = NSDate().dateByAddingTimeInterval(60*60*24*(-1))
}
}

public func reset() {
observingPumpEventsSince = NSDate(timeIntervalSinceNow: NSTimeInterval(hours: -24))
lastStoredTreatmentTimestamp = nil
}

public init(siteURL: String?, APISecret: String?, pumpID: String?) {
entries = [AnyObject]()
treatmentsQueue = [NightscoutTreatment]()
deviceStatuses = [AnyObject]()

public init(siteURL: String?, APISecret: String?) {
self.siteURL = siteURL
self.APISecret = APISecret
self.pumpID = pumpID

self.observingPumpEventsSince = NSUserDefaults.standardUserDefaults().lastStoredTreatmentTimestamp ?? NSDate().dateByAddingTimeInterval(60*60*24*(-1))

super.init()
observingPumpEventsSince = lastStoredTreatmentTimestamp ?? NSDate(timeIntervalSinceNow: NSTimeInterval(hours: -24))
}

// MARK: - Processing data from pump
Expand Down Expand Up @@ -117,12 +110,6 @@ public class NightscoutUploader: NSObject {

public func handlePumpStatus(status: MySentryPumpStatusMessageBody, device: String) {

enum DexcomSensorErrorType: Int {
case DX_SENSOR_NOT_ACTIVE = 1
case DX_SENSOR_NOT_CALIBRATED = 5
case DX_BAD_RF = 12
}

var recordSGV = true

let glucose: Int = {
Expand All @@ -132,12 +119,12 @@ public class NightscoutUploader: NSObject {
case .HighBG:
return 401
case .WeakSignal:
return DexcomSensorErrorType.DX_BAD_RF.rawValue
return DexcomSensorError.BadRF.rawValue
case .MeterBGNow, .CalError:
return DexcomSensorErrorType.DX_SENSOR_NOT_CALIBRATED.rawValue
return DexcomSensorError.SensorNotCalibrated.rawValue
case .Lost, .Missing, .Ended, .Unknown, .Off, .Warmup:
recordSGV = false
return DexcomSensorErrorType.DX_SENSOR_NOT_ACTIVE.rawValue
return DexcomSensorError.SensorNotActive.rawValue
}
}()

Expand Down Expand Up @@ -235,7 +222,7 @@ public class NightscoutUploader: NSObject {

let date = NSDate()
let epochTime = date.timeIntervalSince1970 * 1000
let entry = [
let entry: [String: AnyObject] = [
"date": epochTime,
"dateString": TimeFormat.timestampStrFromDate(date),
"mbg": msg.glucose,
Expand All @@ -244,7 +231,7 @@ public class NightscoutUploader: NSObject {
]

// Skip duplicates
if lastMeterMessageRxTime == nil || lastMeterMessageRxTime!.timeIntervalSinceNow < -3 * 60 {
if lastMeterMessageRxTime == nil || lastMeterMessageRxTime!.timeIntervalSinceNow.minutes < -3 {
entries.append(entry)
lastMeterMessageRxTime = NSDate()
}
Expand Down Expand Up @@ -312,7 +299,7 @@ public class NightscoutUploader: NSObject {

func flushDeviceStatuses() {
let inFlight = deviceStatuses
deviceStatuses = [AnyObject]()
deviceStatuses = []
uploadToNS(inFlight, endpoint: defaultNightscoutDeviceStatusPath) { (error) in
if let error = error {
self.errorHandler?(error: error, context: "Uploading device status")
Expand All @@ -324,7 +311,7 @@ public class NightscoutUploader: NSObject {

func flushEntries() {
let inFlight = entries
entries = [AnyObject]()
entries = []
uploadToNS(inFlight, endpoint: defaultNightscoutEntriesPath) { (error) in
if let error = error {
self.errorHandler?(error: error, context: "Uploading nightscout entries")
Expand All @@ -336,7 +323,7 @@ public class NightscoutUploader: NSObject {

func flushTreatments() {
let inFlight = treatmentsQueue
treatmentsQueue = [NightscoutTreatment]()
treatmentsQueue = []
uploadToNS(inFlight.map({$0.dictionaryRepresentation}), endpoint: defaultNightscoutTreatmentPath) { (error) in
if let error = error {
self.errorHandler?(error: error, context: "Uploading nightscout treatment records")
Expand Down
2 changes: 1 addition & 1 deletion NightscoutUploadKitTests/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>0.5.0</string>
<string>0.6.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
Expand Down
Loading

0 comments on commit b671e4b

Please sign in to comment.