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_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_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) |
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 :
UI_DEST_CART
) → cart_link_param_changed()
UI_DEST_UI
) → mise à jour du shadow UI local + ui_backend_handle_ui()
UI_DEST_MIDI
) → traduction NOTE ON/OFF/PANIC vers midi.c
Points importants :
ui_backend_shadow_get()
et ui_backend_shadow_set()
gèrent à présent les deux espaces : UI_DEST_UI
(shadow local) et UI_DEST_CART
(shadow cartouche via CartLink).midi_cc(...)
. #define UI_BACKEND_UI_SHADOW_MAX 512u |
#define UI_DEST_CART 0x0000U |
Paramètre destiné à la cartouche active.
#define UI_DEST_ID | ( | x | ) | ((x) & 0x1FFFU) |
ID local sur 13 bits.
#define UI_DEST_MASK 0xE000U |
#define UI_DEST_MIDI 0x4000U |
Paramètre routé vers la pile MIDI.
#define UI_DEST_UI 0x8000U |
Paramètre purement interne à l'UI.
#define UI_MIDI_DEFAULT_CH 0u |
#define UI_MIDI_DEFAULT_VELOC 100u |
void ui_backend_all_notes_off | ( | void | ) |
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_note_off | ( | uint8_t | note | ) |
void ui_backend_note_on | ( | uint8_t | note, |
uint8_t | velocity | ||
) |
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_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. |