diff --git a/Core/Inc/canlog.h b/Core/Inc/canlog.h index d7b91ec..2819534 100644 --- a/Core/Inc/canlog.h +++ b/Core/Inc/canlog.h @@ -40,8 +40,8 @@ extern const osThreadAttr_t vLED_CAN2_Heartbeat_attributes; * @param hcan1 Pointer to the CAN1 handle * @param hcan2 Pointer to the CAN2 handle */ -void CAN_Logger_Init(CAN_HandleTypeDef *hcan1, CAN_HandleTypeDef *hcan2); -void vCAN_Logger_Listen(void *argument); -void vLED_Heartbeat(void *argument); +void vCANLoggerInit(CAN_HandleTypeDef *hcan1, CAN_HandleTypeDef *hcan2); +void vCANLoggerListen(void *argument); +void vLEDHeartbeat(void *argument); #endif /* CANLOG_H */ diff --git a/Core/Src/canlog.c b/Core/Src/canlog.c index 5549e31..1815cb9 100644 --- a/Core/Src/canlog.c +++ b/Core/Src/canlog.c @@ -58,13 +58,13 @@ void CAN_Logger_Init(CAN_HandleTypeDef *hcan1, CAN_HandleTypeDef *hcan2) } /* END CAN_Logger_Init */ -/* BEGIN vCAN_Logger_Listen */ +/* BEGIN vCANLoggerListen */ /** * @brief Log incoming CAN bus traffic in FIFO buffer * @param argument: Not used * @retval None */ -void vCAN_Logger_Listen(void *argument) +void vCANLoggerListen(void *argument) { /* CODE BEGIN */ /* Infinite loop */ @@ -74,20 +74,20 @@ void vCAN_Logger_Listen(void *argument) } /* CODE END */ } -/* END vCAN_Logger_Listen */ +/* END vCANLoggerListen */ -/* BEGIN vLED_Heartbeat */ +/* BEGIN vLEDHeartbeat */ /** * @brief Blink a LED in heartbeat mode when CAN traffic is detected * @param argument: LED GPIO (port and pin) * @retval None */ -void vLED_Heartbeat(void *argument) +void vLEDHeartbeat(void *argument) { /* CODE BEGIN */ LED_Config *led = (LED_Config*)argument; HAL_GPIO_TogglePin(led->port, led->pin); /* CODE END */ } -/* END vLED_HeartbeatOnCanRx */ +/* END vLEDHeartbeat */ /* USER CODE END FunctionPrototypes */ diff --git a/Core/Src/main.c b/Core/Src/main.c index db36324..9abcfd8 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -32,6 +32,15 @@ typedef struct { GPIO_TypeDef* port; uint16_t pin; } LED_Config; + +typedef struct { + uint32_t id; + uint8_t payload[8]; + uint8_t dlc; + uint8_t isExtended; + //uint32_t timestamp; //Enable TIM2: 42 MHz / (41+1) = 1 MHz → 1 µs tick; 32bit autoreload freerunning + // this is for getting timestamps on can messages +} CanMessage_t; /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ @@ -57,8 +66,8 @@ LED_Config led_can1 = {GPIOB, GPIO_PIN_2}; LED_Config led_can2 = {GPIOB, GPIO_PIN_5}; LED_Config led_error = {GPIOB, GPIO_PIN_3}; -osTimerId_t heartbeat_timer_can1; -osTimerId_t heartbeat_timer_can2; +osTimerId_t xHeartbeatTimerCAN1; +osTimerId_t xHeartbeatTimerCAN2; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ @@ -70,8 +79,8 @@ static void MX_CAN2_Init(void); static void MX_SDIO_SD_Init(void); /* USER CODE BEGIN PFP */ -void vCAN_Logger_Listen(void *argument); -void vLED_Heartbeat(void *argument); +void vCANLoggerListen(void *argument); +void vLEDHeartbeat(void *argument); /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ @@ -114,7 +123,6 @@ int main(void) MX_SDIO_SD_Init(); /* USER CODE BEGIN 2 */ - /* Initialize CAN1 and CAN2 */ CAN_Logger_Init(&hcan1, &hcan2); /* USER CODE END 2 */ @@ -122,15 +130,15 @@ int main(void) osKernelInitialize(); /* USER CODE BEGIN RTOS_TASKS */ - osThreadId_t vCAN1_rx; - const osThreadAttr_t vCAN1_rx_attributes = { - .name = "vCAN1_rx", + osThreadId_t xCAN1rx; + const osThreadAttr_t CAN1rxAttributes = { + .name = "CAN1rx", .stack_size = 128 * 4, .priority = (osPriority_t) osPriorityRealtime1, }; - osThreadId_t vCAN2_rx; - const osThreadAttr_t vCAN2_rx_attributes = { - .name = "vCAN2_rx", + osThreadId_t xCAN2rx; + const osThreadAttr_t CAN2rxAttributes = { + .name = "CAN2rx", .stack_size = 128 * 4, .priority = (osPriority_t) osPriorityRealtime, }; @@ -145,20 +153,21 @@ int main(void) /* USER CODE END RTOS_SEMAPHORES */ /* USER CODE BEGIN RTOS_TIMERS */ - heartbeat_timer_can1 = osTimerNew(vLED_Heartbeat, osTimerPeriodic, &led_can1, NULL); - if (heartbeat_timer_can1 != NULL) osTimerStart(heartbeat_timer_can1, 250U); + xHeartbeatTimerCAN1 = osTimerNew(vLEDHeartbeat, osTimerPeriodic, &led_can1, NULL); + if (xHeartbeatTimerCAN1 != NULL) osTimerStart(xHeartbeatTimerCAN1, 250U); - heartbeat_timer_can2 = osTimerNew(vLED_Heartbeat, osTimerPeriodic, &led_can2, NULL); - if (heartbeat_timer_can2 != NULL) osTimerStart(heartbeat_timer_can2, 250U); + xHeartbeatTimerCAN2 = osTimerNew(vLEDHeartbeat, osTimerPeriodic, &led_can2, NULL); + if (xHeartbeatTimerCAN2 != NULL) osTimerStart(xHeartbeatTimerCAN2, 250U); /* USER CODE END RTOS_TIMERS */ /* USER CODE BEGIN RTOS_QUEUES */ - /* add queues, ... */ + QueueHandle_t xCAN1rxQueue; + QueueHandle_t xCAN2rxQueue; /* USER CODE END RTOS_QUEUES */ /* USER CODE BEGIN RTOS_THREADS */ - vCAN1_rx = osThreadNew(vCAN_Logger_Listen, &hcan1, &vCAN1_rx_attributes); - vCAN2_rx = osThreadNew(vCAN_Logger_Listen, &hcan2, &vCAN2_rx_attributes); + xCAN1rx = osThreadNew(vCANLoggerListen, &hcan1, &CAN1rxAttributes); + xCAN2rx = osThreadNew(vCANLoggerListen, &hcan2, &CAN2rxAttributes); /* USER CODE END RTOS_THREADS */ /* USER CODE BEGIN RTOS_EVENTS */