mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-09-14 15:16:40 +00:00
refactor(solo): move solo build configs into their own solo/ folder; one build per board; document all build flags
Solo's `_solo_dual` env for each board lived inside variants/<board>/, mixed in with the shared upstream board configs (repeater, room server, plain companion) that every MeshCore fork carries. Split them out into their own top-level solo/<board>/ folder -- each still `extends` the board base defined in its original variants/<board>/platformio.ini, just no longer interleaved with it file-wise. - platformio.ini: extra_configs picks up solo/*/platformio.ini alongside variants/*/platformio.ini. - build-solo-firmwares.yml: env-discovery grep now scans solo/ instead of variants/ (the release matrix is unchanged -- same 8 envs, same names). - pr-build-check.yml: solo/** added to the trigger paths. - GAT562 30S Mesh Kit: dropped the separate solo_ble env -- solo_dual is a strict superset (BLE still works, plus USB), and every other board only ever had one solo build to begin with. - GAT562 Mesh Watch13: renamed solo_ble -> solo_dual (added DUAL_SERIAL=1) to match. No comment anywhere recorded whether this board's USB data lines are actually broken out to a connector -- DUAL_SERIAL compiles and works over BLE regardless, so worst case the USB half goes unused. - Removed a dead AUTO_SHUTDOWN_MILLIVOLTS from the three solo envs that set it (Heltec V3/V4, T-Echo Lite+KeyShield): that macro is only ever read in the old ui-tiny UITask, never ui-new, which every solo build (these included) uses -- it did nothing on any of them. Left alone everywhere else it's set (non-solo companion envs elsewhere use ui-tiny/ui-orig, or the flag is legitimately read); out of scope here. - Added docs/solo_features/build_flags.md: every optional -D flag a solo build understands (GPIO, CardKB/joystick, Hall-sensor cover lock, buzzer/ vibration, GPS switch, display/battery tuning), verified against the code rather than the existing per-board comments, with what's already baked into every solo build kept separate from what's opt-in. - README: doc index + Building from source section link to the new page; path references to the moved solo files updated to solo/<board>/. All 8 solo_dual envs rebuilt clean after the move; native test suite (40 cases) unaffected. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,7 +26,7 @@ jobs:
|
|||||||
- name: List solo_dual envs
|
- name: List solo_dual envs
|
||||||
id: list-envs
|
id: list-envs
|
||||||
run: |
|
run: |
|
||||||
envs=$(grep -rh '^\[env:' platformio.ini variants/ \
|
envs=$(grep -rh '^\[env:' solo/ \
|
||||||
| sed 's/\[env://;s/\]//' \
|
| sed 's/\[env://;s/\]//' \
|
||||||
| grep '_solo_dual$' \
|
| grep '_solo_dual$' \
|
||||||
| jq -R -s -c 'split("\n") | map(select(length > 0))')
|
| jq -R -s -c 'split("\n") | map(select(length > 0))')
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ on:
|
|||||||
- 'src/**'
|
- 'src/**'
|
||||||
- 'examples/**'
|
- 'examples/**'
|
||||||
- 'variants/**'
|
- 'variants/**'
|
||||||
|
- 'solo/**'
|
||||||
- 'platformio.ini'
|
- 'platformio.ini'
|
||||||
- '.github/workflows/pr-build-check.yml'
|
- '.github/workflows/pr-build-check.yml'
|
||||||
push:
|
push:
|
||||||
@@ -15,6 +16,7 @@ on:
|
|||||||
- 'src/**'
|
- 'src/**'
|
||||||
- 'examples/**'
|
- 'examples/**'
|
||||||
- 'variants/**'
|
- 'variants/**'
|
||||||
|
- 'solo/**'
|
||||||
- 'platformio.ini'
|
- 'platformio.ini'
|
||||||
- '.github/workflows/pr-build-check.yml'
|
- '.github/workflows/pr-build-check.yml'
|
||||||
|
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ Each joystick contact simply shorts its pin to GND — the firmware enables the
|
|||||||
|
|
||||||
Either device is enough on its own — unwired pins read as not-pressed, and a missing CardKB just isn't detected at boot. For **CardKB-only**, wire just SDA/SCL and set Settings › Keyboard › **Ext. KB = Compact**, which needs no joystick at all.
|
Either device is enough on its own — unwired pins read as not-pressed, and a missing CardKB just isn't detected at boot. For **CardKB-only**, wire just SDA/SCL and set Settings › Keyboard › **Ext. KB = Compact**, which needs no joystick at all.
|
||||||
|
|
||||||
These are only defaults, set in the `[env:Heltec_v3_companion_solo_dual]` / `[env:heltec_v4_companion_solo_dual]` blocks in [`variants/heltec_v3/platformio.ini`](./variants/heltec_v3/platformio.ini) and [`variants/heltec_v4/platformio.ini`](./variants/heltec_v4/platformio.ini) — comments there list which GPIOs are already claimed. Full details in [External Keyboard & Joystick](./docs/solo_features/external_keyboard.md).
|
These are only defaults, set in the `[env:Heltec_v3_companion_solo_dual]` / `[env:heltec_v4_companion_solo_dual]` blocks in [`solo/heltec_v3/platformio.ini`](./solo/heltec_v3/platformio.ini) and [`solo/heltec_v4/platformio.ini`](./solo/heltec_v4/platformio.ini) — comments there list which GPIOs are already claimed. Full details in [External Keyboard & Joystick](./docs/solo_features/external_keyboard.md).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -153,6 +153,7 @@ These are only defaults, set in the `[env:Heltec_v3_companion_solo_dual]` / `[en
|
|||||||
| [Screen Lock](./docs/solo_features/screen_lock/screen_lock.md) | Lock/unlock sequence, lock screen, auto-lock |
|
| [Screen Lock](./docs/solo_features/screen_lock/screen_lock.md) | Lock/unlock sequence, lock screen, auto-lock |
|
||||||
| [Tools Screen](./docs/solo_features/tools_screen/tools_screen.md) | GPS trail & waypoints, compass, navigation, nearby nodes, ringtone editor, remote bot, auto-advert, live location sharing, locator, diagnostics, repeater, remote admin |
|
| [Tools Screen](./docs/solo_features/tools_screen/tools_screen.md) | GPS trail & waypoints, compass, navigation, nearby nodes, ringtone editor, remote bot, auto-advert, live location sharing, locator, diagnostics, repeater, remote admin |
|
||||||
| [External Keyboard & Joystick](./docs/solo_features/external_keyboard.md) | CardKB shortcuts, Full vs Compact mode, wired joystick, Heltec V3/V4 wiring |
|
| [External Keyboard & Joystick](./docs/solo_features/external_keyboard.md) | CardKB shortcuts, Full vs Compact mode, wired joystick, Heltec V3/V4 wiring |
|
||||||
|
| [Build Flags](./docs/solo_features/build_flags.md) | Every optional `-D` build flag a solo build understands — GPIO, Hall sensor, buzzer/vibration, GPS switch, display/battery tuning |
|
||||||
| [Solo UI framework](./docs/design/solo_ui_framework.md) | **Developer guide** — the reusable building blocks (screens, lists, popups, mini-icons, geo/persistence helpers) and how to add a new feature |
|
| [Solo UI framework](./docs/design/solo_ui_framework.md) | **Developer guide** — the reusable building blocks (screens, lists, popups, mini-icons, geo/persistence helpers) and how to add a new feature |
|
||||||
| [Feature roadmap](./docs/development/roadmap.md) | **Developer notes** — planned / done / rejected features and the code-audit backlog |
|
| [Feature roadmap](./docs/development/roadmap.md) | **Developer notes** — planned / done / rejected features and the code-audit backlog |
|
||||||
|
|
||||||
@@ -217,6 +218,11 @@ FIRMWARE_VERSION=v1.0.0 bash build.sh build-firmware <env> # release artifacts i
|
|||||||
|
|
||||||
The last command runs the same path CI does: a `.uf2` + DFU `.zip` on nRF52, or an app-only `.bin` plus a `-merged.bin` on ESP32. Releases carry the `.uf2`, the `.zip` and the `-merged.bin` only.
|
The last command runs the same path CI does: a `.uf2` + DFU `.zip` on nRF52, or an app-only `.bin` plus a `-merged.bin` on ESP32. Releases carry the `.uf2`, the `.zip` and the `-merged.bin` only.
|
||||||
|
|
||||||
|
Every environment above builds as-is with no extra hardware required. If you've
|
||||||
|
wired up something extra — CardKB, a joystick, GPIO, a magnetic cover sensor,
|
||||||
|
a buzzer — see [Build Flags](./docs/solo_features/build_flags.md) for the full
|
||||||
|
list of optional `-D` flags to add to your own `solo/<board>/platformio.ini`.
|
||||||
|
|
||||||
### Releasing
|
### Releasing
|
||||||
|
|
||||||
Pushing a `v*` tag runs [Build Solo Firmwares](./.github/workflows/build-solo-firmwares.yml), which discovers every `*_solo_dual` environment automatically, builds them all and opens a **draft** release with the artifacts attached. Write the notes from `release-notes.md` and publish it. See [RELEASE.md](./RELEASE.md) for the upstream companion/repeater/room-server tags.
|
Pushing a `v*` tag runs [Build Solo Firmwares](./.github/workflows/build-solo-firmwares.yml), which discovers every `*_solo_dual` environment automatically, builds them all and opens a **draft** release with the artifacts attached. Write the notes from `release-notes.md` and publish it. See [RELEASE.md](./RELEASE.md) for the upstream companion/repeater/room-server tags.
|
||||||
@@ -228,6 +234,7 @@ Pushing a `v*` tag runs [Build Solo Firmwares](./.github/workflows/build-solo-fi
|
|||||||
| `examples/companion_radio/ui-new/` | the solo UI — screens, widgets, `UITask` |
|
| `examples/companion_radio/ui-new/` | the solo UI — screens, widgets, `UITask` |
|
||||||
| `src/helpers/ui/` | display drivers, fonts, buttons, buzzer |
|
| `src/helpers/ui/` | display drivers, fonts, buttons, buzzer |
|
||||||
| `variants/<board>/` | per-board `platformio.ini`, `target.h`, `target.cpp` |
|
| `variants/<board>/` | per-board `platformio.ini`, `target.h`, `target.cpp` |
|
||||||
|
| `solo/<board>/` | that board's solo (`*_solo_dual`) environment — kept separate from `variants/` so this fork's Solo-specific additions don't mix into configs upstream/other forks also carry |
|
||||||
| `docs/solo_features/` | user documentation for this fork |
|
| `docs/solo_features/` | user documentation for this fork |
|
||||||
| `docs/design/`, `docs/development/` | developer notes and the feature roadmap |
|
| `docs/design/`, `docs/development/` | developer notes and the feature roadmap |
|
||||||
| `tools/` | host-side helpers (screenshot, GPX export, font conversion) |
|
| `tools/` | host-side helpers (screenshot, GPX export, font conversion) |
|
||||||
|
|||||||
@@ -0,0 +1,98 @@
|
|||||||
|
## Build Flags
|
||||||
|
|
||||||
|
[Go back](../../README.md)
|
||||||
|
|
||||||
|
Reference for the `-D` build flags a Solo build understands beyond the
|
||||||
|
per-board defaults already set in `solo/<board>/platformio.ini`. Add any of
|
||||||
|
these to your own board's `build_flags` (in `solo/<board>/platformio.ini`) to
|
||||||
|
enable optional hardware you've wired up yourself, or to tune a default.
|
||||||
|
Everything below is a no-op when left unset — adding a flag for hardware that
|
||||||
|
isn't there costs nothing and can't brick a build; the exceptions (pin
|
||||||
|
conflicts, wrong polarity) are called out per flag.
|
||||||
|
|
||||||
|
None of this needs touching to get a board running — see the
|
||||||
|
[environment table](../../README.md#building-from-source) for the flag-free
|
||||||
|
default build for each supported board.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Already part of every solo build
|
||||||
|
|
||||||
|
Set once per board in `solo/<board>/platformio.ini`, not usually touched
|
||||||
|
per-user. Listed here so the rest of this page can assume them.
|
||||||
|
|
||||||
|
| Flag | Meaning |
|
||||||
|
| --- | --- |
|
||||||
|
| `FIRMWARE_SOLO_BUILD=1` | Marks the build as Solo (full on-device UI) rather than a companion-only firmware. |
|
||||||
|
| `DUAL_SERIAL=1` | The companion app can attach over BLE *or* USB serial, whichever it finds; BLE wins if both are live. Every solo build sets this — Solo standardises on one build per board rather than splitting BLE-only / USB-only variants. |
|
||||||
|
| `MAX_CONTACTS=<n>` | Size of the contact table. Default is 32 if unset; solo builds set 350. |
|
||||||
|
| `MAX_GROUP_CHANNELS=<n>` | Size of the channel list. Required for channel support to compile in at all — not optional the way the rest of this page is. |
|
||||||
|
| `OFFLINE_QUEUE_SIZE=<n>` | How many messages queue for later delivery while the phone app is disconnected. Default 16; solo builds set 256. |
|
||||||
|
| `UI_SENSORS_PAGE=1` | Enables the on-device sensors dashboard page. |
|
||||||
|
| `BLE_PIN_CODE=<n>` | See below — not a plain fixed value in practice. |
|
||||||
|
| `DISPLAY_CLASS=<Class>` | Selects the display driver (e.g. `SSD1306Display`, `GxEPDDisplay`, `ST7789Display` — see `src/helpers/ui/` for the full set). Fixed by whatever panel the board actually has; only relevant if you're wiring on a *different* display than stock, in which case the matching driver's `.cpp` also needs adding to `build_src_filter`. |
|
||||||
|
|
||||||
|
**`BLE_PIN_CODE`** has a special case baked in: if it's left at the literal
|
||||||
|
value `123456` *and* the board has a display, pairing uses a random 6-digit
|
||||||
|
PIN generated fresh each session and shown on-device, rather than a fixed one.
|
||||||
|
Any other numeric value is used as a static PIN instead. Leaving the flag out
|
||||||
|
entirely disables the PIN prompt (BLE pairing is unauthenticated).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Input hardware add-ons
|
||||||
|
|
||||||
|
Each of these assumes you're wiring something up yourself — check pins are
|
||||||
|
actually free on your board first (see the board's `variant.h` and its
|
||||||
|
existing `solo/<board>/platformio.ini` for what's already claimed).
|
||||||
|
|
||||||
|
| Flag | Adds |
|
||||||
|
| --- | --- |
|
||||||
|
| `ENV_PIN_SDA` / `ENV_PIN_SCL` | CardKB (M5Stack I2C keyboard, addr `0x5F`) on a second I2C bus. Probed at boot — harmless with nothing plugged in. See [External Keyboard & Joystick](./external_keyboard.md). |
|
||||||
|
| `UI_HAS_JOYSTICK=1` + `UI_HAS_JOYSTICK_UPDOWN=1` (optional) + `JOYSTICK_UP` / `JOYSTICK_DOWN` / `JOYSTICK_LEFT` / `JOYSTICK_RIGHT` + `PIN_USER_BTN` + `PIN_BACK_BTN` | A wired joystick (four direction contacts + a press contact for Enter). Replaces single-button navigation entirely once enabled. See [External Keyboard & Joystick](./external_keyboard.md). |
|
||||||
|
| `PIN_GPIO1` .. `PIN_GPIO4` | Up to four general-purpose pins, each independently switchable between Off / Input / Output (GPIO1/GPIO2 also get an Analog step, if wired to an ADC-capable pin) from Tools › GPIO, and via the `!gpio1`..`!gpio4` bot commands. Not restricted to any particular board — works anywhere the pins are actually free. See [Tools Screen › GPIO](./tools_screen/tools_screen.md#gpio). |
|
||||||
|
| `PIN_HALL_SENSOR` + `HALL_ACTIVE_HIGH=1` (optional) | A Hall-effect or reed sensor for a magnetic flip cover: closing locks and blanks the screen instantly, opening unlocks and wakes it, no combo either way. `HALL_ACTIVE_HIGH` is only for a module wired to pull the pin high (rather than low) when the magnet is near. See [Screen Lock › Magnetic cover](./screen_lock/screen_lock.md#magnetic-cover-hall-sensor). |
|
||||||
|
| `PIN_GPS_SWITCH` | A physical on/off switch for GPS power, read alongside the software GPS toggle — the Tools screen shows `gps off(hw)` / `gps off(sw)` when the two disagree, instead of silently trusting one over the other. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Output / feedback hardware
|
||||||
|
|
||||||
|
| Flag | Adds |
|
||||||
|
| --- | --- |
|
||||||
|
| `PIN_BUZZER` (+ `PIN_BUZZER_EN`, optional) | A passive piezo buzzer, driven by direct PWM (nRF52) or the `NonBlockingRtttl` library (everything else) for RTTTL ringtones and UI beeps. `PIN_BUZZER_EN` is an optional enable line some boards wire separately from the signal pin. |
|
||||||
|
| `PIN_VIBRATION` | A vibration motor for haptic notification, via `GenericVibration`. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### GPS
|
||||||
|
|
||||||
|
| Flag | Meaning |
|
||||||
|
| --- | --- |
|
||||||
|
| `ENV_INCLUDE_GPS=1` | Compiles in GPS support (NMEA parsing, location provider) at all. |
|
||||||
|
| `GPS_BAUD_RATE=<n>` | Baud rate for the GPS module's serial link (`Serial1`). Match your module's default. |
|
||||||
|
|
||||||
|
`PIN_GPS_SWITCH` (above) is independent of both — it's a hardware kill switch
|
||||||
|
layered on top of GPS support, not a requirement for it.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Display & battery tuning
|
||||||
|
|
||||||
|
| Flag | Meaning |
|
||||||
|
| --- | --- |
|
||||||
|
| `OLED_MISC_FIXED_FONT=1` | Pulls in a full Latin/Greek/Cyrillic 6×9 fixed font (~14 KB flash) so typed text in those alphabets renders as itself instead of block placeholders. Worth it on any board with a keyboard; skip it on space-constrained builds without one. |
|
||||||
|
| `DISPLAY_ROTATION=<0-3>` | Rotates the panel in 90° steps, for a board mounted sideways or upside down. |
|
||||||
|
| `ENABLE_SCREENSHOT` | Lets Solo Tools read the framebuffer over USB to capture a screenshot. |
|
||||||
|
| `KEEP_DISPLAY_ON_USB` | Refreshes the auto-off deadline continuously while externally (USB) powered, so the auto-off timer only starts counting once power is actually removed. Off by default because OLED panels burn in quickly with a permanently-lit screen — only worth enabling for an LCD/e-ink target, or a display you don't mind replacing. |
|
||||||
|
| `AUTO_OFF_MILLIS=<ms>` | How long the display stays on before auto-off. Default 15000 (15s); `0` disables auto-off entirely. |
|
||||||
|
| `UI_RECENT_LIST_SIZE=<n>` | How many entries the recent-activity lists show before scrolling. Default 4. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Misc
|
||||||
|
|
||||||
|
| Flag | Meaning |
|
||||||
|
| --- | --- |
|
||||||
|
| `ADVERT_NAME='"name"'` | Sets the default node name baked into a fresh device, instead of the hex of the first 4 bytes of its public key. Note the doubled quoting — it's a C string literal passed through a build flag. |
|
||||||
|
| `MESHCORE_VERSION='"x.y"'` | Overrides the upstream MeshCore base-version string shown in diagnostics, for boards whose port hasn't been rebased onto the latest yet. Cosmetic only — doesn't change protocol behaviour. |
|
||||||
@@ -115,8 +115,8 @@ hardware**; still worth checking against your own V3 module before soldering.
|
|||||||
|
|
||||||
Everything above lives in the `[env:Heltec_v3_companion_solo_dual]` /
|
Everything above lives in the `[env:Heltec_v3_companion_solo_dual]` /
|
||||||
`[env:heltec_v4_companion_solo_dual]` blocks in
|
`[env:heltec_v4_companion_solo_dual]` blocks in
|
||||||
[`variants/heltec_v3/platformio.ini`](../../variants/heltec_v3/platformio.ini)
|
[`solo/heltec_v3/platformio.ini`](../../solo/heltec_v3/platformio.ini)
|
||||||
and [`variants/heltec_v4/platformio.ini`](../../variants/heltec_v4/platformio.ini),
|
and [`solo/heltec_v4/platformio.ini`](../../solo/heltec_v4/platformio.ini),
|
||||||
with comments explaining which pins are safe to reuse. To build a CardKB-only
|
with comments explaining which pins are safe to reuse. To build a CardKB-only
|
||||||
device, comment out the joystick block and set Ext. KB to Compact.
|
device, comment out the joystick block and set Ext. KB to Compact.
|
||||||
|
|
||||||
@@ -134,4 +134,5 @@ independent of the CardKB code — a board can have either, or neither.
|
|||||||
|
|
||||||
Neither keypad follows CardKB's exact Fn-shortcut table (Fn+Enter,
|
Neither keypad follows CardKB's exact Fn-shortcut table (Fn+Enter,
|
||||||
Fn+letter accent popups, Tab, Fn+Esc lock) — see each board's own
|
Fn+letter accent popups, Tab, Fn+Esc lock) — see each board's own
|
||||||
`platformio.ini` / keyboard driver under `variants/` for its current keymap.
|
keyboard driver under `variants/` and its solo `platformio.ini` under `solo/`
|
||||||
|
for its current keymap.
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
[platformio]
|
[platformio]
|
||||||
extra_configs =
|
extra_configs =
|
||||||
variants/*/platformio.ini
|
variants/*/platformio.ini
|
||||||
|
solo/*/platformio.ini
|
||||||
platformio.local.ini
|
platformio.local.ini
|
||||||
|
|
||||||
[arduino_base]
|
[arduino_base]
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
; Solo build for GAT562 30S Mesh Kit -- extends the board base defined in
|
||||||
|
; variants/gat562_30s_mesh_kit/platformio.ini. Solo configs live in their own
|
||||||
|
; top-level solo/ folder, separate from the shared upstream board variants in
|
||||||
|
; variants/, so this repo's Solo-specific additions don't get mixed in with
|
||||||
|
; configs other MeshCore forks/upstream also carry.
|
||||||
|
;
|
||||||
|
; Dual (BLE+USB) only -- the previous BLE-only solo_ble env was dropped since
|
||||||
|
; dual is a strict superset (BLE still works, plus USB) and Solo standardises
|
||||||
|
; on one build per board.
|
||||||
|
[env:GAT562_30S_Mesh_Kit_solo_dual]
|
||||||
|
extends = GAT562_30S_Mesh_Kit
|
||||||
|
board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld
|
||||||
|
board_upload.maximum_size = 712704
|
||||||
|
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
|
||||||
|
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
|
||||||
|
; solo build. -Os keeps every feature, fits comfortably, and is actually safer
|
||||||
|
; for float (no fast-math reassociation). Speed is irrelevant for the UI/mesh.
|
||||||
|
build_unflags = -Ofast
|
||||||
|
build_flags =
|
||||||
|
${GAT562_30S_Mesh_Kit.build_flags}
|
||||||
|
-I examples/companion_radio/ui-new
|
||||||
|
-D DISPLAY_CLASS=SSD1306Display
|
||||||
|
-D MAX_CONTACTS=350
|
||||||
|
-D MAX_GROUP_CHANNELS=40
|
||||||
|
-D BLE_PIN_CODE=123456
|
||||||
|
-D OFFLINE_QUEUE_SIZE=256
|
||||||
|
-D FIRMWARE_SOLO_BUILD=1
|
||||||
|
-D MESHCORE_VERSION='"1.17"'
|
||||||
|
-D UI_SENSORS_PAGE=1
|
||||||
|
-D UI_HAS_JOYSTICK_UPDOWN=1
|
||||||
|
-D ADVERT_NAME='"@@MAC"'
|
||||||
|
-D ENV_INCLUDE_GPS=1
|
||||||
|
; misc-fixed 6x9 OLED font (full Latin/Greek/Cyrillic), same as the Wio L1
|
||||||
|
; builds. Solo only: it costs ~14 KB of flash and the repeater/companion
|
||||||
|
; builds have no keyboard to type those alphabets on.
|
||||||
|
-D OLED_MISC_FIXED_FONT=1
|
||||||
|
-D DUAL_SERIAL=1
|
||||||
|
-D ENABLE_SCREENSHOT
|
||||||
|
-Os
|
||||||
|
; QSPIFLASH disabled: QSPI IO0/IO2 pins (P0.30/P0.28) conflict with joystick LEFT/UP
|
||||||
|
; -D MESH_PACKET_LOGGING=1
|
||||||
|
; -D MESH_DEBUG=1
|
||||||
|
build_src_filter = ${GAT562_30S_Mesh_Kit.build_src_filter}
|
||||||
|
+<helpers/nrf52/SerialBLEInterface.cpp>
|
||||||
|
+<helpers/ui/buzzer.cpp>
|
||||||
|
+<../examples/companion_radio/*.cpp>
|
||||||
|
+<../examples/companion_radio/ui-new/*.cpp>
|
||||||
|
lib_deps =
|
||||||
|
${GAT562_30S_Mesh_Kit.lib_deps}
|
||||||
|
adafruit/RTClib @ ^2.1.3
|
||||||
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
end2endzone/NonBlockingRTTTL@^1.3.0
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
; Solo build for GAT562 Mesh Watch13 -- extends the board base defined in
|
||||||
|
; variants/gat562_mesh_watch13/platformio.ini. Solo configs live in their own
|
||||||
|
; top-level solo/ folder, separate from the shared upstream board variants in
|
||||||
|
; variants/, so this repo's Solo-specific additions don't get mixed in with
|
||||||
|
; configs other MeshCore forks/upstream also carry.
|
||||||
|
;
|
||||||
|
; Renamed from the previous BLE-only solo_ble to solo_dual (DUAL_SERIAL added
|
||||||
|
; below) to match every other board's single solo build. This board has no
|
||||||
|
; comment anywhere recording whether its USB data lines are actually broken
|
||||||
|
; out to a connector (only charging pins might be) -- DUAL_SERIAL compiles
|
||||||
|
; and works over BLE regardless, so worst case the USB half just goes unused.
|
||||||
|
[env:GAT562_Mesh_Watch13_solo_dual]
|
||||||
|
extends = GAT562_Mesh_Watch13
|
||||||
|
board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld
|
||||||
|
board_upload.maximum_size = 712704
|
||||||
|
build_flags =
|
||||||
|
${GAT562_Mesh_Watch13.build_flags}
|
||||||
|
-I examples/companion_radio/ui-new
|
||||||
|
-D DISPLAY_CLASS=SSD1306Display
|
||||||
|
-D MAX_CONTACTS=350
|
||||||
|
-D MAX_GROUP_CHANNELS=40
|
||||||
|
-D BLE_PIN_CODE=123456
|
||||||
|
-D OFFLINE_QUEUE_SIZE=256
|
||||||
|
-D DUAL_SERIAL=1
|
||||||
|
-D FIRMWARE_SOLO_BUILD=1
|
||||||
|
-D MESHCORE_VERSION='"1.17"'
|
||||||
|
-D UI_SENSORS_PAGE=1
|
||||||
|
-D ADVERT_NAME='"@@MAC"'
|
||||||
|
; GPS — re-enable (base undefines it); Serial1 pins 15/16 from variant
|
||||||
|
-D ENV_INCLUDE_GPS=1
|
||||||
|
-D GPS_BAUD_RATE=9600
|
||||||
|
; Buzzer available on IO3 (pin 21) — uncomment to enable
|
||||||
|
; -D PIN_BUZZER=21
|
||||||
|
; -D PIN_VIBRATION=36
|
||||||
|
; -D MESH_PACKET_LOGGING=1
|
||||||
|
; -D MESH_DEBUG=1
|
||||||
|
build_src_filter = ${GAT562_Mesh_Watch13.build_src_filter}
|
||||||
|
+<helpers/nrf52/SerialBLEInterface.cpp>
|
||||||
|
+<helpers/ui/MomentaryButton.cpp>
|
||||||
|
+<helpers/ui/GenericVibration.cpp>
|
||||||
|
+<../examples/companion_radio/*.cpp>
|
||||||
|
+<../examples/companion_radio/ui-new/*.cpp>
|
||||||
|
; If PIN_BUZZER is enabled above, also add:
|
||||||
|
; +<helpers/ui/buzzer.cpp>
|
||||||
|
lib_deps =
|
||||||
|
${GAT562_Mesh_Watch13.lib_deps}
|
||||||
|
adafruit/RTClib @ ^2.1.3
|
||||||
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
; If PIN_BUZZER is enabled, also add:
|
||||||
|
; end2endzone/NonBlockingRTTTL@^1.3.0
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
; Solo build for Heltec LoRa32 V3 -- extends the board base defined in
|
||||||
|
; variants/heltec_v3/platformio.ini. Solo configs live in their own top-level
|
||||||
|
; solo/ folder, separate from the shared upstream board variants in variants/,
|
||||||
|
; so this repo's Solo-specific additions don't get mixed in with configs
|
||||||
|
; other MeshCore forks/upstream also carry.
|
||||||
|
;
|
||||||
|
; Solo build: the full standalone on-device UI (message history, contacts, map,
|
||||||
|
; tools) rather than a screen that only mirrors the phone app. Dual transport --
|
||||||
|
; the companion app can attach over BLE or USB serial, whichever it finds, and
|
||||||
|
; BLE wins while both are live.
|
||||||
|
;
|
||||||
|
; This firmware needs a real input device: the solo UI cannot be driven from the
|
||||||
|
; PRG button alone. Both supported ones are wired up in target.cpp and enabled
|
||||||
|
; below, so either is enough on its own and having both is fine. The pins are
|
||||||
|
; defaults picked from what this board leaves free -- change them to match how
|
||||||
|
; the device is actually built. Pins with nothing attached read as not-pressed,
|
||||||
|
; so the unused half costs nothing.
|
||||||
|
;
|
||||||
|
; * CardKB (M5Stack I2C keyboard, addr 0x5F) on a second I2C bus. Any two free
|
||||||
|
; GPIOs -- NOT 17/18, the OLED already owns those on Wire. It's probed at
|
||||||
|
; boot, so a build with these set still runs fine with nothing plugged in.
|
||||||
|
; Pair it with Settings > Keyboard > Ext. KB = Compact, which is designed to
|
||||||
|
; need no joystick at all. The same bus is scanned for environment sensors.
|
||||||
|
;
|
||||||
|
; * Wired joystick: four direction pins plus a fifth "press" contact. The
|
||||||
|
; press contact drives Enter (your thumb's already on the stick) via
|
||||||
|
; PIN_USER_BTN -- overridden below (a later -D wins, no -U needed: this whole
|
||||||
|
; project builds with -w) from the PRG-button default
|
||||||
|
; the base env sets, since PRG's GPIO0 can't be moved to the stick. PRG
|
||||||
|
; becomes Back instead (PIN_BACK_BTN), so it no longer needs its own
|
||||||
|
; separately-wired button. Each contact just shorts its pin to GND;
|
||||||
|
; target.cpp enables the internal pull-ups. Drop
|
||||||
|
; UI_HAS_JOYSTICK_UPDOWN for a left/right-only stick. JOYSTICK_ROTATION (0-3)
|
||||||
|
; rotates the mapping if the stick is mounted sideways -- it's also a runtime
|
||||||
|
; setting, so leave it out unless you want a different default.
|
||||||
|
; Comment the whole block out for a CardKB-only build. UI_HAS_JOYSTICK
|
||||||
|
; replaces the single-button handling rather than adding to it (UITask.cpp
|
||||||
|
; dispatches on '#if UI_HAS_JOYSTICK ... #elif defined(PIN_USER_BTN)'), which
|
||||||
|
; costs nothing here -- that fallback only feeds KEY_NEXT/KEY_PREV, which the
|
||||||
|
; solo screens don't act on.
|
||||||
|
;
|
||||||
|
; V3 and V4 are pin-compatible per Heltec's own docs, so the defaults below are
|
||||||
|
; carried over from the heltec_v4_companion_solo_dual env, where this exact
|
||||||
|
; CardKB + joystick combination is confirmed working on real hardware -- still
|
||||||
|
; worth checking against your own V3 module before soldering, but not a blind
|
||||||
|
; guess like the earlier SDA 41/SCL 42 default was. PIN_GPS_RX=47/TX=48/EN=26
|
||||||
|
; above are dead defines on V3 (ENV_INCLUDE_GPS is never set to 1 in this file),
|
||||||
|
; so they don't conflict with reusing 47/48 here despite the name.
|
||||||
|
[env:Heltec_v3_companion_solo_dual]
|
||||||
|
extends = Heltec_lora32_v3
|
||||||
|
build_flags =
|
||||||
|
${Heltec_lora32_v3.build_flags}
|
||||||
|
-I examples/companion_radio/ui-new
|
||||||
|
-D MAX_CONTACTS=350
|
||||||
|
-D MAX_GROUP_CHANNELS=40
|
||||||
|
-D DISPLAY_CLASS=SSD1306Display
|
||||||
|
-D BLE_PIN_CODE=123456 ; dynamic, random PIN
|
||||||
|
-D DUAL_SERIAL=1 ; companion app over BLE *or* USB serial
|
||||||
|
-D OFFLINE_QUEUE_SIZE=256
|
||||||
|
-D FIRMWARE_SOLO_BUILD=1
|
||||||
|
-D UI_SENSORS_PAGE=1
|
||||||
|
-D OLED_MISC_FIXED_FONT=1 ; full Latin/Greek/Cyrillic 6x9 font, ~14 KB flash
|
||||||
|
-D ENABLE_SCREENSHOT ; same as the other solo builds — Solo Tools reads the framebuffer over USB
|
||||||
|
; CardKB on the second I2C bus. Harmless with nothing plugged in.
|
||||||
|
-D ENV_PIN_SDA=3
|
||||||
|
-D ENV_PIN_SCL=4
|
||||||
|
; Wired joystick — comment the block out for a CardKB-only build. The
|
||||||
|
; press contact (Enter) overrides PIN_USER_BTN from its PRG default;
|
||||||
|
; PRG becomes Back (PIN_BACK_BTN) instead.
|
||||||
|
-D UI_HAS_JOYSTICK=1
|
||||||
|
-D UI_HAS_JOYSTICK_UPDOWN=1
|
||||||
|
-D JOYSTICK_UP=23
|
||||||
|
-D JOYSTICK_DOWN=6
|
||||||
|
-D JOYSTICK_LEFT=47
|
||||||
|
-D JOYSTICK_RIGHT=48
|
||||||
|
-D PIN_BACK_BTN=0 ; PRG button
|
||||||
|
-D PIN_USER_BTN=33 ; joystick press contact -- Enter, overrides the PRG default above
|
||||||
|
; -D PIN_BUZZER=<gpio>
|
||||||
|
build_src_filter = ${Heltec_lora32_v3.build_src_filter}
|
||||||
|
+<helpers/ui/SSD1306Display.cpp>
|
||||||
|
+<helpers/ui/MomentaryButton.cpp>
|
||||||
|
+<helpers/ui/buzzer.cpp>
|
||||||
|
+<helpers/esp32/*.cpp>
|
||||||
|
+<../examples/companion_radio/*.cpp>
|
||||||
|
+<../examples/companion_radio/ui-new/*.cpp>
|
||||||
|
lib_deps =
|
||||||
|
${Heltec_lora32_v3.lib_deps}
|
||||||
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
end2endzone/NonBlockingRTTTL@^1.3.0
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
; Solo build for Heltec LoRa32 V4 -- extends the board base defined in
|
||||||
|
; variants/heltec_v4/platformio.ini. Solo configs live in their own top-level
|
||||||
|
; solo/ folder, separate from the shared upstream board variants in variants/,
|
||||||
|
; so this repo's Solo-specific additions don't get mixed in with configs
|
||||||
|
; other MeshCore forks/upstream also carry.
|
||||||
|
;
|
||||||
|
; Solo build: the full standalone on-device UI (message history, contacts, map,
|
||||||
|
; tools) rather than a screen that only mirrors the phone app. Dual transport --
|
||||||
|
; the companion app can attach over BLE or USB serial, whichever it finds, and
|
||||||
|
; BLE wins while both are live. OLED board only -- the TFT variant would need
|
||||||
|
; its own DISPLAY_CLASS.
|
||||||
|
;
|
||||||
|
; This firmware needs a real input device: the solo UI cannot be driven from the
|
||||||
|
; PRG button alone. Both supported ones are wired up in target.cpp and enabled
|
||||||
|
; below, so either is enough on its own and having both is fine. The pins are
|
||||||
|
; defaults picked from what this board leaves free -- change them to match how
|
||||||
|
; the device is actually built. Pins with nothing attached read as not-pressed,
|
||||||
|
; so the unused half costs nothing.
|
||||||
|
;
|
||||||
|
; * CardKB (M5Stack I2C keyboard, addr 0x5F) on a second I2C bus. Any two free
|
||||||
|
; GPIOs -- NOT 17/18, the OLED already owns those on Wire. It's probed at
|
||||||
|
; boot, so a build with these set still runs fine with nothing plugged in.
|
||||||
|
; Pair it with Settings > Keyboard > Ext. KB = Compact, which is designed to
|
||||||
|
; need no joystick at all. The same bus is scanned for environment sensors.
|
||||||
|
; Defaults below: SDA 3, SCL 4 -- the pins heltec_v4_sensor and
|
||||||
|
; heltec_v4_expansionkit_repeater already use for their second I2C bus, i.e.
|
||||||
|
; the expansion kit's. (Those envs disagree on the order: two say SDA 3 /
|
||||||
|
; SCL 4, one says the reverse. 3/4 is the pair either way; swap them if the
|
||||||
|
; keyboard doesn't answer.)
|
||||||
|
;
|
||||||
|
; * Wired joystick: four direction pins plus a fifth "press" contact. The
|
||||||
|
; press contact drives Enter (your thumb's already on the stick) via
|
||||||
|
; PIN_USER_BTN -- overridden below (a later -D wins, no -U needed: this whole
|
||||||
|
; project builds with -w) from the PRG-button default
|
||||||
|
; the base env sets, since PRG's GPIO0 can't be moved to the stick. PRG
|
||||||
|
; becomes Back instead (PIN_BACK_BTN), so it no longer needs its own
|
||||||
|
; separately-wired button. Each contact just shorts its pin to GND;
|
||||||
|
; target.cpp enables the internal pull-ups. Drop
|
||||||
|
; UI_HAS_JOYSTICK_UPDOWN for a left/right-only stick. JOYSTICK_ROTATION (0-3)
|
||||||
|
; rotates the mapping if the stick is mounted sideways -- it's also a runtime
|
||||||
|
; setting, so leave it out unless you want a different default.
|
||||||
|
; Comment the whole block out for a CardKB-only build. UI_HAS_JOYSTICK
|
||||||
|
; replaces the single-button handling rather than adding to it (UITask.cpp
|
||||||
|
; dispatches on '#if UI_HAS_JOYSTICK ... #elif defined(PIN_USER_BTN)'), which
|
||||||
|
; costs nothing here -- that fallback only feeds KEY_NEXT/KEY_PREV, which the
|
||||||
|
; solo screens don't act on.
|
||||||
|
;
|
||||||
|
; Free on this board, per its pinout: 3, 4, 6, 23, 33, 43, 44, 45, 46, 47, 48.
|
||||||
|
; Two of those can't take an I2C pull-up: 45 selects VDD_SPI at boot, so held
|
||||||
|
; high the chip comes up expecting 1.8V flash and won't boot at all, and 46 is
|
||||||
|
; the boot-mode strap. 3 is a strapping pin too, but it only picks the JTAG
|
||||||
|
; source -- and it's what this board's own expansion kit uses for I2C anyway.
|
||||||
|
; 43/44 are UART0: unused by this build, since ARDUINO_USB_CDC_ON_BOOT (set in
|
||||||
|
; boards/heltec_v4.json) makes Serial the native USB port, but a USB-UART bridge
|
||||||
|
; may still be wired to them, so they're left alone.
|
||||||
|
[env:heltec_v4_companion_solo_dual]
|
||||||
|
extends = heltec_v4_oled
|
||||||
|
build_flags =
|
||||||
|
${heltec_v4_oled.build_flags}
|
||||||
|
-I examples/companion_radio/ui-new
|
||||||
|
-D MAX_CONTACTS=350
|
||||||
|
-D MAX_GROUP_CHANNELS=40
|
||||||
|
-D DISPLAY_CLASS=SSD1306Display
|
||||||
|
-D BLE_PIN_CODE=123456 ; dynamic, random PIN
|
||||||
|
-D DUAL_SERIAL=1 ; companion app over BLE *or* USB serial
|
||||||
|
-D OFFLINE_QUEUE_SIZE=256
|
||||||
|
-D FIRMWARE_SOLO_BUILD=1
|
||||||
|
-D UI_SENSORS_PAGE=1
|
||||||
|
-D OLED_MISC_FIXED_FONT=1 ; full Latin/Greek/Cyrillic 6x9 font, ~14 KB flash
|
||||||
|
-D ENABLE_SCREENSHOT ; same as the other solo builds — Solo Tools reads the framebuffer over USB
|
||||||
|
; CardKB on the second I2C bus. Harmless with nothing plugged in.
|
||||||
|
-D ENV_PIN_SDA=3
|
||||||
|
-D ENV_PIN_SCL=4
|
||||||
|
; Wired joystick — comment the block out for a CardKB-only build. The
|
||||||
|
; press contact (Enter) overrides PIN_USER_BTN from its PRG default;
|
||||||
|
; PRG becomes Back (PIN_BACK_BTN) instead.
|
||||||
|
-D UI_HAS_JOYSTICK=1
|
||||||
|
-D UI_HAS_JOYSTICK_UPDOWN=1
|
||||||
|
-D JOYSTICK_UP=23
|
||||||
|
-D JOYSTICK_DOWN=6
|
||||||
|
-D JOYSTICK_LEFT=47
|
||||||
|
-D JOYSTICK_RIGHT=48
|
||||||
|
-D PIN_BACK_BTN=0 ; PRG button
|
||||||
|
-D PIN_USER_BTN=33 ; joystick press contact -- Enter, overrides the PRG default above
|
||||||
|
; -D PIN_BUZZER=<gpio>
|
||||||
|
build_src_filter = ${heltec_v4_oled.build_src_filter}
|
||||||
|
+<helpers/ui/SSD1306Display.cpp>
|
||||||
|
+<helpers/ui/MomentaryButton.cpp>
|
||||||
|
+<helpers/ui/buzzer.cpp>
|
||||||
|
+<helpers/esp32/*.cpp>
|
||||||
|
+<../examples/companion_radio/*.cpp>
|
||||||
|
+<../examples/companion_radio/ui-new/*.cpp>
|
||||||
|
lib_deps =
|
||||||
|
${heltec_v4_oled.lib_deps}
|
||||||
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
end2endzone/NonBlockingRTTTL@^1.3.0
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
; Solo build for LilyGO T-Echo Lite + KeyShield -- extends the board base
|
||||||
|
; defined in variants/lilygo_techo_lite/platformio.ini. Solo configs live in
|
||||||
|
; their own top-level solo/ folder, separate from the shared upstream board
|
||||||
|
; variants in variants/, so this repo's Solo-specific additions don't get
|
||||||
|
; mixed in with configs other MeshCore forks/upstream also carry.
|
||||||
|
;
|
||||||
|
[env:LilyGo_T-Echo-Lite_keyshield_companion_solo_dual]
|
||||||
|
extends = LilyGo_T-Echo-Lite
|
||||||
|
board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld
|
||||||
|
board_upload.maximum_size = 712704
|
||||||
|
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
|
||||||
|
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
|
||||||
|
; solo build. -Os keeps every feature, fits comfortably, and is actually safer
|
||||||
|
; for float (no fast-math reassociation). Speed is irrelevant for the UI/mesh.
|
||||||
|
build_unflags = -Ofast
|
||||||
|
build_flags =
|
||||||
|
${LilyGo_T-Echo-Lite.build_flags}
|
||||||
|
-I src/helpers/ui
|
||||||
|
-I examples/companion_radio/ui-new
|
||||||
|
-D LILYGO_TECHO_LITE_KEYSHIELD
|
||||||
|
-D MAX_CONTACTS=350
|
||||||
|
-D MAX_GROUP_CHANNELS=40
|
||||||
|
; -D QSPIFLASH=1
|
||||||
|
-D BLE_PIN_CODE=123456
|
||||||
|
; -D BLE_DEBUG_LOGGING=1
|
||||||
|
-D OFFLINE_QUEUE_SIZE=256
|
||||||
|
-D UI_RECENT_LIST_SIZE=9
|
||||||
|
-D UI_SENSORS_PAGE=1
|
||||||
|
; -D MESH_PACKET_LOGGING=1
|
||||||
|
; -D MESH_DEBUG=1
|
||||||
|
-D ENV_USE_TCA8418=1
|
||||||
|
-D FIRMWARE_SOLO_BUILD=1
|
||||||
|
-D MESHCORE_VERSION='"1.17"'
|
||||||
|
-D ENABLE_SCREENSHOT
|
||||||
|
-Os
|
||||||
|
build_src_filter = ${LilyGo_T-Echo-Lite.build_src_filter}
|
||||||
|
+<helpers/nrf52/SerialBLEInterface.cpp>
|
||||||
|
+<../examples/companion_radio/*.cpp>
|
||||||
|
+<../examples/companion_radio/ui-new/*.cpp>
|
||||||
|
lib_deps =
|
||||||
|
${LilyGo_T-Echo-Lite.lib_deps}
|
||||||
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
;https://github.com/lewisxhe/SensorLib.git
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
; Solo build for M5Stack Cardputer ADV -- extends the board base defined in
|
||||||
|
; variants/m5stack_cardputer_adv/platformio.ini. Solo configs live in their own
|
||||||
|
; top-level solo/ folder, separate from the shared upstream board variants in
|
||||||
|
; variants/, so this repo's Solo-specific additions don't get mixed in with
|
||||||
|
; configs other MeshCore forks/upstream also carry.
|
||||||
|
;
|
||||||
|
[env:M5Stack_Cardputer_ADV_companion_solo_dual]
|
||||||
|
extends = M5Stack_Cardputer_ADV
|
||||||
|
build_flags =
|
||||||
|
${M5Stack_Cardputer_ADV.build_flags}
|
||||||
|
-I examples/companion_radio/ui-new
|
||||||
|
-D MAX_CONTACTS=350
|
||||||
|
-D MAX_GROUP_CHANNELS=40
|
||||||
|
-D BLE_PIN_CODE=123456
|
||||||
|
-D DUAL_SERIAL=1
|
||||||
|
-D OFFLINE_QUEUE_SIZE=256
|
||||||
|
-D FIRMWARE_SOLO_BUILD=1
|
||||||
|
-D MESHCORE_VERSION='"1.17"'
|
||||||
|
-D UI_SENSORS_PAGE=1
|
||||||
|
; misc-fixed 6x9 font (full Latin/Greek/Cyrillic), same as the Wio L1/Heltec
|
||||||
|
; solo builds. Solo only: it costs ~14 KB of flash, and this board's own
|
||||||
|
; QWERTY keyboard is exactly the case that benefits from typing those
|
||||||
|
; alphabets and having them render as themselves instead of blocks.
|
||||||
|
-D OLED_MISC_FIXED_FONT=1
|
||||||
|
; -D MESH_PACKET_LOGGING=1
|
||||||
|
; -D MESH_DEBUG=1
|
||||||
|
build_src_filter = ${M5Stack_Cardputer_ADV.build_src_filter}
|
||||||
|
+<helpers/esp32/*.cpp>
|
||||||
|
+<helpers/ui/MomentaryButton.cpp>
|
||||||
|
+<../examples/companion_radio/*.cpp>
|
||||||
|
+<../examples/companion_radio/ui-new/*.cpp>
|
||||||
|
lib_deps =
|
||||||
|
${M5Stack_Cardputer_ADV.lib_deps}
|
||||||
|
densaugeo/base64 @ ~1.4.0
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
; Solo build for Seeed Wio Tracker L1 (E-ink) -- extends WioTrackerL1Eink,
|
||||||
|
; defined in variants/wio-tracker-l1-eink/platformio.ini. Solo configs live in
|
||||||
|
; their own top-level solo/ folder, separate from the shared upstream board
|
||||||
|
; variants in variants/, so this repo's Solo-specific additions don't get
|
||||||
|
; mixed in with configs other MeshCore forks/upstream also carry.
|
||||||
|
;
|
||||||
|
; Dual BLE+USB with added Solo
|
||||||
|
[env:WioTrackerL1Eink_companion_solo_dual]
|
||||||
|
extends = WioTrackerL1Eink
|
||||||
|
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
|
||||||
|
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
|
||||||
|
; solo build. -Os keeps every feature, fits comfortably, and is actually safer
|
||||||
|
; for float (no fast-math reassociation). Speed is irrelevant for the UI/mesh.
|
||||||
|
build_unflags = -Ofast
|
||||||
|
build_flags = ${WioTrackerL1Eink.build_flags}
|
||||||
|
-D DUAL_SERIAL=1
|
||||||
|
-D ENABLE_SCREENSHOT
|
||||||
|
-Os
|
||||||
|
extra_scripts = post:create-uf2.py
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
; Solo build for Seeed Wio Tracker L1 (OLED) -- extends WioTrackerL1CompanionDual,
|
||||||
|
; defined in variants/wio-tracker-l1/platformio.ini. Solo configs live in their
|
||||||
|
; own top-level solo/ folder, separate from the shared upstream board variants
|
||||||
|
; in variants/, so this repo's Solo-specific additions don't get mixed in with
|
||||||
|
; configs other MeshCore forks/upstream also carry.
|
||||||
|
;
|
||||||
|
[env:WioTrackerL1_companion_solo_dual]
|
||||||
|
extends = WioTrackerL1CompanionDual
|
||||||
|
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
|
||||||
|
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
|
||||||
|
; solo build. -Os keeps every feature, fits comfortably, and is actually safer
|
||||||
|
; for float (no fast-math reassociation). Speed is irrelevant for the UI/mesh.
|
||||||
|
build_unflags = -Ofast
|
||||||
|
build_flags = ${WioTrackerL1CompanionDual.build_flags}
|
||||||
|
-D UI_HAS_JOYSTICK_UPDOWN=1
|
||||||
|
-D ENABLE_SCREENSHOT
|
||||||
|
-D DUAL_SERIAL=1
|
||||||
|
-Os
|
||||||
|
extra_scripts = post:create-uf2.py
|
||||||
@@ -113,91 +113,6 @@ lib_deps =
|
|||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
end2endzone/NonBlockingRTTTL@^1.3.0
|
end2endzone/NonBlockingRTTTL@^1.3.0
|
||||||
|
|
||||||
[env:GAT562_30S_Mesh_Kit_solo_ble]
|
|
||||||
extends = GAT562_30S_Mesh_Kit
|
|
||||||
board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld
|
|
||||||
board_upload.maximum_size = 712704
|
|
||||||
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
|
|
||||||
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
|
|
||||||
; solo build. -Os keeps every feature, fits comfortably, and is actually safer
|
|
||||||
; for float (no fast-math reassociation). Speed is irrelevant for the UI/mesh.
|
|
||||||
build_unflags = -Ofast
|
|
||||||
build_flags =
|
|
||||||
${GAT562_30S_Mesh_Kit.build_flags}
|
|
||||||
-I examples/companion_radio/ui-new
|
|
||||||
-D DISPLAY_CLASS=SSD1306Display
|
|
||||||
-D MAX_CONTACTS=350
|
|
||||||
-D MAX_GROUP_CHANNELS=40
|
|
||||||
-D BLE_PIN_CODE=123456
|
|
||||||
-D OFFLINE_QUEUE_SIZE=256
|
|
||||||
-D FIRMWARE_SOLO_BUILD=1
|
|
||||||
-D MESHCORE_VERSION='"1.17"'
|
|
||||||
-D UI_SENSORS_PAGE=1
|
|
||||||
-D UI_HAS_JOYSTICK_UPDOWN=1
|
|
||||||
-D ADVERT_NAME='"@@MAC"'
|
|
||||||
-D ENV_INCLUDE_GPS=1
|
|
||||||
; misc-fixed 6x9 OLED font (full Latin/Greek/Cyrillic), same as the Wio L1
|
|
||||||
; builds. Solo only: it costs ~14 KB of flash and the repeater/companion
|
|
||||||
; builds have no keyboard to type those alphabets on.
|
|
||||||
-D OLED_MISC_FIXED_FONT=1
|
|
||||||
-Os
|
|
||||||
; QSPIFLASH disabled: QSPI IO0/IO2 pins (P0.30/P0.28) conflict with joystick LEFT/UP
|
|
||||||
; -D MESH_PACKET_LOGGING=1
|
|
||||||
; -D MESH_DEBUG=1
|
|
||||||
build_src_filter = ${GAT562_30S_Mesh_Kit.build_src_filter}
|
|
||||||
+<helpers/nrf52/SerialBLEInterface.cpp>
|
|
||||||
+<helpers/ui/buzzer.cpp>
|
|
||||||
+<../examples/companion_radio/*.cpp>
|
|
||||||
+<../examples/companion_radio/ui-new/*.cpp>
|
|
||||||
lib_deps =
|
|
||||||
${GAT562_30S_Mesh_Kit.lib_deps}
|
|
||||||
adafruit/RTClib @ ^2.1.3
|
|
||||||
densaugeo/base64 @ ~1.4.0
|
|
||||||
end2endzone/NonBlockingRTTTL@^1.3.0
|
|
||||||
|
|
||||||
[env:GAT562_30S_Mesh_Kit_solo_dual]
|
|
||||||
extends = GAT562_30S_Mesh_Kit
|
|
||||||
board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld
|
|
||||||
board_upload.maximum_size = 712704
|
|
||||||
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
|
|
||||||
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
|
|
||||||
; solo build. -Os keeps every feature, fits comfortably, and is actually safer
|
|
||||||
; for float (no fast-math reassociation). Speed is irrelevant for the UI/mesh.
|
|
||||||
build_unflags = -Ofast
|
|
||||||
build_flags =
|
|
||||||
${GAT562_30S_Mesh_Kit.build_flags}
|
|
||||||
-I examples/companion_radio/ui-new
|
|
||||||
-D DISPLAY_CLASS=SSD1306Display
|
|
||||||
-D MAX_CONTACTS=350
|
|
||||||
-D MAX_GROUP_CHANNELS=40
|
|
||||||
-D BLE_PIN_CODE=123456
|
|
||||||
-D OFFLINE_QUEUE_SIZE=256
|
|
||||||
-D FIRMWARE_SOLO_BUILD=1
|
|
||||||
-D MESHCORE_VERSION='"1.17"'
|
|
||||||
-D UI_SENSORS_PAGE=1
|
|
||||||
-D UI_HAS_JOYSTICK_UPDOWN=1
|
|
||||||
-D ADVERT_NAME='"@@MAC"'
|
|
||||||
-D ENV_INCLUDE_GPS=1
|
|
||||||
; misc-fixed 6x9 OLED font (full Latin/Greek/Cyrillic), same as the Wio L1
|
|
||||||
; builds. Solo only: it costs ~14 KB of flash and the repeater/companion
|
|
||||||
; builds have no keyboard to type those alphabets on.
|
|
||||||
-D OLED_MISC_FIXED_FONT=1
|
|
||||||
-D DUAL_SERIAL=1
|
|
||||||
-D ENABLE_SCREENSHOT
|
|
||||||
-Os
|
|
||||||
; QSPIFLASH disabled: QSPI IO0/IO2 pins (P0.30/P0.28) conflict with joystick LEFT/UP
|
|
||||||
; -D MESH_PACKET_LOGGING=1
|
|
||||||
; -D MESH_DEBUG=1
|
|
||||||
build_src_filter = ${GAT562_30S_Mesh_Kit.build_src_filter}
|
|
||||||
+<helpers/nrf52/SerialBLEInterface.cpp>
|
|
||||||
+<helpers/ui/buzzer.cpp>
|
|
||||||
+<../examples/companion_radio/*.cpp>
|
|
||||||
+<../examples/companion_radio/ui-new/*.cpp>
|
|
||||||
lib_deps =
|
|
||||||
${GAT562_30S_Mesh_Kit.lib_deps}
|
|
||||||
adafruit/RTClib @ ^2.1.3
|
|
||||||
densaugeo/base64 @ ~1.4.0
|
|
||||||
end2endzone/NonBlockingRTTTL@^1.3.0
|
|
||||||
|
|
||||||
[env:GAT562_30S_Mesh_Kit_kiss_modem]
|
[env:GAT562_30S_Mesh_Kit_kiss_modem]
|
||||||
extends = GAT562_30S_Mesh_Kit
|
extends = GAT562_30S_Mesh_Kit
|
||||||
|
|||||||
@@ -87,45 +87,6 @@ lib_deps =
|
|||||||
${GAT562_Mesh_Watch13.lib_deps}
|
${GAT562_Mesh_Watch13.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
||||||
[env:GAT562_Mesh_Watch13_solo_ble]
|
|
||||||
extends = GAT562_Mesh_Watch13
|
|
||||||
board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld
|
|
||||||
board_upload.maximum_size = 712704
|
|
||||||
build_flags =
|
|
||||||
${GAT562_Mesh_Watch13.build_flags}
|
|
||||||
-I examples/companion_radio/ui-new
|
|
||||||
-D DISPLAY_CLASS=SSD1306Display
|
|
||||||
-D MAX_CONTACTS=350
|
|
||||||
-D MAX_GROUP_CHANNELS=40
|
|
||||||
-D BLE_PIN_CODE=123456
|
|
||||||
-D OFFLINE_QUEUE_SIZE=256
|
|
||||||
-D FIRMWARE_SOLO_BUILD=1
|
|
||||||
-D MESHCORE_VERSION='"1.17"'
|
|
||||||
-D UI_SENSORS_PAGE=1
|
|
||||||
-D ADVERT_NAME='"@@MAC"'
|
|
||||||
; GPS — re-enable (base undefines it); Serial1 pins 15/16 from variant
|
|
||||||
-D ENV_INCLUDE_GPS=1
|
|
||||||
-D GPS_BAUD_RATE=9600
|
|
||||||
; Buzzer available on IO3 (pin 21) — uncomment to enable
|
|
||||||
; -D PIN_BUZZER=21
|
|
||||||
; -D PIN_VIBRATION=36
|
|
||||||
; -D MESH_PACKET_LOGGING=1
|
|
||||||
; -D MESH_DEBUG=1
|
|
||||||
build_src_filter = ${GAT562_Mesh_Watch13.build_src_filter}
|
|
||||||
+<helpers/nrf52/SerialBLEInterface.cpp>
|
|
||||||
+<helpers/ui/MomentaryButton.cpp>
|
|
||||||
+<helpers/ui/GenericVibration.cpp>
|
|
||||||
+<../examples/companion_radio/*.cpp>
|
|
||||||
+<../examples/companion_radio/ui-new/*.cpp>
|
|
||||||
; If PIN_BUZZER is enabled above, also add:
|
|
||||||
; +<helpers/ui/buzzer.cpp>
|
|
||||||
lib_deps =
|
|
||||||
${GAT562_Mesh_Watch13.lib_deps}
|
|
||||||
adafruit/RTClib @ ^2.1.3
|
|
||||||
densaugeo/base64 @ ~1.4.0
|
|
||||||
; If PIN_BUZZER is enabled, also add:
|
|
||||||
; end2endzone/NonBlockingRTTTL@^1.3.0
|
|
||||||
|
|
||||||
[env:GAT562_Mesh_Watch13_kiss_modem]
|
[env:GAT562_Mesh_Watch13_kiss_modem]
|
||||||
extends = GAT562_Mesh_Watch13
|
extends = GAT562_Mesh_Watch13
|
||||||
build_src_filter = ${GAT562_Mesh_Watch13.build_src_filter}
|
build_src_filter = ${GAT562_Mesh_Watch13.build_src_filter}
|
||||||
|
|||||||
@@ -180,91 +180,6 @@ lib_deps =
|
|||||||
${Heltec_lora32_v3.lib_deps}
|
${Heltec_lora32_v3.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
||||||
; Solo build: the full standalone on-device UI (message history, contacts, map,
|
|
||||||
; tools) rather than a screen that only mirrors the phone app. Dual transport --
|
|
||||||
; the companion app can attach over BLE or USB serial, whichever it finds, and
|
|
||||||
; BLE wins while both are live.
|
|
||||||
;
|
|
||||||
; This firmware needs a real input device: the solo UI cannot be driven from the
|
|
||||||
; PRG button alone. Both supported ones are wired up in target.cpp and enabled
|
|
||||||
; below, so either is enough on its own and having both is fine. The pins are
|
|
||||||
; defaults picked from what this board leaves free -- change them to match how
|
|
||||||
; the device is actually built. Pins with nothing attached read as not-pressed,
|
|
||||||
; so the unused half costs nothing.
|
|
||||||
;
|
|
||||||
; * CardKB (M5Stack I2C keyboard, addr 0x5F) on a second I2C bus. Any two free
|
|
||||||
; GPIOs -- NOT 17/18, the OLED already owns those on Wire. It's probed at
|
|
||||||
; boot, so a build with these set still runs fine with nothing plugged in.
|
|
||||||
; Pair it with Settings > Keyboard > Ext. KB = Compact, which is designed to
|
|
||||||
; need no joystick at all. The same bus is scanned for environment sensors.
|
|
||||||
;
|
|
||||||
; * Wired joystick: four direction pins plus a fifth "press" contact. The
|
|
||||||
; press contact drives Enter (your thumb's already on the stick) via
|
|
||||||
; PIN_USER_BTN -- overridden below (a later -D wins, no -U needed: this whole
|
|
||||||
; project builds with -w) from the PRG-button default
|
|
||||||
; the base env sets, since PRG's GPIO0 can't be moved to the stick. PRG
|
|
||||||
; becomes Back instead (PIN_BACK_BTN), so it no longer needs its own
|
|
||||||
; separately-wired button. Each contact just shorts its pin to GND;
|
|
||||||
; target.cpp enables the internal pull-ups. Drop
|
|
||||||
; UI_HAS_JOYSTICK_UPDOWN for a left/right-only stick. JOYSTICK_ROTATION (0-3)
|
|
||||||
; rotates the mapping if the stick is mounted sideways -- it's also a runtime
|
|
||||||
; setting, so leave it out unless you want a different default.
|
|
||||||
; Comment the whole block out for a CardKB-only build. UI_HAS_JOYSTICK
|
|
||||||
; replaces the single-button handling rather than adding to it (UITask.cpp
|
|
||||||
; dispatches on '#if UI_HAS_JOYSTICK ... #elif defined(PIN_USER_BTN)'), which
|
|
||||||
; costs nothing here -- that fallback only feeds KEY_NEXT/KEY_PREV, which the
|
|
||||||
; solo screens don't act on.
|
|
||||||
;
|
|
||||||
; V3 and V4 are pin-compatible per Heltec's own docs, so the defaults below are
|
|
||||||
; carried over from the heltec_v4_companion_solo_dual env, where this exact
|
|
||||||
; CardKB + joystick combination is confirmed working on real hardware -- still
|
|
||||||
; worth checking against your own V3 module before soldering, but not a blind
|
|
||||||
; guess like the earlier SDA 41/SCL 42 default was. PIN_GPS_RX=47/TX=48/EN=26
|
|
||||||
; above are dead defines on V3 (ENV_INCLUDE_GPS is never set to 1 in this file),
|
|
||||||
; so they don't conflict with reusing 47/48 here despite the name.
|
|
||||||
[env:Heltec_v3_companion_solo_dual]
|
|
||||||
extends = Heltec_lora32_v3
|
|
||||||
build_flags =
|
|
||||||
${Heltec_lora32_v3.build_flags}
|
|
||||||
-I examples/companion_radio/ui-new
|
|
||||||
-D MAX_CONTACTS=350
|
|
||||||
-D MAX_GROUP_CHANNELS=40
|
|
||||||
-D DISPLAY_CLASS=SSD1306Display
|
|
||||||
-D BLE_PIN_CODE=123456 ; dynamic, random PIN
|
|
||||||
-D DUAL_SERIAL=1 ; companion app over BLE *or* USB serial
|
|
||||||
-D AUTO_SHUTDOWN_MILLIVOLTS=3400
|
|
||||||
-D OFFLINE_QUEUE_SIZE=256
|
|
||||||
-D FIRMWARE_SOLO_BUILD=1
|
|
||||||
-D UI_SENSORS_PAGE=1
|
|
||||||
-D OLED_MISC_FIXED_FONT=1 ; full Latin/Greek/Cyrillic 6x9 font, ~14 KB flash
|
|
||||||
-D ENABLE_SCREENSHOT ; same as the other solo builds — Solo Tools reads the framebuffer over USB
|
|
||||||
; CardKB on the second I2C bus. Harmless with nothing plugged in.
|
|
||||||
-D ENV_PIN_SDA=3
|
|
||||||
-D ENV_PIN_SCL=4
|
|
||||||
; Wired joystick — comment the block out for a CardKB-only build. The
|
|
||||||
; press contact (Enter) overrides PIN_USER_BTN from its PRG default;
|
|
||||||
; PRG becomes Back (PIN_BACK_BTN) instead.
|
|
||||||
-D UI_HAS_JOYSTICK=1
|
|
||||||
-D UI_HAS_JOYSTICK_UPDOWN=1
|
|
||||||
-D JOYSTICK_UP=23
|
|
||||||
-D JOYSTICK_DOWN=6
|
|
||||||
-D JOYSTICK_LEFT=47
|
|
||||||
-D JOYSTICK_RIGHT=48
|
|
||||||
-D PIN_BACK_BTN=0 ; PRG button
|
|
||||||
-D PIN_USER_BTN=33 ; joystick press contact -- Enter, overrides the PRG default above
|
|
||||||
; -D PIN_BUZZER=<gpio>
|
|
||||||
build_src_filter = ${Heltec_lora32_v3.build_src_filter}
|
|
||||||
+<helpers/ui/SSD1306Display.cpp>
|
|
||||||
+<helpers/ui/MomentaryButton.cpp>
|
|
||||||
+<helpers/ui/buzzer.cpp>
|
|
||||||
+<helpers/esp32/*.cpp>
|
|
||||||
+<../examples/companion_radio/*.cpp>
|
|
||||||
+<../examples/companion_radio/ui-new/*.cpp>
|
|
||||||
lib_deps =
|
|
||||||
${Heltec_lora32_v3.lib_deps}
|
|
||||||
densaugeo/base64 @ ~1.4.0
|
|
||||||
end2endzone/NonBlockingRTTTL@^1.3.0
|
|
||||||
|
|
||||||
[env:Heltec_v3_companion_radio_wifi]
|
[env:Heltec_v3_companion_radio_wifi]
|
||||||
extends = Heltec_lora32_v3
|
extends = Heltec_lora32_v3
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -223,98 +223,6 @@ lib_deps =
|
|||||||
${heltec_v4_oled.lib_deps}
|
${heltec_v4_oled.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
||||||
; Solo build: the full standalone on-device UI (message history, contacts, map,
|
|
||||||
; tools) rather than a screen that only mirrors the phone app. Dual transport --
|
|
||||||
; the companion app can attach over BLE or USB serial, whichever it finds, and
|
|
||||||
; BLE wins while both are live. OLED board only -- the TFT variant would need
|
|
||||||
; its own DISPLAY_CLASS.
|
|
||||||
;
|
|
||||||
; This firmware needs a real input device: the solo UI cannot be driven from the
|
|
||||||
; PRG button alone. Both supported ones are wired up in target.cpp and enabled
|
|
||||||
; below, so either is enough on its own and having both is fine. The pins are
|
|
||||||
; defaults picked from what this board leaves free -- change them to match how
|
|
||||||
; the device is actually built. Pins with nothing attached read as not-pressed,
|
|
||||||
; so the unused half costs nothing.
|
|
||||||
;
|
|
||||||
; * CardKB (M5Stack I2C keyboard, addr 0x5F) on a second I2C bus. Any two free
|
|
||||||
; GPIOs -- NOT 17/18, the OLED already owns those on Wire. It's probed at
|
|
||||||
; boot, so a build with these set still runs fine with nothing plugged in.
|
|
||||||
; Pair it with Settings > Keyboard > Ext. KB = Compact, which is designed to
|
|
||||||
; need no joystick at all. The same bus is scanned for environment sensors.
|
|
||||||
; Defaults below: SDA 3, SCL 4 -- the pins heltec_v4_sensor and
|
|
||||||
; heltec_v4_expansionkit_repeater already use for their second I2C bus, i.e.
|
|
||||||
; the expansion kit's. (Those envs disagree on the order: two say SDA 3 /
|
|
||||||
; SCL 4, one says the reverse. 3/4 is the pair either way; swap them if the
|
|
||||||
; keyboard doesn't answer.)
|
|
||||||
;
|
|
||||||
; * Wired joystick: four direction pins plus a fifth "press" contact. The
|
|
||||||
; press contact drives Enter (your thumb's already on the stick) via
|
|
||||||
; PIN_USER_BTN -- overridden below (a later -D wins, no -U needed: this whole
|
|
||||||
; project builds with -w) from the PRG-button default
|
|
||||||
; the base env sets, since PRG's GPIO0 can't be moved to the stick. PRG
|
|
||||||
; becomes Back instead (PIN_BACK_BTN), so it no longer needs its own
|
|
||||||
; separately-wired button. Each contact just shorts its pin to GND;
|
|
||||||
; target.cpp enables the internal pull-ups. Drop
|
|
||||||
; UI_HAS_JOYSTICK_UPDOWN for a left/right-only stick. JOYSTICK_ROTATION (0-3)
|
|
||||||
; rotates the mapping if the stick is mounted sideways -- it's also a runtime
|
|
||||||
; setting, so leave it out unless you want a different default.
|
|
||||||
; Comment the whole block out for a CardKB-only build. UI_HAS_JOYSTICK
|
|
||||||
; replaces the single-button handling rather than adding to it (UITask.cpp
|
|
||||||
; dispatches on '#if UI_HAS_JOYSTICK ... #elif defined(PIN_USER_BTN)'), which
|
|
||||||
; costs nothing here -- that fallback only feeds KEY_NEXT/KEY_PREV, which the
|
|
||||||
; solo screens don't act on.
|
|
||||||
;
|
|
||||||
; Free on this board, per its pinout: 3, 4, 6, 23, 33, 43, 44, 45, 46, 47, 48.
|
|
||||||
; Two of those can't take an I2C pull-up: 45 selects VDD_SPI at boot, so held
|
|
||||||
; high the chip comes up expecting 1.8V flash and won't boot at all, and 46 is
|
|
||||||
; the boot-mode strap. 3 is a strapping pin too, but it only picks the JTAG
|
|
||||||
; source -- and it's what this board's own expansion kit uses for I2C anyway.
|
|
||||||
; 43/44 are UART0: unused by this build, since ARDUINO_USB_CDC_ON_BOOT (set in
|
|
||||||
; boards/heltec_v4.json) makes Serial the native USB port, but a USB-UART bridge
|
|
||||||
; may still be wired to them, so they're left alone.
|
|
||||||
[env:heltec_v4_companion_solo_dual]
|
|
||||||
extends = heltec_v4_oled
|
|
||||||
build_flags =
|
|
||||||
${heltec_v4_oled.build_flags}
|
|
||||||
-I examples/companion_radio/ui-new
|
|
||||||
-D MAX_CONTACTS=350
|
|
||||||
-D MAX_GROUP_CHANNELS=40
|
|
||||||
-D DISPLAY_CLASS=SSD1306Display
|
|
||||||
-D BLE_PIN_CODE=123456 ; dynamic, random PIN
|
|
||||||
-D DUAL_SERIAL=1 ; companion app over BLE *or* USB serial
|
|
||||||
-D AUTO_SHUTDOWN_MILLIVOLTS=3400
|
|
||||||
-D OFFLINE_QUEUE_SIZE=256
|
|
||||||
-D FIRMWARE_SOLO_BUILD=1
|
|
||||||
-D UI_SENSORS_PAGE=1
|
|
||||||
-D OLED_MISC_FIXED_FONT=1 ; full Latin/Greek/Cyrillic 6x9 font, ~14 KB flash
|
|
||||||
-D ENABLE_SCREENSHOT ; same as the other solo builds — Solo Tools reads the framebuffer over USB
|
|
||||||
; CardKB on the second I2C bus. Harmless with nothing plugged in.
|
|
||||||
-D ENV_PIN_SDA=3
|
|
||||||
-D ENV_PIN_SCL=4
|
|
||||||
; Wired joystick — comment the block out for a CardKB-only build. The
|
|
||||||
; press contact (Enter) overrides PIN_USER_BTN from its PRG default;
|
|
||||||
; PRG becomes Back (PIN_BACK_BTN) instead.
|
|
||||||
-D UI_HAS_JOYSTICK=1
|
|
||||||
-D UI_HAS_JOYSTICK_UPDOWN=1
|
|
||||||
-D JOYSTICK_UP=23
|
|
||||||
-D JOYSTICK_DOWN=6
|
|
||||||
-D JOYSTICK_LEFT=47
|
|
||||||
-D JOYSTICK_RIGHT=48
|
|
||||||
-D PIN_BACK_BTN=0 ; PRG button
|
|
||||||
-D PIN_USER_BTN=33 ; joystick press contact -- Enter, overrides the PRG default above
|
|
||||||
; -D PIN_BUZZER=<gpio>
|
|
||||||
build_src_filter = ${heltec_v4_oled.build_src_filter}
|
|
||||||
+<helpers/ui/SSD1306Display.cpp>
|
|
||||||
+<helpers/ui/MomentaryButton.cpp>
|
|
||||||
+<helpers/ui/buzzer.cpp>
|
|
||||||
+<helpers/esp32/*.cpp>
|
|
||||||
+<../examples/companion_radio/*.cpp>
|
|
||||||
+<../examples/companion_radio/ui-new/*.cpp>
|
|
||||||
lib_deps =
|
|
||||||
${heltec_v4_oled.lib_deps}
|
|
||||||
densaugeo/base64 @ ~1.4.0
|
|
||||||
end2endzone/NonBlockingRTTTL@^1.3.0
|
|
||||||
|
|
||||||
[env:heltec_v4_companion_radio_wifi]
|
[env:heltec_v4_companion_radio_wifi]
|
||||||
extends = heltec_v4_oled
|
extends = heltec_v4_oled
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -45,45 +45,6 @@ lib_deps =
|
|||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
upload_protocol = nrfutil
|
upload_protocol = nrfutil
|
||||||
|
|
||||||
[env:LilyGo_T-Echo-Lite_keyshield_companion_solo_dual]
|
|
||||||
extends = LilyGo_T-Echo-Lite
|
|
||||||
board_build.ldscript = boards/nrf52840_s140_v6_extrafs.ld
|
|
||||||
board_upload.maximum_size = 712704
|
|
||||||
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
|
|
||||||
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
|
|
||||||
; solo build. -Os keeps every feature, fits comfortably, and is actually safer
|
|
||||||
; for float (no fast-math reassociation). Speed is irrelevant for the UI/mesh.
|
|
||||||
build_unflags = -Ofast
|
|
||||||
build_flags =
|
|
||||||
${LilyGo_T-Echo-Lite.build_flags}
|
|
||||||
-I src/helpers/ui
|
|
||||||
-I examples/companion_radio/ui-new
|
|
||||||
-D LILYGO_TECHO_LITE_KEYSHIELD
|
|
||||||
-D MAX_CONTACTS=350
|
|
||||||
-D MAX_GROUP_CHANNELS=40
|
|
||||||
; -D QSPIFLASH=1
|
|
||||||
-D BLE_PIN_CODE=123456
|
|
||||||
; -D BLE_DEBUG_LOGGING=1
|
|
||||||
-D OFFLINE_QUEUE_SIZE=256
|
|
||||||
-D UI_RECENT_LIST_SIZE=9
|
|
||||||
-D UI_SENSORS_PAGE=1
|
|
||||||
; -D MESH_PACKET_LOGGING=1
|
|
||||||
; -D MESH_DEBUG=1
|
|
||||||
-D AUTO_SHUTDOWN_MILLIVOLTS=3300
|
|
||||||
-D ENV_USE_TCA8418=1
|
|
||||||
-D FIRMWARE_SOLO_BUILD=1
|
|
||||||
-D MESHCORE_VERSION='"1.17"'
|
|
||||||
-D ENABLE_SCREENSHOT
|
|
||||||
-Os
|
|
||||||
build_src_filter = ${LilyGo_T-Echo-Lite.build_src_filter}
|
|
||||||
+<helpers/nrf52/SerialBLEInterface.cpp>
|
|
||||||
+<../examples/companion_radio/*.cpp>
|
|
||||||
+<../examples/companion_radio/ui-new/*.cpp>
|
|
||||||
lib_deps =
|
|
||||||
${LilyGo_T-Echo-Lite.lib_deps}
|
|
||||||
densaugeo/base64 @ ~1.4.0
|
|
||||||
;https://github.com/lewisxhe/SensorLib.git
|
|
||||||
|
|
||||||
[env:LilyGo_T-Echo-Lite_repeater]
|
[env:LilyGo_T-Echo-Lite_repeater]
|
||||||
extends = LilyGo_T-Echo-Lite
|
extends = LilyGo_T-Echo-Lite
|
||||||
build_src_filter = ${LilyGo_T-Echo-Lite.build_src_filter}
|
build_src_filter = ${LilyGo_T-Echo-Lite.build_src_filter}
|
||||||
|
|||||||
@@ -97,35 +97,6 @@ lib_deps =
|
|||||||
${M5Stack_Cardputer_ADV.lib_deps}
|
${M5Stack_Cardputer_ADV.lib_deps}
|
||||||
densaugeo/base64 @ ~1.4.0
|
densaugeo/base64 @ ~1.4.0
|
||||||
|
|
||||||
[env:M5Stack_Cardputer_ADV_companion_solo_dual]
|
|
||||||
extends = M5Stack_Cardputer_ADV
|
|
||||||
build_flags =
|
|
||||||
${M5Stack_Cardputer_ADV.build_flags}
|
|
||||||
-I examples/companion_radio/ui-new
|
|
||||||
-D MAX_CONTACTS=350
|
|
||||||
-D MAX_GROUP_CHANNELS=40
|
|
||||||
-D BLE_PIN_CODE=123456
|
|
||||||
-D DUAL_SERIAL=1
|
|
||||||
-D OFFLINE_QUEUE_SIZE=256
|
|
||||||
-D FIRMWARE_SOLO_BUILD=1
|
|
||||||
-D MESHCORE_VERSION='"1.17"'
|
|
||||||
-D UI_SENSORS_PAGE=1
|
|
||||||
; misc-fixed 6x9 font (full Latin/Greek/Cyrillic), same as the Wio L1/Heltec
|
|
||||||
; solo builds. Solo only: it costs ~14 KB of flash, and this board's own
|
|
||||||
; QWERTY keyboard is exactly the case that benefits from typing those
|
|
||||||
; alphabets and having them render as themselves instead of blocks.
|
|
||||||
-D OLED_MISC_FIXED_FONT=1
|
|
||||||
; -D MESH_PACKET_LOGGING=1
|
|
||||||
; -D MESH_DEBUG=1
|
|
||||||
build_src_filter = ${M5Stack_Cardputer_ADV.build_src_filter}
|
|
||||||
+<helpers/esp32/*.cpp>
|
|
||||||
+<helpers/ui/MomentaryButton.cpp>
|
|
||||||
+<../examples/companion_radio/*.cpp>
|
|
||||||
+<../examples/companion_radio/ui-new/*.cpp>
|
|
||||||
lib_deps =
|
|
||||||
${M5Stack_Cardputer_ADV.lib_deps}
|
|
||||||
densaugeo/base64 @ ~1.4.0
|
|
||||||
|
|
||||||
[env:M5Stack_Cardputer_ADV_repeater]
|
[env:M5Stack_Cardputer_ADV_repeater]
|
||||||
extends = M5Stack_Cardputer_ADV
|
extends = M5Stack_Cardputer_ADV
|
||||||
build_flags =
|
build_flags =
|
||||||
|
|||||||
@@ -70,20 +70,6 @@ build_flags = ${WioTrackerL1Eink.build_flags}
|
|||||||
-D DUAL_SERIAL=1
|
-D DUAL_SERIAL=1
|
||||||
extra_scripts = post:create-uf2.py
|
extra_scripts = post:create-uf2.py
|
||||||
|
|
||||||
; Dual BLE+USB with added Solo
|
|
||||||
[env:WioTrackerL1Eink_companion_solo_dual]
|
|
||||||
extends = WioTrackerL1Eink
|
|
||||||
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
|
|
||||||
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
|
|
||||||
; solo build. -Os keeps every feature, fits comfortably, and is actually safer
|
|
||||||
; for float (no fast-math reassociation). Speed is irrelevant for the UI/mesh.
|
|
||||||
build_unflags = -Ofast
|
|
||||||
build_flags = ${WioTrackerL1Eink.build_flags}
|
|
||||||
-D DUAL_SERIAL=1
|
|
||||||
-D ENABLE_SCREENSHOT
|
|
||||||
-Os
|
|
||||||
extra_scripts = post:create-uf2.py
|
|
||||||
|
|
||||||
; Dual BLE+USB with screenshot support (development/debug)
|
; Dual BLE+USB with screenshot support (development/debug)
|
||||||
[env:WioTrackerL1Eink_companion_dual_dev]
|
[env:WioTrackerL1Eink_companion_dual_dev]
|
||||||
extends = WioTrackerL1Eink
|
extends = WioTrackerL1Eink
|
||||||
|
|||||||
@@ -150,20 +150,6 @@ build_flags = ${WioTrackerL1CompanionDual.build_flags}
|
|||||||
-D UI_HAS_JOYSTICK_UPDOWN=1
|
-D UI_HAS_JOYSTICK_UPDOWN=1
|
||||||
extra_scripts = post:create-uf2.py
|
extra_scripts = post:create-uf2.py
|
||||||
|
|
||||||
[env:WioTrackerL1_companion_solo_dual]
|
|
||||||
extends = WioTrackerL1CompanionDual
|
|
||||||
; Optimise for size, not speed: the nRF52 Arduino core defaults to -Ofast
|
|
||||||
; (≈ -O3 + -ffast-math), which bloats flash by ~200 KB on this feature-rich
|
|
||||||
; solo build. -Os keeps every feature, fits comfortably, and is actually safer
|
|
||||||
; for float (no fast-math reassociation). Speed is irrelevant for the UI/mesh.
|
|
||||||
build_unflags = -Ofast
|
|
||||||
build_flags = ${WioTrackerL1CompanionDual.build_flags}
|
|
||||||
-D UI_HAS_JOYSTICK_UPDOWN=1
|
|
||||||
-D ENABLE_SCREENSHOT
|
|
||||||
-D DUAL_SERIAL=1
|
|
||||||
-Os
|
|
||||||
extra_scripts = post:create-uf2.py
|
|
||||||
|
|
||||||
[env:WioTrackerL1_companion_dual_dev]
|
[env:WioTrackerL1_companion_dual_dev]
|
||||||
extends = WioTrackerL1CompanionDual
|
extends = WioTrackerL1CompanionDual
|
||||||
build_flags = ${WioTrackerL1CompanionDual.build_flags}
|
build_flags = ${WioTrackerL1CompanionDual.build_flags}
|
||||||
|
|||||||
Reference in New Issue
Block a user