79 lines
2.1 KiB
C
79 lines
2.1 KiB
C
/**
|
|
******************************************************************************
|
|
* @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 */
|