dma sending stuff thru uart

This commit is contained in:
2025-09-24 17:14:26 -07:00
parent fe1831e89f
commit dff2fd40dd
15 changed files with 45238 additions and 18877 deletions

View File

@@ -117,6 +117,7 @@ uint16_t DEPTH = 0;
uint16_t PORT_DEPTH[] = {0xFF, 0xFF, 0xFF, 0xFF};
UART_HandleTypeDef* PARENT;
UART_HandleTypeDef* PORTS[] = {&huart5, &huart1, &huart2, &huart4};
//North East South West
extern USBD_HandleTypeDef hUsbDeviceFS;
volatile uint8_t MODE = MODE_INACTIVE;
@@ -129,6 +130,7 @@ void SystemClock_Config(void);
void handleUARTMessages(uint8_t *data, UART_HandleTypeDef *huart);
void UART_DMA_SendReport(UART_HandleTypeDef *huart);
void addUSBReport(uint8_t usageID);
void handleUARTMessages(uint8_t *data, UART_HandleTypeDef *sender);
void matrixScan(void);
void resetReport(void);
void sendMessage(void);
@@ -282,27 +284,27 @@ void SystemClock_Config(void)
}
/* USER CODE BEGIN 4 */
//UART Message Requests Goes Here
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
//Parse recieved message
if (huart->Instance == USART1) {
handleUARTMessage(&RX1Msg);
HAL_UART_Receive_DMA(&huart1, (uint8_t*)&RX1Msg, sizeof(UARTMessage));
}
else if (huart->Instance == USART2) {
handleUARTMessage(&RX2Msg);
HAL_UART_Receive_DMA(&huart2, (uint8_t*)&RX2Msg, sizeof(UARTMessage));
}
else if (huart->Instance == USART4) {
handleUARTMessage(&RX4Msg);
HAL_UART_Receive_DMA(&huart4, (uint8_t*)&RX4Msg, sizeof(UARTMessage));
}
else if (huart->Instance == USART5) {
handleUARTMessage(&RX5Msg);
HAL_UART_Receive_DMA(&huart5, (uint8_t*)&RX5Msg, sizeof(UARTMessage));
}
// UART Message Requests Goes Here
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
if (huart->Instance == USART1) {
handleUARTMessages((uint8_t*)&RX1Msg, huart);
HAL_UART_Receive_DMA(&huart1, (uint8_t*)&RX1Msg, sizeof(UARTMessage));
}
else if (huart->Instance == USART2) {
handleUARTMessages((uint8_t*)&RX2Msg, huart);
HAL_UART_Receive_DMA(&huart2, (uint8_t*)&RX2Msg, sizeof(UARTMessage));
}
else if (huart->Instance == UART4) {
handleUARTMessages((uint8_t*)&RX4Msg, huart);
HAL_UART_Receive_DMA(&huart4, (uint8_t*)&RX4Msg, sizeof(UARTMessage));
}
else if (huart->Instance == UART5) {
handleUARTMessages((uint8_t*)&RX5Msg, huart);
HAL_UART_Receive_DMA(&huart5, (uint8_t*)&RX5Msg, sizeof(UARTMessage));
}
}
void findBestParent(){
//Find least depth parent
uint16_t least_val = 0xFF;
@@ -321,11 +323,42 @@ void findBestParent(){
}
}
//TODO: A function that gets called by RX Interrupt to handle messages that get sent
void handleUARTMessages(uint8_t *data, UART_HandleTypeDef *sender){
//TODO: Handle messages coming from devices based on the message type.
// Called when UART RX interrupt completes
void handleUARTMessages(uint8_t *data, UART_HandleTypeDef *sender) {
UARTMessage msg;
UARTMessage reply;
// Parse incoming message into struct
memcpy(&msg, data, sizeof(UARTMessage));
switch(msg.TYPE) {
// Parent request reply
case 0xAA:
if(sender == &huart5) {
PORT_DEPTH[0] = msg.DEPTH;
} else if(sender == &huart1) {
PORT_DEPTH[1] = msg.DEPTH;
} else if(sender == &huart2) {
PORT_DEPTH[2] = msg.DEPTH;
} else if(sender == &huart4) {
PORT_DEPTH[3] = msg.DEPTH;
}
break;
// Requested to be a parent
case 0xFF:
reply.TYPE = 0xAA;
reply.DEPTH = DEPTH; // use your local DEPTH
memset(reply.KEYPRESS, 0, sizeof(reply.KEYPRESS));
HAL_UART_Transmit(sender, (uint8_t*)&reply, sizeof(reply), HAL_MAX_DELAY);
break;
}
}
void addUSBReport(uint8_t usageID){
if(usageID < 0x04 || usageID > 0x73) return; //Usage ID is out of bounds
uint16_t bit_index = usageID - 0x04; //Offset, UsageID starts with 0x04. Gives us the actual value of the bit

View File

@@ -0,0 +1,9 @@
../Core/Src/main.c:149:5:main 6
../Core/Src/main.c:244:6:SystemClock_Config 3
../Core/Src/main.c:288:6:HAL_UART_RxCpltCallback 5
../Core/Src/main.c:308:6:findBestParent 4
../Core/Src/main.c:327:6:handleUARTMessages 7
../Core/Src/main.c:362:6:addUSBReport 3
../Core/Src/main.c:370:6:matrixScan 4
../Core/Src/main.c:383:6:resetReport 1
../Core/Src/main.c:394:6:Error_Handler 1

Binary file not shown.

View File

@@ -0,0 +1,9 @@
../Core/Src/main.c:149:5:main 24 static
../Core/Src/main.c:244:6:SystemClock_Config 88 static
../Core/Src/main.c:288:6:HAL_UART_RxCpltCallback 16 static
../Core/Src/main.c:308:6:findBestParent 24 static
../Core/Src/main.c:327:6:handleUARTMessages 48 static
../Core/Src/main.c:362:6:addUSBReport 24 static
../Core/Src/main.c:370:6:matrixScan 16 static
../Core/Src/main.c:383:6:resetReport 8 static
../Core/Src/main.c:394:6:Error_Handler 4 static,ignoring_inline_asm

View File

@@ -1,10 +1,10 @@
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:279:16:USBD_HID_Init 3
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:326:16:USBD_HID_DeInit 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:357:16:USBD_HID_Setup 18
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:489:9:USBD_HID_SendReport 4
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:522:10:USBD_HID_GetPollingInterval 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:552:17:USBD_HID_GetFSCfgDesc 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:572:17:USBD_HID_GetHSCfgDesc 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:592:17:USBD_HID_GetOtherSpeedCfgDesc 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:613:16:USBD_HID_DataIn 1
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:630:17:USBD_HID_GetDeviceQualifierDesc 1
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:304:16:USBD_HID_Init 3
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:351:16:USBD_HID_DeInit 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:382:16:USBD_HID_Setup 18
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:514:9:USBD_HID_SendReport 4
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:547:10:USBD_HID_GetPollingInterval 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:577:17:USBD_HID_GetFSCfgDesc 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:597:17:USBD_HID_GetHSCfgDesc 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:617:17:USBD_HID_GetOtherSpeedCfgDesc 2
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:638:16:USBD_HID_DataIn 1
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:655:17:USBD_HID_GetDeviceQualifierDesc 1

View File

@@ -1,10 +1,10 @@
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:279:16:USBD_HID_Init 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:326:16:USBD_HID_DeInit 16 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:357:16:USBD_HID_Setup 32 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:489:9:USBD_HID_SendReport 32 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:522:10:USBD_HID_GetPollingInterval 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:552:17:USBD_HID_GetFSCfgDesc 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:572:17:USBD_HID_GetHSCfgDesc 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:592:17:USBD_HID_GetOtherSpeedCfgDesc 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:613:16:USBD_HID_DataIn 16 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:630:17:USBD_HID_GetDeviceQualifierDesc 16 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:304:16:USBD_HID_Init 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:351:16:USBD_HID_DeInit 16 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:382:16:USBD_HID_Setup 32 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:514:9:USBD_HID_SendReport 32 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:547:10:USBD_HID_GetPollingInterval 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:577:17:USBD_HID_GetFSCfgDesc 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:597:17:USBD_HID_GetHSCfgDesc 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:617:17:USBD_HID_GetOtherSpeedCfgDesc 24 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:638:16:USBD_HID_DataIn 16 static
../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Src/usbd_hid.c:655:17:USBD_HID_GetDeviceQualifierDesc 16 static

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff