handshake event implementation

This commit is contained in:
2025-09-28 18:18:49 -07:00
parent dff2fd40dd
commit 168fa6030e
7 changed files with 18920 additions and 19200 deletions

View File

@@ -187,7 +187,6 @@ int main(void)
HAL_UART_Receive_DMA(&huart2, (uint8_t*)&RX2Msg, sizeof(UARTMessage)); HAL_UART_Receive_DMA(&huart2, (uint8_t*)&RX2Msg, sizeof(UARTMessage));
HAL_UART_Receive_DMA(&huart4, (uint8_t*)&RX4Msg, sizeof(UARTMessage)); HAL_UART_Receive_DMA(&huart4, (uint8_t*)&RX4Msg, sizeof(UARTMessage));
HAL_UART_Receive_DMA(&huart5, (uint8_t*)&RX5Msg, sizeof(UARTMessage)); HAL_UART_Receive_DMA(&huart5, (uint8_t*)&RX5Msg, sizeof(UARTMessage));
/* USER CODE END 2 */ /* USER CODE END 2 */
/* Infinite loop */ /* Infinite loop */
@@ -198,6 +197,11 @@ int main(void)
case MODE_ACTIVE: case MODE_ACTIVE:
resetReport(); resetReport();
matrixScan(); matrixScan();
UARTMessage UARTREPORT;
UARTREPORT.DEPTH = DEPTH;
UARTREPORT.TYPE = 0xEE;
memcpy(UARTREPORT.KEYPRESS, REPORT.KEYPRESS, sizeof(UARTREPORT.KEYPRESS));
HAL_UART_Transmit_DMA(PARENT, (uint8_t*)&UARTREPORT, sizeof(UARTREPORT));
break; break;
case MODE_INACTIVE: case MODE_INACTIVE:
@@ -228,7 +232,11 @@ int main(void)
matrixScan(); matrixScan();
USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&REPORT, sizeof(REPORT)); USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t*)&REPORT, sizeof(REPORT));
break; break;
default:
break;
} }
HAL_Delay(50); HAL_Delay(50);
/* USER CODE END WHILE */ /* USER CODE END WHILE */
@@ -287,19 +295,19 @@ void SystemClock_Config(void)
// UART Message Requests Goes Here // UART Message Requests Goes Here
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
if (huart->Instance == USART1) { if (huart->Instance == USART1) {
handleUARTMessages((uint8_t*)&RX1Msg, huart); handleUARTMessages((uint8_t*)&RX1Msg, &huart1);
HAL_UART_Receive_DMA(&huart1, (uint8_t*)&RX1Msg, sizeof(UARTMessage)); HAL_UART_Receive_DMA(&huart1, (uint8_t*)&RX1Msg, sizeof(UARTMessage));
} }
else if (huart->Instance == USART2) { else if (huart->Instance == USART2) {
handleUARTMessages((uint8_t*)&RX2Msg, huart); handleUARTMessages((uint8_t*)&RX2Msg, &huart2);
HAL_UART_Receive_DMA(&huart2, (uint8_t*)&RX2Msg, sizeof(UARTMessage)); HAL_UART_Receive_DMA(&huart2, (uint8_t*)&RX2Msg, sizeof(UARTMessage));
} }
else if (huart->Instance == UART4) { else if (huart->Instance == UART4) {
handleUARTMessages((uint8_t*)&RX4Msg, huart); handleUARTMessages((uint8_t*)&RX4Msg, &huart4);
HAL_UART_Receive_DMA(&huart4, (uint8_t*)&RX4Msg, sizeof(UARTMessage)); HAL_UART_Receive_DMA(&huart4, (uint8_t*)&RX4Msg, sizeof(UARTMessage));
} }
else if (huart->Instance == UART5) { else if (huart->Instance == UART5) {
handleUARTMessages((uint8_t*)&RX5Msg, huart); handleUARTMessages((uint8_t*)&RX5Msg, &huart5);
HAL_UART_Receive_DMA(&huart5, (uint8_t*)&RX5Msg, sizeof(UARTMessage)); HAL_UART_Receive_DMA(&huart5, (uint8_t*)&RX5Msg, sizeof(UARTMessage));
} }
} }
@@ -320,6 +328,8 @@ void findBestParent(){
if(least_val < 0xFF){ if(least_val < 0xFF){
PARENT = least_port; PARENT = least_port;
DEPTH = least_val + 1; DEPTH = least_val + 1;
MODE = MODE_ACTIVE;
HAL_Delay(500);
} }
} }
@@ -348,11 +358,19 @@ void handleUARTMessages(uint8_t *data, UART_HandleTypeDef *sender) {
// Requested to be a parent // Requested to be a parent
case 0xFF: case 0xFF:
if(MODE!=MODE_INACTIVE){
reply.TYPE = 0xAA; reply.TYPE = 0xAA;
reply.DEPTH = DEPTH; // use your local DEPTH reply.DEPTH = DEPTH; // use your local DEPTH
memset(reply.KEYPRESS, 0, sizeof(reply.KEYPRESS)); memset(reply.KEYPRESS, 0, sizeof(reply.KEYPRESS));
HAL_UART_Transmit_DMA(sender, (uint8_t*)&reply, sizeof(reply));
}
break;
HAL_UART_Transmit(sender, (uint8_t*)&reply, sizeof(reply), HAL_MAX_DELAY); case 0xEE:
//TODO: Append message to the thingy
break;
default:
break; break;
} }

View File

@@ -1,9 +1,9 @@
../Core/Src/main.c:149:5:main 6 ../Core/Src/main.c:149:5:main 6
../Core/Src/main.c:244:6:SystemClock_Config 3 ../Core/Src/main.c:252:6:SystemClock_Config 3
../Core/Src/main.c:288:6:HAL_UART_RxCpltCallback 5 ../Core/Src/main.c:296:6:HAL_UART_RxCpltCallback 5
../Core/Src/main.c:308:6:findBestParent 4 ../Core/Src/main.c:316:6:findBestParent 4
../Core/Src/main.c:327:6:handleUARTMessages 7 ../Core/Src/main.c:337:6:handleUARTMessages 8
../Core/Src/main.c:362:6:addUSBReport 3 ../Core/Src/main.c:376:6:addUSBReport 3
../Core/Src/main.c:370:6:matrixScan 4 ../Core/Src/main.c:384:6:matrixScan 4
../Core/Src/main.c:383:6:resetReport 1 ../Core/Src/main.c:397:6:resetReport 1
../Core/Src/main.c:394:6:Error_Handler 1 ../Core/Src/main.c:408:6:Error_Handler 1

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff