Changeset 294


Ignore:
Timestamp:
09/30/11 16:45:25 (10 years ago)
Author:
sc
Message:

Interface:

  • device_model support for handling NeuroSky? MindWave? auto-connect packets
  • 'Emit Signal' mode for Server communication support
  • fix for selecting correct default user path

Server:

  • device_model support for handling NeuroSky? MindWave? auto-connect packets
  • 'Emit Signal' mode for Server communication support

Protocol:

Location:
trunk/Puzzlebox/Synapse
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Puzzlebox/Synapse/Interface.py

    r292 r294  
    349349                                server_port=server_port, \ 
    350350                                device_address=device_address, \ 
     351                                device_model=None, \ 
    351352                                emulate_headset_data=emulate_headset_data, \ 
    352353                                DEBUG=DEBUG, \ 
    353354                                parent=self) 
     355                 
     356                self.connect(self.thinkGearConnectServer, \ 
     357                             QtCore.SIGNAL("sendPacket()"), \ 
     358                             self.thinkGearConnectServer.sendPacketQueue) 
    354359                 
    355360                self.thinkGearConnectServer.start() 
     
    859864                                      target.lineEditSessionProfile.text()) 
    860865                 
    861                 default_filename = os.path.join(self.homepath, default_filename) 
     866                default_filename = os.path.join(target.homepath, default_filename) 
    862867                 
    863868                output_file = QtGui.QFileDialog.getSaveFileName(parent=target, \ 
  • trunk/Puzzlebox/Synapse/Protocol.py

    r293 r294  
    139139                               serial_device, \ 
    140140                               device_id=THINKGEAR_DEVICE_ID, \ 
     141                               device_model=None, \ 
    141142                               DEBUG=DEBUG, \ 
    142143                               parent=None): 
     
    149150                 
    150151                self.device_id = device_id 
     152                self.device_model = device_model 
    151153                 
    152154                self.device = None 
     
    423425                                                  power values 
    424426                           Any    0x55        - NEVER USED (reserved for [EXCODE]) 
    425                            Any    0xAA        - NEVER USED (reserved for [SYNC])''' 
     427                           Any    0xAA        - NEVER USED (reserved for [SYNC]) 
     428                 
     429                   MindWave CODEs 
     430                   Extended             (Byte) 
     431                   Code Level   [CODE] [LENGTH] Data Value Meaning 
     432                   ----------   ------ -------- ------------------ 
     433                             0    0xD0        3 Headset Connect Success 
     434                             0    0xD1        2 Headset Not Found 
     435                             0    0xD2        3 Headset Disconnected 
     436                             0    0xD3        0 Request Denied 
     437                             0    0xD4        1 Standby/Scan Mode''' 
    426438                 
    427439                packet_update = {} 
     
    501513                         
    502514                         
     515                        elif code == 'd0': 
     516                                if self.DEBUG: 
     517                                        print "INFO: ThinkGear Headset Connect Success" 
     518                                self.session_start_timestamp = time.time() 
     519                                self.packet_count = 0 
     520                                self.bad_packets = 0 
     521                         
     522                         
     523                        elif code == 'd1': 
     524                                current_time = time.time() 
     525                                if current_time - self.auto_connect_timestamp > \ 
     526                                        THINKGEAR_DEVICE_AUTOCONNECT_INTERVAL: 
     527                                        if self.DEBUG: 
     528                                                print "INFO: ThinkGear device not found. Writing auto-connect packet." 
     529                                        self.auto_connect_timestamp = current_time 
     530                                        self.device.device.write('\xc2') 
     531                                        #self.device.device.write('\xc0\xe4\x68') 
     532                         
     533                         
     534                        elif code == 'd2': 
     535                                current_time = time.time() 
     536                                if current_time - self.auto_connect_timestamp > \ 
     537                                        THINKGEAR_DEVICE_AUTOCONNECT_INTERVAL: 
     538                                        if self.DEBUG: 
     539                                                print "INFO: ThinkGear device disconnected. Writing auto-connect packet." 
     540                                        self.auto_connect_timestamp = current_time 
     541                                        self.device.device.write('\xc2') 
     542                                        #self.device.device.write('\xc0\xe4\x68') 
     543                         
     544                         
     545                        elif code == 'd3': 
     546                                current_time = time.time() 
     547                                if current_time - self.auto_connect_timestamp > \ 
     548                                        THINKGEAR_DEVICE_AUTOCONNECT_INTERVAL: 
     549                                        if self.DEBUG: 
     550                                                print "INFO: ThinkGear device request denied. Writing auto-connect packet." 
     551                                        self.auto_connect_timestamp = current_time 
     552                                        self.device.device.write('\xc2') 
     553                                        #self.device.device.write('\xc0\xe4\x68') 
     554                         
     555                         
    503556                        elif code == 'd4': 
    504557                                current_time = time.time() 
     
    506559                                        THINKGEAR_DEVICE_AUTOCONNECT_INTERVAL: 
    507560                                        if self.DEBUG: 
    508                                                 print "INFO: ThinkGear device not connected. Writing auto-connect packet" 
     561                                                print "INFO: ThinkGear device in standby/scan mode. Writing auto-connect packet." 
    509562                                        self.auto_connect_timestamp = current_time 
    510563                                        self.device.device.write('\xc2') 
     
    765818                 
    766819                if self.device != None: 
     820                        if self.device_model == 'NeuroSky MindWave': 
     821                                if self.DEBUG: 
     822                                        print "INFO: ThinkGear device model MindWave selected. Writing auto-connect packet." 
     823                                self.device.device.write('\xc2') 
     824                        else: 
     825                                if self.device_model != None and self.DEBUG: 
     826                                        print "INFO: %s device model selected" % self.device_model 
    767827                        self.parseStream() 
    768828         
  • trunk/Puzzlebox/Synapse/Server.py

    r293 r294  
    3838 
    3939DEBUG = 1 
     40 
     41COMMUNICATION_MODE = 'Emit Signal' 
     42#COMMUNICATION_MODE = 'Call Parent' 
    4043 
    4144SERVER_INTERFACE = configuration.THINKGEAR_SERVER_INTERFACE 
     
    131134                          device_address=THINKGEAR_DEVICE_SERIAL_PORT, \ 
    132135                          device_id=THINKGEAR_DEVICE_ID, \ 
     136                          device_model=None, \ 
    133137                          emulate_headset_data=ENABLE_SIMULATE_HEADSET_DATA, \ 
    134138                          DEBUG=DEBUG, \ 
     
    145149                self.device_address = device_address 
    146150                self.device_id = device_id 
     151                self.device_model = device_model 
    147152                self.emulate_headset_data = emulate_headset_data 
    148153                 
     
    196201                                self.log, \ 
    197202                                self.serial_device, \ 
    198                                 self.device_id, \ 
     203                                device_id=self.device_id, \ 
     204                                device_model=self.device_model, \ 
    199205                                DEBUG=self.DEBUG, \ 
    200206                                parent=self) 
     
    208214                 
    209215                self.updateStatus() 
    210                 #self.sendPacketQueue() 
    211                 self.emitSendPacketSignal() 
     216                 
     217                if COMMUNICATION_MODE == 'Emit Signal': 
     218                        self.emitSendPacketSignal() 
     219                else: 
     220                        self.sendPacketQueue() 
    212221         
    213222         
     
    414423                 
    415424                 
    416                 if (self.parent != None): 
     425                if COMMUNICATION_MODE == 'Emit Signal' and (self.parent != None): 
    417426                        self.parent.processPacketThinkGear(self.protocol.data_packet) 
    418427         
     
    581590                if (packet != {}): 
    582591                        self.packet_queue.append(packet) 
    583                         #self.sendPacketQueue() 
    584                         self.emitSendPacketSignal() 
    585                  
    586                 #if (self.parent != None): 
    587                         #self.parent.processPacketThinkGear(self.protocol.data_packet) 
     592                         
     593                        if COMMUNICATION_MODE == 'Emit Signal': 
     594                                self.emitSendPacketSignal() 
     595                         
     596                        else: 
     597                                self.sendPacketQueue() 
     598                                 
     599                                if (self.parent != None): 
     600                                        self.parent.processPacketThinkGear(self.protocol.data_packet) 
    588601         
    589602         
Note: See TracChangeset for help on using the changeset viewer.