def __call__(self): PowerSave.enable(BD_ADDR)
def RawCallback(self, data): #hexdata= binascii.hexlify(data).upper() #eg.PrintNotice( hexdata ) try: if len(data) != 12: raise PS3ParseError( 'length', 12, len(data) ) start= ord( data[0] ) mask= ord( data[1] )<<16 | ord( data[2] )<<8 | ord( data[3] ) code= ord( data[4] ) dummy= data[5:10] state= ord( data[10] ) battery= ord( data[11] ) if start != 0x01: raise PS3ParseError( 'data[0]', '0x01', hex(start) ) if dummy != "\xff\xff\xff\xff\xff": raise PS3ParseError( 'data[5:10]', '0xffffffffff', hex(dummy) ) if battery > 0x05: raise PS3ParseError( 'battery level', '0-5', battery ) if( battery < 0x02 ): eg.PrintNotice( 'PS3 Remote: Battery Level: ' + self.text.batteryLevel[battery] ) #self.TriggerEvent( # 'Code: ' + hex(code) + # ' State: ' + hex(state) + # ' Battery Level: ' + str(battery) + ':' + # self.text.batteryLevel[battery] + # ' Mask: ' + bin(mask), # payload= ( battery, self.text.batteryLevel[battery] ) #) if( code != 0xff and code not in self.PS3Remote.button ): raise PS3ParseError( 'Key code', 'various', hex(code) ) # disable power-save mode PowerSave.disable(BD_ADDR) btnPressed = [] if( code != 0xff ): # single button pressed btnPressed.append( self.PS3Remote.button[code] ) else: # multiple buttons pressed if( mask != 0x00 ): for bit in range( 24 ): if( mask & 1<<bit ): if( bit not in self.PS3Remote.maskbit ): PS3ParseError( 'Mask', 'various', bin(mask) ) btnPressed.append( self.PS3Remote.maskbit[bit] ) if btnPressed == []: PS3ParseError( 'Mask', 'various','Empty Mask' ) if btnPressed != []: evtName = 'Button.' + '+'.join(btnPressed) if self.enduringEvents: self.TriggerEnduringEvent(evtName) else: self.TriggerEvent(evtName) elif self.enduringEvents: #no buttons pressed anymore self.EndLastEvent() elif self.ps3Release: #trigger event so that releasing all buttons #can get noticed even w/o enduring events self.TriggerEvent( 'Button.None' ) self.batteryLevel= battery except PS3ParseError as catchedError: eg.PrintError( 'PS3-HID Plugin: ' + catchedError + ' Data: 0x' + binascii.hexlify(data).lower() )