mirror of
https://github.com/pelgraine/Meck.git
synced 2026-03-28 17:42:44 +01:00
79 lines
3.3 KiB
C++
79 lines
3.3 KiB
C++
#pragma once
|
||
#include <cstdint> // For uint8_t, uint32_t
|
||
|
||
#define TELEM_MODE_DENY 0
|
||
#define TELEM_MODE_ALLOW_FLAGS 1 // use contact.flags
|
||
#define TELEM_MODE_ALLOW_ALL 2
|
||
|
||
#define ADVERT_LOC_NONE 0
|
||
#define ADVERT_LOC_SHARE 1
|
||
|
||
struct NodePrefs { // persisted to file
|
||
float airtime_factor;
|
||
char node_name[32];
|
||
float freq;
|
||
uint8_t sf;
|
||
uint8_t cr;
|
||
uint8_t multi_acks;
|
||
uint8_t manual_add_contacts;
|
||
float bw;
|
||
uint8_t tx_power_dbm;
|
||
uint8_t telemetry_mode_base;
|
||
uint8_t telemetry_mode_loc;
|
||
uint8_t telemetry_mode_env;
|
||
float rx_delay_base;
|
||
uint32_t ble_pin;
|
||
uint8_t advert_loc_policy;
|
||
uint8_t buzzer_quiet;
|
||
uint8_t gps_enabled; // GPS enabled flag (0=disabled, 1=enabled)
|
||
uint32_t gps_interval; // GPS read interval in seconds
|
||
uint8_t autoadd_config; // bitmask for auto-add contacts config
|
||
int8_t utc_offset_hours; // UTC offset in hours (-12 to +14), default 0
|
||
uint8_t kb_flash_notify; // Keyboard backlight flash on new message (0=off, 1=on)
|
||
uint8_t ringtone_enabled; // Ringtone on incoming call (0=off, 1=on) — 4G only
|
||
uint8_t path_hash_mode; // 0=1-byte (legacy), 1=2-byte, 2=3-byte path hashes
|
||
uint8_t autoadd_max_hops; // 0=no limit, N=up to N-1 hops (max 64)
|
||
uint32_t gps_baudrate; // GPS baud rate (0 = use compile-time GPS_BAUDRATE default)
|
||
uint8_t interference_threshold; // Interference threshold in dB (0=disabled, 14+=enabled)
|
||
uint8_t dark_mode; // 0=off (white bg), 1=on (black bg)
|
||
uint8_t portrait_mode; // 0=landscape, 1=portrait — T5S3 only
|
||
uint8_t auto_lock_minutes; // 0=disabled, 2/5/10/15/30=auto-lock after idle
|
||
uint8_t hint_shown; // 0=show nav hint on boot, 1=already shown (dismiss permanently)
|
||
uint8_t large_font; // 0=tiny (built-in 6x8), 1=larger (FreeSans9pt) — T-Deck Pro only
|
||
uint8_t tx_fail_reset_threshold; // 0=disabled, 1-10, default 3
|
||
uint8_t rx_fail_reboot_threshold; // 0=disabled, 1-10, default 3
|
||
|
||
// --- Font helpers (inline, no overhead) ---
|
||
// Returns the DisplayDriver text-size index for "small/body" text.
|
||
// T-Deck Pro: 0 = built-in 6×8, 1 = FreeSans9pt.
|
||
// T5S3: both 0 and 1 are 12pt fonts (regular vs bold) with identical line
|
||
// height, so large_font has no layout effect there.
|
||
inline uint8_t smallTextSize() const {
|
||
return large_font ? 1 : 0;
|
||
}
|
||
|
||
// Returns the virtual-coordinate line height matching smallTextSize().
|
||
// T-Deck Pro size 0 → 9 (6×8 + 1px gap), size 1 → 11 (9pt ascent+descent).
|
||
// T5S3 size 0/1 → same 12pt height → always 9 in virtual coords.
|
||
inline int smallLineH() const {
|
||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||
return 9;
|
||
#else
|
||
return large_font ? 11 : 9;
|
||
#endif
|
||
}
|
||
|
||
// Returns the Y offset for selection highlight fillRect (T-Deck Pro only).
|
||
// Size 0 (built-in font): cursor positions at top-left, +5 offset in
|
||
// setCursor places text below → fillRect at y+5 aligns with text.
|
||
// Size 1 (FreeSans9pt): cursor positions at baseline, ascenders render
|
||
// upward → fillRect must start above baseline to cover ascenders.
|
||
// T5S3: always 0 (both sizes use baseline fonts with highlight at y).
|
||
inline int smallHighlightOff() const {
|
||
#if defined(LilyGo_T5S3_EPaper_Pro)
|
||
return 0;
|
||
#else
|
||
return large_font ? -2 : 5;
|
||
#endif
|
||
}
|
||
}; |