summaryrefslogtreecommitdiff
path: root/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGUSBModule.m
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGUSBModule.m')
-rw-r--r--libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGUSBModule.m258
1 files changed, 258 insertions, 0 deletions
diff --git a/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGUSBModule.m b/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGUSBModule.m
new file mode 100644
index 0000000..10db55d
--- /dev/null
+++ b/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGUSBModule.m
@@ -0,0 +1,258 @@
1//
2// ECGUSBModule.m
3// ReactNativeIOSLibrary
4//
5// Created by daiqingquan on 2018/1/5.
6// Copyright © 2018年 daiqingquan. All rights reserved.
7//
8
9#import "ECGUSBModule.h"
10#import "ECGHeader.h"
11#import "ECGProfileModule.h"
12
13#define EVENT_NOTIFY @"event_notify_ecgusb"
14
15@implementation ECGUSBModule
16
17
18
19RCT_EXPORT_MODULE()
20- (NSArray<NSString *> *)supportedEvents {
21 return @[@"event_notify", @"event_scan_device", @"event_scan_finish",
22 @"event_device_connected", @"event_device_connect_failed",
23 @"event_device_disconnect", @"event_authenticate_result",
24 @"event_notify_ts28b", @"event_notify_bg1",
25 @"action_connect_result_for_bg1"];
26}
27
28
29
30#pragma mark
31#pragma mark - constantsToExport
32- (NSDictionary *)constantsToExport
33{
34 return @{@"Event_Notify": EVENT_NOTIFY };
35
36}
37+ (BOOL)requiresMainQueueSetup
38{
39 return YES;
40}
41#pragma mark
42#pragma mark - Method
43
44RCT_EXPORT_METHOD(getAllConnectedDevices){
45
46 ECG3USB *ecg=[[ECG3USBController shareECG3USBController] getCurrentECG3USBInstace];
47
48 if (ecg!=nil) {
49
50 NSDictionary* deviceInfo = @{kACTION:kACTION_GET_ALL_CONNECTED_DEVICES,kDEVICES:ecg.serialNumber};
51 [self sendEventWithName:EVENT_NOTIFY body:deviceInfo];
52 }
53
54
55}
56RCT_EXPORT_METHOD(getIdps){
57
58
59 NSMutableDictionary*deviceInfo=[NSMutableDictionary dictionary];
60
61 [deviceInfo setValue:@(404) forKey:kERROR_NUM_ECGUSB];
62
63 [deviceInfo setValue:@"This method iOS is not supported" forKey:kERROR_DESCRIPTION_ECGUSB];
64
65 [self sendEventWithName:EVENT_NOTIFY body:deviceInfo];
66}
67/**
68 Sync Data
69
70 @param startBlock means start
71 @param progressBlock 0-100
72 @param resultBlock You can get filtered data from the NSDocumentDirectory path.
73 Abnormal Point Marked by User: OBData_FileName.txt
74 Filtered ECG Data: ECGAnalyseResult_FileName.txt
75 Lead Off Begin Point: ECGLeadOffBegin_FileName.txt
76 Lead Off End Point: ECGLeadOffEnd_FileName.txt
77 ECG HR Information EveryHour: ECGHREveryHour_FileName.txt
78 Abnormal Point Filtered by Algorithm: ECGOBbyFilter_FileName.txt
79 ECG HR Information for Day: ECGDetail_FileName.txt
80 @param errorBlock error
81 */
82
83RCT_EXPORT_METHOD(syncData){
84
85 ECG3USB *device = [[ECG3USBController shareECG3USBController] getCurrentECG3USBInstace];
86 if (device) {
87 __weak typeof(self) weakSelf = self;
88 [device syncDataWithStartBlock:^{
89
90 NSDictionary* deviceInfo = @{kACTION:kACTION_STARTSYNCDATA_ECGUSB,kMAC:device.serialNumber,kType:@"ECG3USB"};
91 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
92
93 } progressBlock:^(NSUInteger progress) {
94
95 NSDictionary* deviceInfo = @{kACTION:kACTION_SYNCDATAPROGRESS_ECGUSB,kPROGRESS:@(progress),kMAC:device.serialNumber,kType:@"ECG3USB"};
96 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
97
98 } resultBlock:^(NSArray *resultArray, BOOL finish) {
99
100 NSDictionary* deviceInfo = @{kACTION:kACTION_SYNCDATAINFO_ECGUSB,kDATAINFO:resultArray,kMAC:device.serialNumber,kType:@"ECG3USB"};
101 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
102
103 } errorBlock:^(ECG3USBError errorID) {
104
105 [weakSelf commandReturnECGUSBError:errorID MAC:device.serialNumber];
106 }];
107
108 }else{
109 [self commandReturnECGUSBError:ECG3USBError_DeviceDisconnect MAC:@""];
110 }
111}
112
113-(void)commandReturnECGUSBError:(ECG3USBError)errorID MAC:(NSString*)mac{
114
115
116 NSMutableDictionary*deviceInfo=[NSMutableDictionary dictionary];
117 [deviceInfo setValue:@"ECG3USB" forKey:kType];
118 if (mac) {
119 [deviceInfo setValue:mac forKey:kMAC];
120 }
121 [deviceInfo setValue:@"ACTION_ERROR_ECGUSB" forKey:kACTION];
122
123 NSString*errorDes=[NSString string];
124
125 switch (errorID) {
126 case ECG3USBError_QuerySDCardInfoTimeout:
127 errorDes=@"Query command timeout";
128 break;
129 case ECG3USBError_SDCardInfoError:
130 errorDes=@"Received SD card info is wrong";
131 break;
132 case ECG3USBError_SDCardError:
133 errorDes=@"Receive devce's error log: SD card error";
134 break;
135 case ECG3USBError_iOSDeviceFlashNotEnough:
136 errorDes=@"There is not enough space for ECG's offline data";
137 break;
138 case ECG3USBError_AFilePackageIndexNotMatch:
139 errorDes=@"Receive wrong data";
140 break;
141 case ECG3USBError_BFilePackageIndexNotMatch:
142 errorDes=@"Receive wrong data";
143 break;
144 case ECG3USBError_ReceiveDataTimeout:
145 errorDes=@"Receive data timeout";
146 break;
147 case ECG3USBError_SaveFileError:
148 errorDes=@"Save file error";
149 break;
150 case ECG3USBError_DeviceDisconnect:
151 errorDes=@"Device is disconnected";
152 break;
153 case ECG3USBError_DeviceReplyFormatFail:
154 errorDes=@"Format fail";
155 break;
156 case ECG3USBError_DeviceFormatTimeout:
157 errorDes=@"Format command timeout.";
158 break;
159 case ECG3USBError_CommandTimeout:
160 errorDes=@"Command timeout";
161 break;
162
163 default:
164 break;
165 }
166
167 [deviceInfo setValue:@(errorID) forKey:kERROR_NUM_ECGUSB];
168
169 [deviceInfo setValue:errorDes forKey:kERROR_DESCRIPTION_ECGUSB];
170
171 [self sendEventWithName:EVENT_NOTIFY body:deviceInfo];
172}
173
174/**
175 Format SD Card
176
177 @param successBlock Success
178 @param progressBlock 0-100
179 @param failBlock Fail
180 */
181
182RCT_EXPORT_METHOD(deleteData){
183
184 ECG3USB *device = [[ECG3USBController shareECG3USBController] getCurrentECG3USBInstace];
185 if (device) {
186 __weak typeof(self) weakSelf = self;
187 [device formatSDCard:^{
188 NSDictionary* deviceInfo = @{kACTION:kACTION_DELETEDATA_ECGUSB,kType:@"ECG3USB",kMAC:device.serialNumber};
189 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
190 } progressBlock:^(NSUInteger progress) {
191
192 } errorBlock:^(ECG3USBError error) {
193 [weakSelf commandReturnECGUSBError:error MAC:device.serialNumber];
194 }];
195
196 }else{
197 [self commandReturnECGUSBError:ECG3USBError_DeviceDisconnect MAC:@""];
198 }
199}
200
201/**
202 Splice data
203
204 @param fileNames An Array with FileName value from ECG3USBSyncResultBlock
205 @param success a block contains a dictionary with two keys: success(@{@"DataFileName":dataFileName,@"MarkFileName":markFileName});
206 @param error a block contains error message
207 */
208RCT_EXPORT_METHOD(spliceData:(nonnull NSArray*)array){
209 __weak typeof(self) weakSelf = self;
210 [ECG3USB spliceWithFileNames:array successBlock:^(NSDictionary *dic) {
211 NSDictionary* deviceInfo = @{kACTION:kACTION_SPLICE,kSPLICE_DATA:dic,kType:@"ECG3USB",kMAC:@""};
212 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
213 } errorBlock:^(ECG3USBError error, NSString *message) {
214 NSDictionary* deviceInfo = @{kACTION:kACTION_SPLICE,kSPLICE_ERROR_DESCRIPTION:message,kType:@"ECG3USB",kMAC:@""};
215 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
216 }];
217}
218
219RCT_EXPORT_METHOD(getCache){
220 ECG3USB *device = [[ECG3USBController shareECG3USBController] getCurrentECG3USBInstace];
221 if (device) {
222 __weak typeof(self) weakSelf = self;
223 [device getCacheDataWithBlock:^(NSArray *array) {
224 NSDictionary* deviceInfo = @{kACTION:kACTION_GET_CACHE,kGET_CACHE_DATA:array,kMAC:device.serialNumber,kType:@"ECG3USB"};
225 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
226 }];
227 }else{
228 [self commandReturnECGUSBError:ECG3USBError_DeviceDisconnect MAC:@""];
229 }
230}
231
232RCT_EXPORT_METHOD(getFilterDataByFileName:(nonnull NSString*)dataFileName markName:(nonnull NSString *)markFileName){
233 ECG3USB *device = [[ECG3USBController shareECG3USBController] getCurrentECG3USBInstace];
234 if (device) {
235 if (!dataFileName || !markFileName){
236 NSString *message = @"input parameter cannot be null";
237 NSDictionary* deviceInfo = @{kACTION:kACTION_SPLICE,kFILTER_ERROR_DESCRIPTION:message,kType:@"ECG3USB",kMAC:device.serialNumber};
238 [self sendEventWithName:EVENT_NOTIFY body:deviceInfo];
239 } else {
240 __weak typeof(self) weakSelf = self;
241 [device getFilterDataWithDic:@{@"MarkFileName":markFileName,@"DataFileName":dataFileName} success:^(NSArray *resultArray, BOOL finish) {
242 NSDictionary* deviceInfo = @{kACTION:kACTION_FILTER,kFILTER_DATA:resultArray,kMAC:device.serialNumber,kType:@"ECG3USB"};
243 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
244 } error:^(NSString *message) {
245 NSDictionary* deviceInfo = @{kACTION:kACTION_SPLICE,kFILTER_ERROR_DESCRIPTION:message,kType:@"ECG3USB",kMAC:device.serialNumber};
246 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
247
248 }];
249 }
250
251
252
253 }else{
254 [self commandReturnECGUSBError:ECG3USBError_DeviceDisconnect MAC:@""];
255 }
256}
257
258@end