pub struct PiperFrame {
pub id: u32,
pub data: [u8; 8],
pub len: u8,
pub is_extended: bool,
pub timestamp_us: u64,
}Expand description
SDK 通用的 CAN 帧定义(只针对 CAN 2.0)
设计要点:
- Copy trait:零成本复制,适合高频场景
- 固定 8 字节数据:避免堆分配
- 无生命周期:简化 API
- 支持硬件时间戳:用于精确的时间测量(实时控制场景)
Fields§
§id: u32CAN ID(标准帧或扩展帧)
data: [u8; 8]帧数据(固定 8 字节,未使用部分为 0)
len: u8有效数据长度 (0-8)
is_extended: bool是否为扩展帧(29-bit ID)
timestamp_us: u64硬件时间戳(微秒),0 表示不可用
当启用硬件时间戳模式(GS_CAN_MODE_HW_TIMESTAMP)时, 此字段包含设备硬件提供的时间戳,用于精确测量帧收发时间。 对于力控机械臂等实时控制系统,这是关键信息。
类型说明:使用 u64 而非 u32,原因:
- 支持绝对时间戳(Unix 纪元开始),无需基准时间管理
- 支持相对时间戳(从适配器启动开始),可覆盖更长的时间范围(584,000+ 年)
- 与状态层设计一致(
JointPositionState.hardware_timestamp_us: u64) - 内存对齐后大小相同(24 字节),无额外开销
Implementations§
Source§impl PiperFrame
impl PiperFrame
Sourcepub fn new_standard(id: u16, data: &[u8]) -> Self
pub fn new_standard(id: u16, data: &[u8]) -> Self
创建标准帧
Sourcepub fn new_extended(id: u32, data: &[u8]) -> Self
pub fn new_extended(id: u32, data: &[u8]) -> Self
创建扩展帧
Sourcepub fn data_slice(&self) -> &[u8] ⓘ
pub fn data_slice(&self) -> &[u8] ⓘ
获取数据切片(只包含有效数据)
Trait Implementations§
Source§impl Clone for PiperFrame
impl Clone for PiperFrame
Source§fn clone(&self) -> PiperFrame
fn clone(&self) -> PiperFrame
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PiperFrame
impl Debug for PiperFrame
Source§impl From<PiperCommand> for PiperFrame
impl From<PiperCommand> for PiperFrame
Source§fn from(cmd: PiperCommand) -> Self
fn from(cmd: PiperCommand) -> Self
Converts to this type from the input type.
Source§impl From<PiperFrame> for PiperCommand
impl From<PiperFrame> for PiperCommand
Source§fn from(frame: PiperFrame) -> Self
fn from(frame: PiperFrame) -> Self
默认转换为可靠命令(向后兼容)
Source§impl PartialEq for PiperFrame
impl PartialEq for PiperFrame
Source§impl TryFrom<PiperFrame> for CollisionProtectionLevelFeedback
impl TryFrom<PiperFrame> for CollisionProtectionLevelFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for ControlModeCommandFeedback
impl TryFrom<PiperFrame> for ControlModeCommandFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for EndPoseFeedback1
impl TryFrom<PiperFrame> for EndPoseFeedback1
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for EndPoseFeedback2
impl TryFrom<PiperFrame> for EndPoseFeedback2
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for EndPoseFeedback3
impl TryFrom<PiperFrame> for EndPoseFeedback3
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for EndVelocityAccelFeedback
impl TryFrom<PiperFrame> for EndVelocityAccelFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for FirmwareReadFeedback
impl TryFrom<PiperFrame> for FirmwareReadFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for GripperControlFeedback
impl TryFrom<PiperFrame> for GripperControlFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for GripperFeedback
impl TryFrom<PiperFrame> for GripperFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for GripperTeachParamsFeedback
impl TryFrom<PiperFrame> for GripperTeachParamsFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for JointControl12Feedback
impl TryFrom<PiperFrame> for JointControl12Feedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for JointControl34Feedback
impl TryFrom<PiperFrame> for JointControl34Feedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for JointControl56Feedback
impl TryFrom<PiperFrame> for JointControl56Feedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for JointDriverHighSpeedFeedback
impl TryFrom<PiperFrame> for JointDriverHighSpeedFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for JointDriverLowSpeedFeedback
impl TryFrom<PiperFrame> for JointDriverLowSpeedFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for JointEndVelocityAccelFeedback
impl TryFrom<PiperFrame> for JointEndVelocityAccelFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for JointFeedback12
impl TryFrom<PiperFrame> for JointFeedback12
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for JointFeedback34
impl TryFrom<PiperFrame> for JointFeedback34
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for JointFeedback56
impl TryFrom<PiperFrame> for JointFeedback56
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for MotorLimitFeedback
impl TryFrom<PiperFrame> for MotorLimitFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for MotorMaxAccelFeedback
impl TryFrom<PiperFrame> for MotorMaxAccelFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for RobotStatusFeedback
impl TryFrom<PiperFrame> for RobotStatusFeedback
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
Source§impl TryFrom<PiperFrame> for SettingResponse
impl TryFrom<PiperFrame> for SettingResponse
Source§type Error = ProtocolError
type Error = ProtocolError
The type returned in the event of a conversion error.
impl Copy for PiperFrame
impl Eq for PiperFrame
impl StructuralPartialEq for PiperFrame
Auto Trait Implementations§
impl Freeze for PiperFrame
impl RefUnwindSafe for PiperFrame
impl Send for PiperFrame
impl Sync for PiperFrame
impl Unpin for PiperFrame
impl UnwindSafe for PiperFrame
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more