Brick Groove Machine 0.9.3
Firmware embarqué pour contrôleur/synthé Brick
 
Chargement...
Recherche...
Aucune correspondance
Référence du fichier ui_backend.h

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_tui_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.
 

Description détaillée

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 :

  • Aucune I/O bloquante.
  • Accès uniquement depuis le thread UI.
  • Compatible 60 FPS : toutes les opérations sont O(1).

Documentation des macros

◆ UI_DEST_CART

#define UI_DEST_CART   0x0000U

Paramètre destiné à la cartouche active.

◆ UI_DEST_ID

#define UI_DEST_ID (   x)    ((x) & 0x1FFFU)

Extrait l'identifiant local sur 13 bits.

◆ UI_DEST_MASK

#define UI_DEST_MASK   0xE000U

Masque général des bits de destination.

◆ UI_DEST_MIDI

#define UI_DEST_MIDI   0x4000U

Paramètre routé vers la pile MIDI.

◆ UI_DEST_UI

#define UI_DEST_UI   0x8000U

Paramètre purement interne à l'UI.

Documentation des définitions de type

◆ ui_context_t

Alias générique du contexte UI (utilisé par les helpers de transition).

Documentation du type de l'énumération

◆ seq_mode_t

enum seq_mode_t

Modes séquenceur utilisés pour la synchronisation LED.

Valeurs énumérées
SEQ_MODE_DEFAULT 

Mode séquenceur normal (SEQ / overlays).

SEQ_MODE_PMUTE 

Mode MUTE / PMUTE actif.

SEQ_MODE_TRACK 

Mode Track Select actif.

◆ ui_mute_state_t

État MUTE courant.

Valeurs énumérées
UI_MUTE_STATE_OFF 

Aucun mute actif.

UI_MUTE_STATE_QUICK 

Mute rapide (SHIFT + + maintenu).

UI_MUTE_STATE_PMUTE 

Préparation de mute (PMUTE).

Documentation des fonctions

◆ ui_backend_get_mode_context()

const ui_mode_context_t * ui_backend_get_mode_context ( void  )

Retourne le contexte runtime courant (lecture seule).

◆ ui_backend_get_mode_label()

const char * ui_backend_get_mode_label ( void  )

Renvoie le label court du mode actif (bandeau supérieur).

  • La chaîne retournée est possédée par le backend et reste valide jusqu’à la prochaine transition de mode.
  • Toujours non NULL ; fallback "SEQ" si aucun mode n’est encore défini.

◆ ui_backend_init_runtime()

void ui_backend_init_runtime ( void  )

Initialise le contexte mode + tables runtime.

◆ ui_backend_param_changed()

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.

Paramètres
idIdentifiant de paramètre encodé (UI_DEST_* + ID local)
valNouvelle valeur (0/1 ou 0–255)
bitwiseSi true, appliquer un masque binaire
maskMasque de bits à appliquer lorsque bitwise est true

Cette fonction délègue la mise à jour vers la destination correspondante :

Appelée exclusivement depuis le thread UI.

◆ ui_backend_process_input()

void ui_backend_process_input ( const ui_input_event_t evt)

Traite un évènement d'entrée complet (bouton/encodeur).

Paramètres
evtÉvènement à traiter (doit être non NULL).

◆ ui_backend_shadow_get()

uint8_t ui_backend_shadow_get ( uint16_t  id)

Lecture du shadow register local (valeur courante affichable).

Paramètres
idIdentifiant de paramètre.
Renvoie
Valeur locale en cache pour ce paramètre.
Note
Aucun accès cartouche : cette fonction lit uniquement le shadow local synchronisé avec la dernière valeur envoyée.

◆ ui_backend_shadow_set()

void ui_backend_shadow_set ( uint16_t  id,
uint8_t  val 
)

Écriture dans le shadow register local (sans envoi immédiat).

Paramètres
idIdentifiant de paramètre.
valValeur à stocker localement.
Note
Maintient la cohérence entre l’UI et le shadow sans communication externe. L’envoi réel se fait via ui_backend_param_changed().

◆ ui_backend_shadow_try_get()

bool ui_backend_shadow_try_get ( uint16_t  id,
uint8_t *  out_val 
)

◆ ui_led_refresh_state_on_mode_change()

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.

Paramètres
new_modeNouveau mode séquenceur.

◆ ui_mode_reset_context()

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.

Paramètres
ctxContexte UI à remettre à jour.
next_modeMode séquenceur demandé après la transition.

◆ ui_track_mode_enter()

void ui_track_mode_enter ( void  )

Active le mode Track Select (SHIFT + BS11).

◆ ui_track_mode_exit()

void ui_track_mode_exit ( void  )

Quitte le mode Track Select.

◆ ui_track_select_from_bs()

void ui_track_select_from_bs ( uint8_t  bs_index)

Traite la sélection d'une piste depuis un bouton Step/BS.

Paramètres
bs_indexIndex BS 0..15 correspondant à la grille 4×4.