Changeset 123


Ignore:
Timestamp:
07/23/10 11:44:41 (11 years ago)
Author:
sc
Message:

thinkgear_emulator/puzzlebox_thinkgear_serial_protocol.py:

  • process_data_row match fixes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • thinkgear_emulator/puzzlebox_thinkgear_serial_protocol.py

    r122 r123  
    4040#         Any    0x55        - NEVER USED (reserved for [EXCODE]) 
    4141#         Any    0xAA        - NEVER USED (reserved for [SYNC]) 
     42# 
    4243##################################################################### 
    4344# Linux Bluetooth serial protocol profile example: 
     
    8081PROTOCOL_EXCODE = '\x55' 
    8182 
    82 DEBUG_BYTE_COUNT = 8192 
    83 DEBUG_PACKET_COUNT = 12 
     83DEBUG_BYTE_COUNT = 819200 
     84DEBUG_PACKET_COUNT = 1024 
    8485 
    8586##################################################################### 
     
    281282        ################################################################## 
    282283         
    283         def process_data_row(self, row, extended_code_level): 
    284                  
    285                 pass 
     284        def process_data_row(self, extended_code_level, code, length, data_values): 
     285                 
     286                '''CODE Definitions Table 
     287                   Single-Byte CODEs 
     288                   Extended             (Byte) 
     289                   Code Level   [CODE] [LENGTH] Data Value Meaning 
     290                   ----------   ------ -------- ------------------ 
     291                             0    0x02        - POOR_SIGNAL Quality (0-255) 
     292                             0    0x04        - ATTENTION eSense (0 to 100) 
     293                             0    0x05        - MEDITATION eSense (0 to 100) 
     294                             0    0x16        - Blink Strength. (0-255) Sent only 
     295                                                when Blink event occurs. 
     296                   Multi-Byte CODEs 
     297                   Extended             (Byte) 
     298                   Code Level   [CODE] [LENGTH] Data Value Meaning 
     299                   ----------   ------ -------- ------------------ 
     300                             0    0x80        2 RAW Wave Value: a single big-endian 
     301                                                  16-bit two's-compliment signed value 
     302                                                  (high-order byte followed by 
     303                                                  low-order byte) (-32768 to 32767) 
     304                             0    0x83       24 ASIC_EEG_POWER: eight big-endian 
     305                                                  3-byte unsigned integer values 
     306                                                  representing delta, theta, low-alpha 
     307                                                  high-alpha, low-beta, high-beta, 
     308                                                  low-gamma, and mid-gamma EEG band 
     309                                                  power values 
     310                           Any    0x55        - NEVER USED (reserved for [EXCODE]) 
     311                           Any    0xAA        - NEVER USED (reserved for [SYNC])''' 
     312                 
     313                 
     314                if extended_code_level == 0: 
     315                         
     316                        if code == '02': 
     317                                poor_signal_quality = int(data_values, 16) 
     318                                print "POOR_SIGNAL Quality:", 
     319                                print poor_signal_quality 
     320                         
     321                        elif code == '04': 
     322                                attention = int(data_values, 16) 
     323                                print "ATTENTION:", 
     324                                print attention 
     325                         
     326                        elif code == '05': 
     327                                meditation = int(data_values, 16) 
     328                                print "MEDITATION:", 
     329                                print meditation 
     330                         
     331                        elif code == '16': 
     332                                blink_strength = int(data_values, 16) 
     333                                print "Blink Strength:", 
     334                                print blink_strength 
     335                         
     336                        elif code == '80': 
     337                                raw_wave_value = data_values 
     338                                #print "Raw EEG:", 
     339                                #print raw_wave_value 
     340                         
     341                        elif code == '83': 
     342                                asic_eeg_power = data_values 
     343                                print "ASIC_EEG_POWER:", 
     344                                print asic_eeg_power 
     345                                 
     346                        else: 
     347                                if self.DEBUG: 
     348                                        print "ERROR: data payload row code not matched" 
    286349         
    287350         
     
    295358                ^^^^(Value Type)^^^^ ^^(length)^^ ^^(value)^^''' 
    296359                 
    297                 if self.DEBUG > 1: 
     360                if self.DEBUG > 2: 
    298361                        print "data payload:", 
    299362                        for byte in data_payload: 
     
    329392                                length = 1 
    330393                         
    331                         #TODO: Based on the extendedCodeLevel, code, length, 
    332                         #and the [CODE] Definitions Table, handle the next 
    333                         #"length" bytes of data from the payload as 
    334                         #appropriate for your application. 
    335                          
    336                         print "EXCODE level:", 
    337                         print extended_code_level, 
    338                         print " CODE:", 
    339                         print code, 
    340                         print " length:", 
    341                         print length 
     394                         
     395                        if self.DEBUG > 2: 
     396                                print "EXCODE level:", 
     397                                print extended_code_level, 
     398                                print " CODE:", 
     399                                print code, 
     400                                print " length:", 
     401                                print length 
     402                                print type(code) 
    342403                         
    343404                        data_values = '' 
     
    353414                                value_index += 1 
    354415                         
    355                         print "Data Values:", 
    356                         print data_values 
    357                         print 
     416                        if self.DEBUG > 2: 
     417                                print "Data Values:", 
     418                                print data_values 
     419                                print 
     420                         
     421                        self.process_data_row(extended_code_level, \ 
     422                                              code, \ 
     423                                              length, \ 
     424                                              data_values) 
    358425                         
    359426                        byte_index += length 
     
    376443                valid_checksum = False 
    377444                 
    378                 if self.DEBUG > 1: 
     445                if self.DEBUG > 2: 
    379446                        print packet 
    380447                 
     
    394461                         (packet_length + 4) == (len(packet))): 
    395462                         
    396                         if self.DEBUG > 1: 
     463                        if self.DEBUG > 2: 
    397464                                print "packet length correct" 
    398465                         
     
    441508                        else: 
    442509                                valid_checksum = True 
    443                                 if self.DEBUG > 1: 
     510                                if self.DEBUG > 2: 
    444511                                        print "packet checksum correct" 
    445512                                         
     
    497564                 
    498565                 
    499                 if ((self.DEBUG > 1) and \ 
     566                if ((self.DEBUG > 2) and \ 
    500567                         ((self.byte_count >= DEBUG_BYTE_COUNT) or \ 
    501568                          (self.packet_count >= DEBUG_PACKET_COUNT))): 
Note: See TracChangeset for help on using the changeset viewer.