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

Thread principal UI — gestion du pipeline Keyboard / SEQ / LED, latence faible. Plus de détails...

#include "ch.h"
#include "hal.h"
#include "brick_config.h"
#include <stdbool.h>
#include <stdint.h>
#include "ui_task.h"
#include "ui_input.h"
#include "ui_controller.h"
#include "ui_renderer.h"
#include "cart_registry.h"
#include "ui_backend.h"
#include "clock_manager.h"
#include "ui_led_backend.h"
#include "seq_led_bridge.h"
#include "seq_engine_runner.h"
#include "seq_recorder.h"
#include "ui_keyboard_bridge.h"

Macros

#define UI_TASK_STACK   (6144)
 
#define UI_TASK_PRIO   (NORMALPRIO)
 
#define UI_TASK_POLL_MS   (2)
 

Fonctions

void ui_task_start (void)
 
bool ui_task_is_running (void)
 

Variables

CCM_DATA volatile systime_t ui_task_last_tick = 0
 

Description détaillée

Thread principal UI — gestion du pipeline Keyboard / SEQ / LED, latence faible.

  • Lit les entrées (boutons/encodeurs) et les délègue au ui_backend.
  • Synchronise Keyboard ↔ App.
  • Rafraîchit LEDs et affiche (renderer).

Horloge & SEQ :

  • Initialise clock_manager et enregistre _on_clock_step.
  • Forwarde l’index absolu de pas vers le backend LED (plus de modulo 16 ici).
  • Le backend relaie ensuite vers ui_led_seq_on_clock_tick() sans dépendance à clock_manager.

Invariants :

  • Pas de dépendance circulaire.
  • Zéro régression côté Keyboard/MIDI.

Documentation des macros

◆ UI_TASK_POLL_MS

#define UI_TASK_POLL_MS   (2)

◆ UI_TASK_PRIO

#define UI_TASK_PRIO   (NORMALPRIO)

◆ UI_TASK_STACK

#define UI_TASK_STACK   (6144)

Documentation des fonctions

◆ ui_task_is_running()

bool ui_task_is_running ( void  )

◆ ui_task_start()

void ui_task_start ( void  )

Documentation des variables

◆ ui_task_last_tick

CCM_DATA volatile systime_t ui_task_last_tick = 0