Defines a platform abstraction layer for the Z-Wave bootloader. More...
Collaboration diagram for Zpal-bootloader:Topics | |
| Zpal-bootloader-info-version | |
Data Structures | |
| struct | zpal_bootloader_info_t |
| Information about the current bootloader. More... | |
Macros | |
| #define | ZPAL_BOOTLOADER_CAPABILITY_STORAGE (1 << 0) |
| Bootloader has the capability of storing data in an internal or external storage medium. | |
Enumerations | |
| enum | zpal_bootloader_type_t { ZPAL_BOOTLOADER_NOT_PRESENT = 0 , ZPAL_BOOTLOADER_PRESENT = 1 } |
| Type of bootloader. More... | |
Functions | |
| void | zpal_bootloader_get_info (zpal_bootloader_info_t *info) |
| Get information about the bootloader on this device. The information returned is fetched from the main bootloader information table. | |
| zpal_status_t | zpal_bootloader_init (void) |
| Initialize components of the bootloader so the app can use the interface. This typically includes initializing serial peripherals for communication with external SPI flashes, and so on. | |
| void | zpal_bootloader_reboot_and_install (void) |
| Reboot into the bootloader to install something. If there is a storage component and a slot is marked for bootload, install the image in that slot after verifying it. If a communication component is present, open the communication channel and receive an image to be installed. | |
| zpal_status_t | zpal_bootloader_verify_image (void) |
| Verify that the image is valid. | |
| zpal_status_t | zpal_bootloader_write_data (uint32_t offset, uint8_t *data, uint16_t length) |
| Writes a fragment of a firmware image to the bootloader storage. | |
| bool | zpal_bootloader_is_first_boot (bool *updated_successfully) |
| Returns whether the software is running on the first boot after a new firmware image was written. | |
| void | zpal_bootloader_reset_page_counters (void) |
| Resets the bootloader page counters. Used when initiating an upgrade to jump back to the start of the storage slot. | |
Defines a platform abstraction layer for the Z-Wave bootloader.
How to use the bootloader API
The ZPAL bootloader API is required if an application would like to store and use a new firmware image.
zpal_bootloader_init() and zpal_bootloader_get_info() must be implemented as Z-Wave always invokes these. The remaining API functions are optional in case a bootloader is not present in the ZPAL implementation.
The following outlines an example of use:
Requirements:
| #define ZPAL_BOOTLOADER_CAPABILITY_STORAGE (1 << 0) |
Bootloader has the capability of storing data in an internal or external storage medium.
| void zpal_bootloader_get_info | ( | zpal_bootloader_info_t * | info | ) |
Get information about the bootloader on this device. The information returned is fetched from the main bootloader information table.
//zpal-bootloader-info-version
| [out] | info | Pointer to the bootloader information struct. |
| zpal_status_t zpal_bootloader_init | ( | void | ) |
Initialize components of the bootloader so the app can use the interface. This typically includes initializing serial peripherals for communication with external SPI flashes, and so on.
| bool zpal_bootloader_is_first_boot | ( | bool * | updated_successfully | ) |
Returns whether the software is running on the first boot after a new firmware image was written.
| [in] | updated_successfully | Set to true if update was successful, false otherwise. Valid only when it's the first boot. |
| void zpal_bootloader_reboot_and_install | ( | void | ) |
Reboot into the bootloader to install something. If there is a storage component and a slot is marked for bootload, install the image in that slot after verifying it. If a communication component is present, open the communication channel and receive an image to be installed.
| void zpal_bootloader_reset_page_counters | ( | void | ) |
Resets the bootloader page counters. Used when initiating an upgrade to jump back to the start of the storage slot.
| zpal_status_t zpal_bootloader_verify_image | ( | void | ) |
Verify that the image is valid.
| zpal_status_t zpal_bootloader_write_data | ( | uint32_t | offset, |
| uint8_t * | data, | ||
| uint16_t | length ) |
Writes a fragment of a firmware image to the bootloader storage.
| [in] | offset | Offset from the storage start. |
| [in] | data | Pointer to fragment of firmware image. |
| [in] | length | Length of firmware image fragment. |