How furrtek/precir works
PrecIR is a collection of tools and transmitter hardware for communicating with infrared electronic shelf labels (ESLs). The Android workflow combines barcode scanning or image/page selection with frame preparation, then sends commands over USB serial to an ESL Blaster; firmware schedules timed infrared transmission to a line-of-sight ESL. The repository also includes standalone transmitter firmware, configurable remote-frame storage, and a special raw-frame firmware variant. The README documents additional command-line and Windows tools, but their implementation paths are absent from the supplied tree. App and firmware source excerpts are partial, so uncertain internal wiring is omitted.
Main entry points: MainActivity.java PriceHax UI · Src/main.c Firmware v3 · Src/main.c Raw-frame firmware · DMConvert.java Image conversion
Components 21
Android client
- PriceHax UI
PriceHax/app/src/main/java/org/furrtek/pricehax2/MainActivity.java - Camera preview
PriceHax/app/src/main/java/org/furrtek/pricehax2/CameraPreview.java - USB serial link
PriceHax/app/src/main/java/org/furrtek/pricehax2/MainActivity.java - Transmit progress
PriceHax/app/src/main/java/org/furrtek/pricehax2/TXProgress.java - Async callbacks
PriceHax/app/src/main/java/org/furrtek/pricehax2/AsyncResponseTX.java
Frame preparation
- IR frames
PriceHax/app/src/main/java/org/furrtek/pricehax2/IRFrame.java - Image conversion
PriceHax/app/src/main/java/org/furrtek/pricehax2/DMConvert.java - Conversion options
PriceHax/app/src/main/java/org/furrtek/pricehax2/DMConvertParams.java - Display image
PriceHax/app/src/main/java/org/furrtek/pricehax2/DMImage.java - Bitmap dithering
PriceHax/app/src/main/java/org/furrtek/pricehax2/DitherBitmap.java - Display frame generation
PriceHax/app/src/main/java/org/furrtek/pricehax2/DMGen.java
ESL Blaster
- ESL Blaster
Firmware variants
- Firmware v1
hardware/esl_blaster/FW01/Src/main.c - Firmware v2
hardware/esl_blaster/FW02/Src/main.c - Firmware v3
hardware/esl_blaster/FW03/Src/main.c - Raw-frame firmware
hardware/esl_blaster/FW03S/Src/main.c - USB CDC interface
hardware/esl_blaster/FW03/Src/usbd_cdc_if.c - Stored remote frames
hardware/esl_blaster/FW03/Inc/main.h
Other components
- Operator
- Infrared ESL
- USB-serial adapter
Connections 28
- Operator → PriceHax UI: operates
- PriceHax UI → Camera preview: starts preview
- Camera preview → PriceHax UI: provides frames
- PriceHax UI → Conversion options: sets options
- PriceHax UI → Image conversion: converts image
- Image conversion → Display image: produces image
- Image conversion → Bitmap dithering: uses dithering
- PriceHax UI → Display frame generation: requests frames
- Display frame generation → IR frames: creates
- PriceHax UI → IR frames: builds commands
- PriceHax UI → USB serial link: transmits frames
- USB serial link → ESL Blaster: USB serial
- USB-serial adapter → ESL Blaster: serial control
- ESL Blaster → Firmware v1: runs
- ESL Blaster → Firmware v2: runs
- ESL Blaster → Firmware v3: runs
- ESL Blaster → Raw-frame firmware: runs
- Firmware v3 → USB CDC interface: receives CDC data
- Raw-frame firmware → USB CDC interface: receives CDC data
- USB CDC interface → Firmware v3: feeds command loop
- Firmware v3 → Stored remote frames: reads stored frames
- Raw-frame firmware → Stored remote frames: reads stored frames
- Firmware v1 → Infrared ESL: transmits infrared
- Firmware v2 → Infrared ESL: transmits infrared
- Firmware v3 → Infrared ESL: transmits infrared
- Raw-frame firmware → Infrared ESL: transmits raw IR
- PriceHax UI → Transmit progress: updates status
- PriceHax UI → Async callbacks: dispatches callback