Public Access
`r` in the GNSS App (or `gnss track start|stop`) records a Track to /gnss/tracks/YYYYMMDD-HHMMSS.gpx: a point every 5 s once moved 5 m (lib/gnss/track, 7 tests: haversine, the rule, GPX text, the file name). It keeps recording with the App closed, shows REC in the Status Bar, and announces start and stop with a Toast. It needs a card and the time; switching GNSS off stops it. Tracks are written like Captures: past 90 % card usage, until full. Storage Clean-up gets a GNSS tracks category. A Track cut short by a reset or power loss has no GPX footer; the GNSS Service closes such files at the next boot. Verified on the device: a recorded Track and one interrupted by a reset both parse as GPX 1.1 on the PC. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace roro {
|
|
|
|
struct StoredFile {
|
|
std::string path;
|
|
uint64_t bytes;
|
|
};
|
|
|
|
// What Storage Clean-up offers (see CONTEXT.md). Notes are deliberately absent.
|
|
struct CleanupCategory {
|
|
const char* label;
|
|
const char* folder;
|
|
};
|
|
inline const CleanupCategory kCleanupCategories[] = {
|
|
{"IRC logs", "/irc"},
|
|
{"Wi-Fi scan logs", "/wifi/scans"},
|
|
{"Wi-Fi captures", "/captures/wifi"},
|
|
{"GNSS tracks", "/gnss/tracks"},
|
|
};
|
|
|
|
enum class CleanupAge { OneMonth, ThreeMonths, SixMonths, OneYear, Everything };
|
|
inline const char* const kCleanupAgeLabels[] = {"Older than 1 month", "Older than 3 months", "Older than 6 months",
|
|
"Older than 1 year", "Everything"};
|
|
|
|
// The files a clean-up would delete, and how much space that frees. Dates come from file names;
|
|
// undated files are only removed by Everything.
|
|
struct CleanupPlan {
|
|
std::vector<std::string> paths;
|
|
uint64_t bytes = 0;
|
|
|
|
static CleanupPlan make(const std::vector<StoredFile>& files, CleanupAge age, int todayDay);
|
|
};
|
|
|
|
std::string formatBytes(uint64_t bytes);
|
|
|
|
} // namespace roro
|