fix: Correct CAN RX interrupt to handle extended IDs

stable
Rakshitavecmocon 2024-10-16 19:04:15 +05:30
parent c9482f46bb
commit 01b847661b
2 changed files with 6 additions and 5 deletions

View File

@ -352,14 +352,11 @@ void CANFD0_IRQHandler(void)
xCanIdType_t idType = ERROR;
uint64_t idx = 0;
idx = TempRxMsg.id;
uint32_t value = ((TempRxMsg.id & (uint32_t) 0x1FFC0000) >> (uint32_t) 18);
if ((value > 0) && (value <= 0x7FF))
if(TempRxMsg.xtd == 0)
{
idType = STD_ID;
idx = value;
idx = ((TempRxMsg.id & (uint32_t) 0x1FFC0000) >> (uint32_t) 18);
}
if(idx)
{
for(uint8_t inx = 0; inx <= 7; inx++)

View File

@ -17,10 +17,12 @@ void mcu_FDCAN_RxFifo_Callback(uint32_t Identifier, uint8_t *data, uint16_t Data
uint8_t store_msg_from_isr_to_queue(uint32_t id, uint8_t* data, uint8_t len)
{
can_buff_t buff = {0};
//printf("id %d\n",id);
buff.id = id;
buff.length = len;
memcpy(buff.data, data, len);
ENQUEUE(g_canQueue, buff);
//printf("enqueue id after enqueue %d\n",buff.id);
return 0;
}
@ -90,7 +92,9 @@ IVEC_EcuCommonErr_e xECU_CANGetData(can_buff_t *pxBuff)
can_buff_t xBuff = { 0x00 };
DEQUEUE(g_canQueue, xBuff);
//printf("dequeue id %d\n",xBuff.id);
memcpy(pxBuff,&xBuff,sizeof(can_buff_t));
// printf("dequeue id after memcpy %d\n",pxBuff->id);
// printf("ID received dequeue %d\n",xBuff.id);
l_xFuncStatus = commonECU_SUCCESS;
}