对于Basic CAN,可以接收一组CAN Messages。如果当前节点只接收指定范围的网络管理报文,比如CANID:0x400~0x43F的网络管理报文
普通人:
if((canid >= 0x400) && (0x43F <= canid))
{
/* do something */
}
vector
代码对比
#include <iostream>
#include <time.h>
#define RUN_TIMES 100000000
#define CANIF_CANID_MASK ((uint16_t)0x7C0)
#define CANIF_CANID_LOWER ((uint16_t)0x400)
#define CANIF_CANID_UPPER ((uint16_t)0x43F)
#define CANIF_CANID_CODE 0x400
static bool CanIf_FilterCANid(uint16_t _canid)
{
bool ret = false;
clock_t start_time1 = clock();
for (int idx = 0; idx < RUN_TIMES; idx++)
{
((CANIF_CANID_MASK & CANIF_CANID_CODE) == \
(CANIF_CANID_MASK & _canid))?(ret = true):(0);
}
clock_t end_time1 = clock();
std::cout << "Mask Method:Running time is: " \
<< static_cast<