/** ****************************************************************************** * @file : usbd_midi_if.h * @brief : Header for usbd_midi_if file. ****************************************************************************** */ #ifndef __USBD_MIDI_IF_H #define __USBD_MIDI_IF_H #ifdef __cplusplus extern "C" { #endif #include "usbd_midi.h" #include "usbd_desc.h" #include "curemisc.h" #include "curebuffer.h" #define MIDI_BUFFER_LENGTH (1024) #define MIDI_SENDDATA_MAX (64) ////public typedef//// typedef enum{ START_ANALYSIS, // Initial Status, including exception. WAIT_DATA1, // Waiting data byte(1st byte) WAIT_DATA2, // Waiting data byte(2nd byte) WAIT_SYSTEM_DATA, // Waiting data byte(system exclusive) END_ANALYSIS // Analysis is ended. }AnalysisStatus; typedef enum{ MSG_NOTHING, // Exception(can't resolved, missing data, etc.) MSG_SYSEX, // System Exclusive message MSG_ONE_BYTE, MSG_TWO_BYTE, MSG_THREE_BYTE, }EventType; typedef struct{ uint8_t length; uint8_t midi_byte[MIDI_SENDDATA_MAX]; //data_byte[0]=MSB, [1]=LSB, [2]=OTHER...(e.g. sysEx, Control Change...) }MIDIEvent; typedef struct{ AnalysisStatus stat; EventType type; bool is_system_common; uint8_t data_idx; }MidiAnalysisStatus; extern USBD_MIDI_ItfTypeDef USBD_Interface_fops_FS; //for cure series extern FUNC_STATUS midiInit();//call before use functions in this files. extern FUNC_STATUS midiGetFromUsbRx(uint8_t ch, uint8_t* dat); extern FUNC_STATUS midiGetFromJackRx(uint8_t cable_num); extern FUNC_STATUS midiSetFromJackRx(uint8_t cable_num, uint8_t* dat); extern bool isUsbRxBufEmpty(uint8_t ch); extern bool isJackRxBufEmpty(uint8_t ch); extern bool isRxBufEmpty(); //USB function extern void sendMidiMessage(uint8_t *msg, uint16_t size); extern uint8_t USBD_MIDI_SendData (USBD_HandleTypeDef *pdev, uint8_t *pBuf, uint16_t length); // Call in main loop extern void midiProcess(void); extern void USBD_MIDI_SendPacket(void); #ifdef __cplusplus } #endif #endif /* __USBD_MIDI_IF_H */