Skip to content

Commit a0e116a

Browse files
authored
Merge branch 'develop' into develop
2 parents 1ac74ce + 5374291 commit a0e116a

39 files changed

+566
-294
lines changed

.github/workflows/release_channels.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ jobs:
6161
steps:
6262
- name: Checkout
6363
uses: actions/checkout@v5
64+
with:
65+
# Always use master branch for version bumps
66+
ref: master
6467

6568
- name: Setup Python
6669
uses: actions/setup-python@v6

.github/workflows/test_native.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ jobs:
143143
merge-multiple: true
144144

145145
- name: Test Report
146-
uses: dorny/test-reporter@v2.1.1
146+
uses: dorny/test-reporter@v2.2.0
147147
with:
148148
name: PlatformIO Tests
149149
path: testreport.xml

.trunk/trunk.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ plugins:
88
uri: https://github.com/trunk-io/plugins
99
lint:
1010
enabled:
11-
12-
- renovate@41.169.1
11+
12+
- renovate@42.5.4
1313
14-
14+
1515
1616
1717
1818
19-
19+
2020
2121
2222
@@ -26,9 +26,9 @@ lint:
2626
2727
2828
29-
- black@25.9.0
29+
- black@25.11.0
3030
- git-diff-check
31-
- gitleaks@8.28.0
31+
- gitleaks@8.29.0
3232
3333
ignore:
3434
- linters: [ALL]

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,3 @@ Join our community and help improve Meshtastic! 🚀
3737
## Stats
3838

