Esempio n. 1
0
    def _receptionHandler(self, data):
        if len(data) > 5:
            l2cap_data = data[5:]
        else:
            log.debug("Received invalid L2CAP data at handler: %s", data)
            return

        # prioritize specific CID handlers
        (length, cid) = struct.unpack_from("hh", l2cap_data)
        log.debug("Received L2CAP data for cid: %d, %s", cid,
                  binascii.hexlify(l2cap_data))
        if cid in self.cidHandlers:
            for handler in self.cidHandlers[cid]:
                handler(l2cap_data[4:])

        for handler in self.handlers:
            handler(l2cap_data[4:])
Esempio n. 2
0
 def sendACL(self, data):
     data_len = p16(len(data))
     handle = p16(self.handle | 0x2000)
     log.debug("Sent acl data: %s", binascii.hexlify(data).decode("utf-8"))
     self.core.sendH4(0x02, handle + data_len + data)
Esempio n. 3
0
 def registerACLHandler(self, handler):
     self.aclHandlers.append(handler)
     log.debug("Registered new acl handler")
Esempio n. 4
0
 def _aclEventHandler(self, data):
     log.debug("Received ACL data: %s",
               binascii.hexlify(data).decode("utf-8"))
     for handler in self.aclHandlers:
         handler(data)
Esempio n. 5
0
    def registerCIDHandler(self, handler, cid):
        if cid not in self.cidHandlers:
            self.cidHandlers[cid] = []

        self.cidHandlers[cid].append(handler)
        log.debug("Registered L2CAP handler for CID %d", cid)
Esempio n. 6
0
 def registerHandler(self, handler):
     self.handlers.append(handler)
     log.debug("Registered L2CAP handler")
Esempio n. 7
0
 def sendData(self, data, cid):
     data_len = len(data)
     # if data_len > mtu
     log.debug("Sent L2CAP data to channel: %d, data: %s", cid,
               binascii.hexlify(data))
     self.connection.sendACL(p16(data_len) + p16(cid) + data)