QuecPython device layer for the TS3-RTOS client on handheld PoC radios. The portable client core is a separate repo: https://github.com/cipheraenys/ts3-core
One folder per device under devices/. Every device implements the same small
surface, so app code can stay device-agnostic.
Each devices/<name>/ provides three modules with this surface:
init()— power the panel, return the driverclear(color)— fill the screen (RGB565)lvgl_attach()— register as an LVGL display, return the active screen
say(text, volume=...)— on-chip TTS, returns 0 on successplay_wav(path)— play a WAV through the speakerrecord(path, seconds)— record the mic to a WAV
read()— raw key / PTT readingptt_pressed()— True while PTT is held
Board-specific values are constants at the top of each module; a different LCD controller also needs a different driver.
Module names must not shadow a QuecPython built-in: audio is one, so the
speaker/TTS module is named sound. A file named audio.py on the path never
loads — the built-in wins.
devices/bq280/— BQ280 handheld (EC600M / ASR1606). Hardware map in its README.
firmware/ec600m/— QuecPython for the EC600M built from the public HeliosSDK, so C modules can be added. Runs on the BQ280; thedevices/bq280drivers work on it.
tools/upload.py— copy files to the device over the REPL, e.g.python tools/upload.py COM16 devices/bq280/display.py=/usr/display.py(in Git Bash, setMSYS_NO_PATHCONV=1so/usr/...is not rewritten to a Windows path).
Copy devices/bq280/ to devices/<name>/, keep the module surface, retune the
constants for your board, and run each module's demo() on the device to confirm.