@@ -74,6 +74,18 @@ class FlowViewController:
74
74
var isRecording = false
75
75
var timer = Timer ( )
76
76
77
+ var deviceUUID : String = " "
78
+ var sessionDateTime : String = " "
79
+ var getParams = [ " String " : " String " ]
80
+
81
+ func getDeviceUUID( ) {
82
+ if UserDefaults . standard. object ( forKey: " phoneUUID " ) == nil {
83
+ UserDefaults . standard. set ( UUID ( ) . uuidString, forKey: " phoneUUID " )
84
+ }
85
+ deviceUUID = String ( UserDefaults . standard. object ( forKey: " phoneUUID " ) as! String )
86
+ getParams [ " deviceUUID " ] = deviceUUID
87
+ }
88
+
77
89
override func viewDidLoad( ) {
78
90
super. viewDidLoad ( )
79
91
@@ -113,6 +125,8 @@ class FlowViewController:
113
125
EDALabel . text = " "
114
126
flexLabel. text = " "
115
127
}
128
+
129
+ getDeviceUUID ( )
116
130
117
131
// Do any additional setup after loading the view.
118
132
}
@@ -214,11 +228,15 @@ class FlowViewController:
214
228
dreamButton. setTitle ( " Cancel " , for: . normal)
215
229
dreamButton. setTitleColor ( UIColor . red, for: . normal)
216
230
dreamLabel. text = " Enjoy your dreams :) "
231
+
217
232
currentStatus = " CALIBRATING "
218
233
219
234
self . detectSleepTimer. invalidate ( )
220
235
221
- SleepAPI . apiGet ( endpoint: " init " )
236
+ SleepAPI . apiGet ( endpoint: " init " , params: getParams, onSuccess: { json in
237
+ self . sessionDateTime = json [ " datetime " ] as! String
238
+ self . getParams [ " datetime " ] = self . sessionDateTime
239
+ } )
222
240
self . calibrateStart ( )
223
241
self . numOnsets = 0
224
242
@@ -231,7 +249,7 @@ class FlowViewController:
231
249
self . currentStatus = " RUNNING "
232
250
self . calibrateEnd ( )
233
251
234
- SleepAPI . apiGet ( endpoint: " train " )
252
+ SleepAPI . apiGet ( endpoint: " train " , params : self . getParams )
235
253
236
254
self . detectSleepTimerPause = false
237
255
self . detectSleepTimer = Timer . scheduledTimer ( timeInterval: 3 , target: self , selector: #selector( self . detectSleep ( sender: ) ) , userInfo: nil , repeats: true )
@@ -252,33 +270,46 @@ class FlowViewController:
252
270
}
253
271
254
272
@objc func detectSleep( sender: Timer ) {
255
- SleepAPI . apiGet ( endpoint: " predict " , onSuccess: { json in
273
+ SleepAPI . apiGet ( endpoint: " predict " , params: getParams, onSuccess: { json in
274
+ var onsetTrigger : OnsetTrigger ?
275
+
256
276
let score = Int ( ( json [ " max_sleep " ] as! NSNumber ) . floatValue. rounded ( ) )
257
277
if ( !self . detectSleepTimerPause && self . numOnsets == 0 ) {
258
278
if ( self . dreamDetectorControl. selectedSegmentIndex == 0 && score >= ( UserDefaults . standard. object ( forKey: " deltaHBOSS " ) as! Int ) ) {
259
279
DispatchQueue . main. async {
260
- self . sleepDetected ( )
280
+ self . sleepDetected ( trigger : OnsetTrigger . HBOSS )
261
281
}
262
282
} else if ( self . dreamDetectorControl. selectedSegmentIndex == 1 && abs ( self . lastHR - self . meanHR) >= ( UserDefaults . standard. object ( forKey: " deltaHR " ) as! Int ) ) {
263
283
DispatchQueue . main. async {
264
- self . sleepDetected ( )
284
+ self . sleepDetected ( trigger : OnsetTrigger . HR )
265
285
}
266
286
} else if ( self . dreamDetectorControl. selectedSegmentIndex == 2 && abs ( self . lastEDA - self . meanEDA) >= ( UserDefaults . standard. object ( forKey: " deltaEDA " ) as! Int ) ) {
267
287
DispatchQueue . main. async {
268
- self . sleepDetected ( )
288
+ self . sleepDetected ( trigger : OnsetTrigger . EDA )
269
289
}
270
290
} else if ( self . dreamDetectorControl. selectedSegmentIndex == 3 && abs ( self . lastFlex - self . meanFlex) >= ( UserDefaults . standard. object ( forKey: " deltaFlex " ) as! Int ) ) {
271
291
DispatchQueue . main. async {
272
- self . sleepDetected ( )
292
+ self . sleepDetected ( trigger : OnsetTrigger . FLEX )
273
293
}
274
294
}
275
295
}
276
296
} )
277
297
}
278
298
279
- func sleepDetected( ) {
299
+ func sleepDetected( trigger : OnsetTrigger ) {
280
300
self . timer. invalidate ( )
281
301
print ( " Sleep! " )
302
+
303
+ print ( " Sleep! " )
304
+ print ( " TRIGGER WAS " , String ( describing: trigger) )
305
+
306
+ let json : [ String : Any ] = [ " trigger " : String ( describing: trigger) ,
307
+ " currDateTime " : Date ( ) . timeIntervalSince1970,
308
+ " legitimate " : true ,
309
+ " deviceUUID " : deviceUUID,
310
+ " datetime " : sessionDateTime]
311
+ SleepAPI . apiPost ( endpoint: " reportTrigger " , json: json)
312
+
282
313
if ( !self . playedAudio) {
283
314
self . playedAudio = true
284
315
self . detectSleepTimerPause = true
@@ -305,7 +336,7 @@ class FlowViewController:
305
336
306
337
self . timer = Timer . scheduledTimer ( withTimeInterval: Double ( UserDefaults . standard. object ( forKey: " waitForOnsetTime " ) as! Int ) , repeats: false , block: {
307
338
t in
308
- self . sleepDetected ( )
339
+ self . sleepDetected ( trigger : OnsetTrigger . TIMER )
309
340
} )
310
341
} )
311
342
}
@@ -356,7 +387,10 @@ class FlowViewController:
356
387
// send buffer to server
357
388
let json : [ String : Any ] = [ " flex " : flexBuffer,
358
389
" eda " : edaBuffer,
359
- " ecg " : hrBuffer]
390
+ " ecg " : hrBuffer,
391
+ " deviceUUID " : getParams [ " deviceUUID " ] ,
392
+ " datetime " : getParams [ " datetime " ]
393
+ ]
360
394
SleepAPI . apiPost ( endpoint: " upload " , json: json)
361
395
362
396
lastEDA = Int ( Float ( edaBuffer. reduce ( 0 , + ) ) / Float( edaBuffer. count) )
0 commit comments