|
@ -7,8 +7,8 @@ shared_ptr<SocketCanFrame> SocketCanFrame::createExtDataFrame(uint32_t id, uint8 |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
if (len > 8) len = 8; |
|
|
if (len > 8) len = 8; |
|
|
canframe->m_id = id; |
|
|
canframe->m_id = id; |
|
|
canframe->m_canIdentifier = kextFrame; |
|
|
|
|
|
canframe->m_canFrameType = kdataframe; |
|
|
|
|
|
|
|
|
canframe->m_canIdentifier = socketcan::kextFrame; |
|
|
|
|
|
canframe->m_canFrameType = socketcan::kdataframe; |
|
|
canframe->m_dlc = len; |
|
|
canframe->m_dlc = len; |
|
|
memcpy(canframe->m_data, data, len); |
|
|
memcpy(canframe->m_data, data, len); |
|
|
return canframe; |
|
|
return canframe; |
|
@ -18,8 +18,8 @@ shared_ptr<SocketCanFrame> SocketCanFrame::createStdDataFrame(uint32_t id, uint8 |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
if (len > 8) len = 8; |
|
|
if (len > 8) len = 8; |
|
|
canframe->m_id = id; |
|
|
canframe->m_id = id; |
|
|
canframe->m_canIdentifier = kstdFrame; |
|
|
|
|
|
canframe->m_canFrameType = kdataframe; |
|
|
|
|
|
|
|
|
canframe->m_canIdentifier = socketcan::kstdFrame; |
|
|
|
|
|
canframe->m_canFrameType = socketcan::kdataframe; |
|
|
canframe->m_dlc = len; |
|
|
canframe->m_dlc = len; |
|
|
memcpy(canframe->m_data, data, len); |
|
|
memcpy(canframe->m_data, data, len); |
|
|
return canframe; |
|
|
return canframe; |
|
@ -28,56 +28,59 @@ shared_ptr<SocketCanFrame> SocketCanFrame::createStdDataFrame(uint32_t id, uint8 |
|
|
shared_ptr<SocketCanFrame> SocketCanFrame::createExtRemoteFrame(uint32_t id) { |
|
|
shared_ptr<SocketCanFrame> SocketCanFrame::createExtRemoteFrame(uint32_t id) { |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
canframe->m_id = id; |
|
|
canframe->m_id = id; |
|
|
canframe->m_canIdentifier = kextFrame; |
|
|
|
|
|
canframe->m_canFrameType = kremoteframe; |
|
|
|
|
|
|
|
|
canframe->m_canIdentifier = socketcan::kextFrame; |
|
|
|
|
|
canframe->m_canFrameType = socketcan::kremoteframe; |
|
|
canframe->m_dlc = 0; |
|
|
canframe->m_dlc = 0; |
|
|
return canframe; |
|
|
return canframe; |
|
|
} |
|
|
} |
|
|
shared_ptr<SocketCanFrame> SocketCanFrame::createStdRemoteFrame(uint32_t id) { |
|
|
shared_ptr<SocketCanFrame> SocketCanFrame::createStdRemoteFrame(uint32_t id) { |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
canframe->m_id = id; |
|
|
canframe->m_id = id; |
|
|
canframe->m_canIdentifier = kstdFrame; |
|
|
|
|
|
canframe->m_canFrameType = kremoteframe; |
|
|
|
|
|
|
|
|
canframe->m_canIdentifier = socketcan::kstdFrame; |
|
|
|
|
|
canframe->m_canFrameType = socketcan::kremoteframe; |
|
|
canframe->m_dlc = 0; |
|
|
canframe->m_dlc = 0; |
|
|
return canframe; |
|
|
return canframe; |
|
|
} |
|
|
} |
|
|
shared_ptr<SocketCanFrame> SocketCanFrame::createFrame(canfd_frame_t frame) { |
|
|
shared_ptr<SocketCanFrame> SocketCanFrame::createFrame(canfd_frame_t frame) { |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
shared_ptr<SocketCanFrame> canframe = make_shared<SocketCanFrame>(); |
|
|
canframe->m_id = frame.can_id & ~CAN_EFF_FLAG & ~CAN_RTR_FLAG & ~CAN_ERR_FLAG; |
|
|
canframe->m_id = frame.can_id & ~CAN_EFF_FLAG & ~CAN_RTR_FLAG & ~CAN_ERR_FLAG; |
|
|
canframe->m_canIdentifier = frame.can_id & CAN_EFF_FLAG ? kextFrame : kstdFrame; |
|
|
|
|
|
canframe->m_canFrameType = frame.can_id & CAN_RTR_FLAG ? kremoteframe : kdataframe; |
|
|
|
|
|
|
|
|
canframe->m_canIdentifier = frame.can_id & CAN_EFF_FLAG ? socketcan::kextFrame : socketcan::kstdFrame; |
|
|
|
|
|
canframe->m_canFrameType = frame.can_id & CAN_RTR_FLAG ? socketcan::kremoteframe : socketcan::kdataframe; |
|
|
canframe->m_dlc = frame.len; |
|
|
canframe->m_dlc = frame.len; |
|
|
|
|
|
|
|
|
memcpy(canframe->m_data, frame.data, frame.len); |
|
|
memcpy(canframe->m_data, frame.data, frame.len); |
|
|
return canframe; |
|
|
return canframe; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void SocketCanFrame::setCanIdentifier(can_identifier_t canIdentifier) { this->m_canIdentifier = canIdentifier; } |
|
|
|
|
|
void SocketCanFrame::setFanFrameType(can_frame_type_t fanFrameType) { this->m_canFrameType = fanFrameType; } |
|
|
|
|
|
|
|
|
void SocketCanFrame::setCanIdentifier(socketcan::can_identifier_t canIdentifier) { this->m_canIdentifier = canIdentifier; } |
|
|
|
|
|
void SocketCanFrame::setFanFrameType(socketcan::can_frame_type_t fanFrameType) { this->m_canFrameType = fanFrameType; } |
|
|
void SocketCanFrame::setId(uint32_t id) { this->m_id = id; } |
|
|
void SocketCanFrame::setId(uint32_t id) { this->m_id = id; } |
|
|
|
|
|
|
|
|
uint32_t SocketCanFrame::getId() { return m_id; } |
|
|
|
|
|
can_identifier_t SocketCanFrame::getCanIdentifier() { return m_canIdentifier; } |
|
|
|
|
|
can_frame_type_t SocketCanFrame::getFanFrameType() { return m_canFrameType; } |
|
|
|
|
|
|
|
|
uint32_t SocketCanFrame::getId() { return m_id; } |
|
|
|
|
|
socketcan::can_identifier_t SocketCanFrame::getCanIdentifier() { return m_canIdentifier; } |
|
|
|
|
|
socketcan::can_frame_type_t SocketCanFrame::getFanFrameType() { return m_canFrameType; } |
|
|
|
|
|
|
|
|
string SocketCanFrame::toString() { //
|
|
|
|
|
|
return fmt::format("|{:0>8x}|{:>6}|{}|{}({})|", getId(), //
|
|
|
|
|
|
getFanFrameType() == kdataframe ? "data" : "remote", //
|
|
|
|
|
|
getCanIdentifier() == kextFrame ? "ext" : "std", //
|
|
|
|
|
|
|
|
|
string SocketCanFrame::toString() { //
|
|
|
|
|
|
return fmt::format("|{:0>8x}|{:>6}|{}|{}({})|", getId(), //
|
|
|
|
|
|
getFanFrameType() == socketcan::kdataframe ? "data" : "remote", //
|
|
|
|
|
|
getCanIdentifier() == socketcan::kextFrame ? "ext" : "std", //
|
|
|
StringUtils().bytesToString(m_data, m_dlc), m_dlc); |
|
|
StringUtils().bytesToString(m_data, m_dlc), m_dlc); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
uint8_t *SocketCanFrame::getData() { return m_data; } |
|
|
|
|
|
uint8_t SocketCanFrame::getDlc() { return m_dlc; } |
|
|
|
|
|
|
|
|
canfd_frame_t SocketCanFrame::getCanFrame() { |
|
|
canfd_frame_t SocketCanFrame::getCanFrame() { |
|
|
canfd_frame_t frame; |
|
|
canfd_frame_t frame; |
|
|
memset(&frame, 0, sizeof(frame)); |
|
|
memset(&frame, 0, sizeof(frame)); |
|
|
|
|
|
|
|
|
if (m_canIdentifier == kstdFrame) { |
|
|
|
|
|
|
|
|
if (m_canIdentifier == socketcan::kstdFrame) { |
|
|
frame.can_id = (m_id & CAN_SFF_MASK); |
|
|
frame.can_id = (m_id & CAN_SFF_MASK); |
|
|
} else { |
|
|
} else { |
|
|
frame.can_id = (m_id & CAN_EFF_MASK) | CAN_EFF_FLAG; |
|
|
frame.can_id = (m_id & CAN_EFF_MASK) | CAN_EFF_FLAG; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (m_canFrameType == kremoteframe) { |
|
|
|
|
|
|
|
|
if (m_canFrameType == socketcan::kremoteframe) { |
|
|
frame.can_id |= CAN_RTR_FLAG; |
|
|
frame.can_id |= CAN_RTR_FLAG; |
|
|
frame.len = m_dlc; |
|
|
frame.len = m_dlc; |
|
|
} else { |
|
|
} else { |
|
|