8#include "message_buffer.h"
12#include "devicelist.h"
16extern MessageBufferHandle_t xUsbTxBuff;
17extern MessageBufferHandle_t xUsbRxBuff;
19uint8_t usbRxBuff[USB_RX_SIZE];
20uint8_t usbRxBuffIdx = 0;
27void vUsbTransmit(
void *argument) {
28 const TickType_t timeout = portMAX_DELAY;
35 if (!xMessageBufferReceive(xUsbTxBuff, (
void *)rxData, 100, timeout))
38 usb->
print(usb, (
char *)rxData);
58void vUsbReceive(
void *argument) {
59 const TickType_t timeout = portMAX_DELAY;
63 Shell *shell = argument;
67 if (!xStreamBufferReceive(xUsbRxBuff, (
void *)&rxData, 1, timeout))
71 usb->
send(usb, rxData);
74 if (rxData == CARRIAGE_RETURN) {
75 usb->
print(usb,
"\n");
76 usbRxBuff[usbRxBuffIdx - 1] =
'\0';
77 shell->
runTask(shell, usbRxBuff);
82 else if (rxData == SIGINT) {
88 else if (rxData == BACKSPACE) {
89 usb->
print(usb,
" \b");
105void USART6_IRQHandler() {
106 BaseType_t xHigherPriorityTaskWoken = pdFALSE;
110 uint8_t rxData = USART6->DR & 0xFF;
112 usbRxBuff[usbRxBuffIdx++] = rxData;
113 usbRxBuffIdx %= USB_RX_SIZE;
115 xStreamBufferSendFromISR(xUsbRxBuff, (
void *)&rxData, 1, &xHigherPriorityTaskWoken);
116 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
DeviceHandle_t DeviceList_getDeviceHandle(DeviceKey)
Retrieve device handle from list by key.
bool(* clear)(struct Shell *)
void(* runTask)(struct Shell *, uint8_t *)
Struct definition for shell interface.
void(* print)(struct UART *, char *)
UART print string method.
void(* send)(struct UART *, uint8_t)
UART send method.
Struct definition for UART interface.
CMSIS STM32F439xx Device Peripheral Access Layer Header File.