|
|
@ -1 +1,44 @@ |
|
|
|
#include "iflytop_can_host_device.hpp"
|
|
|
|
using namespace std; |
|
|
|
using namespace iflytop; |
|
|
|
|
|
|
|
void IflytopCanHostDevice::initialize(string can_if_name, int baudrate, bool enablLoopback) { |
|
|
|
// m_iflytopCanProtocolStack.reset(new IflytopCanProtocolStack());
|
|
|
|
|
|
|
|
m_can_if_name = can_if_name; |
|
|
|
m_baudrate = baudrate; |
|
|
|
m_enablLoopback = enablLoopback; |
|
|
|
resetSocketCan(); |
|
|
|
} |
|
|
|
void IflytopCanHostDevice::startListen() {} |
|
|
|
|
|
|
|
void IflytopCanHostDevice::processRx(shared_ptr<SocketCanFrame> frame) { |
|
|
|
if (!frame) { |
|
|
|
return; |
|
|
|
} |
|
|
|
if (frame->getCanIdentifier() == socketcan::kextFrame && //
|
|
|
|
frame->getFanFrameType() == socketcan::kdataframe) { |
|
|
|
/**
|
|
|
|
* @brief 接收can消息 |
|
|
|
*/ |
|
|
|
|
|
|
|
} else { |
|
|
|
logger->warn("Rx unknown can frame"); |
|
|
|
} |
|
|
|
} |
|
|
|
void IflytopCanHostDevice::resetSocketCan() { |
|
|
|
auto socketCanConfig = make_shared<SocketCanConfig>(); |
|
|
|
socketCanConfig->enablLoopback = m_enablLoopback; // 根据 SocketCan::dumpCanDriverInfo() 的输出,确定该标志位是false还是true
|
|
|
|
socketCanConfig->m_canName = m_can_if_name; |
|
|
|
socketCanConfig->m_canBaudrate = m_baudrate; |
|
|
|
socketCanConfig->m_canfilters = {}; |
|
|
|
|
|
|
|
logger->info("initialize() m_canName:{} {}", socketCanConfig->m_canName, socketCanConfig->m_canBaudrate); |
|
|
|
|
|
|
|
m_socketCan.reset(new SocketCan()); |
|
|
|
m_socketCan->initialize(socketCanConfig); |
|
|
|
m_socketCan->startListen(); |
|
|
|
m_socketCan->onSocketCanFrame.connect([this](shared_ptr<SocketCanFrame> canframe) { //
|
|
|
|
processRx(canframe); |
|
|
|
}); |
|
|
|
} |