Public Access
M2 step 4: GNSS mark in the Status Bar; the clock follows the Fix
Q61: a muted G while searching (or the receiver is silent), G with a 2D Fix, G and the satellite count with a 3D Fix; nothing when GNSS is off. Verified on the device by a window: 3D Fix, 9 of 11 satellites used (GPS, GLONASS, BeiDou), HDOP 1.3, Status Bar "G9", and "gnss: clock set". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
This commit is contained in:
@@ -91,6 +91,14 @@ static StatusInfo currentStatus() {
|
||||
s.sdLevel = storageState.level;
|
||||
s.compose = keyMapper.pendingCompose();
|
||||
s.unread = irc->totalUnread();
|
||||
if (gnssService && gnssService->on()) {
|
||||
const auto& g = gnssService->state();
|
||||
bool fresh = gnssService->receiving(millis());
|
||||
s.gnss = !fresh || g.fix == gnss::FixType::None ? StatusInfo::Gnss::Searching
|
||||
: g.fix == gnss::FixType::TwoD ? StatusInfo::Gnss::TwoD
|
||||
: StatusInfo::Gnss::ThreeD;
|
||||
s.gnssSatellites = g.satellitesUsed;
|
||||
}
|
||||
using WifiState = WifiController::State;
|
||||
switch (wifi->state()) {
|
||||
case WifiState::Connected: {
|
||||
|
||||
@@ -48,6 +48,12 @@ void statusBar(Canvas& c, const StatusInfo& info) {
|
||||
case StatusInfo::Wifi::Monitoring: right("MON", kAccent); break;
|
||||
case StatusInfo::Wifi::None: break;
|
||||
}
|
||||
switch (info.gnss) { // Q61: muted while searching, normal with a Fix, the count with a 3D Fix
|
||||
case StatusInfo::Gnss::Searching: right("G", kMuted); break;
|
||||
case StatusInfo::Gnss::TwoD: right("G", kText); break;
|
||||
case StatusInfo::Gnss::ThreeD: right("G" + std::to_string(info.gnssSatellites), kText); break;
|
||||
case StatusInfo::Gnss::None: break;
|
||||
}
|
||||
if (info.compose) right(std::string("opt ") + (info.compose == '*' ? "" : std::string(1, info.compose)), kAccent);
|
||||
c.setTextDatum(top_left);
|
||||
}
|
||||
|
||||
+3
-1
@@ -24,11 +24,13 @@ struct StatusInfo {
|
||||
enum class Wifi { None, Searching, Connected, Monitoring } wifi = Wifi::None;
|
||||
int wifiBars = 0; // 0..3 when Connected
|
||||
int unread = 0; // unread messages across Services
|
||||
enum class Gnss { None, Searching, TwoD, ThreeD } gnss = Gnss::None; // None: GNSS off (Q61)
|
||||
int gnssSatellites = 0; // used in the Fix
|
||||
|
||||
bool operator==(const StatusInfo& o) const {
|
||||
return title == o.title && batteryPercent == o.batteryPercent && clock == o.clock &&
|
||||
sdPresent == o.sdPresent && sdLevel == o.sdLevel && compose == o.compose && wifi == o.wifi &&
|
||||
wifiBars == o.wifiBars && unread == o.unread;
|
||||
wifiBars == o.wifiBars && unread == o.unread && gnss == o.gnss && gnssSatellites == o.gnssSatellites;
|
||||
}
|
||||
bool operator!=(const StatusInfo& o) const { return !(*this == o); }
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user