Public Access
M1 step 3: Log writing and Storage Clean-up
- lib/storage_model (host-tested): FAT-safe names, daily Log paths, dates from Log/Capture file names, CleanupPlan by category and age, byte formatting - StorageService does all card I/O on its task: queued Log lines are written in batches each second (dropped while Logs are paused), plus file listing and deletion jobs - Settings > Storage moves into StoragePage: usage, Clean up (category, age with size preview, confirmation), Erase SD card - Clock: local date for Log names - Serial: log <text>, sd list Verified on the device: lines land in /irc/dev/#test/2026-10-02.log with folders created as needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EhqxQ49eCju4CzKYNjZzwT
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
#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"},
|
||||
{"Probe-request logs", "/wifi/probes"},
|
||||
{"Wi-Fi captures", "/captures/wifi"},
|
||||
};
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user