From 1c9f2e73847c6028346eb0af1b6420fd1bff9fe4 Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Wed, 9 Nov 2022 21:50:41 +0100 Subject: [PATCH] usbd_gs_can: place USBD_GS_CAN_HandleTypeDef in BSS Get rid of the first calloc(). --- include/usbd_gs_can.h | 2 +- src/main.c | 3 ++- src/usbd_gs_can.c | 6 +----- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/include/usbd_gs_can.h b/include/usbd_gs_can.h index 9b19b42..d9b66b8 100644 --- a/include/usbd_gs_can.h +++ b/include/usbd_gs_can.h @@ -83,7 +83,7 @@ typedef struct { # define USB_RX_FIFO_SIZE ((256U / 4U) + 1U) #endif -uint8_t USBD_GS_CAN_Init(USBD_HandleTypeDef *pdev, queue_t *q_frame_pool, queue_t *q_from_host, led_data_t *leds); +uint8_t USBD_GS_CAN_Init(USBD_GS_CAN_HandleTypeDef *hcan, USBD_HandleTypeDef *pdev, queue_t *q_frame_pool, queue_t *q_from_host, led_data_t *leds); void USBD_GS_CAN_SetChannel(USBD_HandleTypeDef *pdev, uint8_t channel, can_data_t* handle); void USBD_GS_CAN_SuspendCallback(USBD_HandleTypeDef *pdev); void USBD_GS_CAN_ResumeCallback(USBD_HandleTypeDef *pdev); diff --git a/src/main.c b/src/main.c index a3e12e3..de24070 100644 --- a/src/main.c +++ b/src/main.c @@ -50,6 +50,7 @@ static bool send_to_host_or_enqueue(struct gs_host_frame *frame); static void send_to_host(void); static can_data_t hCAN = {0}; +static USBD_GS_CAN_HandleTypeDef hGS_CAN; static USBD_HandleTypeDef hUSB = {0}; static led_data_t hLED = {0}; @@ -97,7 +98,7 @@ int main(void) USBD_Init(&hUSB, (USBD_DescriptorsTypeDef*)&FS_Desc, DEVICE_FS); USBD_RegisterClass(&hUSB, &USBD_GS_CAN); - USBD_GS_CAN_Init(&hUSB, q_frame_pool, q_from_host, &hLED); + USBD_GS_CAN_Init(&hGS_CAN, &hUSB, q_frame_pool, q_from_host, &hLED); USBD_GS_CAN_SetChannel(&hUSB, 0, &hCAN); USBD_Start(&hUSB); diff --git a/src/usbd_gs_can.c b/src/usbd_gs_can.c index ccbda89..30893db 100644 --- a/src/usbd_gs_can.c +++ b/src/usbd_gs_can.c @@ -280,12 +280,8 @@ static inline uint8_t USBD_GS_CAN_PrepareReceive(USBD_HandleTypeDef *pdev) * within other calls, which means the USB interrupt is already disabled and we * don't have any other interrupts to worry about. */ -uint8_t USBD_GS_CAN_Init(USBD_HandleTypeDef *pdev, queue_t *q_frame_pool, queue_t *q_from_host, led_data_t *leds) +uint8_t USBD_GS_CAN_Init(USBD_GS_CAN_HandleTypeDef *hcan, USBD_HandleTypeDef *pdev, queue_t *q_frame_pool, queue_t *q_from_host, led_data_t *leds) { - USBD_GS_CAN_HandleTypeDef *hcan = calloc(1, sizeof(USBD_GS_CAN_HandleTypeDef)); - - assert_basic(hcan); - hcan->q_frame_pool = q_frame_pool; hcan->q_from_host = q_from_host; hcan->leds = leds;