Changeset 350


Ignore:
Timestamp:
03/28/12 19:45:08 (8 years ago)
Author:
sc
Message:
 
Location:
trunk/Puzzlebox/Synapse/Emotiv
Files:
1 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Puzzlebox/Synapse/Emotiv/Protocol.py

    r338 r350  
    3535 
    3636 
    37 #from PyEpoc.PyEpoc import * 
    3837import PyEpoc.PyEpoc 
    39  
     38import ctypes 
     39 
     40#EE_AffectivAlgo_enum { 
     41        #AFF_EXCITEMENT = 0x0001, \ 
     42        #AFF_MEDITATION = 0x0002, \ 
     43        #AFF_FRUSTRATION = 0x0004, \ 
     44        #AFF_ENGAGEMENT_BOREDOM = 0x0008 
     45#} 
     46 
     47EE_AffectivAlgo = { 
     48        'AFF_EXCITEMENT': 0x0001, \ 
     49        'AFF_MEDITATION': 0x0002, \ 
     50        'AFF_FRUSTRATION': 0x0004, \ 
     51        'AFF_ENGAGEMENT_BOREDOM': 0x0008 
     52} 
     53 
     54#EE_CognitivAction_enum { 
     55        #COG_NEUTRAL = 0x0001, \ 
     56        #COG_PUSH = 0x0002, \ 
     57        #COG_PULL = 0x0004, \ 
     58        #COG_LIFT = 0x0008, \ 
     59        #COG_DROP = 0x0010, \ 
     60        #COG_LEFT = 0x0020, \ 
     61        #COG_RIGHT = 0x0040, \ 
     62        #COG_ROTATE_LEFT = 0x0080, \ 
     63        #COG_ROTATE_RIGHT = 0x0100, \ 
     64        #COG_ROTATE_CLOCKWISE = 0x0200, \ 
     65        #COG_ROTATE_COUNTER_CLOCKWISE = 0x0400, \ 
     66        #COG_ROTATE_FORWARDS = 0x0800, \ 
     67        #COG_ROTATE_REVERSE = 0x1000, \ 
     68        #COG_DISAPPEAR = 0x2000 
     69#} 
     70 
     71EE_CognitivAction = { 
     72        'COG_NEUTRAL': 0x0001, \ 
     73        'COG_PUSH': 0x0002, \ 
     74        'COG_PULL': 0x0004, \ 
     75        'COG_LIFT': 0x0008, \ 
     76        'COG_DROP': 0x0010, \ 
     77        'COG_LEFT': 0x0020, \ 
     78        'COG_RIGHT': 0x0040, \ 
     79        'COG_ROTATE_LEFT': 0x0080, \ 
     80        'COG_ROTATE_RIGHT': 0x0100, \ 
     81        'COG_ROTATE_CLOCKWISE': 0x0200, \ 
     82        'COG_ROTATE_COUNTER_CLOCKWISE': 0x0400, \ 
     83        'COG_ROTATE_FORWARDS': 0x0800, \ 
     84        'COG_ROTATE_REVERSE': 0x1000, \ 
     85        'COG_DISAPPEAR': 0x2000 
     86} 
     87 
     88#EE_EEG_ContactQuality_enum { 
     89        #EEG_CQ_NO_SIGNAL, \ 
     90        #EEG_CQ_VERY_BAD, \ 
     91        #EEG_CQ_POOR, \ 
     92        #EEG_CQ_FAIR, 
     93        #EEG_CQ_GOOD 
     94#} 
     95 
     96EE_EEG_ContactQuality = [ 
     97        'EEG_CQ_NO_SIGNAL', \ 
     98        'EEG_CQ_VERY_BAD', \ 
     99        'EEG_CQ_POOR', \ 
     100        'EEG_CQ_FAIR', 
     101        'EEG_CQ_GOOD' 
     102] 
    40103 
    41104##################################################################### 
     
    85148                self.statehandle = self.EmotivEngine.EE_EmoStateCreate() 
    86149                self.EmotivEngine.ES_Init(self.statehandle) 
     150                 
     151                print type(self.EmotivEngine) 
     152                print type(self.engineeventhandle) 
     153                print type(self.statehandle) 
    87154 
    88155                self.connectToEmotivEPOC() 
     
    119186         
    120187        ################################################################## 
    121  
     188         
    122189        def processEmotivState(self, state): 
    123  
    124                 if state == PyEpoc.PyEpoc.ERRCODE['EDK_OK']: 
     190                 
     191                packet = {} 
     192                 
     193                if (state == PyEpoc.PyEpoc.ERRCODE['EDK_OK']): 
    125194                         
    126195                        event = self.EmotivEngine.EE_EmoEngineEventGetType(self.engineeventhandle) 
     
    131200                                self.EmotivEngine.EE_EmoEngineEventGetEmoState(self.engineeventhandle, self.statehandle) 
    132201                                 
    133                                 #status 
     202                                # Emotiv Status 
     203                                time_from_start = self.EmotivEngine.ES_GetTimeFromStart(self.statehandle) 
     204                                headset_on = self.EmotivEngine.ES_GetHeadsetOn(self.statehandle) 
     205                                contact_number_of_quality_channels = self.EmotivEngine.ES_GetNumContactQualityChannels(self.statehandle) 
     206                                contact_quality_from_all_channels = self.EmotivEngine.ES_GetContactQualityFromAllChannels(self.statehandle) 
     207                                wireless = self.EmotivEngine.ES_GetWirelessSignalStatus(self.statehandle) 
    134208                                battery = self.EmotivEngine.ES_GetBatteryChargeLevel(self.statehandle) 
    135                                 wireless = self.EmotivEngine.ES_GetWirelessSignalStatus(self.statehandle) 
    136                                 timestamp = self.EmotivEngine.ES_GetTimeFromStart(self.statehandle) 
    137                                  
    138                                 #emo 
     209                                 
     210                                packet['emotiv_status'] = {} 
     211                                packet['emotiv_status']['time_from_start'] = time_from_start 
     212                                packet['emotiv_status']['headset_on'] = headset_on 
     213                                packet['emotiv_status']['contact_number_of_quality_channels'] = contact_number_of_quality_channels 
     214                                packet['emotiv_status']['contact_quality_from_all_channels'] = contact_quality_from_all_channels 
     215                                packet['emotiv_status']['wireless'] = wireless 
     216                                packet['emotiv_status']['battery'] = battery 
     217                                 
     218                                 
     219                                # Affectiv Suite 
     220                                #self.EmotivEngine.ES_AffectivGetExcitementShortTermScore.restype = ctypes.c_double 
     221                                excitement = self.EmotivEngine.ES_AffectivGetExcitementShortTermScore(self.statehandle) 
     222                                long_term_excitement = self.EmotivEngine.ES_AffectivGetExcitementLongTermScore(self.statehandle) 
    139223                                meditation = self.EmotivEngine.ES_AffectivGetMeditationScore(self.statehandle) 
    140                                 shortexcitement = self.EmotivEngine.ES_AffectivGetExcitementShortTermScore(self.statehandle) 
    141                                 longexcitement = self.EmotivEngine.ES_AffectivGetExcitementLongTermScore(self.statehandle) 
    142224                                frustration = self.EmotivEngine.ES_AffectivGetFrustrationScore(self.statehandle) 
    143                                  
    144                                 #cognitiv 
    145                                 currentaction = self.EmotivEngine.ES_CognitivGetCurrentAction(self.statehandle) 
    146                                 currentactionpower = self.EmotivEngine.ES_CognitivGetCurrentActionPower(self.statehandle) 
    147  
    148                                 message = "--------------------------------------------------------------------------------\n" 
    149                                 message = message + "Timestamp: %s\tUser: %s\tEvent: %s\tW.Signal: %s\tBattery: %s\n" % (timestamp, user, hex(event), wireless, battery) 
    150                                 message = message + "S.Excite: %s\tL.Excite: %s\tMeditation: %s\tFrustr: %s\n" % (shortexcitement, longexcitement, meditation, frustration) 
    151                                 message = message + "Curr.Action: %s\tAction Pwr: %s\n" % (hex(currentaction), currentactionpower) 
    152  
    153                                 if self.DEBUG: 
    154                                         print message 
    155  
    156                                 if self.parent != None: 
    157                                         self.parent.textEditDebugConsole.append(message) 
    158  
    159  
     225                                engagement_boredom = self.EmotivEngine.ES_AffectivGetEngagementBoredomScore(self.statehandle) 
     226                                 
     227                                packet['affectiv'] = {} 
     228                                #print dir(excitement) 
     229                                packet['affectiv']['excitement'] = excitement 
     230                                packet['affectiv']['long_term_excitement'] = long_term_excitement 
     231                                packet['affectiv']['meditation'] = meditation 
     232                                packet['affectiv']['frustration'] = frustration 
     233                                packet['affectiv']['engagement_boredom'] = engagement_boredom 
     234                                 
     235                                 
     236                                # Cognitiv Suite 
     237                                current_action = self.EmotivEngine.ES_CognitivGetCurrentAction(self.statehandle) 
     238                                current_action_power = self.EmotivEngine.ES_CognitivGetCurrentActionPower(self.statehandle) 
     239                                 
     240                                packet['cognitiv'] = {} 
     241                                packet['cognitiv']['current_action'] = current_action 
     242                                packet['cognitiv']['current_action_power'] = current_action_power 
     243                                 
     244                                 
     245                                #message = "--------------------------------------------------------------------------------\n" 
     246                                #message = message + "Timestamp: %s\tUser: %s\tEvent: %s\tW.Signal: %s\tBattery: %s\n" % (timestamp, user, hex(event), wireless, battery) 
     247                                #message = message + "S.Excite: %s\tL.Excite: %s\tMeditation: %s\tFrustr: %s\n" % (shortexcitement, longexcitement, meditation, frustration) 
     248                                #message = message + "Curr.Action: %s\tAction Pwr: %s\n" % (hex(currentaction), currentactionpower) 
     249                                 
     250                                if self.DEBUG: 
     251                                        print 
     252                                        print 
     253                                        print "INFO [Emotiv]: Packet Received:" 
     254                                        for group in packet.keys(): 
     255                                                for key in packet[group].keys(): 
     256                                                        print '[%s][%s]:' % (group, key), 
     257                                                        #if type(packet[group][key]): 
     258                                                                #print '%f' % packet[group][key] 
     259                                                        #else: 
     260                                                        print packet[group][key] 
     261                                 
     262                                 
     263                                #if self.parent != None: 
     264                                        #self.parent.textEditDebugConsole.append(message) 
     265         
     266         
    160267        ################################################################## 
    161268         
Note: See TracChangeset for help on using the changeset viewer.