Ce module maintient l'association entre les ports matériels (CART1..CART4) et leurs descriptions UI (struct ui_cart_spec_t). Il gère également la cartouche actuellement active (identifiant cart_id_t
) afin que les couches hautes (UI, moteur temps réel) puissent interroger la configuration courante sans dépendre des couches basses (bus/uart).
Règles d’architecture :
- Header public : ne dépend que de cart_bus.h (pour
cart_id_t
).
- Aucune inclusion de headers UI : on utilise une forward declaration
struct ui_cart_spec_t
pour éviter toute dépendance montante vers l’UI.
- L’implémentation (.c) peut inclure
ui/ui_spec.h
si nécessaire.
- Note
- Le registre ne réalise aucune I/O. Il stocke des pointeurs vers des descriptions statiques (tables) et expose l’ID de la cartouche active.
◆ cart_registry_get_active_id()
cart_id_t cart_registry_get_active_id |
( |
void |
| ) |
|
Renvoie l'identifiant (cid) de la cartouche active.
- Renvoie
cart_id_t
(CART1..CART4)
- Note
- À utiliser par les couches bas niveau (cart_link) pour router les accès.
◆ cart_registry_get_ui_spec()
Récupère la spécification UI d'une cartouche sans la rendre active.
- Paramètres
-
id | Identifiant/port (CART1..CART4) |
- Renvoie
- Pointeur constant vers
struct ui_cart_spec_t
, ou NULL si non enregistrée.
◆ cart_registry_init()
void cart_registry_init |
( |
void |
| ) |
|
Initialise le registre des cartouches.
Réinitialise la table interne et positionne la cartouche active par défaut (typiquement CART1). Doit être appelé une seule fois au démarrage.
◆ cart_registry_is_present()
bool cart_registry_is_present |
( |
cart_id_t |
id | ) |
|
Indique si une cartouche est enregistrée (présente) pour un port donné.
- Paramètres
-
id | Identifiant/port (CART1..CART4) |
- Renvoie
- true si une spec UI est enregistrée pour
id
, false sinon.
◆ cart_registry_register()
Enregistre la spécification UI d'une cartouche pour un port donné.
- Paramètres
-
id | Identifiant/port (CART1..CART4) |
ui_spec | Pointeur constant vers la spécification UI de la cartouche |
- Note
- Ne modifie pas la cartouche active : voir cart_registry_switch.
◆ cart_registry_switch()
Rend active une cartouche et renvoie sa spécification UI.
- Paramètres
-
id | Identifiant/port à activer (CART1..CART4) |
- Renvoie
- Pointeur constant vers la spec UI de la cartouche désormais active, ou la précédente si
id
est invalide.
- Note
- Ne réalise aucune I/O : la sélection active est un état logiciel.