www.safezone-fpv.com

Station S - Discover · Extraits

Cette page complète la tuile Discover en montrant la bibliothèque offline (microSD), la sélection kiosque et le filtrage par type de média, sans révéler lintégralité du dépôt.

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.

Future capture Discover

Placeholder : aperçu futur du kiosque offline.