Changeset 129


Ignore:
Timestamp:
07/28/10 22:16:52 (11 years ago)
Author:
sc
Message:

thinkgear_emulator/puzzlebox_thinkgear_serial_protocol.py:

  • function names formatting change
  • device buffer check re-enabled
  • data packet gathered for transmission
  • enhanced debugging output
File:
1 edited

Legend:

Unmodified
Added
Removed
  • thinkgear_emulator/puzzlebox_thinkgear_serial_protocol.py

    r128 r129  
    9292PROTOCOL_EXCODE = '\x55' 
    9393 
     94EEG_POWER_BAND_ORDER = ['delta', \ 
     95                        'theta', \ 
     96                        'lowAlpha', \ 
     97                        'highAlpha', \ 
     98                        'lowBeta', \ 
     99                        'highBeta', \ 
     100                        'lowGamma', \ 
     101                        'highGamma'] 
     102 
    94103DEVICE_BUFFER_CHECK_TIMER = 60 * 1000 # Check buffer size once every minute 
    95104DEVICE_BUFFER_MAX_SIZE = 180 # Reset buffer if it grow this large 
     
    136145        ################################################################## 
    137146         
    138         def communicate_with_handsfree_profile(self): 
     147        def communicateWithHandsfreeProfile(self): 
    139148                 
    140149                #"AT+CKPD=200" - Indicates a Bluetooth button press 
     
    264273        ################################################################## 
    265274         
    266         def process_raw_eeg_value(self, data_values): 
     275        def processRawEEGValue(self, data_values): 
    267276                 
    268277                '''SPEC: This Data Value consists of two bytes, and represents a  
     
    313322        ################################################################## 
    314323         
    315         def process_asic_eeg_power(self, data_values): 
     324        def processAsicEegPower(self, data_values): 
    316325                 
    317326                '''SPEC: This Data Value represents the current magnitude of 8  
     
    355364        ################################################################## 
    356365         
    357         def process_data_row(self, extended_code_level, code, length, data_values): 
     366        def processDataRow(self, extended_code_level, code, length, data_values): 
    358367                 
    359368                '''CODE Definitions Table 
     
    384393                           Any    0xAA        - NEVER USED (reserved for [SYNC])''' 
    385394                 
     395                packet_update = {} 
    386396                 
    387397                if extended_code_level == 0: 
     
    391401                                if self.DEBUG > 1: 
    392402                                        print # Empty line at the beginning of most packets 
    393                                         print "POOR_SIGNAL Quality:", 
     403                                        print "poorSignalLevel:", 
    394404                                        print poor_signal_quality 
     405                                 
     406                                packet_update['poorSignalLevel'] = poor_signal_quality 
     407                         
    395408                         
    396409                        elif code == '04': 
    397410                                attention = int(data_values, 16) 
    398411                                if self.DEBUG > 1: 
    399                                         print "ATTENTION:", 
     412                                        print "attention:", 
    400413                                        print attention 
     414                                 
     415                                packet_update['eSense'] = {} 
     416                                packet_update['eSense']['attention'] = attention 
     417                         
    401418                         
    402419                        elif code == '05': 
    403420                                meditation = int(data_values, 16) 
    404421                                if self.DEBUG > 1: 
    405                                         print "MEDITATION:", 
     422                                        print "meditation:", 
    406423                                        print meditation 
     424                                 
     425                                packet_update['eSense'] = {} 
     426                                packet_update['eSense']['meditation'] = meditation 
     427                         
    407428                         
    408429                        elif code == '16': 
    409430                                blink_strength = int(data_values, 16) 
    410431                                if self.DEBUG > 1: 
    411                                         print "Blink Strength:", 
     432                                        print "blinkStrength:", 
    412433                                        print blink_strength 
     434                                 
     435                                packet_update['blinkStrength'] = blink_strength 
     436                         
    413437                         
    414438                        elif code == '80': 
     
    417441                                        print "Raw EEG:", 
    418442                                        print raw_wave_value 
    419                                 raw_eeg_value = self.process_raw_eeg_value(data_values) 
     443                                raw_eeg_value = self.processRawEEGValue(data_values) 
    420444                                if self.DEBUG > 2: 
    421445                                        print "Raw EEG Value:", 
    422446                                        print raw_eeg_value 
     447                                 
     448                                packet_update['rawEeg'] = raw_eeg_value 
     449                         
    423450                         
    424451                        elif code == '83': 
     
    427454                                        print "ASIC_EEG_POWER:", 
    428455                                        print asic_eeg_power 
    429                                 eegPower = self.process_asic_eeg_power(data_values) 
     456                                eegPower = self.processAsicEegPower(data_values) 
    430457                                if self.DEBUG > 1: 
    431                                         for key in eegPower.keys(): 
     458                                        for key in EEG_POWER_BAND_ORDER: 
    432459                                                print "%s: %i" % (key, eegPower[key]) 
     460                                 
     461                                packet_update['eegPower'] = {} 
     462                                for key in eegPower.keys(): 
     463                                        packet_update['eegPower'][key] = eegPower[key] 
     464                         
    433465                         
    434466                        else: 
    435467                                if self.DEBUG: 
    436468                                        print "ERROR: data payload row code not matched" 
    437          
    438          
    439         ################################################################## 
    440          
    441         def process_data_payload(self, data_payload): 
     469                 
     470                 
     471                return(packet_update) 
     472         
     473         
     474        ################################################################## 
     475         
     476        def processDataPayload(self, data_payload): 
    442477                 
    443478                '''A DataRow consists of bytes in the following format: 
     
    445480                ____________________ ____________ ___________ 
    446481                ^^^^(Value Type)^^^^ ^^(length)^^ ^^(value)^^''' 
     482                 
     483                data_packet = {} 
    447484                 
    448485                if self.DEBUG > 3: 
     
    507544                                print 
    508545                         
    509                         self.process_data_row(extended_code_level, \ 
    510                                               code, \ 
    511                                               length, \ 
    512                                               data_values) 
     546                        packet_update = self.processDataRow(extended_code_level, \ 
     547                                                              code, \ 
     548                                                              length, \ 
     549                                                              data_values) 
     550                         
     551                        data_packet.update(packet_update) 
     552                         
     553                        self.transmitDataPacket(data_packet) 
     554                         
    513555                         
    514556                        byte_index += length 
     
    520562        ################################################################## 
    521563         
    522         def parse_stream(self): 
     564        def parseStream(self): 
    523565                 
    524566                # Loop forever, parsing one Packet per loop... 
     
    598640                                        print payload_checksum 
    599641                                         
    600                                         #self.device.check_buffer() 
     642                                        #self.device.checkBuffer() 
    601643                                 
    602644                                continue 
     
    609651                                 
    610652                                 
    611                                 self.process_data_payload(data_payload) 
     653                                self.processDataPayload(data_payload) 
    612654                                 
    613655                                 
     
    624666        ################################################################## 
    625667         
     668        def transmitDataPacket(self, data_packet): 
     669                 
     670                pass 
     671         
     672         
     673        ################################################################## 
     674         
    626675        def run(self): 
    627676                 
    628                 self.parse_stream() 
     677                self.parseStream() 
    629678 
    630679 
     
    648697                self.buffer = '' 
    649698                 
    650                 self.device = self.initialize_device() 
     699                self.device = self.initializeDevice() 
    651700                 
    652701                self.buffer_check_timer = QtCore.QTimer() 
    653702                QtCore.QObject.connect(self.buffer_check_timer, \ 
    654703                                       QtCore.SIGNAL("timeout()"), \ 
    655                                        self.check_buffer) 
    656                 #self.buffer_check_timer.start(DEVICE_BUFFER_CHECK_TIMER) 
     704                                       self.checkBuffer) 
     705                self.buffer_check_timer.start(DEVICE_BUFFER_CHECK_TIMER) 
    657706                 
    658707                self.keep_running = True 
     
    661710        ################################################################## 
    662711         
    663         def initialize_device(self): 
     712        def initializeDevice(self): 
    664713                 
    665714                baudrate = DEFAULT_SERIAL_BAUDRATE 
     
    743792        ################################################################## 
    744793         
    745         def check_buffer(self): 
     794        def checkBuffer(self): 
    746795                 
    747796                if self.DEBUG > 1: 
     
    808857                self.buffer = '' 
    809858                 
    810                 #while self.keep_running: 
    811                  
    812                 while True: 
     859                while self.keep_running: 
     860                 
     861                #while True: 
    813862                         
    814863                        try: 
     
    827876                 
    828877                 
    829                 print "here" 
    830878                self.device.close() 
    831879                QtCore.QThread.quit(self) 
     
    868916         
    869917        sys.exit(app.exec_()) 
    870          
    871         print "there" 
     918 
Note: See TracChangeset for help on using the changeset viewer.