capacitor-plugin-ihealth 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CapacitorPluginIhealth.podspec +35 -0
- package/README.md +214 -0
- package/android/build.gradle +58 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/com/managemyhealth/plugins/ihealth/ihealth.java +11 -0
- package/android/src/main/java/com/managemyhealth/plugins/ihealth/ihealthPlugin.java +22 -0
- package/android/src/main/res/.gitkeep +0 -0
- package/dist/docs.json +450 -0
- package/dist/esm/definitions.d.ts +29 -0
- package/dist/esm/definitions.js +2 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/web.d.ts +37 -0
- package/dist/esm/web.js +42 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +58 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +61 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Plugin/Info.plist +24 -0
- package/ios/Plugin/Plugin-Bridging-Header.h +35 -0
- package/ios/Plugin/iHealthSDKHeaders/ABI.h +82 -0
- package/ios/Plugin/iHealthSDKHeaders/ABIController.h +28 -0
- package/ios/Plugin/iHealthSDKHeaders/ABPM.h +144 -0
- package/ios/Plugin/iHealthSDKHeaders/ABPMController.h +25 -0
- package/ios/Plugin/iHealthSDKHeaders/AM3.h +188 -0
- package/ios/Plugin/iHealthSDKHeaders/AM3Controller.h +29 -0
- package/ios/Plugin/iHealthSDKHeaders/AM3SController_V2.h +29 -0
- package/ios/Plugin/iHealthSDKHeaders/AM3S_V2.h +227 -0
- package/ios/Plugin/iHealthSDKHeaders/AM4.h +223 -0
- package/ios/Plugin/iHealthSDKHeaders/AM4Controller.h +31 -0
- package/ios/Plugin/iHealthSDKHeaders/AM5.h +335 -0
- package/ios/Plugin/iHealthSDKHeaders/AM5Controller.h +30 -0
- package/ios/Plugin/iHealthSDKHeaders/AM5Header.h +20 -0
- package/ios/Plugin/iHealthSDKHeaders/AMHeader.h +27 -0
- package/ios/Plugin/iHealthSDKHeaders/AMMacroFile.h +1171 -0
- package/ios/Plugin/iHealthSDKHeaders/BG1.h +53 -0
- package/ios/Plugin/iHealthSDKHeaders/BG1Controller.h +46 -0
- package/ios/Plugin/iHealthSDKHeaders/BG1S.h +64 -0
- package/ios/Plugin/iHealthSDKHeaders/BG1SController.h +25 -0
- package/ios/Plugin/iHealthSDKHeaders/BG3.h +83 -0
- package/ios/Plugin/iHealthSDKHeaders/BG3Controller.h +28 -0
- package/ios/Plugin/iHealthSDKHeaders/BG5.h +158 -0
- package/ios/Plugin/iHealthSDKHeaders/BG5Controller.h +28 -0
- package/ios/Plugin/iHealthSDKHeaders/BG5S.h +294 -0
- package/ios/Plugin/iHealthSDKHeaders/BG5SController.h +29 -0
- package/ios/Plugin/iHealthSDKHeaders/BGController.h +32 -0
- package/ios/Plugin/iHealthSDKHeaders/BGDevice.h +42 -0
- package/ios/Plugin/iHealthSDKHeaders/BGHeader.h +23 -0
- package/ios/Plugin/iHealthSDKHeaders/BGMacroFile.h +507 -0
- package/ios/Plugin/iHealthSDKHeaders/BP3.h +77 -0
- package/ios/Plugin/iHealthSDKHeaders/BP3Controller.h +27 -0
- package/ios/Plugin/iHealthSDKHeaders/BP3L.h +58 -0
- package/ios/Plugin/iHealthSDKHeaders/BP3LController.h +30 -0
- package/ios/Plugin/iHealthSDKHeaders/BP5.h +32 -0
- package/ios/Plugin/iHealthSDKHeaders/BP5C.h +131 -0
- package/ios/Plugin/iHealthSDKHeaders/BP5CController.h +25 -0
- package/ios/Plugin/iHealthSDKHeaders/BP5Controller.h +25 -0
- package/ios/Plugin/iHealthSDKHeaders/BP5S.h +97 -0
- package/ios/Plugin/iHealthSDKHeaders/BP5SController.h +27 -0
- package/ios/Plugin/iHealthSDKHeaders/BP5SRW.h +101 -0
- package/ios/Plugin/iHealthSDKHeaders/BP5SRWController.h +26 -0
- package/ios/Plugin/iHealthSDKHeaders/BP7.h +141 -0
- package/ios/Plugin/iHealthSDKHeaders/BP7Controller.h +25 -0
- package/ios/Plugin/iHealthSDKHeaders/BP7S.h +106 -0
- package/ios/Plugin/iHealthSDKHeaders/BP7SController.h +32 -0
- package/ios/Plugin/iHealthSDKHeaders/BPAV10Device.h +15 -0
- package/ios/Plugin/iHealthSDKHeaders/BPBTLEDevice.h +17 -0
- package/ios/Plugin/iHealthSDKHeaders/BPBV10Device.h +20 -0
- package/ios/Plugin/iHealthSDKHeaders/BPContinua.h +56 -0
- package/ios/Plugin/iHealthSDKHeaders/BPContinuaController.h +30 -0
- package/ios/Plugin/iHealthSDKHeaders/BPController.h +40 -0
- package/ios/Plugin/iHealthSDKHeaders/BPDevice.h +131 -0
- package/ios/Plugin/iHealthSDKHeaders/BPHeader.h +54 -0
- package/ios/Plugin/iHealthSDKHeaders/BPLoopMeasureSettingModel.h +120 -0
- package/ios/Plugin/iHealthSDKHeaders/BPM1AE.h +80 -0
- package/ios/Plugin/iHealthSDKHeaders/BPMacroFile.h +247 -0
- package/ios/Plugin/iHealthSDKHeaders/BPV24Device.h +16 -0
- package/ios/Plugin/iHealthSDKHeaders/BPV25Device.h +17 -0
- package/ios/Plugin/iHealthSDKHeaders/ConnectDeviceController.h +27 -0
- package/ios/Plugin/iHealthSDKHeaders/DFUController.h +160 -0
- package/ios/Plugin/iHealthSDKHeaders/DFUDeviceFirmwareInfo.h +56 -0
- package/ios/Plugin/iHealthSDKHeaders/DFUHeader.h +19 -0
- package/ios/Plugin/iHealthSDKHeaders/DFUMacro.h +264 -0
- package/ios/Plugin/iHealthSDKHeaders/DFUServerFirmwareInfo.h +48 -0
- package/ios/Plugin/iHealthSDKHeaders/ECG3.h +94 -0
- package/ios/Plugin/iHealthSDKHeaders/ECG3Controller.h +30 -0
- package/ios/Plugin/iHealthSDKHeaders/ECG3USB.h +145 -0
- package/ios/Plugin/iHealthSDKHeaders/ECG3USBController.h +31 -0
- package/ios/Plugin/iHealthSDKHeaders/ECGHeader.h +20 -0
- package/ios/Plugin/iHealthSDKHeaders/ECGMacroFile.h +84 -0
- package/ios/Plugin/iHealthSDKHeaders/HFSmartLink.h +88 -0
- package/ios/Plugin/iHealthSDKHeaders/HFSmartLinkDeviceInfo.h +14 -0
- package/ios/Plugin/iHealthSDKHeaders/HS2.h +64 -0
- package/ios/Plugin/iHealthSDKHeaders/HS2Controller.h +25 -0
- package/ios/Plugin/iHealthSDKHeaders/HS2S.h +399 -0
- package/ios/Plugin/iHealthSDKHeaders/HS2SController.h +27 -0
- package/ios/Plugin/iHealthSDKHeaders/HS3.h +63 -0
- package/ios/Plugin/iHealthSDKHeaders/HS3Controller.h +32 -0
- package/ios/Plugin/iHealthSDKHeaders/HS4.h +64 -0
- package/ios/Plugin/iHealthSDKHeaders/HS4Controller.h +26 -0
- package/ios/Plugin/iHealthSDKHeaders/HS5.h +141 -0
- package/ios/Plugin/iHealthSDKHeaders/HS5Controller.h +38 -0
- package/ios/Plugin/iHealthSDKHeaders/HSHeader.h +25 -0
- package/ios/Plugin/iHealthSDKHeaders/HSMacroFile.h +709 -0
- package/ios/Plugin/iHealthSDKHeaders/HealthHeader.h +67 -0
- package/ios/Plugin/iHealthSDKHeaders/HealthUser.h +126 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOBindEnum.h +49 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOBlueDataResponse.h +66 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOBlueEnum.h +213 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOBluetoothBaseModel.h +112 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOBluetoothEngine.h +283 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOBluetoothManager.h +166 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOBluetoothServices.h +75 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOCalculateBluetoothModel.h +263 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOCommonMacro.h +89 -0
- package/ios/Plugin/iHealthSDKHeaders/IDODataExchangeModel.h +128 -0
- package/ios/Plugin/iHealthSDKHeaders/IDODataMigrationManager.h +79 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOErrorCodeToStr.h +19 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOFoundationCommand.h +1178 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOGetInfoBluetoothModel.h +1924 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOLogEnum.h +165 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOPeripheralModel.h +59 -0
- package/ios/Plugin/iHealthSDKHeaders/IDORecordDeviceLog.h +56 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSetInfoBluetoothModel.h +1760 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncActivityDataModel.h +207 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncBpDataModel.h +191 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncEnum.h +316 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncGpsDataModel.h +133 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncHeartRateDataModel.h +442 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncManager.h +161 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncPressureDataModel.h +158 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncSleepDataModel.h +224 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncSpo2DataModel.h +175 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncSportDataModel.h +221 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOSyncSwimDataModel.h +188 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOTranEnum.h +93 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOTransferFileManager.h +116 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOWatchDialInfoModel.h +95 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOWatchDialManager.h +75 -0
- package/ios/Plugin/iHealthSDKHeaders/IDOWeightBluetoothModel.h +124 -0
- package/ios/Plugin/iHealthSDKHeaders/IHSDKCloudUser.h +104 -0
- package/ios/Plugin/iHealthSDKHeaders/KN550BT.h +115 -0
- package/ios/Plugin/iHealthSDKHeaders/KN550BTController.h +32 -0
- package/ios/Plugin/iHealthSDKHeaders/ManageDeviceController.h +34 -0
- package/ios/Plugin/iHealthSDKHeaders/NT13B.h +33 -0
- package/ios/Plugin/iHealthSDKHeaders/NT13BController.h +28 -0
- package/ios/Plugin/iHealthSDKHeaders/NT13BHeader.h +16 -0
- package/ios/Plugin/iHealthSDKHeaders/NT13BMacroFile.h +34 -0
- package/ios/Plugin/iHealthSDKHeaders/PO1.h +82 -0
- package/ios/Plugin/iHealthSDKHeaders/PO1Controller.h +29 -0
- package/ios/Plugin/iHealthSDKHeaders/PO3.h +96 -0
- package/ios/Plugin/iHealthSDKHeaders/PO3Controller.h +29 -0
- package/ios/Plugin/iHealthSDKHeaders/POHeader.h +20 -0
- package/ios/Plugin/iHealthSDKHeaders/POMacroFile.h +142 -0
- package/ios/Plugin/iHealthSDKHeaders/PT3SBT.h +167 -0
- package/ios/Plugin/iHealthSDKHeaders/PT3SBTController.h +27 -0
- package/ios/Plugin/iHealthSDKHeaders/PT3SBTMacroFile.h +92 -0
- package/ios/Plugin/iHealthSDKHeaders/SDKFlowUpdateDevice.h +196 -0
- package/ios/Plugin/iHealthSDKHeaders/SDKInfo.h +30 -0
- package/ios/Plugin/iHealthSDKHeaders/SDKUpdateDevice.h +235 -0
- package/ios/Plugin/iHealthSDKHeaders/ScanDeviceController.h +47 -0
- package/ios/Plugin/iHealthSDKHeaders/THV3.h +104 -0
- package/ios/Plugin/iHealthSDKHeaders/THV3Controller.h +30 -0
- package/ios/Plugin/iHealthSDKHeaders/THV3Macro.h +17 -0
- package/ios/Plugin/iHealthSDKHeaders/TS28B.h +26 -0
- package/ios/Plugin/iHealthSDKHeaders/TS28BController.h +142 -0
- package/ios/Plugin/iHealthSDKHeaders/TS28BHeader.h +15 -0
- package/ios/Plugin/iHealthSDKHeaders/iHealthHS6.h +174 -0
- package/ios/Plugin/ihealth.swift +8 -0
- package/ios/Plugin/ihealthPlugin.h +10 -0
- package/ios/Plugin/ihealthPlugin.m +16 -0
- package/ios/Plugin/ihealthPlugin.swift +1502 -0
- package/ios/Plugin/libiHealthSDK2.7.8.a +0 -0
- package/ios/Plugin/test.m +9 -0
- package/package.json +78 -0
@@ -0,0 +1,1502 @@
|
|
1
|
+
import Foundation
|
2
|
+
import CoreBluetooth
|
3
|
+
import Capacitor
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Please read the Capacitor iOS Plugin Development Guide
|
7
|
+
* here: https://capacitorjs.com/docs/plugins/ios
|
8
|
+
*/
|
9
|
+
@objc(ihealthPlugin)
|
10
|
+
public class ihealthPlugin: CAPPlugin,CBCentralManagerDelegate,BG5SDelegate {
|
11
|
+
private var centralManager: CBCentralManager?
|
12
|
+
private var deviceType:HealthDeviceType?
|
13
|
+
private var deviceMacAddress:String?
|
14
|
+
|
15
|
+
var myBpDevice:KN550BT?
|
16
|
+
var myBP5SDevice:BP5S?
|
17
|
+
var myBBG5SDevice:BG5S?
|
18
|
+
var myPO3Device:PO3?
|
19
|
+
var myPT3SBTDevice:PT3SBT?
|
20
|
+
var myHS4SDevice:HS4?
|
21
|
+
var myHS2SDevice:HS2S?
|
22
|
+
var hs2sDataArray:[Any]?
|
23
|
+
var hs2sUserCount = 0
|
24
|
+
var userIdArr:[Data] = []
|
25
|
+
var timerCount = 0
|
26
|
+
var timer:Timer?
|
27
|
+
var healthUser:HealthUser?
|
28
|
+
var onlinePO3DeviceData : [AnyHashable : Any]?
|
29
|
+
|
30
|
+
private let implementation = ihealth()
|
31
|
+
|
32
|
+
override public func load() {
|
33
|
+
print("iHealthScanPlugin loaded")
|
34
|
+
}
|
35
|
+
deinit {
|
36
|
+
print("iHealthScanPlugin deinit called")
|
37
|
+
removeDeviceObserver()
|
38
|
+
}
|
39
|
+
public func centralManagerDidUpdateState(_ central: CBCentralManager) {
|
40
|
+
switch central.state {
|
41
|
+
case .unauthorized:
|
42
|
+
switch central.authorization {
|
43
|
+
case .allowedAlways:
|
44
|
+
print("allowedAlways")
|
45
|
+
case .denied:
|
46
|
+
print("denied")
|
47
|
+
case .restricted:
|
48
|
+
print("restricted")
|
49
|
+
case .notDetermined:
|
50
|
+
print("notDetermined")
|
51
|
+
}
|
52
|
+
case .unknown:
|
53
|
+
fallthrough
|
54
|
+
case .unsupported:
|
55
|
+
print("unsupported")
|
56
|
+
case .poweredOn:
|
57
|
+
print("poweredOn")
|
58
|
+
case .poweredOff:
|
59
|
+
print("poweredOff")
|
60
|
+
case .resetting:
|
61
|
+
print("resetting")
|
62
|
+
@unknown default:
|
63
|
+
break
|
64
|
+
}
|
65
|
+
}
|
66
|
+
@objc func initialiseCentralManager(_ call: CAPPluginCall) {
|
67
|
+
centralManager = CBCentralManager(delegate: self, queue: nil)
|
68
|
+
call.resolve(["value":"Success"])
|
69
|
+
}
|
70
|
+
@objc func isBluetoothEnabled(_ call: CAPPluginCall) {
|
71
|
+
//centralManager = CBCentralManager(delegate: self, queue: nil)
|
72
|
+
var isBleEnabled = false
|
73
|
+
if let centralManager = self.centralManager{
|
74
|
+
isBleEnabled = centralManager.state == CBManagerState.poweredOn
|
75
|
+
}else{
|
76
|
+
isBleEnabled = false
|
77
|
+
}
|
78
|
+
call.resolve(["value":isBleEnabled])
|
79
|
+
}
|
80
|
+
|
81
|
+
@objc func authoriseiHealthSdk(_ call: CAPPluginCall){ //com_inlogic_Test_ios
|
82
|
+
|
83
|
+
|
84
|
+
// if let url = Bundle.main.url(forResource:"com_test_EvolMobile_ios", withExtension: "pem") {
|
85
|
+
if let url = Bundle.main.url(forResource:"managemyhealth_co_nz_ios", withExtension: "pem") {
|
86
|
+
do {
|
87
|
+
let data = try Data(contentsOf:url)
|
88
|
+
IHSDKCloudUser.commandGetSDKUserInstance().commandSDKUserValidation(withLicense: data) { deviceAccessArray in
|
89
|
+
print("device supported \(deviceAccessArray)")
|
90
|
+
} userValidationSuccess: { UserAuthenResult in
|
91
|
+
call.resolve(["value":"Success"])
|
92
|
+
|
93
|
+
} disposeErrorBlock: { errorID in
|
94
|
+
|
95
|
+
var errorMsg = ""
|
96
|
+
switch (errorID) {
|
97
|
+
case UserAuthen_InputError:
|
98
|
+
errorMsg = "Input error"
|
99
|
+
break
|
100
|
+
case UserAuthen_CertificateExpired:
|
101
|
+
errorMsg = "Certificate expired"
|
102
|
+
break
|
103
|
+
case UserAuthen_InvalidCertificate:
|
104
|
+
errorMsg = "Invalid certificate"
|
105
|
+
break
|
106
|
+
default:
|
107
|
+
break
|
108
|
+
}
|
109
|
+
call.resolve(["value":"Error","message":errorMsg])
|
110
|
+
|
111
|
+
}
|
112
|
+
} catch {
|
113
|
+
print(error)
|
114
|
+
}
|
115
|
+
}
|
116
|
+
}
|
117
|
+
@objc func scanDiscover(_ call: CAPPluginCall) {
|
118
|
+
guard let options = call.options as NSDictionary? as? [String: Any] else { return }
|
119
|
+
|
120
|
+
let deviceModel = options["deviceModel"] as? String ?? ""
|
121
|
+
|
122
|
+
switch deviceModel {
|
123
|
+
case "KN-550BT":
|
124
|
+
self.selectBPTrackAndScan()
|
125
|
+
break
|
126
|
+
case "BP5S":
|
127
|
+
self.selectBP5SAndScan()
|
128
|
+
break
|
129
|
+
case "BG5S":
|
130
|
+
self.selectBG5SAndScan()
|
131
|
+
break
|
132
|
+
case "PO3":
|
133
|
+
self.selectPO3AndScan()
|
134
|
+
break
|
135
|
+
case "PT3SBT":
|
136
|
+
self.selectPT3SBTAndScan()
|
137
|
+
break
|
138
|
+
case "HS4S":
|
139
|
+
self.selectHS4SAndScan()
|
140
|
+
break
|
141
|
+
case "HS2S":
|
142
|
+
self.selectHS2SAndScan()
|
143
|
+
break
|
144
|
+
default:
|
145
|
+
break
|
146
|
+
}
|
147
|
+
// self.bridge?.viewController?.showToast(message: "selected device:\(deviceModel)")
|
148
|
+
|
149
|
+
//
|
150
|
+
// DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
|
151
|
+
// //call any function
|
152
|
+
// let data = ["deviceMacAddress": "123sk40049", "deviceName": "HS2S"]
|
153
|
+
// self.notifyListeners("deviceDiscover", data: data)
|
154
|
+
// DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
|
155
|
+
// //call any function
|
156
|
+
// let data = ["deviceMacAddress": "123sk40049", "deviceName": "HS2S"]
|
157
|
+
// self.notifyListeners("deviceConnect", data: data)
|
158
|
+
// }
|
159
|
+
// }
|
160
|
+
|
161
|
+
call.resolve([
|
162
|
+
"success": "success"
|
163
|
+
])
|
164
|
+
}
|
165
|
+
@objc func connectDevice(_ call: CAPPluginCall) {
|
166
|
+
if let device = deviceType {
|
167
|
+
ScanDeviceController.commandGetInstance().commandStopScanDeviceType(device)
|
168
|
+
|
169
|
+
}
|
170
|
+
guard let options = call.options as NSDictionary? as? [String: Any] else { return }
|
171
|
+
let paramDeviceModel = options["deviceModel"] as? String ?? ""
|
172
|
+
let paramDeviceMacAddress = options["deviceMacAddress"] as? String ?? ""
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
switch paramDeviceModel {
|
177
|
+
case "KN-550BT":
|
178
|
+
self.removeDeviceObserver()
|
179
|
+
self.deviceType = HealthDeviceType._KN550BT
|
180
|
+
self.addObserverWith(discover: KN550BTDiscover, connect: KN550BTConnectNoti, disconnect: KN550BTDisConnectNoti, connectfail: KN550BTConnectFailed)
|
181
|
+
|
182
|
+
KN550BTController.share()
|
183
|
+
break
|
184
|
+
case "BP5S":
|
185
|
+
self.removeDeviceObserver()
|
186
|
+
self.deviceType = HealthDeviceType._BP5S
|
187
|
+
addObserverWith(discover: BP5SDiscover, connect: BP5SConnectNoti, disconnect: BP5SDisConnectNoti, connectfail: BP5SConnectFailed)
|
188
|
+
BP5SController.shared()
|
189
|
+
break
|
190
|
+
case "BG5S":
|
191
|
+
self.removeDeviceObserver()
|
192
|
+
self.deviceType = HealthDeviceType._BG5S
|
193
|
+
self.addObserverWith(discover: kNotificationNameBG5SDidDiscover, connect: kNotificationNameBG5SConnectSuccess, disconnect: kNotificationNameBG5SDidDisConnect, connectfail: kNotificationNameBG5SConnectFail)
|
194
|
+
|
195
|
+
BG5SController.shared()
|
196
|
+
break
|
197
|
+
case "PT3SBT":
|
198
|
+
self.removeDeviceObserver()
|
199
|
+
self.deviceType = HealthDeviceType._PT3SBT
|
200
|
+
self.addObserverWith(discover: PT3SBTDiscover, connect: PT3SBTConnectNoti, disconnect: PT3SBTDisConnectNoti, connectfail: PT3SBTConnectFailed)
|
201
|
+
|
202
|
+
PT3SBTController.shareIHPT()
|
203
|
+
discoverDevice()
|
204
|
+
break
|
205
|
+
case "PO3":
|
206
|
+
self.removeDeviceObserver()
|
207
|
+
self.deviceType = HealthDeviceType._PO3
|
208
|
+
self.addObserverWith(discover: PO3Discover, connect: PO3ConnectNoti, disconnect: PO3DisConnectNoti, connectfail: PO3ConnectFailed)
|
209
|
+
|
210
|
+
PO3Controller.shareIHPO()
|
211
|
+
break
|
212
|
+
case "HS4S":
|
213
|
+
self.removeDeviceObserver()
|
214
|
+
self.deviceType = HealthDeviceType._HS4
|
215
|
+
self.addObserverWith(discover: HS4Discover, connect: HS4ConnectNoti, disconnect: HS4DisConnectNoti, connectfail: HS4ConnectFailed)
|
216
|
+
|
217
|
+
HS4Controller.shareIHHs4()
|
218
|
+
break
|
219
|
+
case "HS2S":
|
220
|
+
self.removeDeviceObserver()
|
221
|
+
self.deviceType = HealthDeviceType._HS2S
|
222
|
+
addObserverWith(discover: HS2SDiscover, connect: HS2SConnectNoti, disconnect: HS2SDisConnectNoti, connectfail: HS2SConnectFailed)
|
223
|
+
HS2SController.shareIHHS()
|
224
|
+
break
|
225
|
+
default:
|
226
|
+
break
|
227
|
+
}
|
228
|
+
self.deviceMacAddress = paramDeviceMacAddress
|
229
|
+
if(paramDeviceModel != "PT3SBT"){
|
230
|
+
if let device = self.deviceType, let serialNumber = self.deviceMacAddress {
|
231
|
+
|
232
|
+
ConnectDeviceController.commandGetInstance().commandContectDevice(with: device, andSerialNub: serialNumber)
|
233
|
+
}
|
234
|
+
}
|
235
|
+
|
236
|
+
|
237
|
+
call.resolve([
|
238
|
+
"success": "success"
|
239
|
+
])
|
240
|
+
}
|
241
|
+
|
242
|
+
|
243
|
+
func selectBPTrackAndScan() {
|
244
|
+
removeDeviceObserver()
|
245
|
+
deviceType = HealthDeviceType._KN550BT
|
246
|
+
|
247
|
+
addObserverWith(discover: KN550BTDiscover, connect: KN550BTConnectNoti, disconnect: KN550BTDisConnectNoti, connectfail: KN550BTConnectFailed)
|
248
|
+
|
249
|
+
KN550BTController.share()
|
250
|
+
|
251
|
+
discoverDevice()
|
252
|
+
}
|
253
|
+
func selectBP5SAndScan() {
|
254
|
+
removeDeviceObserver()
|
255
|
+
deviceType = HealthDeviceType._BP5S
|
256
|
+
|
257
|
+
addObserverWith(discover: BP5SDiscover, connect: BP5SConnectNoti, disconnect: BP5SDisConnectNoti, connectfail: BP5SConnectFailed)
|
258
|
+
|
259
|
+
BP5SController.shared()
|
260
|
+
|
261
|
+
discoverDevice()
|
262
|
+
}
|
263
|
+
func selectBG5SAndScan(){
|
264
|
+
removeDeviceObserver()
|
265
|
+
|
266
|
+
deviceType = HealthDeviceType._BG5S
|
267
|
+
addObserverWith(discover: kNotificationNameBG5SDidDiscover, connect: kNotificationNameBG5SConnectSuccess, disconnect: kNotificationNameBG5SDidDisConnect, connectfail: kNotificationNameBG5SConnectFail)
|
268
|
+
|
269
|
+
BG5SController.shared()
|
270
|
+
|
271
|
+
discoverDevice()
|
272
|
+
}
|
273
|
+
|
274
|
+
func selectPO3AndScan() {
|
275
|
+
removeDeviceObserver()
|
276
|
+
deviceType = HealthDeviceType._PO3
|
277
|
+
addObserverWith(discover: PO3Discover, connect: PO3ConnectNoti, disconnect: PO3DisConnectNoti, connectfail: PO3ConnectFailed)
|
278
|
+
|
279
|
+
PO3Controller.shareIHPO()
|
280
|
+
|
281
|
+
discoverDevice()
|
282
|
+
}
|
283
|
+
|
284
|
+
func selectPT3SBTAndScan() {
|
285
|
+
removeDeviceObserver()
|
286
|
+
deviceType = HealthDeviceType._PT3SBT
|
287
|
+
addObserverWith(discover: PT3SBTDiscover, connect: PT3SBTConnectNoti, disconnect: PT3SBTDisConnectNoti, connectfail: PT3SBTConnectFailed)
|
288
|
+
|
289
|
+
PT3SBTController.shareIHPT()
|
290
|
+
|
291
|
+
discoverDevice()
|
292
|
+
}
|
293
|
+
|
294
|
+
func selectHS4SAndScan() {
|
295
|
+
removeDeviceObserver()
|
296
|
+
deviceType = HealthDeviceType._HS4
|
297
|
+
addObserverWith(discover: HS4Discover, connect: HS4ConnectNoti, disconnect: HS4DisConnectNoti, connectfail: HS4ConnectFailed)
|
298
|
+
|
299
|
+
HS4Controller.shareIHHs4()
|
300
|
+
|
301
|
+
discoverDevice()
|
302
|
+
}
|
303
|
+
func selectHS2SAndScan() {
|
304
|
+
removeDeviceObserver()
|
305
|
+
deviceType = HealthDeviceType._HS2S
|
306
|
+
addObserverWith(discover: HS2SDiscover, connect: HS2SConnectNoti, disconnect: HS2SDisConnectNoti, connectfail: HS2SConnectFailed)
|
307
|
+
|
308
|
+
HS2SController.shareIHHS()
|
309
|
+
|
310
|
+
discoverDevice()
|
311
|
+
}
|
312
|
+
func discoverDevice() {
|
313
|
+
|
314
|
+
if let device = deviceType {
|
315
|
+
|
316
|
+
ScanDeviceController.commandGetInstance().commandScanDeviceType(device)
|
317
|
+
}
|
318
|
+
}
|
319
|
+
|
320
|
+
func removeDeviceObserver(){
|
321
|
+
|
322
|
+
|
323
|
+
NotificationCenter.default.removeObserver(self)
|
324
|
+
}
|
325
|
+
|
326
|
+
func addObserverWith(discover:String,connect:String,disconnect:String,connectfail:String) {
|
327
|
+
|
328
|
+
|
329
|
+
NotificationCenter.default.addObserver(
|
330
|
+
self,
|
331
|
+
selector: #selector(self.deviceDiscover),
|
332
|
+
name: Notification.Name(discover),
|
333
|
+
object: nil)
|
334
|
+
|
335
|
+
NotificationCenter.default.addObserver(
|
336
|
+
self,
|
337
|
+
selector: #selector(self.deviceConnect),
|
338
|
+
name: Notification.Name(connect),
|
339
|
+
object: nil)
|
340
|
+
|
341
|
+
NotificationCenter.default.addObserver(
|
342
|
+
self,
|
343
|
+
selector: #selector(self.deviceDisconnect),
|
344
|
+
name: Notification.Name(disconnect),
|
345
|
+
object: nil)
|
346
|
+
NotificationCenter.default.addObserver(
|
347
|
+
self,
|
348
|
+
selector: #selector(self.deviceConnectFail),
|
349
|
+
name: Notification.Name(connectfail),
|
350
|
+
object: nil)
|
351
|
+
}
|
352
|
+
|
353
|
+
@objc func deviceDiscover(notification:NSNotification) {
|
354
|
+
|
355
|
+
|
356
|
+
let notifyObject = notification.userInfo
|
357
|
+
if let serialNumber = notifyObject?["SerialNumber"] as? String, let deviceName = notifyObject?["DeviceName"] as? String{
|
358
|
+
|
359
|
+
let data = ["deviceMacAddress": serialNumber, "deviceName": deviceName == "HS4" ? "HS4S" : deviceName]
|
360
|
+
self.notifyListeners("deviceDiscover", data: data)
|
361
|
+
self.deviceMacAddress = serialNumber
|
362
|
+
|
363
|
+
self.connectWithMedicalDevice()
|
364
|
+
}else if let serialNumber = notifyObject?["ID"] as? String{
|
365
|
+
let data = ["deviceMacAddress": serialNumber]
|
366
|
+
self.notifyListeners("deviceDiscover", data: data)
|
367
|
+
self.deviceMacAddress = serialNumber
|
368
|
+
|
369
|
+
self.connectWithMedicalDevice()
|
370
|
+
}
|
371
|
+
|
372
|
+
|
373
|
+
}
|
374
|
+
func connectWithMedicalDevice() {
|
375
|
+
if let device = self.deviceType , let serialNumber = self.deviceMacAddress {
|
376
|
+
ConnectDeviceController.commandGetInstance().commandContectDevice(with: device, andSerialNub: serialNumber)
|
377
|
+
}
|
378
|
+
}
|
379
|
+
@objc func deviceConnectFail(notification:NSNotification) {
|
380
|
+
|
381
|
+
|
382
|
+
guard let userInfo = notification.userInfo as NSDictionary? as? [String: Any] else {return}
|
383
|
+
|
384
|
+
self.discoverDevice()
|
385
|
+
self.notifyListeners("deviceConnectFail", data: userInfo)
|
386
|
+
}
|
387
|
+
|
388
|
+
@objc func deviceDisconnect(notification:NSNotification) {
|
389
|
+
let notifyObject = notification.userInfo
|
390
|
+
|
391
|
+
|
392
|
+
guard let userInfo = notification.userInfo as NSDictionary? as? [String: Any] else {return}
|
393
|
+
self.notifyListeners("deviceDisconnect", data: userInfo)
|
394
|
+
//self.notifyListeners("deviceDisconnect", data: notifyObject)
|
395
|
+
}
|
396
|
+
|
397
|
+
@objc func deviceConnect(notification:NSNotification) {
|
398
|
+
if let device = deviceType {
|
399
|
+
ScanDeviceController.commandGetInstance().commandStopScanDeviceType(device)
|
400
|
+
|
401
|
+
}
|
402
|
+
let notifyObject = notification.userInfo
|
403
|
+
|
404
|
+
guard let userInfo = notification.userInfo as NSDictionary? as? [String: Any] else {return}
|
405
|
+
self.notifyListeners("deviceConnect", data: userInfo)
|
406
|
+
|
407
|
+
}
|
408
|
+
|
409
|
+
//device connected methods
|
410
|
+
|
411
|
+
|
412
|
+
@objc func getConnectedDeviceInstance(_ call: CAPPluginCall) {
|
413
|
+
guard let options = call.options as NSDictionary? as? [String: Any] else { return }
|
414
|
+
let deviceModel = options["deviceModel"] as? String ?? ""
|
415
|
+
deviceMacAddress = options["deviceMacAddress"] as? String ?? ""
|
416
|
+
switch deviceModel {
|
417
|
+
case "KN-550BT":
|
418
|
+
self.deviceType = HealthDeviceType._KN550BT
|
419
|
+
getBPDeviceInstances()
|
420
|
+
break
|
421
|
+
case "BP5S":
|
422
|
+
self.deviceType = HealthDeviceType._BP5S
|
423
|
+
getBP5SDeviceInstances()
|
424
|
+
break
|
425
|
+
case "BG5S":
|
426
|
+
self.deviceType = HealthDeviceType._BG5S
|
427
|
+
getBG5SInstances()
|
428
|
+
break
|
429
|
+
case "PO3":
|
430
|
+
self.deviceType = HealthDeviceType._PO3
|
431
|
+
getPO3Instances()
|
432
|
+
break
|
433
|
+
case "PT3SBT":
|
434
|
+
self.deviceType = HealthDeviceType._PT3SBT
|
435
|
+
getPT3SBTInstances()
|
436
|
+
break
|
437
|
+
case "HS4S":
|
438
|
+
self.deviceType = HealthDeviceType._HS4
|
439
|
+
getHS4SInstances()
|
440
|
+
break
|
441
|
+
case "HS2S":
|
442
|
+
deviceType = HealthDeviceType._HS2S
|
443
|
+
getHS2SInstances()
|
444
|
+
break
|
445
|
+
default:
|
446
|
+
break
|
447
|
+
}
|
448
|
+
}
|
449
|
+
@objc func getDeviceOfflineData(_ call: CAPPluginCall) {
|
450
|
+
|
451
|
+
|
452
|
+
// self.hs2sDataArray = [
|
453
|
+
// ["HS2SMeasureTS":Date(),"HS2SWeigthResult":"68","HS2SDataID":"123dcf456"],
|
454
|
+
// ["HS2SMeasureTS":Date(),"HS2SWeigthResult":"69","HS2SDataID":"123dcf456"],
|
455
|
+
// ["HS2SMeasureTS":Date(),"HS2SWeigthResult":"64","HS2SDataID":"123dcf456"],
|
456
|
+
// ["HS2SMeasureTS":Date(),"HS2SWeigthResult":"56","HS2SDataID":"123dcf456"]]
|
457
|
+
// DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
|
458
|
+
// let userData = ["result": self.hs2sDataArray, "deviceModel": "HS2S", "deviceMacAddress": self.deviceMacAddress] as [String : Any]
|
459
|
+
//
|
460
|
+
// self.notifyListeners("deviceDatafound", data: userData)
|
461
|
+
// }
|
462
|
+
switch deviceType {
|
463
|
+
case ._KN550BT:
|
464
|
+
self.getBPOfflineData()
|
465
|
+
break
|
466
|
+
case ._BP5S:
|
467
|
+
self.getBP5SOfflineData()
|
468
|
+
break
|
469
|
+
case ._BG5S:
|
470
|
+
self.getBG5SOfflineData()
|
471
|
+
break
|
472
|
+
case ._PO3:
|
473
|
+
self.getPO3OfflineData()
|
474
|
+
break
|
475
|
+
case ._PT3SBT:
|
476
|
+
self.getPT3SBSOfflineData()
|
477
|
+
break
|
478
|
+
case ._HS4:
|
479
|
+
self.getHS4SOfflineData()
|
480
|
+
break
|
481
|
+
case ._HS2S:
|
482
|
+
self.getHS2SOfflineData()
|
483
|
+
break
|
484
|
+
default:
|
485
|
+
break
|
486
|
+
}
|
487
|
+
}
|
488
|
+
@objc func disconnectDevice(_ call: CAPPluginCall) {
|
489
|
+
switch deviceType {
|
490
|
+
case ._KN550BT:
|
491
|
+
disconnectBPTrack()
|
492
|
+
break
|
493
|
+
case ._BP5S:
|
494
|
+
disconnectBP5S()
|
495
|
+
break
|
496
|
+
case ._BG5S:
|
497
|
+
disconnectBG5S()
|
498
|
+
break
|
499
|
+
case ._PO3:
|
500
|
+
disconnectPO3()
|
501
|
+
break
|
502
|
+
case ._PT3SBT:
|
503
|
+
disconnectPT3SBT()
|
504
|
+
break
|
505
|
+
case ._HS4:
|
506
|
+
disconnectHS4S()
|
507
|
+
break
|
508
|
+
case ._HS2S:
|
509
|
+
disconnectHS2S()
|
510
|
+
break
|
511
|
+
default:
|
512
|
+
break
|
513
|
+
}
|
514
|
+
}
|
515
|
+
func deleteDeviceData(_ call: CAPPluginCall){
|
516
|
+
switch deviceType {
|
517
|
+
case ._KN550BT:
|
518
|
+
deleteDataFromBPTrack()
|
519
|
+
break
|
520
|
+
case ._BP5S:
|
521
|
+
deleteDataFromBP5S()
|
522
|
+
break
|
523
|
+
case ._BG5S:
|
524
|
+
deleteDataFromBG5S()
|
525
|
+
break
|
526
|
+
case ._PO3:
|
527
|
+
deleteDataFromPO3()
|
528
|
+
break
|
529
|
+
case ._PT3SBT:
|
530
|
+
deleteDataFromPT3SBT()
|
531
|
+
break
|
532
|
+
case ._HS4:
|
533
|
+
deleteDataFromHS4S()
|
534
|
+
break
|
535
|
+
case ._HS2S:
|
536
|
+
deleteDataFromHS2S()
|
537
|
+
break
|
538
|
+
default:
|
539
|
+
break
|
540
|
+
}
|
541
|
+
}
|
542
|
+
// MARK: Disconnect Device Methods
|
543
|
+
func disconnectBG5S() {
|
544
|
+
|
545
|
+
myBBG5SDevice?.disconnectDevice()
|
546
|
+
}
|
547
|
+
|
548
|
+
func disconnectBPTrack() {
|
549
|
+
|
550
|
+
|
551
|
+
myBpDevice?.commandDisconnectDevice()
|
552
|
+
}
|
553
|
+
func disconnectBP5S() {
|
554
|
+
|
555
|
+
myBP5SDevice?.commandDisconnectDevice()
|
556
|
+
}
|
557
|
+
func disconnectPO3() {
|
558
|
+
|
559
|
+
myPO3Device?.commandDisconnect({ isPO3Disconnected in
|
560
|
+
|
561
|
+
}, withErrorBlock: { error in
|
562
|
+
|
563
|
+
})
|
564
|
+
}
|
565
|
+
|
566
|
+
func disconnectPT3SBT() {
|
567
|
+
|
568
|
+
myPT3SBTDevice?.commandDisconnectDevice()
|
569
|
+
}
|
570
|
+
|
571
|
+
func disconnectHS4S() {
|
572
|
+
myHS4SDevice?.commandDisconnectDevice()
|
573
|
+
}
|
574
|
+
func disconnectHS2S() {
|
575
|
+
|
576
|
+
myHS2SDevice?.commandDisconnectDevice()
|
577
|
+
}
|
578
|
+
// MARK: Delete Offline Data Methods
|
579
|
+
func deleteDataFromBPTrack(){
|
580
|
+
self.myBpDevice?.commandDeleteDataSuccessBlock({
|
581
|
+
|
582
|
+
}, errorBlock: { err in
|
583
|
+
|
584
|
+
})
|
585
|
+
}
|
586
|
+
func deleteDataFromBP5S(){
|
587
|
+
self.myBP5SDevice?.commandDeleteDataSuccessBlock({
|
588
|
+
|
589
|
+
}, errorBlock: { err in
|
590
|
+
|
591
|
+
})
|
592
|
+
}
|
593
|
+
func deleteDataFromBG5S(){
|
594
|
+
self.myBBG5SDevice?.deleteRecord(successBlock: {
|
595
|
+
|
596
|
+
}, errorBlock: { err, str in
|
597
|
+
|
598
|
+
})
|
599
|
+
}
|
600
|
+
func deleteDataFromPO3(){
|
601
|
+
|
602
|
+
}
|
603
|
+
func deleteDataFromPT3SBT(){
|
604
|
+
self.myPT3SBTDevice?.commandDeleteMemorryData({ isSuccess in
|
605
|
+
|
606
|
+
}, disposeErrorBlock: { err in
|
607
|
+
|
608
|
+
})
|
609
|
+
}
|
610
|
+
func deleteDataFromHS4S(){
|
611
|
+
|
612
|
+
}
|
613
|
+
func deleteDataFromHS2S(){
|
614
|
+
//self.myHS2SDevice.dele
|
615
|
+
}
|
616
|
+
|
617
|
+
// MARK: Get Instances Methods
|
618
|
+
func getBPDeviceInstances() {
|
619
|
+
|
620
|
+
if let devices = KN550BTController.share().getAllCurrentKN550BTInstace() as? [KN550BT] {
|
621
|
+
for device in devices {
|
622
|
+
if(deviceMacAddress == device.serialNumber) {
|
623
|
+
myBpDevice = device
|
624
|
+
}
|
625
|
+
}
|
626
|
+
}
|
627
|
+
myBpDevice?.commandFunction({ data in
|
628
|
+
|
629
|
+
}, errorBlock: { error in
|
630
|
+
|
631
|
+
})
|
632
|
+
}
|
633
|
+
func getBP5SDeviceInstances() {
|
634
|
+
|
635
|
+
if let devices = BP5SController.shared().getAllCurrentInstance() as? [BP5S]{
|
636
|
+
for device in devices {
|
637
|
+
if(deviceMacAddress == device.serialNumber) {
|
638
|
+
|
639
|
+
myBP5SDevice = device
|
640
|
+
}
|
641
|
+
}
|
642
|
+
}
|
643
|
+
self.myBP5SDevice?.commandFunction({ data in
|
644
|
+
|
645
|
+
}, errorBlock: { err in
|
646
|
+
|
647
|
+
})
|
648
|
+
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
|
649
|
+
self.startBP5SMeasurement()
|
650
|
+
}
|
651
|
+
}
|
652
|
+
func getBG5SInstances() {
|
653
|
+
|
654
|
+
if let devices = BG5SController.shared().getAllCurrentInstace() as? [BG5S] {
|
655
|
+
for device in devices {
|
656
|
+
if(deviceMacAddress == device.serialNumber) {
|
657
|
+
myBBG5SDevice = device
|
658
|
+
self.myBBG5SDevice?.delegate = self;
|
659
|
+
}
|
660
|
+
}
|
661
|
+
}
|
662
|
+
let timezone = Double(NSTimeZone.system.secondsFromGMT()) / 3600.0
|
663
|
+
|
664
|
+
myBBG5SDevice?.setTimeWith(Date(), timezone: Float(timezone), successBlock: {
|
665
|
+
print(" succesfully set date ")
|
666
|
+
}, errorBlock: { error, msg in
|
667
|
+
|
668
|
+
})
|
669
|
+
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
|
670
|
+
self.startBG5SMeasurement()
|
671
|
+
}
|
672
|
+
}
|
673
|
+
|
674
|
+
func getPO3Instances() {
|
675
|
+
|
676
|
+
|
677
|
+
if let devices = PO3Controller.shareIHPO().getAllCurrentPO3Instace() as? [PO3] {
|
678
|
+
for device in devices {
|
679
|
+
if(deviceMacAddress == device.serialNumber) {
|
680
|
+
|
681
|
+
myPO3Device = device
|
682
|
+
}
|
683
|
+
}
|
684
|
+
}
|
685
|
+
myPO3Device?.commandSyncTime({ istimesynced in
|
686
|
+
|
687
|
+
}, withErrorBlock: { error in
|
688
|
+
|
689
|
+
})
|
690
|
+
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
|
691
|
+
self.startPO3Measurement()
|
692
|
+
}
|
693
|
+
|
694
|
+
}
|
695
|
+
|
696
|
+
func getPT3SBTInstances() {
|
697
|
+
|
698
|
+
if let devices = PT3SBTController.shareIHPT().getAllCurrentPT3SBTInstace() as? [PT3SBT] {
|
699
|
+
for device in devices {
|
700
|
+
|
701
|
+
if let macAddress = deviceMacAddress{
|
702
|
+
if(macAddress == device.serialNumber) {
|
703
|
+
myPT3SBTDevice = device
|
704
|
+
|
705
|
+
}
|
706
|
+
}
|
707
|
+
|
708
|
+
}
|
709
|
+
}
|
710
|
+
myPT3SBTDevice?.commandFunction({ data in
|
711
|
+
}, disposeErrorBlock: { error in
|
712
|
+
})
|
713
|
+
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
|
714
|
+
self.startPT3SBTMeasurement()
|
715
|
+
}
|
716
|
+
|
717
|
+
}
|
718
|
+
|
719
|
+
func getHS4SInstances() {
|
720
|
+
|
721
|
+
if let devices = HS4Controller.shareIHHs4().getAllCurrentHS4Instace() as? [HS4]{
|
722
|
+
for device in devices {
|
723
|
+
if(deviceMacAddress == device.deviceID) {
|
724
|
+
myHS4SDevice = device
|
725
|
+
}
|
726
|
+
}
|
727
|
+
}
|
728
|
+
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
|
729
|
+
self.startHS4SMeasurement()
|
730
|
+
}
|
731
|
+
}
|
732
|
+
func getHS2SInstances() {
|
733
|
+
|
734
|
+
|
735
|
+
if let devices = HS2SController.shareIHHS().getAllCurrentHS2SInstace() as? [HS2S]{
|
736
|
+
for device in devices {
|
737
|
+
if(deviceMacAddress == device.serialNumber) {
|
738
|
+
|
739
|
+
myHS2SDevice = device
|
740
|
+
}
|
741
|
+
}
|
742
|
+
}
|
743
|
+
self.myHS2SDevice?.commandGetDeviceInfo({ data in
|
744
|
+
|
745
|
+
}, diaposeErrorBlock: { err in
|
746
|
+
|
747
|
+
})
|
748
|
+
|
749
|
+
self.myHS2SDevice?.commandGetUserInfo({ userinfo in
|
750
|
+
self.healthUser = HealthUser()
|
751
|
+
if let userInfoArr = userinfo?["UserInfo"] as? [[String:Any]] {
|
752
|
+
if(userInfoArr.count == 0){
|
753
|
+
let userId = "iHealth123456786"
|
754
|
+
self.healthUser?.hs2SUserID = userId.data(using: .utf8)
|
755
|
+
self.healthUser?.createTS = Date().currentTimeMillis()
|
756
|
+
|
757
|
+
self.healthUser?.weight = 85;
|
758
|
+
|
759
|
+
self.healthUser?.age = 20;
|
760
|
+
|
761
|
+
self.healthUser?.height = 100;
|
762
|
+
|
763
|
+
self.healthUser?.sex = UserSex_Male;
|
764
|
+
|
765
|
+
self.healthUser?.impedanceMark = HS2SImpedanceMark_YES;
|
766
|
+
|
767
|
+
self.healthUser?.fitnessMark = HS2SFitnessMark_YES;
|
768
|
+
if let user = self.healthUser{
|
769
|
+
self.myHS2SDevice?.commandUpdateUserInfo(with: user, result: { isSuccess in
|
770
|
+
|
771
|
+
}, diaposeErrorBlock: { err in
|
772
|
+
|
773
|
+
})
|
774
|
+
}
|
775
|
+
|
776
|
+
}else{
|
777
|
+
for (index,item) in userInfoArr.enumerated() {
|
778
|
+
if let userID = item["UserInfo_ID"] as? Data{
|
779
|
+
self.healthUser?.hs2SUserID = userID
|
780
|
+
}
|
781
|
+
|
782
|
+
if let createTime = item["create_time"] as? Int,let weight = item["weight"] as? NSNumber,let gender = item["gender"] as? Int,let age = item["age"] as? NSNumber,let height = item["height"] as? NSNumber,let impedance = item["impedance"] as? Int{
|
783
|
+
|
784
|
+
self.healthUser?.createTS = createTime
|
785
|
+
|
786
|
+
self.healthUser?.weight = weight;
|
787
|
+
|
788
|
+
self.healthUser?.age = age;
|
789
|
+
|
790
|
+
self.healthUser?.height = height;
|
791
|
+
|
792
|
+
self.healthUser?.sex = gender == 1 ? UserSex_Male : UserSex_Female
|
793
|
+
|
794
|
+
self.healthUser?.impedanceMark = impedance == 1 ? HS2SImpedanceMark_YES : HS2SImpedanceMark_NO
|
795
|
+
|
796
|
+
self.healthUser?.fitnessMark = HS2SFitnessMark_YES
|
797
|
+
}
|
798
|
+
}
|
799
|
+
}
|
800
|
+
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
|
801
|
+
self.startHS2SMeasurement()
|
802
|
+
}
|
803
|
+
}
|
804
|
+
|
805
|
+
}, diaposeErrorBlock: { error in
|
806
|
+
|
807
|
+
})
|
808
|
+
|
809
|
+
}
|
810
|
+
// MARK: Get Offline Data Methods
|
811
|
+
func getBG5SOfflineData() {
|
812
|
+
|
813
|
+
|
814
|
+
|
815
|
+
myBBG5SDevice?.queryRecord(successBlock: { data in
|
816
|
+
guard let deviceDataArr = data else{
|
817
|
+
let userData = ["count": 0] as [String : Any]
|
818
|
+
self.notifyListeners("dataNotFound", data: userData)
|
819
|
+
return
|
820
|
+
}
|
821
|
+
|
822
|
+
var userdata:[Any] = []
|
823
|
+
for item in deviceDataArr {
|
824
|
+
if let deviceData = item as? BG5SRecordModel {
|
825
|
+
userdata.append(["date": deviceData.measureDate, "value": deviceData.value, "dataID": deviceData.dataID])
|
826
|
+
|
827
|
+
}
|
828
|
+
}
|
829
|
+
|
830
|
+
|
831
|
+
|
832
|
+
let userData = ["result": userdata, "deviceModel": "BG5S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":false] as [String : Any]
|
833
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
834
|
+
|
835
|
+
}, errorBlock: { error, msg in
|
836
|
+
|
837
|
+
})
|
838
|
+
}
|
839
|
+
|
840
|
+
func getBPOfflineData() {
|
841
|
+
myBpDevice?.commandTransferMemoryData(totalCount: { count in
|
842
|
+
|
843
|
+
if(count == 0) {
|
844
|
+
let userData = ["count": count] as [String : Any]
|
845
|
+
self.notifyListeners("dataNotFound", data: userData)
|
846
|
+
}
|
847
|
+
}, progress: { progress in
|
848
|
+
|
849
|
+
let userData = ["progress": progress] as [String : Any]
|
850
|
+
self.notifyListeners("progress", data: userData)
|
851
|
+
}, dataArray: { data in
|
852
|
+
|
853
|
+
guard let deviceDataArr = data else {
|
854
|
+
return
|
855
|
+
}
|
856
|
+
|
857
|
+
|
858
|
+
let userData = ["result": deviceDataArr, "deviceModel": "KN-550BT", "deviceMacAddress": self.deviceMacAddress,"isFromLive":false] as [String : Any]
|
859
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
860
|
+
|
861
|
+
}, errorBlock: { error in
|
862
|
+
|
863
|
+
self.BP550Error(errorID: error)
|
864
|
+
})
|
865
|
+
}
|
866
|
+
func getBP5SOfflineData() {
|
867
|
+
|
868
|
+
|
869
|
+
var bp5sData: [Any] = []
|
870
|
+
var isDataProgress = 0
|
871
|
+
//self.myBP5SDevice.comm
|
872
|
+
|
873
|
+
self.myBP5SDevice?.commandTransferMemoryTotalCount({ totalCount in
|
874
|
+
|
875
|
+
if(totalCount == 0){
|
876
|
+
let userData = ["count": totalCount] as [String : Any]
|
877
|
+
self.notifyListeners("dataNotFound", data: userData)
|
878
|
+
}else{
|
879
|
+
|
880
|
+
|
881
|
+
self.myBP5SDevice?.commandTransferMemoryData(totalCount: { count in
|
882
|
+
|
883
|
+
|
884
|
+
if(count == 0) {
|
885
|
+
let userData = ["count": count] as [String : Any]
|
886
|
+
self.notifyListeners("dataNotFound", data: userData)
|
887
|
+
}
|
888
|
+
}, progress: { progress in
|
889
|
+
|
890
|
+
|
891
|
+
if let progressStat = progress{
|
892
|
+
isDataProgress = Int(progressStat)
|
893
|
+
|
894
|
+
if(isDataProgress == 1 || isDataProgress == 100){
|
895
|
+
|
896
|
+
let userData = ["result": bp5sData, "deviceModel": "BP5S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":false] as [String : Any]
|
897
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
898
|
+
|
899
|
+
}
|
900
|
+
}
|
901
|
+
|
902
|
+
}, dataArray: { data in
|
903
|
+
|
904
|
+
|
905
|
+
if let deviceDataArr = data{
|
906
|
+
// for deviceData in deviceDataArr{
|
907
|
+
// bp5sData.append(deviceData)
|
908
|
+
// }
|
909
|
+
bp5sData.append(contentsOf: deviceDataArr)
|
910
|
+
}
|
911
|
+
|
912
|
+
|
913
|
+
|
914
|
+
}, errorBlock: { error in
|
915
|
+
self.BP550Error(errorID: error)
|
916
|
+
})
|
917
|
+
}
|
918
|
+
}, errorBlock: { err in
|
919
|
+
self.BP550Error(errorID: err)
|
920
|
+
})
|
921
|
+
|
922
|
+
|
923
|
+
}
|
924
|
+
func getPO3OfflineData() {
|
925
|
+
var PO3DeviceData: [Any] = []
|
926
|
+
myPO3Device?.commandOfflineDataCount({ count in
|
927
|
+
|
928
|
+
|
929
|
+
if(count == 0) {
|
930
|
+
|
931
|
+
let userData = ["count": count] as [String : Any]
|
932
|
+
self.notifyListeners("dataNotFound", data: userData)
|
933
|
+
}
|
934
|
+
}, withOfflineData: { data in
|
935
|
+
|
936
|
+
guard let deviceDataArr = data else {
|
937
|
+
return
|
938
|
+
}
|
939
|
+
PO3DeviceData.append(deviceDataArr)
|
940
|
+
}, withOfflineWaveData: { data in
|
941
|
+
|
942
|
+
}, withFinishMeasure: { isMesureFinish in
|
943
|
+
print(" isMesureFinish: \(isMesureFinish)")
|
944
|
+
|
945
|
+
let userData = ["result": PO3DeviceData, "deviceModel": "PO3", "deviceMacAddress": self.deviceMacAddress,"isFromLive":false] as [String : Any]
|
946
|
+
|
947
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
948
|
+
}, withErrorBlock: { error in
|
949
|
+
self.PO3Error(errorID: error)
|
950
|
+
})
|
951
|
+
}
|
952
|
+
|
953
|
+
func getPT3SBSOfflineData() {
|
954
|
+
|
955
|
+
self.myPT3SBTDevice?.commandGetMemoryCount({ count in
|
956
|
+
|
957
|
+
if(count == 0) {
|
958
|
+
let userData = ["count": count] as [String : Any]
|
959
|
+
|
960
|
+
self.notifyListeners("dataNotFound", data: userData)
|
961
|
+
} else {
|
962
|
+
self.myPT3SBTDevice?.commandGetMemorryData({ data in
|
963
|
+
|
964
|
+
guard let deviceDataArr = data else {
|
965
|
+
return
|
966
|
+
}
|
967
|
+
let userData = ["result": deviceDataArr, "deviceModel": "PT3SBT", "deviceMacAddress": self.deviceMacAddress,"isFromLive":false] as [String : Any]
|
968
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
969
|
+
//self.deleteDataFromPT3SBT()
|
970
|
+
}, disposeErrorBlock: { error in
|
971
|
+
|
972
|
+
let userData = ["error": error] as [String : Any]
|
973
|
+
self.notifyListeners("error", data: userData)
|
974
|
+
})
|
975
|
+
}
|
976
|
+
}, disposeErrorBlock: { error in
|
977
|
+
|
978
|
+
let userData = ["error": error] as [String : Any]
|
979
|
+
self.notifyListeners("error", data: userData)
|
980
|
+
})
|
981
|
+
|
982
|
+
|
983
|
+
|
984
|
+
}
|
985
|
+
|
986
|
+
func getHS4SOfflineData() {
|
987
|
+
print(" getHS4SOfflineData()")
|
988
|
+
|
989
|
+
myHS4SDevice?.commandTransferMemorryData({ dict in
|
990
|
+
|
991
|
+
print(" dict : \(dict)")
|
992
|
+
}, disposeProgress: { count in
|
993
|
+
print(" count : \(count)")
|
994
|
+
}, memorryData: { data in
|
995
|
+
print(" data : \(data)")
|
996
|
+
guard let deviceDataArr = data else{
|
997
|
+
return
|
998
|
+
}
|
999
|
+
|
1000
|
+
let userData = ["result": deviceDataArr, "deviceModel": "HS4S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":false] as [String : Any]
|
1001
|
+
print(" deviceDatafound >> \(userData)")
|
1002
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1003
|
+
|
1004
|
+
}, finishTransmission: {
|
1005
|
+
print(" finished")
|
1006
|
+
}, disposeErrorBlock: { error in
|
1007
|
+
print(" disposeErrorBlock >> \(error)")
|
1008
|
+
self.HS4SError(errorID: error)
|
1009
|
+
})
|
1010
|
+
}
|
1011
|
+
|
1012
|
+
func getHS2SAnonymousData(){
|
1013
|
+
|
1014
|
+
self.myHS2SDevice?.commandGetAnonymousMemoryDataCount({ count in
|
1015
|
+
if(count == 0){
|
1016
|
+
if(self.hs2sDataArray?.count == 0){
|
1017
|
+
let userData = ["count": 0] as [String : Any]
|
1018
|
+
self.notifyListeners("dataNotFound", data: userData)
|
1019
|
+
}else{
|
1020
|
+
let userData = ["result": self.hs2sDataArray, "deviceModel": "HS2S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":false] as [String : Any]
|
1021
|
+
|
1022
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1023
|
+
}
|
1024
|
+
}else{
|
1025
|
+
self.myHS2SDevice?.commandGetAnonymousMemoryData({ data in
|
1026
|
+
|
1027
|
+
if let deviceDataArr = data {
|
1028
|
+
self.hs2sDataArray?.append(contentsOf: deviceDataArr)
|
1029
|
+
|
1030
|
+
}
|
1031
|
+
let userData = ["result": self.hs2sDataArray, "deviceModel": "HS2S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":false] as [String : Any]
|
1032
|
+
|
1033
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1034
|
+
|
1035
|
+
}, diaposeErrorBlock: { err in
|
1036
|
+
|
1037
|
+
})
|
1038
|
+
}
|
1039
|
+
}, diaposeErrorBlock: { error in
|
1040
|
+
})
|
1041
|
+
|
1042
|
+
}
|
1043
|
+
|
1044
|
+
func deleteHS2sMemoryDataWithUserID(_ user:Data,_ isNotify:Bool){
|
1045
|
+
self.myHS2SDevice?.commandDeleteMemoryData(withUserID: user, result: { isDeleted in
|
1046
|
+
|
1047
|
+
}, diaposeErrorBlock: { err in
|
1048
|
+
if(isNotify){
|
1049
|
+
|
1050
|
+
}
|
1051
|
+
})
|
1052
|
+
}
|
1053
|
+
|
1054
|
+
func getHS2sMemoryDataWithUserID(_ user:Data,_ isNotify:Bool){
|
1055
|
+
|
1056
|
+
self.myHS2SDevice?.commandGetMemoryDataCount(withUserID: user, memoryCount: { count in
|
1057
|
+
|
1058
|
+
if(count == 0 && isNotify){
|
1059
|
+
|
1060
|
+
self.getHS2SAnonymousData()
|
1061
|
+
// let userData = ["count": 0] as [String : Any]
|
1062
|
+
// self.notifyListeners("dataNotFound", data: userData)
|
1063
|
+
// self.disconnectHS2S()
|
1064
|
+
}else{
|
1065
|
+
if(count == 0){
|
1066
|
+
self.hs2sUserCount = self.hs2sUserCount + 1
|
1067
|
+
self.getHS2sMemoryDataWithUserID(self.userIdArr[self.hs2sUserCount],self.hs2sUserCount == (self.userIdArr.count - 1))
|
1068
|
+
}else{
|
1069
|
+
self.myHS2SDevice?.commandGetMemoryData(withUserID: user, memoryData: { data in
|
1070
|
+
|
1071
|
+
if let deviceDataArr = data {
|
1072
|
+
self.hs2sDataArray?.append(contentsOf: deviceDataArr)
|
1073
|
+
|
1074
|
+
}
|
1075
|
+
if(isNotify){
|
1076
|
+
self.getHS2SAnonymousData()
|
1077
|
+
// let userData = ["result": self.hs2sDataArray, "deviceModel": "HS2S", "deviceMacAddress": self.deviceMacAddress] as [String : Any]
|
1078
|
+
// self.filesystem.appendFile("commandGetMemoryData hs2s data found")
|
1079
|
+
// self.notifyListeners("deviceDatafound", data: userData)
|
1080
|
+
self.hs2sUserCount = 0
|
1081
|
+
|
1082
|
+
}else{
|
1083
|
+
self.hs2sUserCount = self.hs2sUserCount + 1
|
1084
|
+
self.getHS2sMemoryDataWithUserID(self.userIdArr[self.hs2sUserCount],self.hs2sUserCount == (self.userIdArr.count - 1))
|
1085
|
+
}
|
1086
|
+
|
1087
|
+
|
1088
|
+
}, diaposeErrorBlock: { err in
|
1089
|
+
//let userData = ["count": 0] as [String : Any]
|
1090
|
+
//self.notifyListeners("dataNotFound", data: userData)
|
1091
|
+
|
1092
|
+
//self.disconnectHS2S()
|
1093
|
+
})
|
1094
|
+
}
|
1095
|
+
}
|
1096
|
+
}, diaposeErrorBlock: { error in
|
1097
|
+
|
1098
|
+
})
|
1099
|
+
}
|
1100
|
+
func getHS2SOfflineData() {
|
1101
|
+
print(" getHS4SOfflineData()")
|
1102
|
+
|
1103
|
+
self.myHS2SDevice?.commandGetDeviceInfo({ data in
|
1104
|
+
|
1105
|
+
}, diaposeErrorBlock: { err in
|
1106
|
+
|
1107
|
+
})
|
1108
|
+
self.myHS2SDevice?.commandGetUserInfo({ userinfo in
|
1109
|
+
|
1110
|
+
if let userInfoArr = userinfo?["UserInfo"] as? [[String:Any]] {
|
1111
|
+
|
1112
|
+
self.hs2sDataArray = []
|
1113
|
+
if(userInfoArr.count == 0){
|
1114
|
+
|
1115
|
+
|
1116
|
+
self.getHS2SAnonymousData()
|
1117
|
+
|
1118
|
+
|
1119
|
+
}else{
|
1120
|
+
self.hs2sUserCount = 0
|
1121
|
+
self.userIdArr = []
|
1122
|
+
for (index,item) in userInfoArr.enumerated() {
|
1123
|
+
|
1124
|
+
|
1125
|
+
if let userID = item["UserInfo_ID"] as? Data{
|
1126
|
+
self.userIdArr.append(userID)
|
1127
|
+
}
|
1128
|
+
}
|
1129
|
+
if(self.userIdArr.count > 0){
|
1130
|
+
|
1131
|
+
self.getHS2sMemoryDataWithUserID(self.userIdArr[self.hs2sUserCount],self.hs2sUserCount == (self.userIdArr.count - 1))
|
1132
|
+
}
|
1133
|
+
|
1134
|
+
}
|
1135
|
+
}
|
1136
|
+
|
1137
|
+
}, diaposeErrorBlock: { error in
|
1138
|
+
|
1139
|
+
})
|
1140
|
+
|
1141
|
+
|
1142
|
+
}
|
1143
|
+
// MARK: Device Measure Methods
|
1144
|
+
|
1145
|
+
|
1146
|
+
func startTimer() {
|
1147
|
+
timerCount = 0
|
1148
|
+
guard timer == nil else { return }
|
1149
|
+
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(test), userInfo: nil, repeats: true)
|
1150
|
+
}
|
1151
|
+
|
1152
|
+
func stopTimer() {
|
1153
|
+
guard timer != nil else { return }
|
1154
|
+
timer?.invalidate()
|
1155
|
+
timer = nil
|
1156
|
+
}
|
1157
|
+
|
1158
|
+
@objc func test() {
|
1159
|
+
if(timerCount == 10){
|
1160
|
+
stopTimer()
|
1161
|
+
let hs4sData = [["weight":timerCount,"dataID":"1234567","date":Date()]]
|
1162
|
+
let userData = ["result": hs4sData, "deviceModel": "HS4S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":true] as [String : Any]
|
1163
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1164
|
+
}else{
|
1165
|
+
let userData = ["result": timerCount, "deviceModel": "HS4S", "deviceMacAddress": self.deviceMacAddress] as [String : Any]
|
1166
|
+
|
1167
|
+
self.notifyListeners("OnlineDeviceData", data: userData)
|
1168
|
+
timerCount = timerCount+1
|
1169
|
+
}
|
1170
|
+
}
|
1171
|
+
|
1172
|
+
func startBP5SMeasurement(){
|
1173
|
+
self.myBP5SDevice?.commandFunction({ data in
|
1174
|
+
self.myBP5SDevice?.commandStartMeasure(zeroingState: { isZeroState in
|
1175
|
+
|
1176
|
+
}, pressure: { data in
|
1177
|
+
let userData = ["result": data, "deviceModel": "BP5S", "deviceMacAddress": self.deviceMacAddress] as [String : Any]
|
1178
|
+
|
1179
|
+
self.notifyListeners("OnlineDeviceData", data: userData)
|
1180
|
+
}, waveletWithHeartbeat: { data in
|
1181
|
+
print("waveletWithHeartbeat \(data)")
|
1182
|
+
}, waveletWithoutHeartbeat: { data in
|
1183
|
+
print("waveletWithoutHeartbeat \(data)")
|
1184
|
+
}, result: { dataObj in
|
1185
|
+
let bp5sData = [dataObj]
|
1186
|
+
let userData = ["result": bp5sData, "deviceModel": "BP5S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":true] as [String : Any]
|
1187
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1188
|
+
}, errorBlock: { err in
|
1189
|
+
|
1190
|
+
})
|
1191
|
+
}, errorBlock: { error in
|
1192
|
+
|
1193
|
+
})
|
1194
|
+
|
1195
|
+
}
|
1196
|
+
|
1197
|
+
func startPT3SBTMeasurement(){
|
1198
|
+
// self.myPT3SBTDevice.comm
|
1199
|
+
NotificationCenter.default.addObserver(
|
1200
|
+
self,
|
1201
|
+
selector: #selector(self.onlineMeasurementForPT3SBT),
|
1202
|
+
name: Notification.Name("PT3SBTNotificationGetResult"),
|
1203
|
+
object: nil)
|
1204
|
+
}
|
1205
|
+
@objc func onlineMeasurementForPT3SBT(notification:NSNotification){
|
1206
|
+
let notifyObject = notification.userInfo
|
1207
|
+
guard let userInfo = notification.userInfo as NSDictionary? as? [String: Any] else {return}
|
1208
|
+
// self.bridge?.viewController?.showToast(message: "PT3SBT \(userInfo)")
|
1209
|
+
let userData = ["result": [userInfo], "deviceModel": "PT3SBT", "deviceMacAddress": self.deviceMacAddress,"isFromLive":true] as [String : Any]
|
1210
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1211
|
+
}
|
1212
|
+
func startPO3Measurement(){
|
1213
|
+
|
1214
|
+
self.myPO3Device?.commandStartMeasure({ isSuccess in
|
1215
|
+
|
1216
|
+
}, withMeasureData: { dataObj in
|
1217
|
+
if let data = dataObj as? [String:Any] , let spo2 = data["spo2"] as? Int,let bpm = data["bpm"] as? Int{
|
1218
|
+
if(spo2 > 0 && bpm > 0){
|
1219
|
+
self.onlinePO3DeviceData = data
|
1220
|
+
let userData = ["result": self.onlinePO3DeviceData, "deviceModel": "PO3", "deviceMacAddress": self.deviceMacAddress] as [String : Any]
|
1221
|
+
self.notifyListeners("OnlineDeviceData", data: userData)
|
1222
|
+
}
|
1223
|
+
}
|
1224
|
+
}, withFinishMeasure: { isCompleted in
|
1225
|
+
if(isCompleted){
|
1226
|
+
print("PO3 start withFinishMeasure:if\(isCompleted)")
|
1227
|
+
print("PO3 start withFinishMeasure:if\(String(describing: self.onlinePO3DeviceData))")
|
1228
|
+
let userData = ["result": [self.onlinePO3DeviceData], "deviceModel": "PO3", "deviceMacAddress": self.deviceMacAddress,"isFromLive":true] as [String : Any]
|
1229
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1230
|
+
}else{
|
1231
|
+
let userData = ["error": "Error getting final value.Please take again."] as [String : Any]
|
1232
|
+
self.notifyListeners("error", data: userData)
|
1233
|
+
}
|
1234
|
+
|
1235
|
+
}, withErrorBlock: { err in
|
1236
|
+
self.bridge?.viewController?.showToast(message: "PO3 start error else:\(err)")
|
1237
|
+
})
|
1238
|
+
}
|
1239
|
+
func startBG5SMeasurement(){
|
1240
|
+
self.myBBG5SDevice?.startMeasure(BGMeasureMode.noBlood, withSuccessBlock: {
|
1241
|
+
|
1242
|
+
}, errorBlock: { err, msg in
|
1243
|
+
|
1244
|
+
})
|
1245
|
+
}
|
1246
|
+
func startHS2SMeasurement(){
|
1247
|
+
if let user = self.healthUser{
|
1248
|
+
self.myHS2SDevice?.commandStartMeasure(with: user, weight: { weight in
|
1249
|
+
let userData = ["result": weight, "deviceModel": "HS2S", "deviceMacAddress": self.deviceMacAddress] as [String : Any]
|
1250
|
+
|
1251
|
+
self.notifyListeners("OnlineDeviceData", data: userData)
|
1252
|
+
}, stableWeight: { stableWeight in
|
1253
|
+
let hs4sData = [["weight":stableWeight,"dataID":"1234567","date":Date()]]
|
1254
|
+
let userData = ["result": hs4sData, "deviceModel": "HS2S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":true] as [String : Any]
|
1255
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1256
|
+
}, weightAndBodyInfo: { dataObj in
|
1257
|
+
|
1258
|
+
}, disposeHS2SMeasureFinish: {
|
1259
|
+
|
1260
|
+
}, diaposeErrorBlock: { err in
|
1261
|
+
|
1262
|
+
})
|
1263
|
+
}
|
1264
|
+
|
1265
|
+
|
1266
|
+
}
|
1267
|
+
func startHS4SMeasurement(){
|
1268
|
+
// self.bridge?.viewController?.showToast(message: "startHS4SMeasurement")
|
1269
|
+
// self.startTimer()
|
1270
|
+
self.myHS4SDevice?.commandMeasure(withUint: HSUnit_Kg, weight: { unstableWeight in
|
1271
|
+
let userData = ["result": unstableWeight, "deviceModel": "HS4S", "deviceMacAddress": self.deviceMacAddress] as [String : Any]
|
1272
|
+
// self.bridge?.viewController?.showToast(message: "unstable weight\(unstableWeight)")
|
1273
|
+
|
1274
|
+
self.notifyListeners("OnlineDeviceData", data: userData)
|
1275
|
+
}, stableWeight: { dataObj in
|
1276
|
+
let hs4sData = [dataObj]
|
1277
|
+
let userData = ["result": hs4sData, "deviceModel": "HS4S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":true] as [String : Any]
|
1278
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1279
|
+
//self.bridge?.viewController?.showToast(message: "stable weight:\(hs4sData)")
|
1280
|
+
}, disposeErrorBlock: { err in
|
1281
|
+
self.bridge?.viewController?.showToast(message: "error in hs4s start\(err)")
|
1282
|
+
})
|
1283
|
+
|
1284
|
+
}
|
1285
|
+
|
1286
|
+
// MARK: Error CallBack Methods
|
1287
|
+
|
1288
|
+
func HS4SError(errorID:HS4DeviceError) {
|
1289
|
+
var errorMsg = ""
|
1290
|
+
|
1291
|
+
switch errorID {
|
1292
|
+
case .deviceLowPower:
|
1293
|
+
errorMsg = "Battery level is low"
|
1294
|
+
case .dataZeor:
|
1295
|
+
errorMsg = "No memory"
|
1296
|
+
let userData = ["count": 0] as [String : Any]
|
1297
|
+
self.notifyListeners("dataNotFound", data: userData)
|
1298
|
+
case .deviceEr0:
|
1299
|
+
errorMsg = "The Scale failed to initialize"
|
1300
|
+
case .deviceEr1:
|
1301
|
+
errorMsg = "Maximum weight has been exceeded"
|
1302
|
+
case .deviceEr2:
|
1303
|
+
errorMsg = "The Scale can't capture a steady reading"
|
1304
|
+
case .deviceEr4:
|
1305
|
+
errorMsg = "Bluetooth connection error"
|
1306
|
+
case .deviceEr7:
|
1307
|
+
errorMsg = "Movement while measuring"
|
1308
|
+
case .deviceEr8:
|
1309
|
+
errorMsg = "Invalidate"
|
1310
|
+
case .deviceEr9:
|
1311
|
+
errorMsg = "Scale memory access error"
|
1312
|
+
case .deviceDisconnect:
|
1313
|
+
errorMsg = "Device disconnect"
|
1314
|
+
case .deviceSendTimeout:
|
1315
|
+
errorMsg = "Communication error"
|
1316
|
+
case .deviceRecWeightError:
|
1317
|
+
errorMsg = "DeviceRecWeightError"
|
1318
|
+
}
|
1319
|
+
|
1320
|
+
print(" HS4SError() >> \(errorMsg)")
|
1321
|
+
if(errorMsg != "No memory"){
|
1322
|
+
let userData = ["error": errorMsg] as [String : Any]
|
1323
|
+
self.notifyListeners("error", data: userData)
|
1324
|
+
}
|
1325
|
+
|
1326
|
+
}
|
1327
|
+
|
1328
|
+
func BP550Error(errorID:BPDeviceError){
|
1329
|
+
var errorMsg = ""
|
1330
|
+
switch (errorID) {
|
1331
|
+
case .error0:
|
1332
|
+
errorMsg = "Unable to take measurements due to arm/wrist movements."
|
1333
|
+
break
|
1334
|
+
case .error1:
|
1335
|
+
errorMsg = "Failed to detect systolic pressure."
|
1336
|
+
break
|
1337
|
+
case .error2:
|
1338
|
+
errorMsg = "Failed to detect diastolic pressure."
|
1339
|
+
break
|
1340
|
+
case .error3:
|
1341
|
+
errorMsg = "Pneumatic system blocked or cuff is too tight during inflation."
|
1342
|
+
break
|
1343
|
+
case .error4:
|
1344
|
+
errorMsg = "Pneumatic system leakage or cuff is too loose during inflation"
|
1345
|
+
break
|
1346
|
+
case .error5:
|
1347
|
+
errorMsg = "Cuff pressure reached over 300mmHg."
|
1348
|
+
break
|
1349
|
+
case .error6:
|
1350
|
+
errorMsg = "Cuff pressure reached over 15 mmHg for more than 160 seconds."
|
1351
|
+
break
|
1352
|
+
case .error7: fallthrough
|
1353
|
+
case .error8: fallthrough
|
1354
|
+
case .error9: fallthrough
|
1355
|
+
case .error10:
|
1356
|
+
errorMsg = "Data retrieving error."
|
1357
|
+
break
|
1358
|
+
case .error11: fallthrough
|
1359
|
+
case .error12:
|
1360
|
+
errorMsg = "Communication Error."
|
1361
|
+
break
|
1362
|
+
case .error13:
|
1363
|
+
errorMsg = "Low battery."
|
1364
|
+
break
|
1365
|
+
case .error14:
|
1366
|
+
errorMsg = "Device bluetooth set failed."
|
1367
|
+
break
|
1368
|
+
case .error15:
|
1369
|
+
errorMsg = " Systolic exceeds 260mmHg or diastolic exceeds 199mmHg"
|
1370
|
+
break
|
1371
|
+
case .error16:
|
1372
|
+
errorMsg = "Systolic below 60mmHg or diastolic below 40mmHg"
|
1373
|
+
break
|
1374
|
+
case .error17:
|
1375
|
+
errorMsg = "Arm/wrist movement beyond range."
|
1376
|
+
break
|
1377
|
+
case .error18: fallthrough
|
1378
|
+
case .error19:
|
1379
|
+
errorMsg = "Heart rate in measure result exceeds max limit."
|
1380
|
+
break
|
1381
|
+
case .error20:
|
1382
|
+
errorMsg = "PP(Average BP) exceeds limit"
|
1383
|
+
break
|
1384
|
+
case .errorUserStopMeasure:
|
1385
|
+
errorMsg = "User stop measure(for ABPM history measurement only)"
|
1386
|
+
break
|
1387
|
+
case .normalError:
|
1388
|
+
errorMsg = "device error, error message displayed automatically."
|
1389
|
+
break
|
1390
|
+
case .overTimeError: fallthrough
|
1391
|
+
case .noRespondError:
|
1392
|
+
errorMsg = "Abnormal communication."
|
1393
|
+
break
|
1394
|
+
case .beyondRangeError:
|
1395
|
+
errorMsg = "device is out of communication range."
|
1396
|
+
break
|
1397
|
+
case .didDisconnect:
|
1398
|
+
errorMsg = "Device Disconnect."
|
1399
|
+
break
|
1400
|
+
case .askToStopMeasure:
|
1401
|
+
errorMsg = "measurement has been stopped."
|
1402
|
+
break
|
1403
|
+
case .deviceBusy:
|
1404
|
+
errorMsg = "device is busy doing other things."
|
1405
|
+
break
|
1406
|
+
case .inputParameterError: fallthrough
|
1407
|
+
case .invalidOperation:
|
1408
|
+
errorMsg = "Parameter input error."
|
1409
|
+
break
|
1410
|
+
default:
|
1411
|
+
break
|
1412
|
+
}
|
1413
|
+
|
1414
|
+
print(" HS4SError() >> \(errorMsg)")
|
1415
|
+
|
1416
|
+
let userData = ["error": errorMsg] as [String : Any]
|
1417
|
+
self.notifyListeners("error", data: userData)
|
1418
|
+
}
|
1419
|
+
|
1420
|
+
func PO3Error(errorID:PO3ErrorID){
|
1421
|
+
var errorMsg = ""
|
1422
|
+
|
1423
|
+
switch (errorID) {
|
1424
|
+
case .overTime:
|
1425
|
+
errorMsg = "PO3Error_OverTime."
|
1426
|
+
break
|
1427
|
+
case .resetDeviceFaild:
|
1428
|
+
errorMsg = "PO3Error_ResetDeviceFaild"
|
1429
|
+
break
|
1430
|
+
case .disconnect:
|
1431
|
+
errorMsg = "PO3Error_Disconnect"
|
1432
|
+
break
|
1433
|
+
case .parameterError:
|
1434
|
+
errorMsg = "PO3Error_ParameterError"
|
1435
|
+
break
|
1436
|
+
case .firmwareVersionIsNotSupported:
|
1437
|
+
errorMsg = "PO3Error_FirmwareVersionIsNotSupported"
|
1438
|
+
break
|
1439
|
+
default:
|
1440
|
+
break
|
1441
|
+
}
|
1442
|
+
|
1443
|
+
print(" PO3Error() >> \(errorMsg)")
|
1444
|
+
|
1445
|
+
let userData = ["error": errorMsg] as [String : Any]
|
1446
|
+
self.notifyListeners("error", data: userData)
|
1447
|
+
}
|
1448
|
+
|
1449
|
+
// MARK: BG5S Delegate Methods
|
1450
|
+
|
1451
|
+
public func device(_ device: BG5S!, occurError error: BG5SError, errorDescription: String!) {
|
1452
|
+
print(" BG5S >> occurError")
|
1453
|
+
}
|
1454
|
+
|
1455
|
+
public func device(_ device: BG5S!, stripStateDidUpdate state: BG5SStripState) {
|
1456
|
+
print(" BG5S >> stripStateDidUpdate")
|
1457
|
+
}
|
1458
|
+
|
1459
|
+
public func deviceDropBlood(_ device: BG5S!) {
|
1460
|
+
print(" BG5S >> deviceDropBlood")
|
1461
|
+
}
|
1462
|
+
|
1463
|
+
public func device(_ device: BG5S!, dataID: String!, measureReult result: Int) {
|
1464
|
+
print(" BG5S >> measureReult : \(result)")
|
1465
|
+
|
1466
|
+
let userData = ["result": [["date": Date(), "value": result, "dataID":dataID]], "deviceModel": "BG5S", "deviceMacAddress": self.deviceMacAddress,"isFromLive":true] as [String : Any]
|
1467
|
+
self.notifyListeners("deviceDatafound", data: userData)
|
1468
|
+
}
|
1469
|
+
|
1470
|
+
public func device(_ device: BG5S!, chargeStateDidUpdate state: BG5SChargeState) {
|
1471
|
+
print(" BG5S >> chargeStateDidUpdate()")
|
1472
|
+
}
|
1473
|
+
}
|
1474
|
+
|
1475
|
+
extension Date {
|
1476
|
+
func currentTimeMillis() -> Int {
|
1477
|
+
return Int(self.timeIntervalSince1970 * 1000)
|
1478
|
+
}
|
1479
|
+
}
|
1480
|
+
extension UIViewController {
|
1481
|
+
|
1482
|
+
func showToast(message : String) {
|
1483
|
+
DispatchQueue.main.async {
|
1484
|
+
let toastLabel = UILabel(frame: CGRect(x: 0, y: self.view.frame.size.height-200, width: self.view.frame.size.width, height: 200))
|
1485
|
+
toastLabel.backgroundColor = UIColor.black.withAlphaComponent(0.6)
|
1486
|
+
toastLabel.textColor = UIColor.white
|
1487
|
+
toastLabel.font = .systemFont(ofSize: 12.0)
|
1488
|
+
toastLabel.textAlignment = .center;
|
1489
|
+
toastLabel.text = message
|
1490
|
+
toastLabel.alpha = 1.0
|
1491
|
+
toastLabel.layer.cornerRadius = 10;
|
1492
|
+
toastLabel.clipsToBounds = true
|
1493
|
+
self.view.addSubview(toastLabel)
|
1494
|
+
UIView.animate(withDuration: 4.0, delay: 0.1, options: .curveEaseOut, animations: {
|
1495
|
+
toastLabel.alpha = 0.0
|
1496
|
+
}, completion: {(isCompleted) in
|
1497
|
+
toastLabel.removeFromSuperview()
|
1498
|
+
})
|
1499
|
+
}
|
1500
|
+
}
|
1501
|
+
|
1502
|
+
}
|