diff --git a/preload/apps/ble/__init__.py b/preload/apps/ble/__init__.py index b50a69808d7c1ac081771ff13d841ba5efc9547e..9eff8891c0343d6fc6283b191a7378dd7a44e3bd 100644 --- a/preload/apps/ble/__init__.py +++ b/preload/apps/ble/__init__.py @@ -6,7 +6,7 @@ import sys_ble import interrupt import config -ble_event = None +ble_events = [] is_active = False STATE_IDLE = 1 @@ -16,8 +16,13 @@ STATE_FAIL = 4 def ble_callback(_): - global ble_event - ble_event = sys_ble.get_event() + global ble_events + + while True: + event = sys_ble.get_event() + if event == sys_ble.EVENT_NONE: + break + ble_events.append(event) def init(): @@ -95,6 +100,11 @@ while True: v = ~v_old & v_new v_old = v_new + ble_event = None + if len(ble_events) > 0: + ble_event = ble_events[0] + ble_events = ble_events[1:] + if state == STATE_IDLE: # print config screen disp.clear() @@ -104,7 +114,6 @@ while True: # wait for button press or ble_event if ble_event == sys_ble.EVENT_HANDLE_NUMERIC_COMPARISON: - ble_event = None state = STATE_NUMERIC_COMPARISON if v & buttons.TOP_RIGHT: toggle() @@ -128,7 +137,6 @@ while True: # wait for button press or ble_event if ble_event == sys_ble.EVENT_PAIRING_FAILED: - ble_event = None state = STATE_FAIL if v & buttons.BOTTOM_LEFT: sys_ble.confirm_compare_value(True) @@ -144,10 +152,8 @@ while True: elif state == STATE_WAIT_FOR_COMPLETION: # Wait for pairing to complete if ble_event == sys_ble.EVENT_PAIRING_FAILED: - ble_event = None state = STATE_FAIL elif ble_event == sys_ble.EVENT_PAIRING_COMPLETE: - ble_event = None pairing_name = sys_ble.get_last_pairing_name().split("/")[-1].split(".")[0] disp.clear() disp.print("BLE Pairing", posy=0, fg=[0, 0, 255])