diff --git a/build/kiosk-hid.sh b/build/kiosk-hid.sh new file mode 100755 index 0000000..1af61fe --- /dev/null +++ b/build/kiosk-hid.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +mkdir -p workspace/src/kiosk-hid +cp ../src/kiosk/kiosk-hid.py workspace/src/kiosk-hid/main.py +cp ../src/kiosk/manifest-hid.py workspace/src/kiosk-hid/manifest.py +cd workspace +git clone https://github.com/micropython/micropython.git --branch=master --depth=1 +cd micropython +make -C ports/rp2 submodules +make -C mpy-cross +cd ports/rp2 +make FROZEN_MANIFEST=../../../src/kiosk-hid/manifest.py +cd ../../../../ +mkdir -p out +mv workspace/micropython/ports/rp2/build-RPI_PICO/firmware.uf2 out/kiosk-hid.uf2 diff --git a/src/kiosk/kiosk-hid.py b/src/kiosk/kiosk-hid.py index e36bdab..7ec1558 100644 --- a/src/kiosk/kiosk-hid.py +++ b/src/kiosk/kiosk-hid.py @@ -44,7 +44,7 @@ from micropython import const from usb.device.hid import HIDInterface print("PostalPoint(r) Shipping Kiosk Door Controller") -print("Firmware version 1.2.0") +print("Firmware version 1.2.1") print("USB HID build") led = Pin(25, Pin.OUT) # Onboard LED @@ -122,7 +122,11 @@ class USBHIDInterface(HIDInterface): ) def on_set_report(self, report_data, _report_id, _report_type): - unlockDoor(False) + if report_data[1] == 0x50: + print("Entering firmware update mode, power cycle to undo. Goodbye for now!") + machine.bootloader() + else: + unlockDoor(False) def send_data(self, data=None): while self.busy(): @@ -175,4 +179,4 @@ try: except KeyboardInterrupt: # trap Ctrl-C input terminateThread = True # signal second 'background' thread to terminate - exit() \ No newline at end of file + exit() diff --git a/src/kiosk/manifest-hid.py b/src/kiosk/manifest-hid.py new file mode 100644 index 0000000..347f237 --- /dev/null +++ b/src/kiosk/manifest-hid.py @@ -0,0 +1,4 @@ +# Build manifest for PostalPoint Kiosk Controller (USB HID) +include("$(MPY_DIR)/ports/rp2/boards/manifest.py") +require("usb-device-hid") +module("main.py")