1+ #include " Device.h"
2+
3+ namespace Device
4+ {
5+ namespace HWMidi
6+ {
7+ MidiPort* midiPort;
8+ TaskHandle_t portTaskHandle = NULL ;
9+ uart_port_t uartChannel = UART_NUM_2;
10+
11+ void portTask (void * param) {
12+ MidiPort port = MidiPort (" Midi Port" , MIDI_PORT_PHYISCAL);
13+ midiPort = &port;
14+ MidiPacket packet;
15+ while (true )
16+ {
17+ if (port.Get (&packet, portMAX_DELAY))
18+ { uart_write_bytes (uartChannel, packet.data , 3 ); }
19+ }
20+ }
21+
22+ void Init ()
23+ {
24+ uart_config_t uart_config = {
25+ .baud_rate = 31250 ,
26+ .data_bits = UART_DATA_8_BITS,
27+ .parity = UART_PARITY_DISABLE,
28+ .stop_bits = UART_STOP_BITS_1,
29+ .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
30+ .rx_flow_ctrl_thresh = 0 ,
31+ .source_clk = UART_SCLK_DEFAULT,
32+ };
33+
34+ int rx_buffer_size = 2048 ; // TODO: Optimize this value
35+ if (rx_gpio == GPIO_NUM_NC)
36+ {
37+ rx_buffer_size = 129 ; // Must be larger than 128, even though we don't use it
38+ }
39+
40+ ESP_ERROR_CHECK (uart_driver_install (uartChannel, rx_buffer_size, 0 , 0 , NULL , 0 ));
41+ ESP_ERROR_CHECK (uart_param_config (uartChannel, &uart_config));
42+ ESP_ERROR_CHECK (uart_set_pin (uartChannel, tx_gpio, rx_gpio, GPIO_NUM_NC, GPIO_NUM_NC));
43+ xTaskCreate (portTask, " Hardware Midi Port" , configMINIMAL_STACK_SIZE * 2 , NULL , configMAX_PRIORITIES - 2 ,&portTaskHandle);
44+ }
45+ }
46+ }
0 commit comments