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

Pont neutre entre UI et couches basses (CartLink, UI interne, MIDI) + shadow UI local. Plus de détails...

#include "ui_backend.h"
#include "ui_backend_midi_ids.h"
#include "cart_link.h"
#include "cart_registry.h"
#include "brick_config.h"
#include "ui_shortcuts.h"
#include "ui_led_backend.h"
#include "ui_model.h"
#include "ui_overlay.h"
#include "ui_mute_backend.h"
#include "seq_led_bridge.h"
#include "seq_engine_runner.h"
#include "seq_recorder.h"
#include "clock_manager.h"
#include "ui_seq_ui.h"
#include "ui_seq_ids.h"
#include "ui_arp_ui.h"
#include "ui_arp_menu.h"
#include "ui_keyboard_bridge.h"
#include "ui_keyboard_ui.h"
#include "ui_keyboard_app.h"
#include "ui_controller.h"
#include "kbd_input_mapper.h"
#include "ui_mode_transition.h"
#include "midi.h"
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <stdio.h>

Structures de données

struct  ui_local_kv_t
 Petite table (id,val) pour mémoriser l’état des paramètres UI. Plus de détails...
 

Macros

#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)
 
#define UI_MIDI_DEFAULT_CH   0u
 
#define UI_MIDI_DEFAULT_VELOC   100u
 
#define UI_BACKEND_UI_SHADOW_MAX   512u
 

Fonctions

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.
 
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.
 
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_backend_process_input (const ui_input_event_t *evt)
 Traite un évènement d'entrée complet (bouton/encodeur).
 
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.
 
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_backend_note_on (uint8_t note, uint8_t velocity)
 
void ui_backend_note_off (uint8_t note)
 
void ui_backend_all_notes_off (void)
 

Description détaillée

Pont neutre entre UI et couches basses (CartLink, UI interne, MIDI) + shadow UI local.

Implémente la fonction de routage centrale ui_backend_param_changed() et un shadow local pour les paramètres UI_DEST_UI (vitrine / overlays).

Destinations supportées :

  • CART (UI_DEST_CART) → cart_link_param_changed()
  • UI interne (UI_DEST_UI) → mise à jour du shadow UI local + ui_backend_handle_ui()
  • MIDI (UI_DEST_MIDI) → traduction NOTE ON/OFF/PANIC vers midi.c

Points importants :

Documentation des macros

◆ UI_BACKEND_UI_SHADOW_MAX

#define UI_BACKEND_UI_SHADOW_MAX   512u

◆ UI_DEST_CART

#define UI_DEST_CART   0x0000U

Paramètre destiné à la cartouche active.

◆ UI_DEST_ID

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

ID local sur 13 bits.

◆ UI_DEST_MASK

#define UI_DEST_MASK   0xE000U

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

◆ UI_MIDI_DEFAULT_CH

#define UI_MIDI_DEFAULT_CH   0u

◆ UI_MIDI_DEFAULT_VELOC

#define UI_MIDI_DEFAULT_VELOC   100u

Documentation des fonctions

◆ ui_backend_all_notes_off()

void ui_backend_all_notes_off ( void  )

◆ 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_note_off()

void ui_backend_note_off ( uint8_t  note)

◆ ui_backend_note_on()

void ui_backend_note_on ( uint8_t  note,
uint8_t  velocity 
)

◆ 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_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.