diff --git a/scratch_link.py b/scratch_link.py index d39066a..191e8a6 100755 --- a/scratch_link.py +++ b/scratch_link.py @@ -513,17 +513,7 @@ class BLESession(Session): message = base64.standard_b64encode(b).decode('ascii') res['result'] = { 'message': message, 'encode': 'base64' } if params.get('startNotifications') == True: - logger.debug(f"start notification for {chara_id}") - service = self.perip.getServiceByUUID(UUID(service_id)) - chas = service.getCharacteristics(forUUID=chara_id) - handle = chas[0].getHandle() - # prepare notification handler - self.delegate.add_handle(service_id, chara_id, handle) - # request notification to the BLE device - self.lock.acquire() - self.perip.writeCharacteristic(chas[0].getHandle() + 1, - b"\x01\x00", True) - self.lock.release() + self.startNotifications(service_id, chara_id) elif self.status == self.CONNECTED and method == 'write': logger.debug("handle write request") @@ -548,6 +538,19 @@ class BLESession(Session): logger.debug(res) return res + def startNotifications(self, service_id, chara_id): + logger.debug(f"start notification for {chara_id}") + service = self.perip.getServiceByUUID(UUID(service_id)) + chas = service.getCharacteristics(forUUID=chara_id) + handle = chas[0].getHandle() + # prepare notification handler + self.delegate.add_handle(service_id, chara_id, handle) + # request notification to the BLE device + self.lock.acquire() + self.perip.writeCharacteristic(chas[0].getHandle() + 1, + b"\x01\x00", True) + self.lock.release() + def end_request(self): logger.debug("end_request of BLESession") if self.delegate: