1. Dossiers concernés
assets/station_s/
+- include/app/ui/discover/
¦ +- obb_discover_library.h
+- src/app/ui/discover/
+- obb_discover_library.cpp
Cest le pendant firmware du kiosque décrit dans la page concept (cartes + médias citoyens).
2. Structure de contenu
struct ContentEntry {
std::string title;
std::string description;
std::string path; // microSD
MediaType type = MediaType::kArticle;
uint32_t bytes = 0;
uint32_t checksum = 0;
bool kiosk_visible = true;
};
On retrouve les attributs cités dans la page concept (titre, type, option kiosque).
3. Scan microSD simplifié
void library_init(const char *root_folder) {
s_root = root_folder ? root_folder : "";
s_entries.clear();
if (s_root.empty()) return;
for (const auto &entry : std::filesystem::recursive_directory_iterator(s_root)) {
if (!entry.is_regular_file()) continue;
ContentEntry ce;
ce.path = entry.path().string();
ce.title = entry.path().stem().string();
ce.type = guess_type(entry.path());
ce.bytes = static_cast(entry.file_size());
ce.checksum = fake_crc32(ce.path);
s_entries.push_back(std::move(ce));
}
}
Les métadonnées missionnaires (hash, taille) sont alignées sur ce quon promet côté citoyens : rien nest téléchargé sans être listé.
4. Filtres pour la tuile
std::vector<ContentEntry> list_recent(std::size_t limit);
std::vector<ContentEntry> filter_by_type(MediaType type, std::size_t limit);
Ces fonctions alimentent les cartes (audio, PDF, carte) selon la couleur de la tuile. Cest ce que la page Discover décrit dans Travaux en cours.
Placeholder : aperçu futur du kiosque offline.