Struct BlockingFirmwareState
pub struct BlockingFirmwareState<'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> BlockingFirmwareState<'d, STATE>where
STATE: NorFlash,
impl<'d, STATE> BlockingFirmwareState<'d, STATE>where
STATE: NorFlash,
sourcepub fn from_config<DFU>(
config: FirmwareUpdaterConfig<DFU, STATE>,
aligned: &'d mut [u8],
) -> BlockingFirmwareState<'d, STATE>where
DFU: NorFlash,
pub fn from_config<DFU>(
config: FirmwareUpdaterConfig<DFU, STATE>,
aligned: &'d mut [u8],
) -> BlockingFirmwareState<'d, STATE>where
DFU: NorFlash,
Creates 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],
) -> BlockingFirmwareState<'d, STATE>
pub fn new( state: STATE, aligned: &'d mut [u8], ) -> BlockingFirmwareState<'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 STATE::WRITE_SIZE, and follow the alignment rules for the flash being read from
and written to.
sourcepub fn get_state(&mut self) -> Result<State, FirmwareUpdaterError>
pub 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 fn mark_updated(&mut self) -> Result<(), FirmwareUpdaterError>
pub fn mark_updated(&mut self) -> Result<(), FirmwareUpdaterError>
Mark to trigger firmware swap on next boot.
sourcepub fn mark_dfu(&mut self) -> Result<(), FirmwareUpdaterError>
pub fn mark_dfu(&mut self) -> Result<(), FirmwareUpdaterError>
Mark to trigger USB DFU on next boot.
sourcepub fn mark_booted(&mut self) -> Result<(), FirmwareUpdaterError>
pub fn mark_booted(&mut self) -> Result<(), FirmwareUpdaterError>
Mark firmware boot successful and stop rollback on reset.