123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #ifndef MIDI_DEVICE_H
- #define MIDI_DEVICE_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "midi_function_types.h"
- #include "bytequeue/bytequeue.h"
- #define MIDI_INPUT_QUEUE_LENGTH 192
- typedef enum {
- IDLE,
- ONE_BYTE_MESSAGE = 1,
- TWO_BYTE_MESSAGE = 2,
- THREE_BYTE_MESSAGE = 3,
- SYSEX_MESSAGE} input_state_t;
- typedef void (* midi_no_byte_func_t)(MidiDevice * device);
- struct _midi_device {
-
- midi_var_byte_func_t send_func;
-
-
- midi_three_byte_func_t input_cc_callback;
- midi_three_byte_func_t input_noteon_callback;
- midi_three_byte_func_t input_noteoff_callback;
- midi_three_byte_func_t input_aftertouch_callback;
- midi_three_byte_func_t input_pitchbend_callback;
- midi_three_byte_func_t input_songposition_callback;
-
- midi_two_byte_func_t input_progchange_callback;
- midi_two_byte_func_t input_chanpressure_callback;
- midi_two_byte_func_t input_songselect_callback;
- midi_two_byte_func_t input_tc_quarterframe_callback;
-
- midi_one_byte_func_t input_realtime_callback;
- midi_one_byte_func_t input_tunerequest_callback;
-
- midi_sysex_func_t input_sysex_callback;
-
- midi_var_byte_func_t input_fallthrough_callback;
-
- midi_var_byte_func_t input_catchall_callback;
-
- midi_no_byte_func_t pre_input_process_callback;
-
- uint8_t input_buffer[3];
- input_state_t input_state;
- uint16_t input_count;
-
- uint8_t input_queue_data[MIDI_INPUT_QUEUE_LENGTH];
- byteQueue_t input_queue;
- };
- void midi_device_input(MidiDevice * device, uint8_t cnt, uint8_t * input);
- void midi_device_set_send_func(MidiDevice * device, midi_var_byte_func_t send_func);
- void midi_device_set_pre_input_process_func(MidiDevice * device, midi_no_byte_func_t pre_process_func);
- #ifdef __cplusplus
- }
- #endif
- #endif
|