mirror of
https://github.com/kawasaki/pyscrlink.git
synced 2025-09-07 10:10:24 +02:00
BLESession.matches: Support namePrefix in matching filters
Support "namePrefix" filter which is required for intelino Smart Train.
This commit is contained in:
committed by
Shin'ichiro Kawasaki
parent
20e65e9f03
commit
a6972bb9a8
@@ -434,13 +434,13 @@ class BLESession(Session):
|
|||||||
|
|
||||||
def matches(self, dev, filters):
|
def matches(self, dev, filters):
|
||||||
"""
|
"""
|
||||||
Check if the found BLE device mathces the filters Scracth specifies.
|
Check if the found BLE device matches the filters Scratch specifies.
|
||||||
"""
|
"""
|
||||||
logger.debug(f"in matches {dev} {filters}")
|
logger.debug(f"in matches {dev} {filters}")
|
||||||
for f in filters:
|
for f in filters:
|
||||||
if 'services' in f:
|
if 'services' in f:
|
||||||
for s in f['services']:
|
for s in f['services']:
|
||||||
logger.debug(f"sevice to check: {s}")
|
logger.debug(f"service to check: {s}")
|
||||||
given_uuid = s
|
given_uuid = s
|
||||||
logger.debug(f"given: {given_uuid}")
|
logger.debug(f"given: {given_uuid}")
|
||||||
dev_uuid = self._get_dev_uuid(dev)
|
dev_uuid = self._get_dev_uuid(dev)
|
||||||
@@ -451,6 +451,16 @@ class BLESession(Session):
|
|||||||
if given_uuid == dev_uuid:
|
if given_uuid == dev_uuid:
|
||||||
logger.debug("match...")
|
logger.debug("match...")
|
||||||
return True
|
return True
|
||||||
|
if 'namePrefix' in f:
|
||||||
|
# 0x08: Shortened Local Name
|
||||||
|
deviceName = dev.getValueText(0x08)
|
||||||
|
if not deviceName:
|
||||||
|
continue
|
||||||
|
logger.debug(f"Name of \"{deviceName}\" begins with: \"{f['namePrefix']}\"?")
|
||||||
|
if(deviceName.startswith(f['namePrefix'])):
|
||||||
|
logger.debug("Yes")
|
||||||
|
return True
|
||||||
|
logger.debug("No")
|
||||||
if 'name' in f or 'manufactureData' in f:
|
if 'name' in f or 'manufactureData' in f:
|
||||||
logger.error("name/manufactureData filters not implemented")
|
logger.error("name/manufactureData filters not implemented")
|
||||||
# TODO: implement other filters defined:
|
# TODO: implement other filters defined:
|
||||||
@@ -498,7 +508,7 @@ class BLESession(Session):
|
|||||||
self.status = self.DONE
|
self.status = self.DONE
|
||||||
|
|
||||||
if len(self.found_devices) == 0 and not err_msg:
|
if len(self.found_devices) == 0 and not err_msg:
|
||||||
err_msg = (f"BLE service not found: {params['filters']}. "
|
err_msg = (f"No BLE device found: {params['filters']}. "
|
||||||
"Check BLE device.")
|
"Check BLE device.")
|
||||||
res["error"] = { "message": err_msg }
|
res["error"] = { "message": err_msg }
|
||||||
logger.error(err_msg)
|
logger.error(err_msg)
|
||||||
|
Reference in New Issue
Block a user