mirror of
https://github.com/markqvist/RNode_Firmware.git
synced 2026-04-27 22:35:36 +00:00
Standalone GPS beacon mode: when no KISS host is connected for 15s, the RNode transmits position and battery telemetry over LoRa. Two beacon paths: - LXMF (recommended): encrypted per-packet messages with announces, compatible with Sideband and any LXMF application. Supports IFAC network authentication. - Legacy JSON: plaintext or encrypted raw packets for simple collectors. Key changes: - GPS support for T-Beam Supreme S3 (L76K) and Heltec V4 (external) - SX1262 radio fixes: IQ polarity, DCD preamble lockup, RX reliability - LXMF identity management with NVS-backed Ed25519/X25519 keys - IFAC authentication (CMD_IFAC_KEY 0x89) for private networks - Per-channel serial isolation (USB, BLE, WiFi) - GPS status page in OLED display rotation - Provisioning via rnlog: provision-lxmf, provision-ifac - Documentation in Documentation/BEACON.md
71 lines
2.4 KiB
C
71 lines
2.4 KiB
C
// Copyright (C) 2024, Mark Qvist
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
#ifndef ROM_H
|
|
#define ROM_H
|
|
#define CHECKSUMMED_SIZE 0x0B
|
|
|
|
// ROM address map ///////////////
|
|
#define ADDR_PRODUCT 0x00
|
|
#define ADDR_MODEL 0x01
|
|
#define ADDR_HW_REV 0x02
|
|
#define ADDR_SERIAL 0x03
|
|
#define ADDR_MADE 0x07
|
|
#define ADDR_CHKSUM 0x0B
|
|
#define ADDR_SIGNATURE 0x1B
|
|
#define ADDR_INFO_LOCK 0x9B
|
|
|
|
#define ADDR_CONF_SF 0x9C
|
|
#define ADDR_CONF_CR 0x9D
|
|
#define ADDR_CONF_TXP 0x9E
|
|
#define ADDR_CONF_BW 0x9F
|
|
#define ADDR_CONF_FREQ 0xA3
|
|
#define ADDR_CONF_OK 0xA7
|
|
|
|
#define ADDR_CONF_BT 0xB0
|
|
#define ADDR_CONF_DSET 0xB1
|
|
#define ADDR_CONF_DINT 0xB2
|
|
#define ADDR_CONF_DADR 0xB3
|
|
#define ADDR_CONF_DBLK 0xB4
|
|
#define ADDR_CONF_DROT 0xB8
|
|
#define ADDR_CONF_PSET 0xB5
|
|
#define ADDR_CONF_PINT 0xB6
|
|
#define ADDR_CONF_BSET 0xB7
|
|
#define ADDR_CONF_DIA 0xB9
|
|
#define ADDR_CONF_WIFI 0xBA
|
|
#define ADDR_CONF_WCHN 0xBB
|
|
|
|
#define INFO_LOCK_BYTE 0x73
|
|
#define CONF_OK_BYTE 0x73
|
|
#define BT_ENABLE_BYTE 0x73
|
|
|
|
#define EEPROM_RESERVED 200
|
|
|
|
#define CONFIG_SIZE 256
|
|
#define ADDR_CONF_SSID 0x00
|
|
#define ADDR_CONF_PSK 0x21
|
|
#define ADDR_CONF_IP 0x42
|
|
#define ADDR_CONF_NM 0x46
|
|
|
|
// Beacon encryption config — stored in config region via config_addr()
|
|
// Primary region (eeprom_addr) is full past 0xBB; these use config space
|
|
// after WiFi config (SSID/PSK/IP/NM end at 0x49)
|
|
#define ADDR_BCN_OK 0x50 // Config valid flag (0x73 = valid) — 1 byte
|
|
#define ADDR_BCN_KEY 0x51 // Collector X25519 public key — 32 bytes (0x51-0x70)
|
|
#define ADDR_BCN_IHASH 0x71 // Collector identity hash — 16 bytes (0x71-0x80)
|
|
#define ADDR_BCN_DHASH 0x81 // Collector dest hash — 16 bytes (0x81-0x90)
|
|
//////////////////////////////////
|
|
|
|
#endif
|