3939
![Alt](https://repobeats.axiom.co/api/embed/8025e56c482ec63541593cc5bd322c19d5c0bdcf.svg "Repobeats analytics image")
40-

bin/org.meshtastic.meshtasticd.metainfo.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,12 @@
8787
</screenshots>
8888

8989
<releases>
90+
<release version="2.7.16" date="2025-11-19">
91+
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.7.16</url>
92+
</release>
93+
<release version="2.7.15" date="2025-11-13">
94+
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.7.15</url>
95+
</release>
9096
<release version="2.7.14" date="2025-11-03">
9197
<url type="details">https://github.com/meshtastic/firmware/releases?q=tag%3Av2.7.14</url>
9298
</release>

debian/changelog

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
meshtasticd (2.7.16.0) unstable; urgency=medium
2+
3+
* Version 2.7.16
4+
5+
-- GitHub Actions <github-actions[bot]@users.noreply.github.com> Wed, 19 Nov 2025 16:12:32 +0000
6+
7+
8+
meshtasticd (2.7.15.0) unstable; urgency=medium
9+
10+
* Version 2.7.15
11+
12+
-- GitHub Actions <github-actions[bot]@users.noreply.github.com> Thu, 13 Nov 2025 12:31:57 +0000
13+
114
meshtasticd (2.7.14.0) unstable; urgency=medium
215

316
* Version 2.7.14

meshtasticd.spec.rpkg

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ BuildRequires: pkgconfig(x11)
5050
BuildRequires: pkgconfig(libinput)
5151
BuildRequires: pkgconfig(xkbcommon-x11)
5252

53+
# libbsd is needed on older Fedora/RHEL to provide 'strlcpy'
54+
%if 0%{?fedora} >= 39 || 0%{?rhel} >= 10
55+
BuildRequires: glibc-devel >= 2.38
56+
%else
57+
BuildRequires: pkgconfig(libbsd-overlay)
58+
%endif
59+
5360
Requires: systemd-udev
5461

5562
%description

platformio.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ monitor_speed = 115200
6262
monitor_filters = direct
6363
lib_deps =
6464
# renovate: datasource=git-refs depName=meshtastic-esp8266-oled-ssd1306 packageName=https://github.com/meshtastic/esp8266-oled-ssd1306 gitBranch=master
65-
https://github.com/meshtastic/esp8266-oled-ssd1306/archive/0cbc26b1f8f61957af0475f486b362eafe7cc4e2.zip
65+
https://github.com/meshtastic/esp8266-oled-ssd1306/archive/2887bf4a19f64d92c984dcc8fd5ca7429e425e4a.zip
6666
# renovate: datasource=git-refs depName=meshtastic-OneButton packageName=https://github.com/meshtastic/OneButton gitBranch=master
6767
https://github.com/meshtastic/OneButton/archive/fa352d668c53f290cfa480a5f79ad422cd828c70.zip
6868
# renovate: datasource=git-refs depName=meshtastic-arduino-fsm packageName=https://github.com/meshtastic/arduino-fsm gitBranch=master
@@ -121,7 +121,7 @@ lib_deps =
121121
[device-ui_base]
122122
lib_deps =
123123
# renovate: datasource=git-refs depName=meshtastic/device-ui packageName=https://github.com/meshtastic/device-ui gitBranch=master
124-
https://github.com/meshtastic/device-ui/archive/19b7855e9a1d9deff37391659ca7194e4ef57c43.zip
124+
https://github.com/meshtastic/device-ui/archive/28167c67dfd13015a0b5eef1828f95fe8e3ab7c3.zip
125125

126126
; Common libs for environmental measurements in telemetry module
127127
[environmental_base]

src/Power.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ static HasBatteryLevel *batteryLevel; // Default to NULL for no battery level se
194194

195195
#ifdef BATTERY_PIN
196196

197-
static void adcEnable()
197+
void battery_adcEnable()
198198
{
199199
#ifdef ADC_CTRL // enable adc voltage divider when we need to read
200200
#ifdef ADC_USE_PULLUP
@@ -214,7 +214,7 @@ static void adcEnable()
214214
#endif
215215
}
216216

217-
static void adcDisable()
217+
static void battery_adcDisable()
218218
{
219219
#ifdef ADC_CTRL // disable adc voltage divider when we need to read
220220
#ifdef ADC_USE_PULLUP
@@ -320,7 +320,7 @@ class AnalogBatteryLevel : public HasBatteryLevel
320320
uint32_t raw = 0;
321321
float scaled = 0;
322322

323-
adcEnable();
323+
battery_adcEnable();
324324
#ifdef ARCH_ESP32 // ADC block for espressif platforms
325325
raw = espAdcRead();
326326
scaled = esp_adc_cal_raw_to_voltage(raw, adc_characs);
@@ -332,7 +332,7 @@ class AnalogBatteryLevel : public HasBatteryLevel
332332
raw = raw / BATTERY_SENSE_SAMPLES;
333333
scaled = operativeAdcMultiplier * ((1000 * AREF_VOLTAGE) / pow(2, BATTERY_SENSE_RESOLUTION_BITS)) * raw;
334334
#endif
335-
adcDisable();
335+
battery_adcDisable();
336336

337337
if (!initial_read_done) {
338338
// Flush the smoothing filter with an ADC reading, if the reading is plausibly correct
@@ -906,13 +906,8 @@ void Power::readPowerStatus()
906906
low_voltage_counter++;
907907
LOG_DEBUG("Low voltage counter: %d/10", low_voltage_counter);
908908
if (low_voltage_counter > 10) {
909-
#ifdef ARCH_NRF52
910-
// We can't trigger deep sleep on NRF52, it's freezing the board
911-
LOG_DEBUG("Low voltage detected, but not trigger deep sleep");
912-
#else
913909
LOG_INFO("Low voltage detected, trigger deep sleep");
914910
powerFSM.trigger(EVENT_LOW_BATTERY);
915-
#endif
916911
}
917912
} else {
918913
low_voltage_counter = 0;
@@ -1552,4 +1547,4 @@ bool Power::meshSolarInit()
15521547
{
15531548
return false;
15541549
}
1555-
#endif
1550+
#endif

src/gps/GPS.cpp

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -240,16 +240,16 @@ GPS_RESPONSE GPS::getACK(const char *message, uint32_t waitMillis)
240240
buffer[bytesRead] = b;
241241
bytesRead++;
242242
if ((bytesRead == 767) || (b == '\r')) {
243+
#ifdef GPS_DEBUG
244+
LOG_DEBUG(debugmsg.c_str());
245+
#endif
243246
if (strnstr((char *)buffer, message, bytesRead) != nullptr) {
244247
#ifdef GPS_DEBUG
245248
LOG_DEBUG("Found: %s", message); // Log the found message
246249
#endif
247250
return GNSS_RESPONSE_OK;
248251
} else {
249252
bytesRead = 0;
250-
#ifdef GPS_DEBUG
251-
LOG_DEBUG(debugmsg.c_str());
252-
#endif
253253
}
254254
}
255255
}
@@ -1275,6 +1275,24 @@ GnssModel_t GPS::probe(int serialSpeed)
12751275
memset(&ublox_info, 0, sizeof(ublox_info));
12761276
delay(100);
12771277

1278+
#if defined(PIN_GPS_RESET) && PIN_GPS_RESET != -1
1279+
digitalWrite(PIN_GPS_RESET, GPS_RESET_MODE); // assert for 10ms
1280+
delay(10);
1281+
digitalWrite(PIN_GPS_RESET, !GPS_RESET_MODE);
1282+
1283+
// attempt to detect the chip based on boot messages
1284+
std::vector<ChipInfo> passive_detect = {
1285+
{"AG3335", "$PAIR021,AG3335", GNSS_MODEL_AG3335},
1286+
{"AG3352", "$PAIR021,AG3352", GNSS_MODEL_AG3352},
1287+
{"RYS3520", "$PAIR021,REYAX_RYS3520_V2", GNSS_MODEL_AG3352},
1288+
{"UC6580", "UC6580", GNSS_MODEL_UC6580},
1289+
// as L76K is sort of a last ditch effort, we won't attempt to detect it by startup messages for now.
1290+
/*{"L76K", "SW=URANUS", GNSS_MODEL_MTK}*/};
1291+
GnssModel_t detectedDriver = getProbeResponse(500, passive_detect, serialSpeed);
1292+
if (detectedDriver != GNSS_MODEL_UNKNOWN) {
1293+
return detectedDriver;
1294+
}
1295+
#endif
12781296
// Close all NMEA sentences, valid for L76K, ATGM336H (and likely other AT6558 devices)
12791297
_serial_gps->write("$PCAS03,0,0,0,0,0,0,0,0,0,0,,,0,0*02\r\n");
12801298
delay(20);
@@ -1473,19 +1491,22 @@ GnssModel_t GPS::getProbeResponse(unsigned long timeout, const std::vector<ChipI
14731491
}
14741492

14751493
if (c == ',' || (responseLen >= 2 && response[responseLen - 2] == '\r' && response[responseLen - 1] == '\n')) {
1476-
#ifdef GPS_DEBUG
1477-
LOG_DEBUG(response);
1478-
#endif
14791494
// check if we can see our chips
14801495
for (const auto &chipInfo : responseMap) {
14811496
if (strstr(response, chipInfo.detectionString.c_str()) != nullptr) {
1497+
#ifdef GPS_DEBUG
1498+
LOG_DEBUG(response);
1499+
#endif
14821500
LOG_INFO("%s detected", chipInfo.chipName.c_str());
14831501
delete[] response; // Cleanup before return
14841502
return chipInfo.driver;
14851503
}
14861504
}
14871505
}
14881506
if (responseLen >= 2 && response[responseLen - 2] == '\r' && response[responseLen - 1] == '\n') {
1507+
#ifdef GPS_DEBUG
1508+
LOG_DEBUG(response);
1509+
#endif
14891510
// Reset the response buffer for the next potential message
14901511
responseLen = 0;
14911512
response[0] = '\0';
@@ -1572,8 +1593,6 @@ GPS *GPS::createGps()
15721593

15731594
#ifdef PIN_GPS_RESET
15741595
pinMode(PIN_GPS_RESET, OUTPUT);
1575-
digitalWrite(PIN_GPS_RESET, GPS_RESET_MODE); // assert for 10ms
1576-
delay(10);
15771596
digitalWrite(PIN_GPS_RESET, !GPS_RESET_MODE);
15781597
#endif
15791598

0 commit comments

Comments
 (0)