pub struct FirmwareState<'d, STATE> { /* private fields */ }
Expand description
Manages the state partition of the firmware update.
Can be used standalone for more fine grained control, or as part of the updater.
Implementations§
Source§impl<'d, STATE> FirmwareState<'d, STATE>where
STATE: NorFlash,
impl<'d, STATE> FirmwareState<'d, STATE>where
STATE: NorFlash,
Sourcepub fn from_config<DFU>(
config: FirmwareUpdaterConfig<DFU, STATE>,
aligned: &'d mut [u8],
) -> FirmwareState<'d, STATE>where
DFU: NorFlash,
pub fn from_config<DFU>(
config: FirmwareUpdaterConfig<DFU, STATE>,
aligned: &'d mut [u8],
) -> FirmwareState<'d, STATE>where
DFU: NorFlash,
Create a firmware state instance from a FirmwareUpdaterConfig with a buffer for magic content and state partition.
§Safety
The aligned
buffer must have a size of STATE::WRITE_SIZE, and follow the alignment rules for the flash being read from
and written to.
Sourcepub fn new(state: STATE, aligned: &'d mut [u8]) -> FirmwareState<'d, STATE>
pub fn new(state: STATE, aligned: &'d mut [u8]) -> FirmwareState<'d, STATE>
Create a firmware state instance with a buffer for magic content and state partition.
§Safety
The aligned
buffer must have a size of maximum of STATE::WRITE_SIZE and STATE::READ_SIZE,
and follow the alignment rules for the flash being read from and written to.
Sourcepub async fn get_state(&mut self) -> Result<State, FirmwareUpdaterError>
pub async fn get_state(&mut self) -> Result<State, FirmwareUpdaterError>
Obtain the current state.
This is useful to check if the bootloader has just done a swap, in order
to do verifications and self-tests of the new image before calling
mark_booted
.
Sourcepub async fn mark_updated(&mut self) -> Result<(), FirmwareUpdaterError>
pub async fn mark_updated(&mut self) -> Result<(), FirmwareUpdaterError>
Mark to trigger firmware swap on next boot.
Sourcepub async fn mark_dfu(&mut self) -> Result<(), FirmwareUpdaterError>
pub async fn mark_dfu(&mut self) -> Result<(), FirmwareUpdaterError>
Mark to trigger USB DFU on next boot.
Sourcepub async fn mark_booted(&mut self) -> Result<(), FirmwareUpdaterError>
pub async fn mark_booted(&mut self) -> Result<(), FirmwareUpdaterError>
Mark firmware boot successful and stop rollback on reset.