mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-09-26 16:27:57 +00:00
Complete ESP32 partition expander and adaptive LoRa OTA pacing
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
repeater: "Repeater",
|
||||
room: "Room Server",
|
||||
sensor: "Sensor / telemetry",
|
||||
"partition-expander": "Partition Expander",
|
||||
terminal: "Terminal Chat",
|
||||
kiss: "KISS modem",
|
||||
other: "Other",
|
||||
@@ -264,6 +265,10 @@
|
||||
role: "sensor",
|
||||
pattern: /_sensor(?=$|[_-])/i,
|
||||
},
|
||||
{
|
||||
role: "partition-expander",
|
||||
pattern: /_partition_expander(?=$|[_-])/i,
|
||||
},
|
||||
{
|
||||
role: "terminal",
|
||||
pattern: /_terminal_chat(?=$|[_-])/i,
|
||||
@@ -365,7 +370,8 @@
|
||||
(parts.role === "companion" && mode === "full")
|
||||
? "full"
|
||||
: "standard";
|
||||
const explicitOta = lowerTarget.includes("lora_ota")
|
||||
const explicitOta = parts.role === "partition-expander" ||
|
||||
lowerTarget.includes("lora_ota")
|
||||
? "lora-receiver"
|
||||
: parts.role === "companion" && mode === "full"
|
||||
? "lora-source"
|
||||
@@ -979,7 +985,8 @@
|
||||
}
|
||||
|
||||
function optionSort(field, a, b) {
|
||||
const roleOrder = ["companion", "repeater", "room", "sensor", "terminal", "kiss", "other"];
|
||||
const roleOrder = ["companion", "repeater", "room", "sensor",
|
||||
"partition-expander", "terminal", "kiss", "other"];
|
||||
const loggingOrder = ["none", "usb", "wifi", "both"];
|
||||
const otaOrder = ["none", "lora-receiver", "lora-source"];
|
||||
const featureOrder = ["standard", "full"];
|
||||
@@ -1025,6 +1032,15 @@
|
||||
"Verify that the hardware name and every displayed variant match the physical board.",
|
||||
"Back up configuration, keys, and radio settings before changing roles or profiles.",
|
||||
];
|
||||
if (profile.role === "partition-expander") {
|
||||
return common.concat(
|
||||
kind === "zip"
|
||||
? ["This ZIP is a staged ESP32 partition-migration package, not an nRF52 Serial DFU package. Follow its included README for the existing Wi-Fi or LoRa update route."]
|
||||
: ["Install this temporary bridge only through the existing OTA route documented for this exact board and source layout; do not flash it as permanent node firmware."],
|
||||
["Keep power stable while the partition table changes. Confirm that private identity restoration succeeded before transferring the exact Full application over LoRa or Wi-Fi.",
|
||||
"The Partition Expander is a temporary update receiver, not a repeater, client, or sensor firmware."]
|
||||
);
|
||||
}
|
||||
const memory = profile.controls;
|
||||
const selectedAsset = canonicalAsset(profile.files, kind);
|
||||
if (memory && memory.memoryNote && memory.memorySource &&
|
||||
|
||||
@@ -196,8 +196,10 @@ set ota.speed <0.05..3>
|
||||
`1` preserves the current OTA timing. Values below `1` slow OTA traffic;
|
||||
values above `1` shorten adjustable delays. For example, `0.5` doubles those
|
||||
delays and `3` divides them by three. Decimal values such as `.05` work.
|
||||
`ota config speed <factor>` is an equivalent setter, and `ota config` shows
|
||||
the value. The setting is saved and can be changed during a transfer.
|
||||
`ota config speed <factor>` is an equivalent setter. `get ota.speed` and
|
||||
`ota config` show both the saved value and the effective `packet` pacing
|
||||
factor. Automatic loss response may make packet spacing slower without
|
||||
changing the saved setting. The setting can be changed during a transfer.
|
||||
|
||||
Apply it on the source, destination, and relays. It controls all LoRa OTA
|
||||
packet types on both profiles, relay timing, discovery, and OTA adverts.
|
||||
|
||||
@@ -472,10 +472,10 @@ required `ver` command instead of entering an operator continuation loop.
|
||||
The default TempRadio tuple is:
|
||||
|
||||
```text
|
||||
909.950,250,5,5,120
|
||||
909.5,500,5,5,120
|
||||
```
|
||||
|
||||
The test default is 250 kHz bandwidth, SF5, and CR5. The frequency is only a
|
||||
The lab test default is 909.5 MHz, 500 kHz bandwidth, SF5, and CR5. The frequency is only a
|
||||
North American example: choose a legal frequency supported by every
|
||||
participating radio and appropriate to your location. Older radios that do not
|
||||
support SF5 require a complete replacement tuple passed with `--temp-radio`.
|
||||
|
||||
@@ -430,8 +430,13 @@ already received; queue congestion alone does not trigger legacy fallback.
|
||||
Retry timing includes the primary channel when an RX-only temporary radio2
|
||||
uses crossover to send requests there.
|
||||
|
||||
`ota config speed 0.5` is an equivalent setter. `ota config speed` and
|
||||
`ota speed` read the current factor; the `ota config` summary also includes it.
|
||||
`ota config speed 0.5` is an equivalent setter. `get ota.speed`,
|
||||
`ota config speed`, and `ota speed` show both the saved `ota.speed` setting and
|
||||
the effective `packet` pace. The latter is the slower of the saved speed and
|
||||
the sender's automatic loss-responsive packet-spacing factor; it does not
|
||||
replace the saved setting or change non-packet OTA timers. The `ota config`
|
||||
summary also shows both values. If no OTA workspace is active, the automatic
|
||||
factor starts at 1, so `packet` reflects the saved setting up to 1x.
|
||||
The setting is available on OTA-enabled repeaters, rooms, sensors, Companions,
|
||||
and seeder-only builds. Its separate `/ota_speed` settings file preserves the
|
||||
existing preference layouts and does not need an active OTA workspace.
|
||||
|
||||
Reference in New Issue
Block a user