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

Configuration bas niveau de l’interface USB MIDI (ChibiOS). Plus de détails...

#include "hal.h"
#include "usbcfg.h"
#include "ch.h"
#include <stdint.h>

Variables

volatile bool usb_midi_tx_ready = false
 Indique si l’interface USB-MIDI est prête pour la transmission.
 
binary_semaphore_t tx_sem
 Callback IN (EP2) — signale la fin de transmission MIDI.
 
const USBConfig usbcfg
 Structure de configuration principale du driver USB.
 

Description détaillée

Configuration bas niveau de l’interface USB MIDI (ChibiOS).

Ce module définit tous les descripteurs et callbacks nécessaires à la gestion d’un périphérique USB MIDI Class-Compliant :

  • Interface Audio Control (AC)
  • Interface MIDI Streaming (MS)
  • Endpoints Bulk IN/OUT pour la communication MIDI.

Il s’intègre au driver USBDriver de ChibiOS et assure :

  • L’initialisation des endpoints lors de la configuration USB.
  • Le réarmement de la réception OUT.
  • La signalisation au thread MIDI lors de la fin d’envoi IN.

Résumé matériel :

  • EP1 OUT (Bulk) : réception de messages MIDI depuis l’hôte.
  • EP2 IN (Bulk) : émission de messages MIDI vers l’hôte.
  • Taille de paquet : 64 octets.

Contraintes temps réel :

  • Callbacks courts : pas d’appels bloquants en ISR.
  • Toute transmission se fait via usbStartTransmitI() depuis un thread, déclenchée par un sémaphore signalé dans l’ISR (EP IN).
Voir également
midi.c pour la logique de transmission/réception MIDI applicative.

Documentation des variables

◆ tx_sem

binary_semaphore_t tx_sem
extern

Callback IN (EP2) — signale la fin de transmission MIDI.

Paramètres
usbpPointeur driver USB.
epNuméro d’endpoint (ignoré).

Appelle chBSemSignalI() sur le sémaphore tx_sem défini dans midi.c pour réveiller le thread d’émission.

Callback IN (EP2) — signale la fin de transmission MIDI.

Signalé dans le callback d’EP IN (ex. ep2_in_cb() côté usbcfg.c).

◆ usb_midi_tx_ready

volatile bool usb_midi_tx_ready = false

Indique si l’interface USB-MIDI est prête pour la transmission.

Indique si la couche USB-MIDI est prête à transmettre des données.

Indicateur d’état de l’USB MIDI.

Indique si la couche MIDI USB est prête à l’envoi. Défini et mis à jour dans usb/usbcfg.c.

◆ usbcfg

const USBConfig usbcfg
Valeur initiale :
= {
usb_event,
get_descriptor,
NULL,
sof_handler
}

Structure de configuration principale du driver USB.

Structure de configuration du driver USB (ChibiOS).

Reliée à usbStart(&USBD1, &usbcfg) dans le code d’initialisation global.