diff --git a/sdcl-firmware/Core/Src/main.c b/sdcl-firmware/Core/Src/main.c index 9296b1a..6f461d2 100644 --- a/sdcl-firmware/Core/Src/main.c +++ b/sdcl-firmware/Core/Src/main.c @@ -503,9 +503,6 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) { if (rxHeader.StdId != CAN_ID_RX) return; - HAL_GPIO_WritePin(ASB_Error_GPIO_Port, ASB_Error_Pin, rxData.signals.asb_error); - HAL_GPIO_WritePin(AS_close_SDC_GPIO_Port, AS_close_SDC_Pin, !rxData.signals.as_close_sdc); - #ifdef WATCHDOG_STM if (rxData.signals.heartbeat != pHeartbeat) { @@ -516,17 +513,28 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) { } pHeartbeat = rxData.signals.heartbeat; + bool close_sdc = WD_initialized && rxData.signals.as_close_sdc; + #endif #ifdef WATCHDOG_UCC HAL_GPIO_WritePin(Watchdog_GPIO_Port, Watchdog_Pin, rxData.signals.heartbeat); + + bool close_sdc = rxData.signals.as_close_sdc; #endif + // Set whether to close the relay + // Inverted because the NAND was bodged out + HAL_GPIO_WritePin(AS_close_SDC_GPIO_Port, AS_close_SDC_Pin, !close_sdc); + // Reset old mission LED setMissionLED(mission, GPIO_PIN_RESET); mission = rxData.signals.as_mission; setMissionLED(mission, GPIO_PIN_SET); + // Set ASB Error status + HAL_GPIO_WritePin(ASB_Error_GPIO_Port, ASB_Error_Pin, rxData.signals.asb_error); + } /* USER CODE END 4 */