mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-01 02:11:57 +00:00
docs(solo): bring the docs up to date with the L1 refresh
- Home pages as they are now (Status, quick panels, Map page), the Status screen's tabs instead of Diagnostics / GPS / Sensors, lock clock Big / Compact and the hint on a key press, battery curve on L1 and L2, "+ Send" and a failed send, trail pin, vector map behind -D MAP_VECTOR. - Developer guide: drawScreenHeader, soft frames, InfoKit, TabBar, a status bar without blinking, toast and millis() rules; ui-core status; build flags (GPS_SKYVIEW, MAP_VECTOR, HIST_ARCHIVE added, ui-tiny-only ones out). - New simulator screenshots: the clock page and the Status page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+5
-4
@@ -19,7 +19,8 @@ still connects as with the stock firmware, over Bluetooth or USB.
|
||||
- **Nearby nodes**: who's around, signal and distance, ping, and remote
|
||||
admin of your repeaters and rooms.
|
||||
- **Tools**: clock with alarm, timer and stopwatch, a remote bot that answers
|
||||
commands over the mesh, repeater mode, a ringtone editor, diagnostics.
|
||||
commands over the mesh, repeater mode, a ringtone editor, and a status
|
||||
screen with the radio, GPS, battery and mesh counters.
|
||||
- **Screen lock** with an optional PIN.
|
||||
- **On the Wio Tracker L2**: an offline map, message history on the SD card,
|
||||
the SD card as a USB drive, updates over WiFi.
|
||||
@@ -40,7 +41,7 @@ These docs mark the differences with notes like this:
|
||||
|
||||
| OLED / e-ink | | Wio Tracker L2 |
|
||||
| :---: | :---: | :---: |
|
||||
|  |  |  |
|
||||
|  |  |  |
|
||||
|
||||
The joystick and keyboard devices share one interface, sized for small OLED
|
||||
and e-ink screens. The Wio Tracker L2 has its own, built for a 320 × 240
|
||||
@@ -49,11 +50,11 @@ history on the SD card and updates over WiFi.
|
||||
|
||||
## Pages
|
||||
|
||||
- [Getting started](./getting-started.md): controls, the home screen, the phone app, updates
|
||||
- [Getting started](./getting-started.md): controls, the home screen and its quick panels, the phone app, updates
|
||||
- [Messages](./messages.md): channels, direct messages, rooms, typing
|
||||
- [Contacts](./contacts.md): nearby nodes, favourites, remote admin
|
||||
- [Navigation](./navigation.md): GPS, trail, waypoints, compass, sharing your location, the map
|
||||
- [Tools](./tools.md): clock tools, bot, repeater, ringtones, diagnostics
|
||||
- [Tools](./tools.md): clock tools, bot, repeater, ringtones, the Status screen
|
||||
- [Settings](./settings.md): what is where
|
||||
- [Screen lock](./lock.md): locking, auto-lock, PIN
|
||||
- [Hardware](./hardware.md): external keyboards and joysticks, e-ink, SD card, WiFi
|
||||
|
||||
@@ -31,7 +31,7 @@ per-user. Listed here so the rest of this page can assume them.
|
||||
| `TRAIL_CAPACITY=<n>` | Points the GPS trail holds (16 B each). Default 512 for the nRF52's RAM; the L2 sets 32768 in PSRAM. At most 65535 (the save format's count). |
|
||||
| `TRAIL_SIMPLIFY=0` | Keeps every trail sample instead of storing straight stretches as their two ends. For boards with the memory for it (the L2). |
|
||||
| `TRAIL_FIXED_MIN_DELTA_M=<m>` | A fixed distance between trail points instead of the Point spacing setting, which is then hidden (the L2: 5 m, against GPS jitter). |
|
||||
| `UI_SENSORS_PAGE=1` | Enables the on-device sensors dashboard page. |
|
||||
| `UI_SENSORS_PAGE=1` | Only the default Home page order in the solo UI: sensor readings are on the Status screen's Power tab whenever the board has sensors. |
|
||||
| `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`. |
|
||||
|
||||
@@ -56,7 +56,6 @@ existing `solo/<board>/platformio.ini` for what's already claimed).
|
||||
| `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](../hardware.md#external-keyboard-and-joystick). |
|
||||
| `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 › GPIO](../tools.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](../lock.md#magnetic-cover). |
|
||||
| `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. |
|
||||
|
||||
---
|
||||
|
||||
@@ -75,9 +74,7 @@ existing `solo/<board>/platformio.ini` for what's already claimed).
|
||||
| --- | --- |
|
||||
| `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.
|
||||
| `GPS_SKYVIEW` | Keeps every satellite in view (constellation, elevation, azimuth, signal) for the Status screen's Sky tab and the L2's GPS app (~1.5 KB RAM). Set on the Wio Tracker L1 and L2. |
|
||||
|
||||
---
|
||||
|
||||
@@ -90,7 +87,6 @@ layered on top of GPS support, not a requirement for it.
|
||||
| `ENABLE_SCREENSHOT` | Lets the site's [USB tools](https://solo.marekzegarek.com/#pc-tools) (or `tools/screenshot.py`) capture the screen over USB. A colour screen (the L2) renders a fresh frame and sends it as RGB565. |
|
||||
| `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. |
|
||||
|
||||
---
|
||||
|
||||
@@ -116,4 +112,6 @@ values above that are set from the phone app or the CLI.
|
||||
| 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. |
|
||||
| `MAP_VECTOR` | Wio Tracker L2: turns on the unfinished vector map (regions from `tools/maps/osm_vector.py`). Without it the vector map stays off whatever was saved. |
|
||||
| `HIST_ARCHIVE` | Wio Tracker L2: message history also kept on the SD card (`ui-lvgl/HistoryStore.h`). Set in its solo build. |
|
||||
| `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. |
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -63,7 +63,9 @@ public:
|
||||
Only screens needing a *parameter* at entry add a typed call after it (e.g.
|
||||
`gotoRingtoneEditor` → `selectSlot(slot)`, `gotoMapScreen` → `showMapView()`).
|
||||
4. Reach it from somewhere — usually a row in `ToolsScreen.h` (add an `Action`
|
||||
enum value, a row in the right section table, and a `dispatch()` case).
|
||||
enum value, a row in the right section table, and a `run()` case). The
|
||||
Tools home page lists the last two tools used; give the new one a state
|
||||
in `HomeScreen::toolState()` (`UITask.cpp`) if it has one worth showing.
|
||||
|
||||
That's the whole contract. Steps 1, 3 and 4 are compiler-checked (a mismatch
|
||||
won't link); only a forgotten step 2 can slip through — every screen pointer is
|
||||
@@ -95,14 +97,19 @@ pixel sizes** — derive everything from these:
|
||||
|
||||
Drawing helpers (all clip/measure for you):
|
||||
|
||||
- `drawCenteredHeader(title, menu_hint=false, menu_open=false)` — plain centered
|
||||
title + separator.
|
||||
- `drawInvertedHeader(label, menu_hint=false, menu_open=false)` — filled title
|
||||
bar (used by detail views).
|
||||
- Both take an optional `menu_hint`: pass `true` on a screen with a Hold-Enter
|
||||
context menu to reserve a `≡` glyph (`menuHintWidth()`/`drawContextMenuHint()`)
|
||||
in the header, so the menu is discoverable without already knowing the
|
||||
shortcut; `menu_open` highlights it while the menu is actually up.
|
||||
- `drawScreenHeader(d, title, page=-1, pages=0, menu_hint=false, menu_open=false)`
|
||||
(`ui-new/icons.h`) — every screen's title bar: the title (title case, no
|
||||
icon) centred over the separator, page dots at the right for a screen with
|
||||
views (`page` of `pages`, e.g. Trail's Summary / Map / List), and the `≡`
|
||||
hint when the screen has a Hold-Enter menu, so the menu is discoverable
|
||||
without knowing the shortcut; `menu_open` highlights it while the menu is
|
||||
up. A title too long to centre goes left and ends in an ellipsis.
|
||||
- `drawInvertedHeader(label, menu_hint=false, menu_open=false)` — a filled
|
||||
title bar, kept for the node detail and Navigate views.
|
||||
- `drawSoftRect` / `fillSoftRect` — a box with its corner pixels left out;
|
||||
every frame and fill in the UI uses them (selections, pills, buttons).
|
||||
`drawPanel(x, y, w, h)` is a box floating over the view (alert, popup,
|
||||
hint): it clears a 1 px moat, fills dark and draws the soft border.
|
||||
- `drawSelectionRow(x, y, w, h, sel)` — the highlight bar behind a list row.
|
||||
- `drawTextEllipsized(x, y, max_w, str, selected=false)` — truncates with `…`;
|
||||
**use this for any user string** (names, labels) so long/UTF-8 text can't
|
||||
@@ -160,6 +167,8 @@ calculator (`scrollIndicatorReserve`) are exposed for hand-laid lists.
|
||||
| `DigitEditor` | `DigitEditor.h` | scroll-edit one number, digit by digit |
|
||||
| `FullscreenMsgView` | `FullscreenMsgView.h` | scrollable full-message reader + word wrap |
|
||||
| `NavView` | `NavView.h` | bearing/distance/ETA "navigate to a point" view |
|
||||
| `TabBar` | `TabBar.h` | a row of tabs: the current one a soft pill, whole tabs only, ◂ ▸ where more are off screen |
|
||||
| `info::` rows and blocks | `InfoKit.h` | settings rows, data screens (below) |
|
||||
|
||||
All follow the same shape: a `begin(...)` to open, an `active` flag, a
|
||||
`handleInput(c)` returning a small `Result` enum, and a `render()`/`draw()`.
|
||||
@@ -211,6 +220,24 @@ to pick, Enter to insert via the shared `insertGlyph()` helper, Cancel to
|
||||
dismiss. Holding a letter with no variants, or any T9/alt-alphabet/symbols
|
||||
cell, is a no-op.
|
||||
|
||||
**InfoKit** (`ui-new/InfoKit.h`, namespace `info`) is the shared look of
|
||||
settings and data screens. Rows (drawn after `drawRowSelection()`, in its
|
||||
ink): `valueRow(d, y, label, value, sel, reserve, x0)` — label left, value
|
||||
flush right with its unit after a space ("50 m"), cut and marquee-scrolled
|
||||
when selected; `switchRow` — a yes/no setting as an on/off switch
|
||||
(`toggle()`); `listRow` — picks between the two for a formatter that returns
|
||||
exactly "ON" / "OFF". `rowWrapped` gives a long value its own line instead of
|
||||
an ellipsis nobody can scroll. Blocks for data screens: `section` (a centred
|
||||
"··· Font ···" divider), `meter`, `battery`, `chip`, `big` (a 2× number with
|
||||
its unit), `History<N>` + `spark` (a sparkline), `rule` / `vrule`. `Flow`
|
||||
places blocks top-down, skips the ones scrolled off and tells whether more
|
||||
are below, which gives the scroll indicator for free (see `StatusScreen.h`).
|
||||
|
||||
Other drawing helpers in `icons.h`: `drawButton` (a push button, soft pill,
|
||||
filled while selected), `drawDisclosure` (▸ / ▾ on an accordion section),
|
||||
`drawPageDots`, `drawLoadingDots` (the waiting animation), `drawSignalBars`
|
||||
(SNR as four bars).
|
||||
|
||||
`FullscreenMsgView::wrapLines()` is a standalone pixel-accurate word-wrapper
|
||||
(O(n), variable-width-font aware) reusable by any multi-line layout; it writes
|
||||
into the shared `s_wrap_trans` / `s_wrap_lines` scratch (single-threaded render,
|
||||
@@ -260,21 +287,19 @@ MINI_ICON(ICON_FOO, 5,
|
||||
```
|
||||
|
||||
Draw with `miniIconDraw(display, x, topY, ICON_FOO)` (auto-scaled & centered),
|
||||
`miniIconDrawTop` (exact placement), or the boxed/slot variants
|
||||
(`drawBoxedIcon` = lit when active, `drawSlotIcon` = plain). Bigger page glyphs
|
||||
use `BIG_ICON` / `bigIconDraw`. The home status bar composes these right-to-left
|
||||
with a `blinkOn()` cadence for "leave it on and forget" broadcasts (auto-advert,
|
||||
Live Share, trail, repeater) — follow that pattern when adding an indicator:
|
||||
always shown on e-ink, blinking on OLED.
|
||||
`miniIconDrawTop` (exact placement), `miniIconDrawCentered`, or `drawSlotIcon`
|
||||
(centred in a status-bar slot). Use icons sparingly: headers and the Tools
|
||||
list have none, the Home page row is the main place for them.
|
||||
|
||||
Icons are drawn from a fixed priority-ordered table (`HomeScreen::renderBatteryIndicator()`,
|
||||
`UITask.cpp`); once the row runs out of horizontal space the loop just stops,
|
||||
so the lowest-priority icons silently drop first rather than the whole bar
|
||||
crushing the node name. A blinking icon still reserves its width on the
|
||||
off-phase of its blink, so the row's layout can't visibly shift width as icons
|
||||
blink in and out.
|
||||
The home status bar (`HomeScreen::renderBatteryIndicator()`, `UITask.cpp`)
|
||||
draws plain glyphs right to left from a fixed, priority-ordered table, with
|
||||
no boxes and no blinking: each icon tells a state by its shape (Bluetooth only
|
||||
while a phone is connected, the GPS reticle broken until a fix, a pin while
|
||||
the trail records). Once the row runs out of room the loop stops, so the
|
||||
lowest-priority icons drop first instead of the bar crushing the time. Add an
|
||||
indicator as one more row in that table, at its priority.
|
||||
|
||||
Screens with a Hold-Enter context menu (Nodes, Bot, Admin, Diagnostics, …) pass
|
||||
Screens with a Hold-Enter context menu (Nodes, Messages, Bot, Admin, …) pass
|
||||
`menu_hint=true` to their header call (see §2) so a `≡` glyph advertises the
|
||||
menu; `KEY_CONTEXT_MENU` (Hold-Enter) opens it.
|
||||
|
||||
@@ -363,7 +388,13 @@ with `resolvePersonPos()` (live `[LOC]` share, else last-advertised fix).
|
||||
`chanctl::onRemoved()` (ui-core/ChannelControl.h). New per-contact or
|
||||
per-channel state should clear there too.
|
||||
- **Toasts:** `_task->showAlert("msg", duration_ms)` overlays a transient banner
|
||||
over any screen; no redraw plumbing needed.
|
||||
over any screen (not over the keyboard); no redraw plumbing needed. Use one
|
||||
only for what the screen doesn't already show: a failure ("Send failed",
|
||||
"Contacts full") or an outcome somewhere else. No echo of an action whose
|
||||
result is in view ("Sent", "Deleted", "Counters reset").
|
||||
- **Time:** `millis()` wraps after ~49.7 days. Compare deadlines as
|
||||
`(int32_t)(millis() - deadline) >= 0`, never `millis() >= deadline`, and use
|
||||
0 as "now / none" (`UITask::refreshDue()`, `alertShowing()`).
|
||||
- **Strings:** always `strncpy`+NUL or `snprintf`; treat every name/label as
|
||||
untrusted-length and render through `drawTextEllipsized`.
|
||||
|
||||
@@ -374,7 +405,8 @@ with `resolvePersonPos()` (live `[LOC]` share, else last-advertised fix).
|
||||
```cpp
|
||||
// ui-new/MyToolScreen.h — included by UITask.cpp near the other screens
|
||||
#pragma once
|
||||
#include "icons.h" // drawList + mini-icons
|
||||
#include "icons.h" // drawList, drawScreenHeader, mini-icons
|
||||
#include "InfoKit.h" // valueRow / switchRow
|
||||
#include "../NodePrefs.h"
|
||||
|
||||
class MyToolScreen : public UIScreen {
|
||||
@@ -389,13 +421,15 @@ public:
|
||||
|
||||
int render(DisplayDriver& d) override {
|
||||
d.setTextSize(1);
|
||||
d.drawCenteredHeader("MY TOOL");
|
||||
drawScreenHeader(d, "My tool");
|
||||
int next = 500;
|
||||
drawList(d, ROWS, _sel, _scroll, [&](int i, int y, bool sel, int reserve) {
|
||||
drawRowSelection(d, y, sel, reserve);
|
||||
d.setCursor(4, y);
|
||||
d.print(i == 0 ? "Alpha" : i == 1 ? "Bravo" : "Charlie");
|
||||
static const char* const L[ROWS] = { "Alpha", "Bravo", "Charlie" };
|
||||
const int m = info::valueRow(d, y, L[i], "50 m", sel, reserve); // value flush right
|
||||
if (m > 0 && m < next) next = m; // a marquee moving
|
||||
});
|
||||
return 500;
|
||||
return next;
|
||||
}
|
||||
|
||||
bool handleInput(char c) override {
|
||||
|
||||
@@ -26,10 +26,26 @@ combinations), Enter and Esc. [Hardware](./hardware.md) has the key maps.
|
||||
## Home screen
|
||||
|
||||
The home screen is a row of pages. On joystick devices, **Left / Right** steps
|
||||
through them and **Enter** opens the one shown:
|
||||
through them (on Favourites it moves between the slots first). The default
|
||||
order:
|
||||
|
||||
Clock, Recent, Radio, Bluetooth, Advert, GPS, Sensors, Tools, Shutdown,
|
||||
Settings, Messages, Favourites, Map.
|
||||
| Page | Shows |
|
||||
| ---- | ----- |
|
||||
| **Clock** | The time, the date and up to three fields of your choice; Enter opens the clock tools |
|
||||
| **Favourites** | Six slots for the conversations you open most ([Contacts](./contacts.md#favourites)) |
|
||||
| **Status** | Radio, GPS, battery and mesh at a glance; Enter opens the [Status screen](./tools.md#status) |
|
||||
| **Bluetooth** | Bluetooth on / off and the phone: connected, or the pairing PIN |
|
||||
| **Advert** | Send an advert now, and the auto-advert interval |
|
||||
| **Settings** | Brightness, GPS on / off, then all settings |
|
||||
| **Map** | Your position, the trail, people sharing theirs and the target ([Navigation](./navigation.md#map)) |
|
||||
| **Tools** | The two tools you used last with their state, then all tools |
|
||||
| **Messages** | The two latest conversations with their unread counts, then all messages |
|
||||
| **Shutdown** | Lock the screen, or hibernate (with the battery level) |
|
||||
|
||||
Most pages are **quick panels**: a few rows and a last one that opens the
|
||||
full screen. **Up / Down** picks a row and **Enter** acts on it. A value row
|
||||
(brightness, auto-advert) goes into editing: **Left / Right** change it while
|
||||
you watch, **Enter** or **Back** keeps it.
|
||||
|
||||
Settings › Home Pages sets their order and hides the ones you don't use;
|
||||
Settings and Messages are always shown.
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
+12
-4
@@ -6,14 +6,22 @@ messages still arrive, alarms still ring and the phone app still connects.
|
||||
## Locking and unlocking
|
||||
|
||||
**Hold Back and press Enter three times** within 3 seconds; the same locks
|
||||
and unlocks. A hint on the lock screen counts the presses. With a CardKB,
|
||||
**Fn+Esc** does it in one press.
|
||||
and unlocks. With a CardKB, **Fn+Esc** does it in one press.
|
||||
|
||||
**Settings › Display › Lock screen** locks the device whenever the screen
|
||||
turns off by itself.
|
||||
|
||||
The lock screen shows the time, the date and the first two of the Clock
|
||||
page's fields, but not the device's name.
|
||||
The lock screen has the status bar on top and one of two looks, set in
|
||||
Settings › Display › **Lock clock**:
|
||||
|
||||
- **Big**: the time in large digits, the date, and how many messages are
|
||||
unread.
|
||||
- **Compact**: a smaller time with the date beside it, and the Clock page's
|
||||
fields as rows below (unread messages too, if no field shows them).
|
||||
|
||||
The key that wakes the screen does nothing else, so a glance shows the data.
|
||||
A key pressed on the lit lock screen brings up the unlock hint at the bottom
|
||||
for a few seconds; it counts the presses. On e-ink the hint stays up.
|
||||
|
||||
> [!NOTE]
|
||||
> **Wio Tracker L2:** with **Lock screen** on (Settings › Display), waking
|
||||
|
||||
@@ -11,9 +11,10 @@ Unread counts show on each conversation, on the list and on the home screen.
|
||||
## Reading
|
||||
|
||||
Open a conversation to see its history as chat bubbles: yours on the right,
|
||||
received ones on the left, newest at the bottom. Each bubble shows the sender,
|
||||
its age and a small hop count: on a received message, how many repeaters it
|
||||
came through; on your own, how many repeaters were heard passing it on.
|
||||
received ones on the left, newest at the bottom. Each bubble shows its age
|
||||
and a small hop count: on a received message, how many repeaters it came
|
||||
through; on your own, how many repeaters were heard passing it on. In
|
||||
channels and rooms it also names the sender.
|
||||
|
||||
**Enter** on a message opens it full screen; **Left / Right** there pages to the
|
||||
older and newer one.
|
||||
@@ -44,10 +45,12 @@ haven't read, its unread count gets a **+** (for example `48+`).
|
||||
|
||||
## Writing
|
||||
|
||||
Open a conversation and choose **[+ send]** (or Enter at the bottom of the
|
||||
Open a conversation and choose **+ Send** (or Enter at the bottom of the
|
||||
history). Pick a quick message or **Custom message** for the keyboard.
|
||||
|
||||
- **Quick messages**: ten of your own, edited in Settings › Messages.
|
||||
- If a message can't be sent, you stay where you were: the keyboard keeps
|
||||
the text (its label reads **Not sent**), so you can send it again.
|
||||
- **Placeholders** fill in live data when the message is sent:
|
||||
`{loc}` (your GPS position), `{time}`, `{batt}`, and the readings of any
|
||||
sensor the device has: `{temp}`, `{hum}`, `{pres}`, `{alt}`, `{lux}`,
|
||||
|
||||
+11
-7
@@ -7,7 +7,7 @@ hardware is needed. Distances and speeds follow Settings › System › Units
|
||||
## Trail
|
||||
|
||||
**Tools › Trail** records your route in the background while you use the rest
|
||||
of the device (a blinking **G** in the status bar). Straight stretches are
|
||||
of the device (a pin in the status bar). Straight stretches are
|
||||
stored as their two ends, so the 512 points cover a long route. **Left / Right**
|
||||
switches between the **Summary** (distance, time, speed or pace), the **Map**
|
||||
(your route, waypoints, people sharing their position, the target) and the
|
||||
@@ -110,9 +110,11 @@ in one step. The target shows as a flag on the map.
|
||||
|
||||
## Map
|
||||
|
||||
The **Map** home page shows your position, the trail, waypoints, people
|
||||
sharing their position and the target. **Enter** opens the trail map;
|
||||
**hold Enter** shares your position.
|
||||
The **Map** home page shows a small map on the left (your position, the
|
||||
trail, people sharing their position and the target) and four lines beside
|
||||
it: GPS, the trail's distance, live shares, and the distance to the target
|
||||
(or the waypoint count when there is none).
|
||||
**Enter** opens the trail map; **hold Enter** shares your position.
|
||||
|
||||
> [!NOTE]
|
||||
> **Wio Tracker L2:** a real map with offline tiles on the SD card. Drag to
|
||||
@@ -122,8 +124,10 @@ sharing their position and the target. **Enter** opens the trail map;
|
||||
> Downloaded areas can be renamed, refreshed or deleted.
|
||||
> - **Live tiles**: with WiFi on, tiles for where you look are fetched and
|
||||
> cached, up to the size set in Settings › Storage.
|
||||
> - **Vector regions**: whole regions as packs made with
|
||||
> `tools/maps/osm_vector.py`, copied to the card.
|
||||
> - **Vector regions** (only in a build with `-D MAP_VECTOR`, unfinished):
|
||||
> whole regions as packs made with `tools/maps/osm_vector.py`, copied to
|
||||
> the card.
|
||||
>
|
||||
> The minimap on the home screen shows your surroundings at a glance; tap it
|
||||
> for the full map. The **Nodes** map shows every node with a position.
|
||||
> for the full map. The **Nodes** map is the same map with every node that
|
||||
> has a position on it; Back returns to Nodes.
|
||||
|
||||
@@ -7,11 +7,11 @@ board supports are shown.
|
||||
|
||||
| Section | What's there |
|
||||
| ------- | ------------ |
|
||||
| **Display** | Brightness, auto-off, lock screen and [PIN](./lock.md), battery as icon / % / volts, clock format and seconds, wake on message; on e-ink also rotation and full refresh |
|
||||
| **Display** | Brightness, auto-off, wake on message, lock screen, the lock clock's look and the [PIN](./lock.md), battery as icon / % / volts, time zone, clock format and seconds; on e-ink also rotation and full refresh |
|
||||
| **Sound** | Buzzer on / off / auto (quiet while the app is connected), volume, quiet hours, the melody for messages, channels and adverts |
|
||||
| **Home Pages** | Order of the home pages, and which are shown |
|
||||
| **Radio** | TX power, preset, frequency, SF / BW / CR, saved presets, Auto pwr, the scope list |
|
||||
| **System** | Device name, time zone, low-battery shutdown, GPS power saving, units, reboot |
|
||||
| **System** | Device name, low-battery shutdown, GPS power saving, units, the battery curve, reboot |
|
||||
| **Keyboard** | ABC or T9 layout, the two scripts, CardKB mode |
|
||||
| **Contacts** | Show all or favourites only (DMs, channels, rooms), favourites on top, contact expiry and prune |
|
||||
| **Messages** | Automatic resend of direct messages, the ten quick messages |
|
||||
@@ -27,12 +27,17 @@ A few notes:
|
||||
types the same name gets the same scope; it isn't encryption.
|
||||
- **Low battery** shuts the device down at the voltage you choose, which is
|
||||
also 0 % on the battery indicator.
|
||||
- **Batt curve** sets the cell voltage at 0, 10 … 100 % for a battery that
|
||||
doesn't follow the usual LiPo curve: **Left / Right** move a point by
|
||||
10 mV, **Reset** goes back to LiPo. The current voltage is shown, so a point
|
||||
can be set against what the battery reads.
|
||||
|
||||
> [!NOTE]
|
||||
> **Wio Tracker L2:** one list of pages:
|
||||
>
|
||||
> - **Device**: Display (including the lock and **Tap to wake**), Home apps,
|
||||
> Power (battery, GPS), Sound (with the melody editor), Keyboard, Messages
|
||||
> Power (battery, GPS, and the **Battery curve** as a chart whose points you
|
||||
> drag), Sound (with the melody editor), Keyboard, Messages
|
||||
> & contacts.
|
||||
> - **Connections**: Radio, Bluetooth, WiFi, GPS.
|
||||
> - **Map & data**: Map (trail, live sharing and arrival alert options),
|
||||
|
||||
+27
-23
@@ -1,8 +1,10 @@
|
||||
# Tools
|
||||
|
||||
On joystick devices, the tools are in **Tools**, grouped into Location, Comms
|
||||
and System. The navigation tools are on the [Navigation](./navigation.md)
|
||||
page, Nodes and Admin on [Contacts](./contacts.md).
|
||||
and System; the Tools home page keeps the two you used last. The navigation
|
||||
tools are on the [Navigation](./navigation.md) page, Nodes and Admin on
|
||||
[Contacts](./contacts.md); the [Status](#status) screen opens from its own
|
||||
home page.
|
||||
|
||||
> [!NOTE]
|
||||
> **Wio Tracker L2:** the tools are apps on the home screen: Messages, Nodes,
|
||||
@@ -12,8 +14,9 @@ page, Nodes and Admin on [Contacts](./contacts.md).
|
||||
|
||||
## Clock
|
||||
|
||||
The **Clock** home page shows the time, the date and up to three fields you
|
||||
choose (hold Enter): battery, temperature, humidity, pressure, altitude
|
||||
The **Clock** home page shows the time with a bar under it that fills with
|
||||
the seconds (Settings › Display › Clock seconds), the date, and up to three
|
||||
fields you choose (hold Enter): battery, temperature, humidity, pressure, altitude
|
||||
(barometric or GPS), light, CO₂, GPS position, satellites, contacts, unread
|
||||
messages. The time comes from GPS or the phone app; the time zone is in
|
||||
Settings.
|
||||
@@ -73,7 +76,7 @@ it off; **Network = Current** relays on your own frequency instead.
|
||||
Optional filters keep a mobile repeater from adding noise: skip adverts, a
|
||||
maximum hop count, **Yield** (let fixed repeaters go first), a minimum SNR,
|
||||
drop duplicates already relayed by someone else, and relay only your
|
||||
**scopes**. Diagnostics shows how much it forwards.
|
||||
**scopes**. The Status screen's **Mesh** tab shows how much it forwards.
|
||||
|
||||
## Ringtones
|
||||
|
||||
@@ -84,31 +87,32 @@ single contact or channel from its options.
|
||||
> [!NOTE]
|
||||
> **Wio Tracker L2:** the melody editor is under Settings › Sound.
|
||||
|
||||
## Diagnostics
|
||||
## Status
|
||||
|
||||
**Tools › Diagnostics** shows live counters (packets received and sent by
|
||||
type, forwarded, errors), memory, the radio's noise floor and the last
|
||||
packet's signal; a **System** tab with the firmware and radio settings; and a
|
||||
**Font** tab with a sample of every script the font covers. Hold Enter on the
|
||||
live tab to reset the counters.
|
||||
The **Status** home page sums up the radio, GPS, battery and mesh in four
|
||||
tiles; **Enter** opens the Status screen, one tab per subject (**Left /
|
||||
Right** between them, **Up / Down** scrolls):
|
||||
|
||||
| Tab | Shows |
|
||||
| --- | ----- |
|
||||
| **Radio** | Frequency, SF / BW / CR, TX power, the noise floor over the last half hour, the last packet's signal |
|
||||
| **GPS** | On / off (**Enter** switches it), fix, satellites, position, altitude, speed, precision, time to first fix |
|
||||
| **Sky** | The satellites on a sky plot, or each one's signal as bars (**Enter** swaps them); Wio Tracker L1 |
|
||||
| **Power** | Battery level, voltage, source and trend, then the readings of any sensors |
|
||||
| **Mesh** | Packets received and sent with a traffic line, forwarded, nodes heard, contacts; **hold Enter** resets the counters |
|
||||
| **System** | Uptime, firmware, device, memory, the send queue, errors, and a sample of every script the font covers |
|
||||
|
||||
**GPS pwr** in Settings › System turns the GPS off between fixes to save
|
||||
battery; anything that needs your position (the trail, live share, the
|
||||
locator) keeps it on.
|
||||
|
||||
> [!NOTE]
|
||||
> **Wio Tracker L2:** the Diagnostics app, with a **Noise** tab that
|
||||
> measures the noise floor over time.
|
||||
> measures the noise floor over time, and the **GPS** app, which draws a sky
|
||||
> plot of the satellites and each one's signal strength.
|
||||
|
||||
## GPIO
|
||||
|
||||
*Wio Tracker L1 only.* **Tools › GPIO** sets four spare pins as input,
|
||||
output or (GPIO1–2) analog input, shows their level and switches outputs. The
|
||||
bot's `!gpio1`…`!gpio4` commands read and set the same pins.
|
||||
|
||||
## GPS and sensors
|
||||
|
||||
The **GPS** home page shows the fix and satellites; **Sensors** shows the
|
||||
readings of the sensors the board has. **GPS pwr** in Settings › System turns
|
||||
the GPS off between fixes to save battery; anything that needs your position
|
||||
(the trail, live share, the locator) keeps it on.
|
||||
|
||||
> [!NOTE]
|
||||
> **Wio Tracker L2:** the **GPS** app draws a sky plot of the satellites and
|
||||
> each one's signal strength.
|
||||
|
||||
Reference in New Issue
Block a user