refactor(can): apply filters based on filter ID for standard or extended IDs instead of mask ID

Changes filter application logic to determine standard or extended filter based on the filter ID instead of the mask ID
stable
@rakshita4 2024-11-14 10:17:11 +05:30
parent d722738591
commit 37c087aaed
3 changed files with 61 additions and 31 deletions

View File

@ -57,3 +57,26 @@ encoding//Debug/subdir_rules.mk=UTF-8
encoding//Debug/subdir_vars.mk=UTF-8
encoding//Debug/utils/subdir_rules.mk=UTF-8
encoding//Debug/utils/subdir_vars.mk=UTF-8
encoding//Test__GNU/Core/Source/subdir_rules.mk=UTF-8
encoding//Test__GNU/Core/Source/subdir_vars.mk=UTF-8
encoding//Test__GNU/Generated\ Codes/subdir_rules.mk=UTF-8
encoding//Test__GNU/Generated\ Codes/subdir_vars.mk=UTF-8
encoding//Test__GNU/TM1650_SDK/src/subdir_rules.mk=UTF-8
encoding//Test__GNU/TM1650_SDK/src/subdir_vars.mk=UTF-8
encoding//Test__GNU/ivec_APP/src/subdir_rules.mk=UTF-8
encoding//Test__GNU/ivec_APP/src/subdir_vars.mk=UTF-8
encoding//Test__GNU/ivec_ECU/ivec_ecu_can/src/subdir_rules.mk=UTF-8
encoding//Test__GNU/ivec_ECU/ivec_ecu_can/src/subdir_vars.mk=UTF-8
encoding//Test__GNU/ivec_ECU/ivec_ecu_common/src/subdir_rules.mk=UTF-8
encoding//Test__GNU/ivec_ECU/ivec_ecu_common/src/subdir_vars.mk=UTF-8
encoding//Test__GNU/ivec_ECU/ivec_ecu_uart/src/subdir_rules.mk=UTF-8
encoding//Test__GNU/ivec_ECU/ivec_ecu_uart/src/subdir_vars.mk=UTF-8
encoding//Test__GNU/ivec_RTE/src/subdir_rules.mk=UTF-8
encoding//Test__GNU/ivec_RTE/src/subdir_vars.mk=UTF-8
encoding//Test__GNU/makefile=UTF-8
encoding//Test__GNU/objects.mk=UTF-8
encoding//Test__GNU/sources.mk=UTF-8
encoding//Test__GNU/subdir_rules.mk=UTF-8
encoding//Test__GNU/subdir_vars.mk=UTF-8
encoding//Test__GNU/utils/subdir_rules.mk=UTF-8
encoding//Test__GNU/utils/subdir_vars.mk=UTF-8

View File

