One Motor 0.5.1
RoboMaster全平台一站式电机驱动库
载入中...
搜索中...
未找到
CanFrame.hpp
浏览该文件的文档.
1
7#ifndef CANFRAME_HPP
8#define CANFRAME_HPP
9#include <cstddef>
10#include <cstdint>
11#include <type_traits>
12
17#define ONE_MOTOR_CAN_MAX_DLEN 8
18
19#ifdef ONE_MOTOR_LINUX
20#include <linux/can.h>
21#endif
22
23
24namespace OneMotor::Can
25{
34 struct CanFrame
35 {
36 CanFrame() = default;
37 uint32_t id{};
38 uint8_t dlc{};
39 uint8_t __pad{};
40 uint8_t __res0{};
41 uint8_t len8_dlc{};
42 uint8_t data[ONE_MOTOR_CAN_MAX_DLEN]alignas(8){};
43 };
44#ifdef ONE_MOTOR_LINUX
45 static_assert(sizeof(CanFrame) == sizeof(can_frame),
46 "Size mismatch between CanFrame and can_frame.");
47 static_assert(alignof(CanFrame) == alignof(can_frame),
48 "Alignment mismatch between CanFrame and can_frame.");
49 static_assert(std::is_standard_layout_v<CanFrame>,
50 "CanFrame must be a standard-layout type for safe casting.");
51 static_assert(offsetof(CanFrame, id) == offsetof(can_frame, can_id),
52 "Offset mismatch for 'id' member.");
53 static_assert(offsetof(CanFrame, dlc) == offsetof(can_frame, can_dlc),
54 "Offset mismatch for 'dlc' member.");
55 static_assert(offsetof(CanFrame, data) == offsetof(can_frame, data),
56 "Offset mismatch for 'data' member.");
57#endif
58}
59
60#endif //CANFRAME_HPP
#define ONE_MOTOR_CAN_MAX_DLEN
定义CAN帧数据的最大长度。
定义 CanFrame.hpp:17
uint8_t data[ONE_MOTOR_CAN_MAX_DLEN]
CAN数据负载,8字节对齐
定义 CanFrame.hpp:42
uint8_t len8_dlc
CAN FD中真实的数据长度 (兼容普通CAN)
定义 CanFrame.hpp:41
uint8_t __res0
保留字节
定义 CanFrame.hpp:40
uint8_t dlc
数据长度码 (0-8)
定义 CanFrame.hpp:38
uint8_t __pad
填充字节,用于对齐
定义 CanFrame.hpp:39