Skip to content

Commit

Permalink
add option to silence bad packets
Browse files Browse the repository at this point in the history
  • Loading branch information
ph4r05 committed Jun 28, 2022
1 parent d5887de commit d90498c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 22 deletions.
3 changes: 3 additions & 0 deletions ph4_walkingpad/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ async def connect(self, address):

self.ctler = Controller(address=address, do_read_chars=False)
self.ctler.log_messages_info = self.args.cmd
self.ctler.ignore_bad_packets = self.args.ignore_bad_packets
self.ctler.handler_cur_status = self.on_status
self.ctler.handler_last_status = self.on_last_record

Expand Down Expand Up @@ -390,6 +391,8 @@ def argparser(self):
help='Scan all BLE and exit')
parser.add_argument('--cmd', dest='cmd', action='store_const', const=True,
help='Non-interactive mode')
parser.add_argument('--ignore-bad-packets', dest='ignore_bad_packets', action='store_const', const=True,
help='Ignore bad packets warnings')
parser.add_argument('--stats', dest='stats', type=int, default=None,
help='Enable periodic stats collecting, interval in ms')
parser.add_argument('-j', '--json-file', dest='json_file',
Expand Down
51 changes: 29 additions & 22 deletions ph4_walkingpad/pad.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ def __init__(self, address=None, do_read_chars=True):
self.address = address
self.do_read_chars = do_read_chars
self.log_messages_info = True
self.ignore_bad_packets = False

self.char_fe01 = None
self.char_fe02 = None
Expand All @@ -247,30 +248,36 @@ async def __aexit__(self, exc_type, exc_val, exc_tb):

def notif_handler(self, sender, data):
logger_fnc = logger.info if self.log_messages_info else logger.debug
logger_fnc('Msg: %s' % (', '.join('{:02x}'.format(x) for x in data)))
msg_hex = ', '.join('{:02x}'.format(x) for x in data)
logger_fnc('Msg: %s' % msg_hex)
already_notified = False

if WalkingPadCurStatus.check_type(data):
m = WalkingPadCurStatus.from_data(data)
self.last_status = m
already_notified = True
self.on_cur_status_received(sender, m)
if self.handler_cur_status:
self.handler_cur_status(sender, m)
logger_fnc('Status: %s' % (m,))

elif WalkingPadLastStatus.check_type(data):
m = WalkingPadLastStatus.from_data(data)
self.last_record = None
already_notified = True
self.on_last_status_received(sender, m)
if self.handler_last_status:
self.handler_last_status(sender, m)
logger_fnc('Record: %s' % (m,))

self.on_message_received(sender, data, already_notified)
if self.handler_message:
self.handler_message(sender, data, already_notified)
try:
if WalkingPadCurStatus.check_type(data):
m = WalkingPadCurStatus.from_data(data)
self.last_status = m
already_notified = True
self.on_cur_status_received(sender, m)
if self.handler_cur_status:
self.handler_cur_status(sender, m)
logger_fnc('Status: %s' % (m,))

elif WalkingPadLastStatus.check_type(data):
m = WalkingPadLastStatus.from_data(data)
self.last_record = None
already_notified = True
self.on_last_status_received(sender, m)
if self.handler_last_status:
self.handler_last_status(sender, m)
logger_fnc('Record: %s' % (m,))

self.on_message_received(sender, data, already_notified)
if self.handler_message:
self.handler_message(sender, data, already_notified)

except Exception as e:
log_fnc = logger.debug if self.ignore_bad_packets else logger.error
log_fnc("Exception in processing msg [%s]: %s" % (msg_hex, e), exc_info=e)

def on_message_received(self, sender, data, already_notified=False):
"""Override to use as message callback"""
Expand Down

0 comments on commit d90498c

Please sign in to comment.