Brick Groove Machine 0.9.3
Firmware embarqué pour contrôleur/synthé Brick
 
Chargement...
Recherche...
Aucune correspondance
ui_backend.h
Aller à la documentation de ce fichier.
1
26#ifndef BRICK_UI_UI_BACKEND_H
27#define BRICK_UI_UI_BACKEND_H
28
29#include <stdint.h>
30#include <stdbool.h>
31#include "ch.h" /* systime_t */
32#include "ui_input.h" /* ui_input_event_t */
33#include "ui_overlay.h" /* ui_custom_mode_t, ui_overlay_id_t */
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/* ============================================================
40 * Espaces de destination (bits hauts de l’identifiant)
41 * ============================================================ */
42
48#define UI_DEST_MASK 0xE000U
49#define UI_DEST_CART 0x0000U
50#define UI_DEST_UI 0x8000U
51#define UI_DEST_MIDI 0x4000U
52#define UI_DEST_ID(x) ((x) & 0x1FFFU)
55/* ============================================================
56 * Contexte mode UI (état centralisé partagé)
57 * ============================================================ */
58
67
71typedef struct {
72 bool playing;
73 bool recording;
75
79typedef struct {
80 uint8_t page_index;
81 uint8_t page_count;
82 uint16_t held_mask;
83 bool held_flags[16];
84 systime_t hold_start[16];
85 uint8_t track_index;
86 uint8_t track_count;
88
92typedef struct {
93 bool active;
96
100typedef struct {
101 bool active;
103 int8_t octave;
104 bool arp_submenu_active; // --- ARP: persistance sous-menu ---
106
131
134
143
144/* ============================================================
145 * API publique
146 * ============================================================ */
147
151void ui_backend_init_runtime(void);
152
157
166const char* ui_backend_get_mode_label(void);
167
174void ui_mode_reset_context(ui_context_t *ctx, seq_mode_t next_mode);
175
181
199void ui_backend_param_changed(uint16_t id, uint8_t val, bool bitwise, uint8_t mask);
200
212uint8_t ui_backend_shadow_get(uint16_t id);
213bool ui_backend_shadow_try_get(uint16_t id, uint8_t *out_val); // --- FIX: détecter shadow non initialisé ---
214
226void ui_backend_shadow_set(uint16_t id, uint8_t val);
227
228/* ========================================================================== */
229/* API Track Select / synchronisation LED */
230/* ========================================================================== */
231
235void ui_track_mode_enter(void);
236
240void ui_track_mode_exit(void);
241
246void ui_track_select_from_bs(uint8_t bs_index);
247
253
254#ifdef __cplusplus
255}
256#endif
257
258#endif /* BRICK_UI_UI_BACKEND_H */
uint32_t systime_t
Definition ch.h:12
Événement d'entrée UI neutre (indépendant des drivers).
Definition ui_input.h:70
État Keyboard (mode custom latched).
Definition ui_backend.h:100
bool overlay_visible
Definition ui_backend.h:102
int8_t octave
Definition ui_backend.h:103
bool arp_submenu_active
Definition ui_backend.h:104
bool active
Definition ui_backend.h:101
Contexte runtime partagé entre shortcuts/backend.
Definition ui_backend.h:116
bool mute_plus_down
Definition ui_backend.h:123
ui_overlay_id_t overlay_id
Definition ui_backend.h:118
ui_transport_state_t transport
Definition ui_backend.h:126
uint8_t overlay_submode
Definition ui_backend.h:119
ui_seq_runtime_t seq
Definition ui_backend.h:127
ui_custom_mode_t custom_mode
Definition ui_backend.h:117
ui_keyboard_state_t keyboard
Definition ui_backend.h:128
bool overlay_active
Definition ui_backend.h:120
ui_mute_state_t mute_state
Definition ui_backend.h:122
bool mute_shift_latched
Definition ui_backend.h:124
ui_track_state_t track
Definition ui_backend.h:129
État seq (pages + steps maintenus).
Definition ui_backend.h:79
uint16_t held_mask
Definition ui_backend.h:82
uint8_t track_index
Definition ui_backend.h:85
uint8_t track_count
Definition ui_backend.h:86
uint8_t page_index
Definition ui_backend.h:80
uint8_t page_count
Definition ui_backend.h:81
État interne du sélecteur de piste.
Definition ui_backend.h:92
bool active
Definition ui_backend.h:93
bool shift_latched
Definition ui_backend.h:94
État transport global.
Definition ui_backend.h:71
bool playing
Definition ui_backend.h:72
bool recording
Definition ui_backend.h:73
void ui_track_mode_exit(void)
Quitte le mode Track Select.
Definition ui_backend.c:221
void ui_track_mode_enter(void)
Active le mode Track Select (SHIFT + BS11).
Definition ui_backend.c:200
void ui_track_select_from_bs(uint8_t bs_index)
Traite la sélection d'une piste depuis un bouton Step/BS.
Definition ui_backend.c:241
const ui_mode_context_t * ui_backend_get_mode_context(void)
Retourne le contexte runtime courant (lecture seule).
Definition ui_backend.c:314
void ui_backend_process_input(const ui_input_event_t *evt)
Traite un évènement d'entrée complet (bouton/encodeur).
Definition ui_backend.c:325
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.
Definition ui_backend.c:156
bool ui_backend_shadow_try_get(uint16_t id, uint8_t *out_val)
Definition ui_backend.c:861
ui_mute_state_t
État MUTE courant.
Definition ui_backend.h:62
@ UI_MUTE_STATE_OFF
Definition ui_backend.h:63
@ UI_MUTE_STATE_PMUTE
Definition ui_backend.h:65
@ UI_MUTE_STATE_QUICK
Definition ui_backend.h:64
void ui_backend_init_runtime(void)
Initialise le contexte mode + tables runtime.
Definition ui_backend.c:758
ui_mode_context_t ui_context_t
Definition ui_backend.h:133
void ui_backend_shadow_set(uint16_t id, uint8_t val)
Écriture dans le shadow register local (sans envoi immédiat).
Definition ui_backend.c:884
uint8_t ui_backend_shadow_get(uint16_t id)
Lecture du shadow register local (valeur courante affichable).
Definition ui_backend.c:850
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.
Definition ui_backend.c:798
const char * ui_backend_get_mode_label(void)
Renvoie le label court du mode actif (bandeau supérieur).
Definition ui_backend.c:318
seq_mode_t
Modes séquenceur utilisés pour la synchronisation LED.
Definition ui_backend.h:138
@ SEQ_MODE_DEFAULT
Definition ui_backend.h:139
@ SEQ_MODE_PMUTE
Definition ui_backend.h:140
@ SEQ_MODE_TRACK
Definition ui_backend.h:141
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.
Definition ui_mode_transition.c:64
Abstraction des entrées utilisateur (événements UI neutres).
Gestion centralisée des overlays UI (SEQ, ARP, …).
ui_overlay_id_t
Definition ui_overlay.h:25
ui_custom_mode_t
Definition ui_overlay.h:31