28
28
'F8' : [178 , 179 , 180 , 181 , 182 , 183 , 168 , 169 , 170 , 171 , 172 , 173 , 174 , 175 ],
29
29
'AF4' : [196 , 197 , 198 , 199 , 184 , 185 , 186 , 187 , 188 , 189 , 190 , 191 , 176 , 177 ],
30
30
'FC6' : [214 , 215 , 200 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 192 , 193 , 194 , 195 ],
31
- 'F4' : [216 , 217 , 218 , 219 , 220 , 221 , 222 , 223 , 208 , 209 , 210 , 211 , 212 , 213 ],
31
+ 'F4' : [216 , 217 , 218 , 219 , 220 , 221 , 222 , 223 , 208 , 209 , 210 , 211 , 212 , 213 ]
32
32
}
33
33
quality_bits = [99 , 100 , 101 , 102 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 ]
34
34
@@ -248,16 +248,17 @@ def updateStdout(self):
248
248
print "F8 Reading: %i Strength: %i" % (self .sensors ['F8' ]['value' ], self .sensors ['F8' ]['quality' ])
249
249
print "T7 Reading: %i Strength: %i" % (self .sensors ['T7' ]['value' ], self .sensors ['T7' ]['quality' ])
250
250
print "P8 Reading: %i Strength: %i" % (self .sensors ['P8' ]['value' ], self .sensors ['P8' ]['quality' ])
251
- print "AF4 Reading: %i Strength: %i" % (self .sensors ['AF8 ' ]['value' ], self .sensors ['AF8 ' ]['quality' ])
251
+ print "AF4 Reading: %i Strength: %i" % (self .sensors ['AF4 ' ]['value' ], self .sensors ['AF4 ' ]['quality' ])
252
252
print "F4 Reading: %i Strength: %i" % (self .sensors ['F4' ]['value' ], self .sensors ['F4' ]['quality' ])
253
- print "AF3 Reading: %i Strength: %i" % (self .sensors ['AF7 ' ]['value' ], self .sensors ['AF7 ' ]['quality' ])
253
+ print "AF3 Reading: %i Strength: %i" % (self .sensors ['AF3 ' ]['value' ], self .sensors ['AF3 ' ]['quality' ])
254
254
print "O2 Reading: %i Strength: %i" % (self .sensors ['O2' ]['value' ], self .sensors ['O2' ]['quality' ])
255
255
print "O1 Reading: %i Strength: %i" % (self .sensors ['O1' ]['value' ], self .sensors ['O1' ]['quality' ])
256
256
print "FC5 Reading: %i Strength: %i" % (self .sensors ['FC5' ]['value' ], self .sensors ['FC5' ]['quality' ])
257
- print "Unknown Reading: %i Strength: %i" % (self .sensors ['Unknown' ]['value' ], self .sensors ['Unknown' ]['quality' ])
258
- print "Gyro X: %i, Gyro Y: %i, Battery: %i" % (
259
- self .sensors ['X' ]['value' ], self .sensors ['Y' ]['value' ], g_battery )
260
- gevent .sleep (0 )
257
+ print "Unknown Reading: %i Strength: %i" % (
258
+ self .sensors ['Unknown' ]['value' ], self .sensors ['Unknown' ]['quality' ])
259
+ print "Gyro X: %i, Gyro Y: %i Battery: %i" % (
260
+ self .sensors ['X' ]['value' ], self .sensors ['Y' ]['value' ], g_battery )
261
+ gevent .sleep (1 )
261
262
262
263
def getLinuxSetup (self ):
263
264
rawinputs = []
@@ -297,14 +298,40 @@ def getLinuxSetup(self):
297
298
print "Couldn't open file: %s" % e
298
299
299
300
def setupWin (self , headsetId ):
301
+ hidrawDevices = []
302
+ #filter = hid.HidDeviceFilter(vendor_id=0x21A1,
303
+ # product_name='EPOC BCI')#This device doesn't receive any input
300
304
filter = hid .HidDeviceFilter (vendor_id = 0x21A1 ,
301
- product_name = 'Brain Waves' )#This doesn't seem right... I'm not using windows though so w/e
305
+ product_name = '00000000000' )
306
+ #devices = filter.get_devices()
307
+ #for device in devices:
308
+ #hidrawDevices.append(device)
309
+ #filter = hid.HidDeviceFilter(vendor_id=0x21A1,
310
+ # product_name='00000000000')
302
311
devices = filter .get_devices ()
303
- assert len ( devices ) > headsetId
304
- self .device = devices [ headsetId ]
312
+ for device in devices :
313
+ self .device = device
305
314
self .device .open ()
306
- feature = self .device .find_feature_reports ()[0 ]
307
- self .setupCrypto (self .device .serial_number , feature .get ())
315
+ self .device .set_raw_data_handler (self .handler )
316
+ self .serialNum = self .device .serial_number
317
+ #self.device.find_feature_reports()[0]
318
+ gevent .spawn (self .setupCrypto , self .serialNum )
319
+ gevent .spawn (self .updateStdout )
320
+
321
+ while self ._goOn :
322
+ try :
323
+ gevent .sleep (0 )
324
+ except KeyboardInterrupt :
325
+ self ._goOn = False
326
+ for device in hidrawDevices :
327
+ device .close ()
328
+
329
+ def handler (self , data ):
330
+ assert data [0 ] == 0
331
+ tasks .put_nowait ('' .join (map (chr , data [1 :])))
332
+ self .packetsReceived += 1
333
+ self .device .set_raw_data_handler (self .handler )
334
+ return True
308
335
309
336
def setupPosix (self ):
310
337
_os_decryption = False
@@ -315,7 +342,6 @@ def setupPosix(self):
315
342
else :
316
343
setup = self .getLinuxSetup ()
317
344
self .serialNum = setup [0 ]
318
- #self.hidraw = open("/dev/hidraw4")
319
345
if os .path .exists ("/dev/" + setup [1 ]):
320
346
self .hidraw = open ("/dev/" + setup [1 ])
321
347
else :
0 commit comments