@ -226,8 +226,8 @@ static const DL_MCAN_StdMsgIDFilterElement gMCAN0StdFiltelem1 = {
//static const DL_MCAN_StdMsgIDFilterElement gMCAN0StdFiltelem1 = {
// .sfec = 001,
// .sft = 10,
// .sfid1 = 0xc8,
// .sfid2 = 0x7fe,
// .sfid1 = 0x3ff,
// .sfid2 = 0x400,
//}; // apply mask pass only 200 and 201 id
static const DL_MCAN_StdMsgIDFilterElement gMCAN0StdFiltelem2 = {
@ -259,10 +259,10 @@ static const DL_MCAN_StdMsgIDFilterElement gMCAN0StdFiltelem5 = {
};
static const DL_MCAN_ExtMsgIDFilterElement gMCAN0ExtFiltelem1 = {
.efec = 0x1,
.eft = 0x0,
.efid1 = 2047,
.efid2 = 0x1FFFFFFF,
.efec = 001,
.eft = 10,
.efid1 = 0x1fffff69,
.efid2 = 0xff,
};
static const DL_MCAN_ExtMsgIDFilterElement gMCAN0ExtFiltelem2 = {
@ -467,7 +467,7 @@ IVEC_McalStatus_e xMCAL_MCANInit(MCAN_Regs* MCAN, xCAN_baud_t BAUD)
DL_MCAN_msgRAMConfig(MCAN, (DL_MCAN_MsgRAMConfigParams*) &gMCAN0MsgRAMConfigParams);
/* Configure Standard ID filter element */
// DL_MCAN_addStdMsgIDFilter(MCAN, 0U, (DL_MCAN_StdMsgIDFilterElement *) &gMCAN0StdFiltelem1);
//DL_MCAN_addStdMsgIDFilter(MCAN, 0U, (DL_MCAN_StdMsgIDFilterElement *) &gMCAN0StdFiltelem1);
//
///DL_MCAN_addStdMsgIDFilter(MCAN, 1U, (DL_MCAN_StdMsgIDFilterElement *) &gMCAN0StdFiltelem2);
//
@ -477,7 +477,7 @@ IVEC_McalStatus_e xMCAL_MCANInit(MCAN_Regs* MCAN, xCAN_baud_t BAUD)
//
// DL_MCAN_addStdMsgIDFilter(MCAN, 4U, (DL_MCAN_StdMsgIDFilterElement *) &gMCAN0StdFiltelem5);
//
// DL_MCAN_addExtMsgIDFilter(MCAN, 0U,(DL_MCAN_ExtMsgIDFilterElement *)&gMCAN0ExtFiltelem1);
//DL_MCAN_addExtMsgIDFilter(MCAN, 0U,(DL_MCAN_ExtMsgIDFilterElement *)&gMCAN0ExtFiltelem1);
//
// DL_MCAN_addExtMsgIDFilter(MCAN, 1U,(DL_MCAN_ExtMsgIDFilterElement *)&gMCAN0ExtFiltelem2);
//

View File

@ -220,6 +220,23 @@ void vCanFilterMaskSaveVal(uint8_t ucIdx, uint32_t mask, bool isExtended)
{
maskCount = ucIdx;
maskValues[maskCount] = mask;
// isExtendedID[maskCount++] = isExtended;
// if(isExtended)
// {
// extendedFilter++;
// }
// else
// {
// standardFilter++;
// }
}
void vCanFilterSaveVal(uint8_t ucIdx, uint32_t Filter, bool isExtended)
{
filterCount = ucIdx;
// Store filter value
filterValues[filterCount] = Filter;
isExtendedID[maskCount++] = isExtended;
if(isExtended)
{
@ -229,15 +246,7 @@ void vCanFilterMaskSaveVal(uint8_t ucIdx, uint32_t mask, bool isExtended)
{
standardFilter++;
}
}
void vCanFilterSaveVal(uint8_t ucIdx, uint32_t Filter, bool isExtended)
{
filterCount = ucIdx;
// Store filter value
filterValues[filterCount] = Filter;
isExtendedID[filterCount++] = isExtended;
}
@ -279,12 +288,11 @@ void vCanConfigFilter() {
DL_MCAN_config(CANFD0, (DL_MCAN_ConfigParams*) &gMCAN0ConfigParamsFiltered);
DL_MCAN_msgRAMConfig(CANFD0, (DL_MCAN_MsgRAMConfigParams*) &gMCAN0MsgRAMConfigParamsFiltered);
// maskCount = 1;
// isExtendedID[0] = 0;
// filterValues[0] = 0xc8;
// maskValues[0] = 0X7FE;
uint8_t extendedFilterNumber = 0;
uint8_t stadardFilterNumber = 0;
for (int i = 0; i < maskCount; i++) {
// filterValues[0] = 0x3ff;
// maskValues[0] = 0x400;
if (isExtendedID[i]) {
// Extended ID filter
DL_MCAN_ExtMsgIDFilterElement extFilterElement;
@ -293,6 +301,7 @@ void vCanConfigFilter() {
extFilterElement.efec = 001;
extFilterElement.eft = 10;
DL_MCAN_addExtMsgIDFilter(CANFD0, i, (DL_MCAN_StdMsgIDFilterElement *) &extFilterElement);
extendedFilterNumber++;
}
else {
@ -304,7 +313,8 @@ void vCanConfigFilter() {
// stdFilterElement.sfid2 = 0x7fe;
stdFilterElement.sfec = 001;
stdFilterElement.sft = 10;
DL_MCAN_addStdMsgIDFilter(CANFD0, i,(DL_MCAN_StdMsgIDFilterElement *) &stdFilterElement);
DL_MCAN_addStdMsgIDFilter(CANFD0, stadardFilterNumber,(DL_MCAN_StdMsgIDFilterElement *) &stdFilterElement);
stadardFilterNumber++;
}
}
@ -314,17 +324,14 @@ void vCanConfigFilter() {
/* Take MCAN out of the SW initialization mode */
DL_MCAN_setOpMode(CANFD0, DL_MCAN_OPERATION_MODE_NORMAL);
// gMCAN0MsgRAMConfigParamsFiltered.lse = standardFilter; // Set dynamically based on actual filters
// gMCAN0MsgRAMConfigParamsFiltered.lss = extendedFilter; // Set dynamically based on actual filters
// DL_MCAN_config(CANFD0, (DL_MCAN_ConfigParams*) &gMCAN0ConfigParamsFiltered);
// DL_MCAN_msgRAMConfig(CANFD0, &gMCAN0MsgRAMConfigParamsFiltered);
// Reset counters after applying filters
maskCount = 0;
filterCount = 0;
// // Re-enable CAN after filters
//CANInitF(CANFD0,g_u16CanSpeed);
extendedFilterNumber = 0;
stadardFilterNumber = 0;
extendedFilter = 0;
standardFilter = 0;
}