mirror of
https://github.com/pelgraine/Meck.git
synced 2026-08-04 15:52:42 +02:00
updated mymesh and platformio firmware version and date; fixed settings page so corrected radio preset list options available and custom frequency edits refined.
This commit is contained in:
@@ -8,11 +8,11 @@
|
|||||||
#define FIRMWARE_VER_CODE 8
|
#define FIRMWARE_VER_CODE 8
|
||||||
|
|
||||||
#ifndef FIRMWARE_BUILD_DATE
|
#ifndef FIRMWARE_BUILD_DATE
|
||||||
#define FIRMWARE_BUILD_DATE "13 Feb 2026"
|
#define FIRMWARE_BUILD_DATE "14 Feb 2026"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef FIRMWARE_VERSION
|
#ifndef FIRMWARE_VERSION
|
||||||
#define FIRMWARE_VERSION "Meck v0.8.6"
|
#define FIRMWARE_VERSION "Meck v0.8.7"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
|
#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
|
||||||
|
|||||||
@@ -24,10 +24,22 @@ struct RadioPreset {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const RadioPreset RADIO_PRESETS[] = {
|
static const RadioPreset RADIO_PRESETS[] = {
|
||||||
{ "MeshCore Default", 915.0f, 250.0f, 10, 5, 20 },
|
{ "Australia", 915.800f, 250.0f, 10, 5, 22 },
|
||||||
{ "Long Range", 915.0f, 125.0f, 12, 8, 20 },
|
{ "Australia (Narrow)", 916.575f, 62.5f, 7, 8, 22 },
|
||||||
{ "Fast/Short", 915.0f, 500.0f, 7, 5, 20 },
|
{ "Australia: SA, WA", 923.125f, 62.5f, 8, 8, 22 },
|
||||||
{ "EU Default", 869.4f, 250.0f, 10, 5, 14 },
|
{ "Australia: QLD", 923.125f, 62.5f, 8, 5, 22 },
|
||||||
|
{ "EU/UK (Narrow)", 869.618f, 62.5f, 8, 8, 14 },
|
||||||
|
{ "EU/UK (Long Range)", 869.525f, 250.0f, 11, 5, 14 },
|
||||||
|
{ "EU/UK (Medium Range)", 869.525f, 250.0f, 10, 5, 14 },
|
||||||
|
{ "Czech Republic (Narrow)",869.432f, 62.5f, 7, 5, 14 },
|
||||||
|
{ "EU 433 (Long Range)", 433.650f, 250.0f, 11, 5, 14 },
|
||||||
|
{ "New Zealand", 917.375f, 250.0f, 11, 5, 22 },
|
||||||
|
{ "New Zealand (Narrow)", 917.375f, 62.5f, 7, 5, 22 },
|
||||||
|
{ "Portugal 433", 433.375f, 62.5f, 9, 6, 14 },
|
||||||
|
{ "Portugal 868", 869.618f, 62.5f, 7, 6, 14 },
|
||||||
|
{ "Switzerland", 869.618f, 62.5f, 8, 8, 14 },
|
||||||
|
{ "USA/Canada (Recommended)",910.525f, 62.5f, 7, 5, 22 },
|
||||||
|
{ "Vietnam", 920.250f, 250.0f, 11, 5, 22 },
|
||||||
};
|
};
|
||||||
#define NUM_RADIO_PRESETS (sizeof(RADIO_PRESETS) / sizeof(RADIO_PRESETS[0]))
|
#define NUM_RADIO_PRESETS (sizeof(RADIO_PRESETS) / sizeof(RADIO_PRESETS[0]))
|
||||||
|
|
||||||
@@ -72,7 +84,7 @@ private:
|
|||||||
mesh::RTCClock* _rtc;
|
mesh::RTCClock* _rtc;
|
||||||
NodePrefs* _prefs;
|
NodePrefs* _prefs;
|
||||||
|
|
||||||
// Row table — rebuilt whenever channels change
|
// Row table — rebuilt whenever channels change
|
||||||
struct Row {
|
struct Row {
|
||||||
SettingsRowType type;
|
SettingsRowType type;
|
||||||
uint8_t param; // channel index for ROW_CHANNEL, preset index for ROW_RADIO_PRESET
|
uint8_t param; // channel index for ROW_CHANNEL, preset index for ROW_RADIO_PRESET
|
||||||
@@ -96,7 +108,7 @@ private:
|
|||||||
// Onboarding mode
|
// Onboarding mode
|
||||||
bool _onboarding;
|
bool _onboarding;
|
||||||
|
|
||||||
// Dirty flag for radio params — prompt to apply
|
// Dirty flag for radio params — prompt to apply
|
||||||
bool _radioChanged;
|
bool _radioChanged;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
@@ -198,11 +210,11 @@ private:
|
|||||||
strncpy(newCh.name, chanName, sizeof(newCh.name));
|
strncpy(newCh.name, chanName, sizeof(newCh.name));
|
||||||
newCh.name[31] = '\0';
|
newCh.name[31] = '\0';
|
||||||
|
|
||||||
// SHA-256 the channel name → first 16 bytes become the secret
|
// SHA-256 the channel name → first 16 bytes become the secret
|
||||||
uint8_t hash[32];
|
uint8_t hash[32];
|
||||||
mesh::Utils::sha256(hash, 32, (const uint8_t*)chanName, strlen(chanName));
|
mesh::Utils::sha256(hash, 32, (const uint8_t*)chanName, strlen(chanName));
|
||||||
memcpy(newCh.channel.secret, hash, 16);
|
memcpy(newCh.channel.secret, hash, 16);
|
||||||
// Upper 16 bytes left as zero → setChannel uses 128-bit mode
|
// Upper 16 bytes left as zero → setChannel uses 128-bit mode
|
||||||
|
|
||||||
// Find next empty slot
|
// Find next empty slot
|
||||||
for (uint8_t i = 0; i < MAX_GROUP_CHANNELS; i++) {
|
for (uint8_t i = 0; i < MAX_GROUP_CHANNELS; i++) {
|
||||||
@@ -400,8 +412,8 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
case ROW_FREQ:
|
case ROW_FREQ:
|
||||||
if (editing && _editMode == EDIT_NUMBER) {
|
if (editing && _editMode == EDIT_TEXT) {
|
||||||
snprintf(tmp, sizeof(tmp), "Freq: %.3f <W/S>", _editFloat);
|
snprintf(tmp, sizeof(tmp), "Freq: %s_ MHz", _editBuf);
|
||||||
} else {
|
} else {
|
||||||
snprintf(tmp, sizeof(tmp), "Freq: %.3f MHz", _prefs->freq);
|
snprintf(tmp, sizeof(tmp), "Freq: %.3f MHz", _prefs->freq);
|
||||||
}
|
}
|
||||||
@@ -611,6 +623,15 @@ public:
|
|||||||
_cursor = 1; // ROW_RADIO_PRESET
|
_cursor = 1; // ROW_RADIO_PRESET
|
||||||
startEditPicker(max(0, detectCurrentPreset()));
|
startEditPicker(max(0, detectCurrentPreset()));
|
||||||
}
|
}
|
||||||
|
} else if (type == ROW_FREQ) {
|
||||||
|
if (_editPos > 0) {
|
||||||
|
float f = strtof(_editBuf, nullptr);
|
||||||
|
f = constrain(f, 400.0f, 2500.0f);
|
||||||
|
_prefs->freq = f;
|
||||||
|
_radioChanged = true;
|
||||||
|
Serial.printf("Settings: Freq typed to %.3f\n", f);
|
||||||
|
}
|
||||||
|
_editMode = EDIT_NONE;
|
||||||
} else if (type == ROW_ADD_CHANNEL) {
|
} else if (type == ROW_ADD_CHANNEL) {
|
||||||
if (_editPos > 0) {
|
if (_editPos > 0) {
|
||||||
createHashtagChannel(_editBuf);
|
createHashtagChannel(_editBuf);
|
||||||
@@ -684,7 +705,6 @@ public:
|
|||||||
|
|
||||||
if (c == 'w' || c == 'W') {
|
if (c == 'w' || c == 'W') {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case ROW_FREQ: _editFloat += 0.1f; break;
|
|
||||||
case ROW_BW:
|
case ROW_BW:
|
||||||
// Cycle through common bandwidths
|
// Cycle through common bandwidths
|
||||||
if (_editFloat < 31.25f) _editFloat = 31.25f;
|
if (_editFloat < 31.25f) _editFloat = 31.25f;
|
||||||
@@ -703,7 +723,6 @@ public:
|
|||||||
}
|
}
|
||||||
if (c == 's' || c == 'S') {
|
if (c == 's' || c == 'S') {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case ROW_FREQ: _editFloat -= 0.1f; break;
|
|
||||||
case ROW_BW:
|
case ROW_BW:
|
||||||
if (_editFloat > 250.0f) _editFloat = 250.0f;
|
if (_editFloat > 250.0f) _editFloat = 250.0f;
|
||||||
else if (_editFloat > 125.0f) _editFloat = 125.0f;
|
else if (_editFloat > 125.0f) _editFloat = 125.0f;
|
||||||
@@ -721,10 +740,6 @@ public:
|
|||||||
if (c == '\r' || c == 13) {
|
if (c == '\r' || c == 13) {
|
||||||
// Confirm number edit
|
// Confirm number edit
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case ROW_FREQ:
|
|
||||||
_prefs->freq = constrain(_editFloat, 400.0f, 2500.0f);
|
|
||||||
_radioChanged = true;
|
|
||||||
break;
|
|
||||||
case ROW_BW:
|
case ROW_BW:
|
||||||
_prefs->bw = _editFloat;
|
_prefs->bw = _editFloat;
|
||||||
_radioChanged = true;
|
_radioChanged = true;
|
||||||
@@ -787,9 +802,13 @@ public:
|
|||||||
case ROW_RADIO_PRESET:
|
case ROW_RADIO_PRESET:
|
||||||
startEditPicker(max(0, detectCurrentPreset()));
|
startEditPicker(max(0, detectCurrentPreset()));
|
||||||
break;
|
break;
|
||||||
case ROW_FREQ:
|
case ROW_FREQ: {
|
||||||
startEditFloat(_prefs->freq);
|
// Use text input so user can type exact frequencies like 916.575
|
||||||
|
char freqStr[16];
|
||||||
|
snprintf(freqStr, sizeof(freqStr), "%.3f", _prefs->freq);
|
||||||
|
startEditText(freqStr);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case ROW_BW:
|
case ROW_BW:
|
||||||
startEditFloat(_prefs->bw);
|
startEditFloat(_prefs->bw);
|
||||||
break;
|
break;
|
||||||
@@ -828,7 +847,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Q: back — if radio changed, prompt to apply first
|
// Q: back — if radio changed, prompt to apply first
|
||||||
if (c == 'q' || c == 'Q') {
|
if (c == 'q' || c == 'Q') {
|
||||||
if (_radioChanged) {
|
if (_radioChanged) {
|
||||||
_editMode = EDIT_CONFIRM;
|
_editMode = EDIT_CONFIRM;
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ build_flags =
|
|||||||
-D PIN_DISPLAY_BL=45
|
-D PIN_DISPLAY_BL=45
|
||||||
-D PIN_USER_BTN=0
|
-D PIN_USER_BTN=0
|
||||||
-D CST328_PIN_RST=38
|
-D CST328_PIN_RST=38
|
||||||
-D FIRMWARE_VERSION='"Meck v0.8.6"'
|
-D FIRMWARE_VERSION='"Meck v0.8.7"'
|
||||||
build_src_filter = ${esp32_base.build_src_filter}
|
build_src_filter = ${esp32_base.build_src_filter}
|
||||||
+<../variants/LilyGo_TDeck_Pro>
|
+<../variants/LilyGo_TDeck_Pro>
|
||||||
+<helpers/sensors/*.cpp>
|
+<helpers/sensors/*.cpp>
|
||||||
|
|||||||
Reference in New Issue
Block a user