summaryrefslogtreecommitdiff
path: root/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGModule.m
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGModule.m')
-rw-r--r--libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGModule.m245
1 files changed, 245 insertions, 0 deletions
diff --git a/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGModule.m b/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGModule.m
new file mode 100644
index 0000000..9cc04ea
--- /dev/null
+++ b/libs/ihealth-sdk/ios/ReactNativeIOSLibrary/ECGModule.m
@@ -0,0 +1,245 @@
1//
2// ECGModule.m
3// ReactNativeIOSLibrary
4//
5// Created by daiqingquan on 2018/1/5.
6// Copyright © 2018年 daiqingquan. All rights reserved.
7//
8
9#import "ECGModule.h"
10#import "ECGHeader.h"
11#import "ECGProfileModule.h"
12#import "ManageDeviceController.h"
13
14#define EVENT_NOTIFY @"event_notify_ecg"
15
16@implementation ECGModule
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#pragma mark
30#pragma mark - constantsToExport
31- (NSDictionary *)constantsToExport{
32 return @{@"Event_Notify": EVENT_NOTIFY };
33
34}
35
36+ (BOOL)requiresMainQueueSetup
37{
38 return YES;
39}
40#pragma mark
41#pragma mark - Init
42-(id)init{
43 if (self=[super init]){
44 }
45 return self;
46}
47
48-(ECG3*)getECG3WithMac:(nonnull NSString*)mac{
49
50 ECG3Controller *controller = [ECG3Controller shareECG3Controller];
51 NSArray *ecgDeviceArray = [controller getAllCurrentECG3Instace];
52
53 for(ECG3 *tempECG3 in ecgDeviceArray){
54 if([mac isEqualToString:tempECG3.serialNumber]){
55 return tempECG3;
56 }
57 }
58
59 return nil;
60}
61
62#pragma mark -
63#pragma mark - Method
64
65RCT_EXPORT_METHOD(getAllConnectedDevices){
66
67
68 NSArray*ecg3array= [[ECG3Controller shareECG3Controller] getAllCurrentECG3Instace];
69
70 NSMutableArray*deviceMacArray=[NSMutableArray array];
71
72 for (int i=0; i<[ecg3array count]; i++) {
73
74 ECG3 *ecg3=[ecg3array objectAtIndex:i];
75 [deviceMacArray addObject:ecg3.serialNumber];
76 }
77
78 NSDictionary* deviceInfo = @{kACTION:kACTION_GET_ALL_CONNECTED_DEVICES,kDEVICES:deviceMacArray};
79
80 [self sendEventWithName:EVENT_NOTIFY body:deviceInfo];
81
82
83}
84
85
86
87RCT_EXPORT_METHOD(getBattery:(nonnull NSString *)mac){
88
89 if ([self getECG3WithMac:mac]!=nil) {
90 __weak typeof(self) weakSelf = self;
91 [[self getECG3WithMac:mac] commandECG3GetBatteryInfo:^(NSNumber *battery) {
92
93 NSDictionary* deviceInfo = @{kACTION:kACTION_BATTERY_ECG,kBATTERY_ECG:battery,kMAC:mac,kType:@"ECG3"};
94 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
95
96 } withErrorBlock:^(ECG3ErrorID errorID) {
97 [weakSelf commandReturnECGError:errorID MAC:mac];
98 }];
99 }else{
100
101 [self commandReturnECGError:ECG3Error_Disconnect MAC:mac];
102
103 }
104
105
106}
107
108RCT_EXPORT_METHOD(sysTime:(nonnull NSString *)mac){
109
110 if ([self getECG3WithMac:mac]!=nil) {
111 __weak typeof(self) weakSelf = self;
112 [[self getECG3WithMac:mac] commandECG3SyncTime:^{
113
114 NSDictionary* deviceInfo = @{kACTION:kACTION_SYSTIME,kMAC:mac,kType:@"ECG3"};
115 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
116
117 } withErrorBlock:^(ECG3ErrorID errorId) {
118 [weakSelf commandReturnECGError:errorId MAC:mac];
119 }];
120
121 }else{
122 [self commandReturnECGError:ECG3Error_Disconnect MAC:mac];
123 }
124}
125
126RCT_EXPORT_METHOD(stopMeasure:(nonnull NSString *)mac){
127
128
129 if ([self getECG3WithMac:mac]!=nil) {
130 __weak typeof(self) weakSelf = self;
131 [[self getECG3WithMac:mac] commandECG3FinishMeasure:^{
132
133
134 NSDictionary* deviceInfo = @{kACTION:kACTION_STOPMEASURE_ECG,kMAC:mac,kType:@"ECG3"};
135 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
136
137 } withErrorBlock:^(ECG3ErrorID errorId) {
138 [weakSelf commandReturnECGError:errorId MAC:mac];
139 }];
140
141 }else{
142
143 [self commandReturnECGError:ECG3Error_Disconnect MAC:mac];
144 }
145
146}
147
148
149RCT_EXPORT_METHOD(startMeasure:(nonnull NSString *)mac){
150
151 if ([self getECG3WithMac:mac]!=nil) {
152 __weak typeof(self) weakSelf = self;
153 [[self getECG3WithMac:mac] commandECG3StartMeasure:^{
154
155 } withWaveData:^(NSArray *waveDataArray) {
156
157 NSDictionary* deviceInfo = @{kACTION:kACTION_MEASURE_WAVEData,kMEASURE_WAVEData:waveDataArray,kMAC:mac,kType:@"ECG3"};
158 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
159
160 } withPulseResult:^(BOOL hasHR, NSUInteger HR) {
161
162 NSDictionary* deviceInfo = @{kACTION:kACTION_MEASURE_ECGPulse,kMEASURE_ECGPulse:@(HR),kMAC:mac,kType:@"ECG3"};
163 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
164
165 } withErrorBlock:^(ECG3ErrorID errorId) {
166
167 if (errorId>= ECG3Error_ElectrodeLoss && errorId <= ECG3Error_ElectrodeLossTimeout) {
168 NSDictionary* deviceInfo = @{kACTION:kACTION_ELECTRODE_STATUS,kELECTRODE_STATUS:@(errorId),kMAC:mac,kType:@"ECG3"};
169 [weakSelf sendEventWithName:EVENT_NOTIFY body:deviceInfo];
170 } else {
171 [weakSelf commandReturnECGError:errorId MAC:mac];
172 }
173
174 }];
175
176
177 }else{
178 [self commandReturnECGError:ECG3Error_Disconnect MAC:mac];
179 }
180
181}
182
183RCT_EXPORT_METHOD(disconnect:(nonnull NSString *)mac){
184 if ([self getECG3WithMac:mac]!=nil) {
185 [[ManageDeviceController commandGetInstance] commandDisconnectSelectDevice:[self getECG3WithMac:mac].currentUUID];
186 }
187}
188
189-(void)commandReturnECGError:(ECG3ErrorID)errorID MAC:(NSString *)MAC{
190
191
192 NSMutableDictionary*deviceInfo=[NSMutableDictionary dictionary];
193
194 [deviceInfo setValue:kACTION_ERROR_ECG forKey:kACTION];
195
196 NSString*errorDes=[NSString string];
197
198 switch (errorID) {
199 case ECG3Error_ElectrodeLoss:
200 errorDes=@"Electrode Loss";
201 break;
202 case ECG3Error_ElectrodeLossRecovery:
203 errorDes=@"Electrode Loss Recovery";
204 break;
205 case ECG3Error_ElectrodeLossTimeout:
206 errorDes=@"Electrode Loss Timeout";
207 break;
208 case ECG3Error_SDCardCommunicationError:
209 errorDes=@"SDCard Communication Error";
210 break;
211 case ECG3Error_SampleModuleError:
212 errorDes=@"Sample Module Error";
213 break;
214 case ECG3Error_LowPower:
215 errorDes=@"Low Power";
216 break;
217 case ECG3Error_DeviceMemoryFull:
218 errorDes=@"Device Memory Full";
219 break;
220 case ECG3Error_Disconnect:
221 errorDes=@"Disconnect";
222 break;
223 case ECG3Error_ParameterError:
224 errorDes=@"Parameter Error";
225 break;
226 case ECG3Error_CommandTimeout:
227 errorDes=@"Command timeout";
228 break;
229 default:
230 break;
231 }
232
233 [deviceInfo setValue:[NSNumber numberWithInt:errorID] forKey:kERROR_NUM_ECG];
234
235 [deviceInfo setValue:errorDes forKey:kERROR_DESCRIPTION_ECG];
236
237 [deviceInfo setValue:@"ECG3" forKey:kType];
238 if (MAC) {
239 [deviceInfo setValue:MAC forKey:kMAC];
240 }
241
242 [self sendEventWithName:EVENT_NOTIFY body:deviceInfo];
243}
244
245@end