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

Backend LED adressable (SEQ/MUTE/KEYBOARD) — rendu unifié et atomique. Plus de détails...

#include <string.h>
#include "ch.h"
#include "brick_config.h"
#include "chsys.h"
#include "ui_led_backend.h"
#include "ui_led_palette.h"
#include "drv_leds_addr.h"
#include "ui_led_seq.h"

Structures de données

struct  ui_led_backend_evt_t
 

Macros

#define NUM_STEPS   16
 

Fonctions

void ui_led_backend_init (void)
 Init du backend (driver + état visuel).
 
void ui_led_backend_post_event (ui_led_event_t event, uint8_t index, bool state)
 File un évènement LED dans la queue non bloquante (contexte thread).
 
void ui_led_backend_post_event_i (ui_led_event_t event, uint8_t index, bool state)
 Variante ISR de ui_led_backend_post_event (ne bloque jamais).
 
void ui_led_backend_set_record_mode (bool active)
 LED REC globale (OFF/ON).
 
void ui_led_backend_set_mode (ui_led_mode_t mode)
 Sélection du mode visuel courant.
 
void ui_led_backend_set_cart_track_count (uint8_t cart_idx, uint8_t tracks)
 Pour MUTE : nombre de pistes par cart (0..4).
 
void ui_led_backend_set_keyboard_omnichord (bool enabled)
 Active/valide le layout Omnichord (Keyboard).
 
void ui_led_backend_set_track_focus (uint8_t track_index)
 Fixe la piste actuellement focalisée (Track Select).
 
void ui_led_backend_set_track_present (uint8_t track_index, bool present)
 Indique si une piste est disponible pour l’affichage Track Select.
 
void ui_led_backend_refresh (void)
 Rendu par mode (à appeler périodiquement avant drv_leds_addr_render()).
 

Description détaillée

Backend LED adressable (SEQ/MUTE/KEYBOARD) — rendu unifié et atomique.

  • Le backend ne manipule pas le buffer physique directement.
  • Il remplit uniquement drv_leds_addr_state[] via drv_leds_addr_set(...).
  • Le seul endroit qui convertit state[]led_buffer[] + envoi est drv_leds_addr_render(), appelé une fois à la fin de ui_led_backend_refresh().
  • Le playhead SEQ reçoit l’index absolu via ui_led_seq_on_clock_tick().
  • MUTE : pas de chenillard (aucun pulse de tick).

Documentation des macros

◆ NUM_STEPS

#define NUM_STEPS   16

Documentation des fonctions

◆ ui_led_backend_init()

void ui_led_backend_init ( void  )

Init du backend (driver + état visuel).

◆ ui_led_backend_post_event()

void ui_led_backend_post_event ( ui_led_event_t  event,
uint8_t  index,
bool  state 
)

File un évènement LED dans la queue non bloquante (contexte thread).

Paramètres
eventType d’événement (MUTE/PMUTE/CLK/…)
indexIndex associé (ex: step 0..15 pour CLOCK_TICK)
stateBooléen associé si pertinent

◆ ui_led_backend_post_event_i()

void ui_led_backend_post_event_i ( ui_led_event_t  event,
uint8_t  index,
bool  state 
)

Variante ISR de ui_led_backend_post_event (ne bloque jamais).

Paramètres
eventType d’événement
indexIndex associé
stateBooléen associé si pertinent

◆ ui_led_backend_refresh()

void ui_led_backend_refresh ( void  )

Rendu par mode (à appeler périodiquement avant drv_leds_addr_render()).

◆ ui_led_backend_set_cart_track_count()

void ui_led_backend_set_cart_track_count ( uint8_t  cart_idx,
uint8_t  tracks 
)

Pour MUTE : nombre de pistes par cart (0..4).

◆ ui_led_backend_set_keyboard_omnichord()

void ui_led_backend_set_keyboard_omnichord ( bool  enabled)

Active/valide le layout Omnichord (Keyboard).

◆ ui_led_backend_set_mode()

void ui_led_backend_set_mode ( ui_led_mode_t  mode)

Sélection du mode visuel courant.

◆ ui_led_backend_set_record_mode()

void ui_led_backend_set_record_mode ( bool  active)

LED REC globale (OFF/ON).

◆ ui_led_backend_set_track_focus()

void ui_led_backend_set_track_focus ( uint8_t  track_index)

Fixe la piste actuellement focalisée (Track Select).

◆ ui_led_backend_set_track_present()

void ui_led_backend_set_track_present ( uint8_t  track_index,
bool  present 
)

Indique si une piste est disponible pour l’affichage Track Select.