pub struct FirmwareVersionState {
pub hardware_timestamp_us: u64,
pub system_timestamp_us: u64,
pub firmware_data: Vec<u8>,
pub is_complete: bool,
pub version_string: Option<String>,
}Expand description
固件版本状态
更新频率:按需查询 CAN ID:0x4AF(多帧累积) 同步机制:RwLock(冷数据,更新频率低)
Fields§
§hardware_timestamp_us: u64硬件时间戳(微秒,最后一帧的时间)
system_timestamp_us: u64系统接收时间戳(微秒)
firmware_data: Vec<u8>累积的固件数据(字节数组) 注意:版本字符串需要从累积数据中解析
is_complete: bool是否已收到完整数据 注意:判断条件需要根据实际情况确定(例如收到特定结束标记)
version_string: Option<String>解析后的版本字符串(缓存) 如果 firmware_data 中包含有效的版本字符串,这里存储解析结果
Implementations§
Source§impl FirmwareVersionState
impl FirmwareVersionState
Sourcepub fn check_completeness(&mut self) -> bool
pub fn check_completeness(&mut self) -> bool
检查数据是否完整(是否找到 S-V 标记且有足够数据)
数据完整的条件:
- 找到 “S-V” 标记
- 从 S-V 开始至少有 8 字节数据
§返回值
如果数据完整,返回 true 并更新 is_complete 字段
Sourcepub fn parse_version(&mut self) -> Option<String>
pub fn parse_version(&mut self) -> Option<String>
尝试从累积数据中解析版本字符串
解析成功时会自动更新 version_string 和 is_complete 状态。
Sourcepub fn version_string(&self) -> Option<&String>
pub fn version_string(&self) -> Option<&String>
获取版本字符串(如果已解析)
Trait Implementations§
Source§impl Clone for FirmwareVersionState
impl Clone for FirmwareVersionState
Source§fn clone(&self) -> FirmwareVersionState
fn clone(&self) -> FirmwareVersionState
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 FirmwareVersionState
impl Debug for FirmwareVersionState
Source§impl Default for FirmwareVersionState
impl Default for FirmwareVersionState
Source§fn default() -> FirmwareVersionState
fn default() -> FirmwareVersionState
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for FirmwareVersionState
impl RefUnwindSafe for FirmwareVersionState
impl Send for FirmwareVersionState
impl Sync for FirmwareVersionState
impl Unpin for FirmwareVersionState
impl UnwindSafe for FirmwareVersionState
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