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: NorFlash> FirmwareState<'d, STATE>
impl<'d, STATE: NorFlash> FirmwareState<'d, STATE>
Sourcepub fn from_config<DFU: NorFlash>(
config: FirmwareUpdaterConfig<DFU, STATE>,
aligned: &'d mut [u8],
) -> Self
pub fn from_config<DFU: NorFlash>( config: FirmwareUpdaterConfig<DFU, STATE>, aligned: &'d mut [u8], ) -> Self
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]) -> Self
pub fn new(state: STATE, aligned: &'d mut [u8]) -> Self
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.