Pont neutre entre la couche UI (controller/model) et les couches basses (cart, UI interne, MIDI). Plus de détails...
#include <stdint.h>
#include <stdbool.h>
#include "ch.h"
#include "ui_input.h"
#include "ui_overlay.h"
Aller au code source de ce fichier.
Structures de données | |
struct | ui_transport_state_t |
État transport global. Plus de détails... | |
struct | ui_seq_runtime_t |
État seq (pages + steps maintenus). Plus de détails... | |
struct | ui_track_state_t |
État interne du sélecteur de piste. Plus de détails... | |
struct | ui_keyboard_state_t |
État Keyboard (mode custom latched). Plus de détails... | |
struct | ui_mode_context_t |
Contexte runtime partagé entre shortcuts/backend. Plus de détails... | |
Macros | |
UI Backend Destination Masks | |
Masques de routage pour les paramètres UI. | |
#define | UI_DEST_MASK 0xE000U |
#define | UI_DEST_CART 0x0000U |
#define | UI_DEST_UI 0x8000U |
#define | UI_DEST_MIDI 0x4000U |
#define | UI_DEST_ID(x) ((x) & 0x1FFFU) |
Définitions de type | |
typedef ui_mode_context_t | ui_context_t |
Énumérations | |
enum | ui_mute_state_t { UI_MUTE_STATE_OFF = 0 , UI_MUTE_STATE_QUICK , UI_MUTE_STATE_PMUTE } |
État MUTE courant. Plus de détails... | |
enum | seq_mode_t { SEQ_MODE_DEFAULT = 0 , SEQ_MODE_PMUTE , SEQ_MODE_TRACK } |
Modes séquenceur utilisés pour la synchronisation LED. Plus de détails... | |
Fonctions | |
void | ui_backend_init_runtime (void) |
Initialise le contexte mode + tables runtime. | |
const ui_mode_context_t * | ui_backend_get_mode_context (void) |
Retourne le contexte runtime courant (lecture seule). | |
const char * | ui_backend_get_mode_label (void) |
Renvoie le label court du mode actif (bandeau supérieur). | |
void | ui_mode_reset_context (ui_context_t *ctx, seq_mode_t next_mode) |
Réinitialise les états runtime lors d'une transition de mode. | |
void | ui_backend_process_input (const ui_input_event_t *evt) |
Traite un évènement d'entrée complet (bouton/encodeur). | |
void | ui_backend_param_changed (uint16_t id, uint8_t val, bool bitwise, uint8_t mask) |
Notifie un changement de paramètre issu de l’UI. | |
uint8_t | ui_backend_shadow_get (uint16_t id) |
Lecture du shadow register local (valeur courante affichable). | |
bool | ui_backend_shadow_try_get (uint16_t id, uint8_t *out_val) |
void | ui_backend_shadow_set (uint16_t id, uint8_t val) |
Écriture dans le shadow register local (sans envoi immédiat). | |
void | ui_track_mode_enter (void) |
Active le mode Track Select (SHIFT + BS11). | |
void | ui_track_mode_exit (void) |
Quitte le mode Track Select. | |
void | ui_track_select_from_bs (uint8_t bs_index) |
Traite la sélection d'une piste depuis un bouton Step/BS. | |
void | ui_led_refresh_state_on_mode_change (seq_mode_t new_mode) |
Force la republication de l'état LED lors d'un changement de mode. | |
Pont neutre entre la couche UI (controller/model) et les couches basses (cart, UI interne, MIDI).
Le backend UI est la seule interface autorisée entre la logique UI (controller) et les sous-systèmes matériels ou logiciels (CartLink, MIDI, etc.). Il implémente un routage centralisé des mises à jour de paramètres, sans exposer les dépendances basses couches à la UI.
Trois destinations principales sont supportées :
Destination | Masque binaire | Description |
---|---|---|
UI_DEST_CART | 0x0000 | Paramètres routés vers la cartouche active |
UI_DEST_UI | 0x8000 | Paramètres internes à l’UI (menus, overlays) |
UI_DEST_MIDI | 0x4000 | Paramètres routés vers la pile MIDI |
Invariants :
#define UI_DEST_CART 0x0000U |
Paramètre destiné à la cartouche active.
#define UI_DEST_ID | ( | x | ) | ((x) & 0x1FFFU) |
Extrait l'identifiant local sur 13 bits.
#define UI_DEST_MASK 0xE000U |
Masque général des bits de destination.
#define UI_DEST_MIDI 0x4000U |
Paramètre routé vers la pile MIDI.
#define UI_DEST_UI 0x8000U |
Paramètre purement interne à l'UI.
typedef ui_mode_context_t ui_context_t |
Alias générique du contexte UI (utilisé par les helpers de transition).
enum seq_mode_t |
enum ui_mute_state_t |
const ui_mode_context_t * ui_backend_get_mode_context | ( | void | ) |
Retourne le contexte runtime courant (lecture seule).
const char * ui_backend_get_mode_label | ( | void | ) |
Renvoie le label court du mode actif (bandeau supérieur).
void ui_backend_init_runtime | ( | void | ) |
Initialise le contexte mode + tables runtime.
void ui_backend_param_changed | ( | uint16_t | id, |
uint8_t | val, | ||
bool | bitwise, | ||
uint8_t | mask | ||
) |
Notifie un changement de paramètre issu de l’UI.
id | Identifiant de paramètre encodé (UI_DEST_* + ID local ) |
val | Nouvelle valeur (0/1 ou 0–255) |
bitwise | Si true , appliquer un masque binaire |
mask | Masque de bits à appliquer lorsque bitwise est true |
Cette fonction délègue la mise à jour vers la destination correspondante :
UI_DEST_CART
→ cart_link_param_changed()
UI_DEST_UI
→ ui_backend_handle_ui()
UI_DEST_MIDI
→ ui_backend_handle_midi()
Appelée exclusivement depuis le thread UI.
void ui_backend_process_input | ( | const ui_input_event_t * | evt | ) |
Traite un évènement d'entrée complet (bouton/encodeur).
evt | Évènement à traiter (doit être non NULL). |
uint8_t ui_backend_shadow_get | ( | uint16_t | id | ) |
Lecture du shadow register local (valeur courante affichable).
id | Identifiant de paramètre. |
void ui_backend_shadow_set | ( | uint16_t | id, |
uint8_t | val | ||
) |
Écriture dans le shadow register local (sans envoi immédiat).
id | Identifiant de paramètre. |
val | Valeur à stocker localement. |
ui_backend_param_changed()
. bool ui_backend_shadow_try_get | ( | uint16_t | id, |
uint8_t * | out_val | ||
) |
void ui_led_refresh_state_on_mode_change | ( | seq_mode_t | new_mode | ) |
Force la republication de l'état LED lors d'un changement de mode.
new_mode | Nouveau mode séquenceur. |
void ui_mode_reset_context | ( | ui_context_t * | ctx, |
seq_mode_t | next_mode | ||
) |
Réinitialise les états runtime lors d'une transition de mode.
ctx | Contexte UI à remettre à jour. |
next_mode | Mode séquenceur demandé après la transition. |
void ui_track_mode_enter | ( | void | ) |
Active le mode Track Select (SHIFT + BS11).
void ui_track_mode_exit | ( | void | ) |
Quitte le mode Track Select.
void ui_track_select_from_bs | ( | uint8_t | bs_index | ) |
Traite la sélection d'une piste depuis un bouton Step/BS.
bs_index | Index BS 0..15 correspondant à la grille 4×4. |