From 74d7770ae1f9eeb39851b2db90d09593b5741bb1 Mon Sep 17 00:00:00 2001
From: Sergi Hernandez Juan <shernand@iri.upc.edu>
Date: Wed, 19 May 2021 17:56:36 +0200
Subject: [PATCH] Minor chnages in the TX CAN interrupt handling to avoid
 timout problems.

---
 f1/can/src/can.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/f1/can/src/can.c b/f1/can/src/can.c
index a8de97a..182a9ae 100644
--- a/f1/can/src/can.c
+++ b/f1/can/src/can.c
@@ -264,8 +264,8 @@ void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef* CANHandle)
     }
   }
   //__HAL_CAN_DISABLE_IT(CANHandle,CAN_IT_TME);
-  __HAL_CAN_CLEAR_FLAG(CANHandle,CAN_FLAG_RQCP0);
-  __HAL_CAN_CLEAR_FLAG(CANHandle,CAN_FLAG_TXOK0);
+  //__HAL_CAN_CLEAR_FLAG(CANHandle,CAN_FLAG_RQCP0);
+  //__HAL_CAN_CLEAR_FLAG(CANHandle,CAN_FLAG_TXOK0);
 }
 
 void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* CANHandle)
@@ -381,6 +381,8 @@ unsigned char can_cancel_receive_irq(void)
 /* DMA functions */
 unsigned char can_send_dma(unsigned char *data,unsigned short int length)
 {
+  __HAL_CAN_CLEAR_FLAG(&CANHandle,CAN_FLAG_RQCP0);
+  __HAL_CAN_CLEAR_FLAG(&CANHandle,CAN_FLAG_TXOK0);
   if(length > 8){
     CANHandle.pTxMsg->DLC = 8;
     for (uint8_t i=0;i<length;i++)
@@ -401,14 +403,14 @@ unsigned char can_send_dma(unsigned char *data,unsigned short int length)
     {
       CANHandle.pTxMsg->Data[i] = data[i];
     }
+    can_send_lenght = 0;
+    can_send_iterations = 0;
     HAL_CAN_Transmit_IT(&CANHandle);
     uint8_t byte;
     comm_do_dma_send(can_comm_dev);
     comm_do_irq_send(can_comm_dev,&byte);
   }
   //HAL_CAN_Transmit_IT(&CANHandle);
-  __HAL_CAN_CLEAR_FLAG(&CANHandle,CAN_FLAG_RQCP0);
-  __HAL_CAN_CLEAR_FLAG(&CANHandle,CAN_FLAG_TXOK0);
   return 0x00;
 }
 
-- 
GitLab