File syn_usb_midi.c¶
FileList > drivers > syn_usb_midi.c
Go to the source code of this file
Zero-Heap USB 2.0 MIDI Class Device Driver Implementation.
#include "syn_usb_midi.h"#include <string.h>
Public Functions¶
| Type | Name |
|---|---|
| SYN_Status | syn_usb_midi_init (SYN_USB_MIDI * midi) Initialize USB MIDI Class Instance. |
| SYN_Status | syn_usb_midi_parse_packet (const uint8_t raw_bytes, SYN_USB_MIDI_Packet * packet) Parse a 4-byte raw USB MIDI packet into structured event packet. |
| SYN_Status | syn_usb_midi_register (SYN_USB_Device * dev, SYN_USB_MIDI * midi) Register USB MIDI class driver with USB device core. |
| SYN_Status | syn_usb_midi_send_cc (SYN_USB_MIDI * midi, uint8_t channel, uint8_t controller, uint8_t value) Encode and queue a Control Change (CC) MIDI message. |
| SYN_Status | syn_usb_midi_send_note_off (SYN_USB_MIDI * midi, uint8_t channel, uint8_t note, uint8_t velocity) Encode and queue a Note Off MIDI message. |
| SYN_Status | syn_usb_midi_send_note_on (SYN_USB_MIDI * midi, uint8_t channel, uint8_t note, uint8_t velocity) Encode and queue a Note On MIDI message. |
| SYN_Status | syn_usb_midi_send_pitch_bend (SYN_USB_MIDI * midi, uint8_t channel, int16_t value) Encode and queue a Pitch Bend MIDI message. |
Public Static Functions¶
| Type | Name |
|---|---|
| SYN_Status | queue_midi_packet (SYN_USB_MIDI * midi, uint8_t cin, uint8_t status, uint8_t param1, uint8_t param2) Queue a 4-byte USB MIDI Event Packet into TX buffer. |
| SYN_Status | usb_midi_configured_handler (void * ctx, uint8_t config) Configured callback for USB MIDI class interface activation. |
| void | usb_midi_data_in_handler (void * ctx, uint8_t ep) Data IN handler callback for USB MIDI IN endpoint completion. |
| void | usb_midi_data_out_handler (void * ctx, uint8_t ep, const uint8_t * data, uint16_t len) Data OUT handler callback for USB MIDI OUT endpoint data. |
| SYN_Status | usb_midi_setup_handler (void * ctx, const SYN_USB_SetupPacket * pkt, uint8_t * resp, uint16_t * rlen) Setup handler callback for USB MIDI class setup requests. |
Public Functions Documentation¶
function syn_usb_midi_init¶
Initialize USB MIDI Class Instance.
Parameters:
midiPointer to USB MIDI instance.
Returns:
SYN_OK on success, SYN_INVALID_PARAM if NULL.
function syn_usb_midi_parse_packet¶
Parse a 4-byte raw USB MIDI packet into structured event packet.
Parameters:
raw_bytes4-byte raw buffer.packetOutput structured packet pointer.
Returns:
SYN_OK on success, SYN_INVALID_PARAM if NULL.
function syn_usb_midi_register¶
Register USB MIDI class driver with USB device core.
Parameters:
devPointer to USB device core context.midiPointer to USB MIDI instance.
Returns:
SYN_OK on success, SYN_INVALID_PARAM if NULL.
function syn_usb_midi_send_cc¶
Encode and queue a Control Change (CC) MIDI message.
SYN_Status syn_usb_midi_send_cc (
SYN_USB_MIDI * midi,
uint8_t channel,
uint8_t controller,
uint8_t value
)
Parameters:
midiPointer to USB MIDI instance.channelMIDI Channel (0..15).controllerController Number (0..127).valueController Value (0..127).
Returns:
SYN_OK on success, SYN_INVALID_PARAM if invalid.
function syn_usb_midi_send_note_off¶
Encode and queue a Note Off MIDI message.
SYN_Status syn_usb_midi_send_note_off (
SYN_USB_MIDI * midi,
uint8_t channel,
uint8_t note,
uint8_t velocity
)
Parameters:
midiPointer to USB MIDI instance.channelMIDI Channel (0..15).noteMIDI Note Number (0..127).velocityRelease Velocity (0..127).
Returns:
SYN_OK on success, SYN_INVALID_PARAM if invalid.
function syn_usb_midi_send_note_on¶
Encode and queue a Note On MIDI message.
SYN_Status syn_usb_midi_send_note_on (
SYN_USB_MIDI * midi,
uint8_t channel,
uint8_t note,
uint8_t velocity
)
Parameters:
midiPointer to USB MIDI instance.channelMIDI Channel (0..15).noteMIDI Note Number (0..127).velocityNote Velocity (0..127).
Returns:
SYN_OK on success, SYN_INVALID_PARAM if invalid.
function syn_usb_midi_send_pitch_bend¶
Encode and queue a Pitch Bend MIDI message.
Parameters:
midiPointer to USB MIDI instance.channelMIDI Channel (0..15).valuePitch Bend value (-8192..+8191, center 0).
Returns:
SYN_OK on success, SYN_INVALID_PARAM if invalid.
Public Static Functions Documentation¶
function queue_midi_packet¶
Queue a 4-byte USB MIDI Event Packet into TX buffer.
static SYN_Status queue_midi_packet (
SYN_USB_MIDI * midi,
uint8_t cin,
uint8_t status,
uint8_t param1,
uint8_t param2
)
Parameters:
midiPointer to USB MIDI instance.cinCode Index Number (4 bits).statusMIDI status byte.param1MIDI parameter 1 byte.param2MIDI parameter 2 byte.
Returns:
SYN_OK on success, SYN_INVALID_PARAM or SYN_ERROR on overflow.
function usb_midi_configured_handler¶
Configured callback for USB MIDI class interface activation.
Parameters:
ctxClass driver context (SYN_USB_MIDI pointer).configConfiguration index.
Returns:
SYN_OK on success.
function usb_midi_data_in_handler¶
Data IN handler callback for USB MIDI IN endpoint completion.
Parameters:
ctxClass driver context (SYN_USB_MIDI pointer).epEndpoint address.
function usb_midi_data_out_handler¶
Data OUT handler callback for USB MIDI OUT endpoint data.
static void usb_midi_data_out_handler (
void * ctx,
uint8_t ep,
const uint8_t * data,
uint16_t len
)
Parameters:
ctxClass driver context (SYN_USB_MIDI pointer).epEndpoint address.dataReceived payload bytes.lenByte length of received payload.
function usb_midi_setup_handler¶
Setup handler callback for USB MIDI class setup requests.
static SYN_Status usb_midi_setup_handler (
void * ctx,
const SYN_USB_SetupPacket * pkt,
uint8_t * resp,
uint16_t * rlen
)
Parameters:
ctxClass driver context (SYN_USB_MIDI pointer).pktSetup packet pointer.respResponse payload buffer.rlenOutput response payload byte length pointer.
Returns:
SYN_OK on success.
The documentation for this class was generated from the following file src/syntropic/drivers/syn_usb_midi.c