From c5441e93d66ef787d123fbe2bd68eed1b58ad105 Mon Sep 17 00:00:00 2001 From: dekunukem Date: Sat, 15 Jan 2022 15:59:51 +0000 Subject: [PATCH] added keep alive script --- user_program/keep_alive.py | 9 +++++++++ user_program/setup.txt | 1 + user_program/usb4vc_main.py | 23 +---------------------- user_program/usb4vc_ui.py | 36 ++++++++++++++++++++++++------------ 4 files changed, 35 insertions(+), 34 deletions(-) create mode 100644 user_program/keep_alive.py diff --git a/user_program/keep_alive.py b/user_program/keep_alive.py new file mode 100644 index 0000000..a66491d --- /dev/null +++ b/user_program/keep_alive.py @@ -0,0 +1,9 @@ +import os +import time + +while 1: + exit_code = os.system("cd /home/pi/usb4vc/rpi_app; python3 usb4vc_main.py") >> 8 + print("App died! Exit code:", exit_code) + if exit_code == 169: + exit() + time.sleep(0.5) \ No newline at end of file diff --git a/user_program/setup.txt b/user_program/setup.txt index 21dd897..a4094a3 100644 --- a/user_program/setup.txt +++ b/user_program/setup.txt @@ -9,6 +9,7 @@ ssh-keygen copy PC pub key to rpi ~/.ssh/authorized_keys --- +# use sudo -E to preserve environmental variables for python3 sudo apt-get install i2c-tools sudo apt install stm32flash diff --git a/user_program/usb4vc_main.py b/user_program/usb4vc_main.py index efe89f8..5c4035c 100644 --- a/user_program/usb4vc_main.py +++ b/user_program/usb4vc_main.py @@ -2,30 +2,11 @@ import os import sys import time import RPi.GPIO as GPIO - -GPIO.setmode(GPIO.BCM) - import usb4vc_shared import usb4vc_usb_scan import usb4vc_ui -# import usb4vc_uart -PBOARD_RESET_PIN = 25 -PBOARD_BOOT0_PIN = 12 - -def reset_pboard(): - print("resetting protocol board...") - GPIO.setup(PBOARD_BOOT0_PIN, GPIO.IN) - GPIO.setup(PBOARD_RESET_PIN, GPIO.OUT) - GPIO.output(PBOARD_RESET_PIN, GPIO.LOW) - time.sleep(0.05) - GPIO.setup(PBOARD_RESET_PIN, GPIO.IN) - time.sleep(0.05) - print("done") - -# reset_pboard() - -# use sudo -E to preserve environmental variables for python3 +# usb4vc_ui.reset_pboard() os.system('sudo bash -c "echo 1 > /sys/module/bluetooth/parameters/disable_ertm"') @@ -35,7 +16,5 @@ usb4vc_ui.ui_thread.start() usb4vc_usb_scan.usb_device_scan_thread.start() usb4vc_usb_scan.raw_input_event_parser_thread.start() -# usb4vc_uart.uart_thread.start() - while 1: time.sleep(10) \ No newline at end of file diff --git a/user_program/usb4vc_ui.py b/user_program/usb4vc_ui.py index b31a8c0..1e88fbf 100644 --- a/user_program/usb4vc_ui.py +++ b/user_program/usb4vc_ui.py @@ -195,6 +195,16 @@ def get_pbid_and_version(dfu_file_name): i2c_bootloader_pbid = [1] usb_bootloader_pbid = [2] +def reset_pboard(): + print("resetting protocol board...") + GPIO.setup(PBOARD_BOOT0_PIN, GPIO.IN) + GPIO.setup(PBOARD_RESET_PIN, GPIO.OUT) + GPIO.output(PBOARD_RESET_PIN, GPIO.LOW) + time.sleep(0.05) + GPIO.setup(PBOARD_RESET_PIN, GPIO.IN) + time.sleep(0.05) + print("done") + def fw_update(fw_path, pbid): # RESET LOW: Enter reset GPIO.setup(PBOARD_RESET_PIN, GPIO.OUT) @@ -229,10 +239,6 @@ def fw_update(fw_path, pbid): GPIO.setup(PBOARD_RESET_PIN, GPIO.IN) time.sleep(0.05) -# fw_update('/home/pi/usb4vc/firmware/PBFW_ADB_PBID2_V0_1_0.dfu') -# print('bye!') -# os._exit(0) - def update_pboard_firmware(): pboard_firmware_path_local = '/home/pi/usb4vc/firmware' onlyfiles = [f for f in os.listdir(pboard_firmware_path_local) if os.path.isfile(os.path.join(pboard_firmware_path_local, f))] @@ -341,7 +347,7 @@ def bt_setup(): return 1, "no BT receiver found" os.system('/usr/sbin/rfkill unblock bluetooth') time.sleep(0.1) - exit_code = os.system('timeout 1 bluetoothctl agent NoInputNoOutput') + exit_code = os.system('timeout 1 bluetoothctl agent NoInputNoOutput') >> 8 if exit_code == LINUX_EXIT_CODE_TIMEOUT: return 2, 'bluetoothctl stuck' return 0, '' @@ -458,7 +464,7 @@ class usb4vc_menu(object): self.current_level = 0 self.current_page = 0 self.level_size = 6 - self.page_size = [5, 6, 4, 1, 1, 4] + self.page_size = [5, 6, 4, 1, 1, 5] self.kb_protocol_list = list(pboard['protocol_list_keyboard']) self.mouse_protocol_list = list(pboard['protocol_list_mouse']) self.gamepad_protocol_list = list(pboard['protocol_list_gamepad']) @@ -613,11 +619,14 @@ class usb4vc_menu(object): oled_print_centered("Power Down", font_medium, 10, draw) if page == 1: with canvas(oled_device) as draw: - oled_print_centered("Relaunch", font_medium, 10, draw) + oled_print_centered("Reboot", font_medium, 10, draw) if page == 2: with canvas(oled_device) as draw: - oled_print_centered("Reboot", font_medium, 10, draw) + oled_print_centered("Relaunch", font_medium, 10, draw) if page == 3: + with canvas(oled_device) as draw: + oled_print_centered("Exit to Linux", font_medium, 10, draw) + if page == 4: with canvas(oled_device) as draw: oled_print_centered("Cancel", font_medium, 10, draw) @@ -684,7 +693,7 @@ class usb4vc_menu(object): update_from_usb(*result) with canvas(oled_device) as draw: oled_print_centered("Update complete!", font_medium, 0, draw) - oled_print_centered("Restarting...", font_medium, 16, draw) + oled_print_centered("Relaunching...", font_medium, 16, draw) time.sleep(4) oled_device.clear() os._exit(0) @@ -755,15 +764,18 @@ class usb4vc_menu(object): while 1: time.sleep(1) if page == 1: - oled_device.clear() - os._exit(0) - if page == 2: with canvas(oled_device) as draw: oled_print_centered("Rebooting...", font_medium, 10, draw) os.system("sudo reboot") while 1: time.sleep(1) + if page == 2: + oled_device.clear() + os._exit(0) if page == 3: + oled_device.clear() + os._exit(169) + if page == 4: self.goto_level(0) self.display_curent_page()