Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
645cc89
Improve BLE Spam module
Doominator1 May 14, 2026
8f118e7
Improve BLE Spam module - Apple
Doominator1 May 14, 2026
925ad35
Improve BLE Spam module - Apple
Doominator1 May 14, 2026
bd44b47
Fix footer height adjustments in BLE spam module
Doominator1 May 14, 2026
ef35ef8
Re-add iOS 17 crash, add BLE beacon spam, add Custom Swift Pair naming
Doominator1 May 15, 2026
3b67e30
Add better Advertisement packets (feat. @MarlinSchuck)
Doominator1 May 15, 2026
a2827a0
Slight adjustment to BLE beacon presets
Doominator1 May 15, 2026
9d0398e
Adjust Maximum Packet size for BLE Beacon names
Doominator1 May 15, 2026
c55931b
Fix text width causing build failures on esp32-c5
Doominator1 May 16, 2026
264b255
fix(HeavyButter): upgrade App Store from HTTP to HTTPS
Jun 8, 2026
22a103c
Merge pull request #2518 from r13xr13/fix/https-appstore
pr3y Jun 11, 2026
7d49f04
Add Elecrow CrowPanel Advance 3.5" (ESP32-S3) board support
firch43-cyber Jun 12, 2026
651980d
Merge pull request #2533 from firch43-cyber/add-elecrow-advance-35-s3
pr3y Jun 12, 2026
a496d77
fix(rf): prevent crash when opening options after Scan/Copy capture
augustoamaro Jun 12, 2026
eef00e2
NRF24 Not working fixed
Jun 13, 2026
762423f
fixed power-cycle radio on every mode switch
Jun 13, 2026
700807b
fix CH Hopper speed and display
Jun 13, 2026
db98317
fix power-cycle radio after config edit save
Jun 13, 2026
3949ac8
drive CE low on exit to fix NRF24 not found on re-entry
Jun 13, 2026
4393c05
Added an jam methods on CH hopper.
Jun 13, 2026
aafba19
apply configured PA level across CW jammer paths
Jun 13, 2026
be0cbb3
Merge pull request #2537 from 0xhim4ri-81x/main
pr3y Jun 13, 2026
e8547ef
Merge pull request #2535 from augustoamaro/fix/2477-rf-scan-rcswitch-…
pr3y Jun 13, 2026
538592e
elecrow-advance-35-s3 board add
pr3y Jun 13, 2026
3867eee
Merge pull request #2444 from Doominator1/dev
pr3y Jun 15, 2026
c72e9c2
fix build ble pr 2444
pr3y Jun 15, 2026
7839a7c
Fix nrf24, rollback to origins
bmorcelli Jun 21, 2026
86eb576
Restablish RF Jammer Limits, we are not Black hats
bmorcelli Jun 21, 2026
0bbd5c8
fix(webui): responsive layout for narrow screens (#2573)
Yoursel71 Jun 22, 2026
504e87b
fix(ethernet): make host port scan cancellable and bound per-port con…
Jun 23, 2026
5f55617
Enhanced BLE Spam (Apple iCloud Spoofing + Samsung Detection)Ble spam…
Ninja-jr Jun 23, 2026
f47a29e
fix(t-deck): correct swapped I2S BCLK/WCLK pins + enable NS4168 speak…
parsazolfaghar Jun 23, 2026
ece6f64
Merge pull request #2581 from Yoursel71/fix/hostinfo-portscan-cancel
bmorcelli Jun 23, 2026
473c325
Rf refactor (#2586)
bmorcelli Jun 23, 2026
61a6446
Deduplicated ir codes list (#2583)
Ninja-jr Jun 23, 2026
45e1ea8
feat(clock): persist software clock to NVS on boards without an RTC (…
parsazolfaghar Jun 26, 2026
c963e3a
ST25R pins setup
bmorcelli Jun 26, 2026
5518ecc
Reading tags
bmorcelli Jun 27, 2026
045171a
exit read
bmorcelli Jun 27, 2026
9ff0ef5
nonblocking mode
bmorcelli Jun 27, 2026
65e18d3
primeira etapa
bmorcelli Jun 28, 2026
2e81c90
Device type: NTAG215
bmorcelli Jun 28, 2026
fe0c152
fix apple packets in ble_spam.cpp
Doominator1 Jun 28, 2026
1996b41
remove dead code/legacy ble packets from ble_spam.cpp
Doominator1 Jun 28, 2026
35f6b38
Amiibo emu!
bmorcelli Jun 28, 2026
347669a
Fix ble_spam.cpp
Doominator1 Jun 29, 2026
1f94c13
other emulations
bmorcelli Jun 29, 2026
1edd514
Merge pull request #2598 from Doominator1/dev
bmorcelli Jun 29, 2026
56065a8
Ble sniffer and ble suite improvements (#2589)
Ninja-jr Jun 29, 2026
79a5cd4
fix(nrf24): don't error "NRF24 pins undefined" when SPI+UART pins bot…
stonervpn-design Jun 29, 2026
708c5c8
feat(wifi): add Channel Analyzer and Jam Detect modules (#2578)
stonervpn-design Jun 29, 2026
412ef7e
Reverse Shell: WebSocket rework with real-time output (#2584)
Ninja-jr Jun 29, 2026
77e0a92
finish
bmorcelli Jun 29, 2026
ebe459e
Merge pull request #2599 from bmorcelli/support_ST25R3916
bmorcelli Jun 29, 2026
65d8435
fix build
bmorcelli Jun 29, 2026
9c94e72
Grrrr
bmorcelli Jun 29, 2026
284ae69
Merge branch 'main' into dev
bmorcelli Jun 30, 2026
4aca041
Ram revamp (#2622)
bmorcelli Jul 7, 2026
71edef4
fix(bjs): strndup with slash=-1 panics on scripts without a directory…
Swissola Jul 7, 2026
98f66df
Fix RF Ghosting
bmorcelli Jul 8, 2026
17a471f
sys_i2c mapping
bmorcelli Jul 9, 2026
2c86642
Fix I2C bus conflicts
bmorcelli Jul 9, 2026
5a2fd57
SPI bus arbitration
bmorcelli Jul 10, 2026
b03a760
Fix ST25R3916 I2C init crashes on shared sys_i2c bus
bmorcelli Jul 10, 2026
1cf603c
Fix RF M5 module receive/decode flow.
bmorcelli Jul 13, 2026
3b8f9c0
avoid CPU starvation on tight loops
bmorcelli Jul 13, 2026
5f1da08
Enhanced WiFi Deauther with multi-band attack, storm mode, and mesh s…
Ninja-jr Jul 13, 2026
5af5ffc
Quick fix: BLE_spam.cpp bug (#2631)
Doominator1 Jul 13, 2026
d4f3899
fix: correctly detect NECext protocol instead of NEC42 (#2607)
TheMiner203 Jul 13, 2026
a28d4aa
Fix rotary encoder skipping on rotary-equipped devices (such as t-emb…
Doominator1 Jul 13, 2026
7e7fdbc
Upgrade TV-B-Gone to universal power-off with multi-device codes (#2614)
Ninja-jr Jul 13, 2026
d66988b
Fix and prevent One Definition Rule (ODR) issues (#2489)
paazmaya Jul 13, 2026
3793b46
fix: UI bug fixes and improvements (#2283)
CloudWaddie Jul 13, 2026
b3626fb
Add exact-drain rotary encoder navigation for menu and keyboard (#2647)
Doominator1 Jul 14, 2026
4aab656
fix(keyboard): force redraw after shortcut opens submenu (#2320)
pfefferle Jul 14, 2026
9776101
Fix Option menu highlight
bmorcelli Jul 14, 2026
36c7ff6
loopSD & scrollableTextArea rotary enhancements (#2651)
Doominator1 Jul 15, 2026
80353ae
Update platform and framework package versions
bmorcelli Jul 15, 2026
37216c3
Enhanced NDEF emulation
bmorcelli Jul 16, 2026
3ac9d4b
PN532 emulation fixes and WIFI NDEF
bmorcelli Jul 17, 2026
acf8958
fix(wifi): stop beacon spam from leaking garbage MACs and malformed f…
Pedro-Jesus-Fuentes-Morcillo Jul 17, 2026
dd17fdf
as
bmorcelli Jul 18, 2026
1ec6867
Pwnagotchi state machine rewrite, sniffer handshake reliability, RF m…
Mysteriza Jul 18, 2026
eccf107
Merge BLE Suite Fixes and UI Improvements and other important fixes t…
Ninja-jr Jul 19, 2026
3b4bede
Readded the “Send deauth” button to the Capture Handshake feature, (#…
Mysteriza Jul 19, 2026
d178989
Fix beacon channel mapping and deauth timing (#2670)
Mysteriza Jul 20, 2026
12eeb74
feat: Add a "Skip" button to Quick IR Setup if the corresponding butt…
Mysteriza Jul 20, 2026
68a87bb
karma
bmorcelli Jul 21, 2026
29442e3
Added multiple wardriving startup options. Default enables Wifi and B…
Delta0001 Jul 21, 2026
8ba6144
bugfixes
bmorcelli Jul 22, 2026
daf5c60
restore CH9329 BadUsb
bmorcelli Jul 22, 2026
8ff185a
feat: bring back capture 4-way handshake in Capture Handshake feature…
Mysteriza Jul 22, 2026
84e2631
Fix: add BLE state cleanup to ducky_typer functions (#2669)
Ninja-jr Jul 22, 2026
e41a6d6
fix(evil_portal): detect captive portal on Windows and Linux (#2684)
Pedro-Jesus-Fuentes-Morcillo Jul 22, 2026
91804c9
fix(rf): smoother Custom SubGhz sending (keep folder + no key-press w…
Pedro-Jesus-Fuentes-Morcillo Jul 23, 2026
3626f08
fixes and burials
bmorcelli Jul 23, 2026
d3d09d5
esp_task_wdt_reset
bmorcelli Jul 23, 2026
7236111
fix(wifi): capture handshake pcaps missing SSID/beacon for cracking
claude Jul 23, 2026
2d1e8d1
fix(wifi): use MAC-based filename fallback instead of shared UNKNOWN …
claude Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .codex_tmp/LilyGoLib
Submodule LilyGoLib deleted from a64fc6
1 change: 0 additions & 1 deletion .codex_tmp/NFC-RFAL-fork
Submodule NFC-RFAL-fork deleted from 7bde45
1 change: 0 additions & 1 deletion .codex_tmp/ST25R3916-fork
Submodule ST25R3916-fork deleted from 0c8e00
2 changes: 2 additions & 0 deletions .github/workflows/buil_parallel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ jobs:
- { env: "lilygo-t-lora-pager", family: "ESP32-S3",}
- { env: "elecrow-24B", family: "ESP32",}
- { env: "elecrow-28B", family: "ESP32",}
- { env: "elecrow-advance-35-s3", family: "ESP32-S3",}
- { env: "smoochiee-board", family: "ESP32-S3",}
- { env: "reaper", family: "ESP32-S3",}
- { env: "Phantom_S024R", family: "ESP32",}
Expand Down Expand Up @@ -147,6 +148,7 @@ jobs:

if [[ "${{ github.ref_type }}" == "tag" ]]; then
version=${{ github.ref_name }}
sed -i "s/-D ENABLE_RAM_LOGGING=1/;-D ENABLE_RAM_LOGGING=1'\"$version\"' ; /g" ./platformio.ini
else
version="${GITHUB_SHA::7}"
fi
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
.vscode/launch.json
.vscode/extensions.json
.vscode/ipch
.codex_tmp
.claude
Bruce3_*.bin
bruce.conf
_*.sh
Expand All @@ -16,8 +18,9 @@ checksum.sha256
.vscode/extensions.json
mqjs_build
docker-logs
compile_commands.json
lib/mquickjs_headers/mqjs_stdlib_generator
lib/mquickjs_headers/mqjs_stdlib_generator.exe
.github/agents/Bruce-AI.agent.md
.idea
.ai
.ai
19 changes: 11 additions & 8 deletions 2.0_road_path.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ the objective of 2.0 is changing the Framework to Arduino-ESP32 v3.+, to be able
- [x] Availability to program to ESP32-C5 (5ghz wifi chip)

## Things to change on 2.0
- [] InputHadler common codes, defined within #defines structures, not programmin functions to each device
- [] InputHadler common codes, defined within #defines structures, not programing functions to each device
- [] PPM and FuelGauge common functions
- [] Add a MiddleClass for TFT, where more libraries can be used (ArduinoGFX and Lovyan_GFX)
- [x] Add a MiddleClass for TFT, where more libraries can be used (ArduinoGFX and Lovyan_GFX)


## Things to add on 2.0
Expand All @@ -25,19 +25,22 @@ the objective of 2.0 is changing the Framework to Arduino-ESP32 v3.+, to be able
- [] Session hijacking

### RFID
- [] Emulation on PN532
- [] using Lora Pager RFID Chip (read/write/emulate)
- [x] Emulation on PN532
- [x] using Lora Pager RFID Chip (read/write/emulate)

### RF
- [] Rolljam
- Decode/Encode Protocols
- [x] Decode/Encode Protocols

### NRF24
- [] mouse jacking
- [] keyboard jacking
- [x] mouse jacking
- [x] keyboard jacking

### Interpreter
- Possibility to access I2C, SPI, UART buses
Possibility to access I2C, SPI, UART buses
- [x] I2C interface
- [] SPI Interface
- [] UART interface

### FM
- Remove and move it into a JS code
Expand Down
100 changes: 100 additions & 0 deletions THIRD_PARTY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Third-party code and attribution

Bruce is licensed under the **GNU Affero General Public License v3.0 or later**
(AGPL-3.0-or-later); see [`LICENSE`](LICENSE).

Parts of Bruce's RF / sub-GHz module (`src/modules/rf/`) are **derived from**
other free-software projects. Those portions were modified to fit Bruce's native
RMT engine, data model and UI, but remain the work of their original authors and
are used under their respective licenses. Each affected source file carries a
header pointing back to this document.

> This file documents attribution for copyleft compliance. It is not legal
> advice; if you redistribute Bruce, review these obligations yourself.

## Sub-GHz protocols / KeeLoq

### Flipper Zero firmware — GPL-3.0-or-later
- Upstream: <https://github.com/flipperdevices/flipperzero-firmware>
- License: GNU General Public License v3.0
- Copyright (C) Flipper Devices Inc. and the flipperzero-firmware contributors.
- Used by: the KeeLoq block cipher, the manufacturer "learning" key-derivation
schemes, the KeeLoq frame decoder/encoder framing, the `.sub` keystore format
and protocol identities.
Files: `src/modules/rf/protocols/rf_keeloq.{h,cpp}`,
`src/modules/rf/protocols/rf_decoder.{h,cpp}`,
`src/modules/rf/protocols/rf_encoder.{h,cpp}`.

### Momentum firmware — GPL-3.0-or-later
- Upstream: <https://github.com/Next-Flip/Momentum-Firmware>
- License: GNU General Public License v3.0
- Copyright (C) the Momentum Firmware contributors.
- Used by: the extended KeeLoq manufacturer list and the model for the
encrypted built-in keystore (`keeloq_mfcodes`), which Bruce mirrors by
shipping an AES-encrypted keystore decrypted at runtime as a fallback.
Files: `src/modules/rf/protocols/rf_keeloq.cpp`,
`src/modules/rf/protocols/rf_keeloq_mfcodes_data.h` (generated),
`tools/gen_mfcodes.py`.

> Note: the KeeLoq manufacturer keys themselves originate from the respective
> device manufacturers. They are proprietary key material; their redistribution
> is a separate concern from the GPL attribution above and is the redistributor's
> responsibility to evaluate.

### rc-switch (RCSwitch) — LGPL-2.1-or-later
- Upstream: <https://github.com/sui77/rc-switch>
- License: GNU Lesser General Public License v2.1
- Copyright (C) 2011 Suat Özgür and the rc-switch contributors.
- Used by: the classic OOK protocol timing table (the numbered `RcSwitch_N`
protocols and the factor-based `{high,low}×te` model) and the
capture/decode and send state machines that Bruce re-implemented over its
native RMT engine.
Files: `src/modules/rf/protocols/rf_registry.{h,cpp}`,
`src/modules/rf/protocols/rf_decoder.{h,cpp}`,
`src/modules/rf/protocols/rf_encoder.{h,cpp}`.

## NFC / RFID (ST25R3916)

The ST25R3916 NFC front-end driver (`src/modules/rfid/ST25R3916.{h,cpp}`) is a
native re-implementation over a fork of ST's RFAL stack, but several parts —
particularly the card-emulation (listen / passive-target) path — were **derived
from** the Momentum firmware, itself a fork of the Flipper Zero firmware. Those
portions were rewritten to drive the ST25R3916 register interface directly
(the RFAL fork's high-level `rfalListenStart` is a stub), but the register
sequences and protocol state machines follow the upstream NFC HAL/stack.

### Momentum firmware (Flipper Zero NFC stack) — GPL-3.0-or-later
- Upstream: <https://github.com/Next-Flip/Momentum-Firmware>
- Based on: <https://github.com/flipperdevices/flipperzero-firmware>
- License: GNU General Public License v3.0
- Copyright (C) the Momentum Firmware and flipperzero-firmware contributors.
- Used by:
- The NFC-A listen / passive-target register configuration (MODE.targ +
`om_targ_nfca`, PT memory load of UID/ATQA/SAK, OP_CONTROL / PASSIVE_TARGET
/ MASK_RX_TIMER setup and the target-mode IRQ mask), which follows the
Flipper `furi_hal_nfc` sequence on the same ST25R chip family.
- The MIFARE Classic listener-side Crypto1 emulation: authentication
handshake, manual-parity TX/RX handling and the encrypted READ/WRITE
service from the loaded dump.
- The MIFARE Ultralight / NTAG21x listener command handling — `GET_VERSION`,
`READ_SIG` (ECC signature), `READ_CNT`, `PWD_AUTH`/`PACK` and the amiibo
(NTAG215, UID-derived password, `80 80` PACK) behaviour.
- The FeliCa (NFC-F) and Type 4 Tag (ISO-DEP / NDEF) emulation responders.
Files: `src/modules/rfid/ST25R3916.cpp`.

### Crypto1 cipher (Crapto1 / Proxmark lineage) — public reimplementation
- References: "Dismantling MIFARE Classic" (Garcia et al., 2008) and the public
Crapto1 reference; the same algorithm is used by the Flipper / Momentum and
Proxmark NFC stacks.
- Used by: the compact Crypto1 stream cipher that backs both reader-side
MIFARE Classic auth/read/write and the listener-side emulation, since the
RFAL fork has no native Crypto1 support.
Files: `src/modules/rfid/crypto1.{h,cpp}`.

## Bundled libraries (linked dependencies)

Fetched via PlatformIO `lib_deps` (see `platformio.ini`); each keeps its own
license. Notably the CC1101 radio driver:

- **SmartRC-CC1101-Driver-Lib** (ELECHOUSE driver fork) —
<https://github.com/bmorcelli/SmartRC-CC1101-Driver-Lib>
4 changes: 2 additions & 2 deletions boards/CYD-2432S028/CYD-2432S028.ini
Original file line number Diff line number Diff line change
Expand Up @@ -446,8 +446,8 @@ build_flags =
-DHAS_CAPACITIVE_TOUCH=1
-DTOUCH_GT911_I2C=1
-DGT911_SLAVE_ADDRESS_L=0x5D
-DGT911_I2C_CONFIG_SDA_IO_NUM=33
-DGT911_I2C_CONFIG_SCL_IO_NUM=32
-D SYS_I2C_SDA=33
-D SYS_I2C_SCL=32
-DGT911_TOUCH_CONFIG_INT_GPIO_NUM=25
-DGT911_TOUCH_CONFIG_RST_GPIO_NUM=21
-DBOARD_TOUCH_INT=25
Expand Down
14 changes: 13 additions & 1 deletion boards/CYD-2432S028/interface.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#include "core/bus_HAL.h"
#include "core/powerSave.h"
#include "core/utils.h"
#include <Arduino.h>
Expand Down Expand Up @@ -43,10 +44,21 @@ void _setup_gpio() {
digitalWrite(XPT2046_CS, HIGH);
#endif

#if defined(HAS_CAPACITIVE_TOUCH)
setSysI2CBus(&Wire1);
#if defined(TOUCH_GT911_I2C)
bruceConfigPins.sys_i2c.sda = (gpio_num_t)SYS_I2C_SDA;
bruceConfigPins.sys_i2c.scl = (gpio_num_t)SYS_I2C_SCL;
#else
bruceConfigPins.sys_i2c.sda = (gpio_num_t)CYD28_TouchC_SDA;
bruceConfigPins.sys_i2c.scl = (gpio_num_t)CYD28_TouchC_SCL;
#endif
#endif

#if defined(TOUCH_GT911_I2C)
pinMode(BOARD_TOUCH_INT, INPUT);
touch.setPins(-1, BOARD_TOUCH_INT);
if (!touch.begin(Wire, GT911_SLAVE_ADDRESS_L, GT911_I2C_CONFIG_SDA_IO_NUM, GT911_I2C_CONFIG_SCL_IO_NUM)) {
if (!touch.begin(Wire1, GT911_SLAVE_ADDRESS_L, SYS_I2C_SDA, SYS_I2C_SCL)) {
Serial.println("Failed to find GT911 - check your wiring!");
}
#else
Expand Down
2 changes: 2 additions & 0 deletions boards/ES3C28P/interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
* - BOOT button (GPIO0)
*/

#include "core/bus_HAL.h"
#include "core/powerSave.h"
#include "core/utils.h"
#include <Arduino.h>
Expand Down Expand Up @@ -103,6 +104,7 @@ void _setup_gpio() {
pinMode(ES3C28P_TOUCH_INT, INPUT);

// Initialize I2C bus (shared with audio codec ES8311)
setSysI2CBus(&Wire);
Wire.begin(ES3C28P_TOUCH_SDA, ES3C28P_TOUCH_SCL);
touchInitialized = true;

Expand Down
2 changes: 2 additions & 0 deletions boards/ES3C28P/pins_arduino.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ static const uint8_t RX = 44;
// =============================================
#define GROVE_SDA 16
#define GROVE_SCL 15
#define SYS_I2C_SDA GROVE_SDA
#define SYS_I2C_SCL GROVE_SCL
static const uint8_t SDA = GROVE_SDA;
static const uint8_t SCL = GROVE_SCL;

Expand Down
6 changes: 5 additions & 1 deletion boards/ESP32-C5-tft/interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,12 @@ void InputHandler(void) {
if (anyPressed && wakeUpScreen()) return;

AnyKeyPress = anyPressed;
if (upPressed && dwPressed) {
EscPress = true;
return;
}
PrevPress = upPressed;
EscPress = upPressed && dwPressed;

NextPress = dwPressed;
SelPress = selPressed;
#endif
Expand Down
6 changes: 6 additions & 0 deletions boards/arduino-nesso-n1/interface.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#include "core/bus_HAL.h"
#include "core/powerSave.h"
#include "core/utils.h"
#include <M5Unified.h>
Expand All @@ -13,6 +14,9 @@ constexpr uint32_t kBtnBLongPressMs = 500;
***************************************************************************************/
void _setup_gpio() {
M5.begin(); // Need to test if SDCard inits with the new setup
// ESP32-C6 only has one general-purpose I2C controller (SOC_HP_I2C_NUM == 1), so
// I2C_NUM_1 doesn't exist in i2c_port_t here and M5.In_I2C is always on Wire/I2C_NUM_0.
setSysI2CBus(&Wire);
bruceConfig.colorInverted = 0;
M5.BtnA.setDebounceThresh(8);
M5.BtnB.setDebounceThresh(8);
Expand Down Expand Up @@ -47,7 +51,9 @@ void InputHandler(void) {
static bool btnBWaitingSecondClick = false;
static bool btnBLongPressFired = false;
if (millis() - tm < 200 && !LongPress) return;
if (!trylockSysI2CBus()) return; // RFID driver mid-transaction - retry next tick
M5.update();
unlockSysI2CBus();

bool emitNext = false;
bool emitPrev = false;
Expand Down
2 changes: 2 additions & 0 deletions boards/arduino-nesso-n1/platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ build_flags =
;Default I2C port
-D GROVE_SDA=5
-D GROVE_SCL=4
-D SYS_I2C_SDA=10
-D SYS_I2C_SCL=8

;Features Enabled
;-DLITE_VERSION=1 ;limits some features to save space for M5Launcher Compatibility
Expand Down
Loading
Loading