mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-16 06:47:52 +00:00
Merge branch 'master' into apollo
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include "PowerMon.h"
|
||||
#include "RTC.h"
|
||||
#include "Throttle.h"
|
||||
#include "buzz.h"
|
||||
#include "meshUtils.h"
|
||||
|
||||
#include "main.h" // pmu_found
|
||||
@@ -266,6 +267,9 @@ GPS_RESPONSE GPS::getACK(uint8_t class_id, uint8_t msg_id, uint32_t waitMillis)
|
||||
uint32_t startTime = millis();
|
||||
const char frame_errors[] = "More than 100 frame errors";
|
||||
int sCounter = 0;
|
||||
#ifdef GPS_DEBUG
|
||||
std::string debugmsg = "";
|
||||
#endif
|
||||
|
||||
for (int j = 2; j < 6; j++) {
|
||||
buf[8] += buf[j];
|
||||
@@ -291,20 +295,24 @@ GPS_RESPONSE GPS::getACK(uint8_t class_id, uint8_t msg_id, uint32_t waitMillis)
|
||||
if (b == frame_errors[sCounter]) {
|
||||
sCounter++;
|
||||
if (sCounter == 26) {
|
||||
#ifdef GPS_DEBUG
|
||||
|
||||
LOG_DEBUG(debugmsg.c_str());
|
||||
#endif
|
||||
return GNSS_RESPONSE_FRAME_ERRORS;
|
||||
}
|
||||
} else {
|
||||
sCounter = 0;
|
||||
}
|
||||
#ifdef GPS_DEBUG
|
||||
LOG_DEBUG("%02X", b);
|
||||
debugmsg += vformat("%02X", b);
|
||||
#endif
|
||||
if (b == buf[ack]) {
|
||||
ack++;
|
||||
} else {
|
||||
if (ack == 3 && b == 0x00) { // UBX-ACK-NAK message
|
||||
#ifdef GPS_DEBUG
|
||||
LOG_DEBUG("");
|
||||
LOG_DEBUG(debugmsg.c_str());
|
||||
#endif
|
||||
LOG_WARN("Got NAK for class %02X message %02X", class_id, msg_id);
|
||||
return GNSS_RESPONSE_NAK; // NAK received
|
||||
@@ -314,7 +322,7 @@ GPS_RESPONSE GPS::getACK(uint8_t class_id, uint8_t msg_id, uint32_t waitMillis)
|
||||
}
|
||||
}
|
||||
#ifdef GPS_DEBUG
|
||||
LOG_DEBUG("");
|
||||
LOG_DEBUG(debugmsg.c_str());
|
||||
LOG_WARN("No response for class %02X message %02X", class_id, msg_id);
|
||||
#endif
|
||||
return GNSS_RESPONSE_NONE; // No response received within timeout
|
||||
@@ -1623,6 +1631,9 @@ bool GPS::whileActive()
|
||||
{
|
||||
unsigned int charsInBuf = 0;
|
||||
bool isValid = false;
|
||||
#ifdef GPS_DEBUG
|
||||
std::string debugmsg = "";
|
||||
#endif
|
||||
if (powerState != GPS_ACTIVE) {
|
||||
clearBuffer();
|
||||
return false;
|
||||
@@ -1640,7 +1651,7 @@ bool GPS::whileActive()
|
||||
int c = _serial_gps->read();
|
||||
UBXscratch[charsInBuf] = c;
|
||||
#ifdef GPS_DEBUG
|
||||
LOG_DEBUG("%c", c);
|
||||
debugmsg += vformat("%c", (c >= 32 && c <= 126) ? c : '.');
|
||||
#endif
|
||||
isValid |= reader.encode(c);
|
||||
if (charsInBuf > sizeof(UBXscratch) - 10 || c == '\r') {
|
||||
@@ -1652,6 +1663,9 @@ bool GPS::whileActive()
|
||||
charsInBuf++;
|
||||
}
|
||||
}
|
||||
#ifdef GPS_DEBUG
|
||||
LOG_DEBUG(debugmsg.c_str());
|
||||
#endif
|
||||
return isValid;
|
||||
}
|
||||
void GPS::enable()
|
||||
@@ -1680,6 +1694,7 @@ void GPS::toggleGpsMode()
|
||||
if (config.position.gps_mode == meshtastic_Config_PositionConfig_GpsMode_ENABLED) {
|
||||
config.position.gps_mode = meshtastic_Config_PositionConfig_GpsMode_DISABLED;
|
||||
LOG_INFO("User toggled GpsMode. Now DISABLED.");
|
||||
playGPSDisableBeep();
|
||||
#ifdef GNSS_AIROHA
|
||||
if (powerState == GPS_ACTIVE) {
|
||||
LOG_DEBUG("User power Off GPS");
|
||||
@@ -1690,6 +1705,7 @@ void GPS::toggleGpsMode()
|
||||
} else if (config.position.gps_mode == meshtastic_Config_PositionConfig_GpsMode_DISABLED) {
|
||||
config.position.gps_mode = meshtastic_Config_PositionConfig_GpsMode_ENABLED;
|
||||
LOG_INFO("User toggled GpsMode. Now ENABLED");
|
||||
playGPSEnableBeep();
|
||||
enable();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user