Files
trail-mate/tools/web_simulator/preview_sensors.cpp
Trail Mate Dev 7c3fcc31c6 fix(ci): refresh startup contract and format web simulator sources
Match the shell initialization call inside run() so its failure guard does not break the network-independence contract. Preserve initialization ordering and blocking-network checks. Apply clang-format 14 to the web preview sources. Verified all 2107 CI-scoped source files and seven positive/negative startup contract cases.
2026-09-16 15:01:59 +08:00

109 lines
3.1 KiB
C++

#include "platform/ui/device_runtime.h"
#include "platform/ui/gps_runtime.h"
#include "platform/ui/screen_runtime.h"
#include "platform/ui/usb_support_runtime.h"
#include "platform/ui/walkie_runtime.h"
#include "ui/runtime/ui_feedback.h"
#include "ui/ui_common.h"
#include "ui/widgets/top_bar_power_presenter.h"
#include <algorithm>
#include <cstdint>
namespace platform::ui::device
{
bool gps_supported() { return true; }
bool card_ready() { return true; }
bool sd_ready() { return true; }
int power_tier() { return 0; }
bool gps_ready() { return true; }
void delay_ms(uint32_t) {}
} // namespace platform::ui::device
namespace platform::ui::gps
{
static bool sample_fix = true;
GpsState get_data()
{
GpsState s;
s.lat = 31.2304;
s.lng = 121.4737;
s.alt_m = 842;
s.satellites = 12;
s.valid = sample_fix;
s.has_alt = sample_fix;
return s;
}
bool get_gnss_snapshot(GnssSatInfo* out, std::size_t max, std::size_t* count, GnssStatus* status)
{
*count = std::min<std::size_t>(12, max);
for (std::size_t i = 0; i < *count; ++i) out[i] = {static_cast<uint16_t>(i + 1), static_cast<GnssSystem>(i % 4), static_cast<uint16_t>(i * 29), static_cast<uint8_t>(15 + (i * 13) % 70), static_cast<int8_t>(25 + i), sample_fix};
status->sats_in_use = sample_fix ? 12 : 0;
status->sats_in_view = 12;
status->hdop = sample_fix ? .9f : 0;
status->fix = sample_fix ? GnssFix::FIX3D : GnssFix::NOFIX;
return true;
}
GpsDiagnosticsSnapshot diagnostics()
{
GpsDiagnosticsSnapshot s;
s.enabled = true;
s.powered = true;
s.ready = true;
s.has_fix = sample_fix;
s.sats_in_view = 12;
s.sats_in_use = sample_fix ? 12 : 0;
s.satellites = s.sats_in_use;
s.last_rx_age_ms = 100;
s.chars_recent = 512;
return s;
}
void acquire_power_lease(const char*) {}
void release_power_lease(const char*) {}
} // namespace platform::ui::gps
namespace platform::ui::walkie
{
static Status status{false, false, false, 0, 0, 433.175f};
bool is_supported() { return true; }
bool start()
{
status.active = true;
return true;
}
void stop()
{
status.active = false;
status.tx = false;
}
bool is_active() { return status.active; }
void set_ptt(bool pressed)
{
status.tx = pressed && status.active;
status.tx_level = status.tx ? 65 : 0;
}
bool set_monitor_enabled(bool enabled)
{
status.monitor_enabled = enabled;
status.active = enabled;
return true;
}
bool monitor_enabled() { return status.monitor_enabled; }
int volume() { return 60; }
Status get_status() { return status; }
const char* last_error() { return ""; }
} // namespace platform::ui::walkie
namespace platform::ui::usb_support
{
static Status status{};
bool is_supported() { return true; }
bool start()
{
status = {true, false, "USB Active"};
return true;
}
void stop() { status = {false, false, "USB Idle"}; }
Status get_status() { return status; }
bool prepare_mass_storage_mode() { return true; }
void restore_mass_storage_mode() {}
} // namespace platform::ui::usb_support
void ui_update_top_bar_battery(ui::widgets::TopBar&) { ui::widgets::top_bar_power::refresh_now(); }
void ui_set_overlay_active(bool) {}