Over-The-Air Device Firmware Upgrade (Alpha)#
Wi-SUN Over-The-Air Device Firmware Upgrade (OTA DFU) service is implemented for updating Wi-SUN device's firmware. The component uses the Gecko Bootloader API to perform firmware write, verify, and set to bootload operations.
A Trivial File Transfer Protocol (TFTP) client provides downloader solution to obtain a new Gecko Bootloader File (GBL) file from remote host Over-The-Air, using the Wi-SUN network. The connection to the TFTP remote host can be configured in component configuration file. The entire firmware upgrade session can be managed over CoAP. The service includes notification and status request capabilities.
The Wi-SUN Over-The-Air Device Firmware Upgrade (OTA DFU) service is implemented to facilitate the updating of Wi-SUN device firmware. This component requires the Gecko Bootloader API to execute firmware writing, verification, and boot-load operations.
To obtain a new Gecko Bootloader File (GBL) file from a remote host Over-The-Air, a Trivial File Transfer Protocol (TFTP) client is employed, leveraging the Wi-SUN network. The entire firmware upgrade session is manageable over CoAP, with the service offering remote host connection settings, firmware file selection, notification and status request capabilities. Configuration of the connection to the TFTP remote host can be accomplished even within the component configuration file. To utilize this component, a bootloader must be flashed onto the device. The component relies on functions that reside within the bootloader. To choose the appropriate bootloader, consider factors such as flash location (internal or external) and size. If necessary, apply compression.
Modules#
Functions#
OTA DFU error handler (weak implementation)
Free the status string buffer.
Get the status value.
Get the status flag value.
Get the status string in JSON format.
Get GBL file path.
Get host addres and port.
Get host uri path.
Initialize the device firmware upgrade service.
Reboot device.
Set GBL file path.
Set host address and port.
Set host uri path.
Start firmware update.
Stop firmware update.
Function Documentation#
sl_wisun_ota_dfu_error_hnd#
void sl_wisun_ota_dfu_error_hnd (const sl_wisun_ota_dfu_error_code_t error_code, sl_wisun_ota_dfu_error_ctx_t *const ctx)
OTA DFU error handler (weak implementation)
Type | Direction | Argument Name | Description |
---|---|---|---|
const sl_wisun_ota_dfu_error_code_t | [in] | error_code | Error code |
sl_wisun_ota_dfu_error_ctx_t *const | [in] | ctx | Error context with error details |
Catch error in different stages of boot load.
sl_wisun_ota_dfu_free_fw_update_status_json_str#
void sl_wisun_ota_dfu_free_fw_update_status_json_str (const char * str)
Free the status string buffer.
Type | Direction | Argument Name | Description |
---|---|---|---|
const char * | [in] | str | String ptr |
Call CoAP free to release allocated memory
sl_wisun_ota_dfu_get_fw_update_status#
uint32_t sl_wisun_ota_dfu_get_fw_update_status (void )
Get the status value.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
Returning the value of event flags Returns
uint32_t Status
sl_wisun_ota_dfu_get_fw_update_status_flag#
bool sl_wisun_ota_dfu_get_fw_update_status_flag (const sl_wisun_ota_dfu_status_t status_flag)
Get the status flag value.
Type | Direction | Argument Name | Description |
---|---|---|---|
const sl_wisun_ota_dfu_status_t | [in] | status_flag | Status flag enum |
Bool representation of status variable bit value Returns
bool true if the flag is set, otherwise false
sl_wisun_ota_dfu_get_fw_update_status_json_str#
const char * sl_wisun_ota_dfu_get_fw_update_status_json_str (void )
Get the status string in JSON format.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
String buffer is allocated in heap by CoAP allocator Returns
const char * Allocated string pointer on success, otherwise NULL
sl_wisun_ota_dfu_get_gbl_path#
sl_status_t sl_wisun_ota_dfu_get_gbl_path (char *const dst_gbl_path, const uint16_t dst_gbl_path_size)
Get GBL file path.
Type | Direction | Argument Name | Description |
---|---|---|---|
char *const | [out] | dst_gbl_path | GBL file path |
const uint16_t | [in] | dst_gbl_path_size | GBL path size |
Get GBL file path Returns
sl_status_t SL_STATUS_OK on success, otherwise SL_STATUS_FAIL
sl_wisun_ota_dfu_get_host_addr#
sl_status_t sl_wisun_ota_dfu_get_host_addr (char *const dst_host, const uint16_t dst_host_size, uint16_t * dst_port)
Get host addres and port.
Type | Direction | Argument Name | Description |
---|---|---|---|
char *const | [out] | dst_host | Host address |
const uint16_t | [in] | dst_host_size | Host address size |
uint16_t * | [out] | dst_port | Host port |
Get host address and port Returns
sl_status_t SL_STATUS_OK on success, otherwise SL_STATUS_FAIL
sl_wisun_ota_dfu_get_host_uri#
sl_status_t sl_wisun_ota_dfu_get_host_uri (char *const dst_uri, const uint16_t dst_uri_size)
Get host uri path.
Type | Direction | Argument Name | Description |
---|---|---|---|
char *const | [out] | dst_uri | Uri path |
const uint16_t | [in] | dst_uri_size | Uri path size |
Get host uri path Returns
sl_status_t SL_STATUS_OK on success, otherwise SL_STATUS_FAIL
sl_wisun_ota_dfu_init#
void sl_wisun_ota_dfu_init (void )
Initialize the device firmware upgrade service.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
Initialize Wi-SUN OTA Device Firmware Upgrade service.
sl_wisun_ota_dfu_reboot_and_install#
sl_status_t sl_wisun_ota_dfu_reboot_and_install (void )
Reboot device.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
Reboot device with calling corresponding gecko bootloader 'bootloader_rebootAndInstall' API This functions is available if auto-reboot mode is disabled. Returns
sl_status_t SL_STATUS_OK on success, otherwise SL_STATUS_FAIL
sl_wisun_ota_dfu_set_gbl_path#
sl_status_t sl_wisun_ota_dfu_set_gbl_path (const char * gbl_path)
Set GBL file path.
Type | Direction | Argument Name | Description |
---|---|---|---|
const char * | [in] | gbl_path | GBL file path |
Set GBL file path Returns
sl_status_t SL_STATUS_OK on success, otherwise SL_STATUS_FAIL
sl_wisun_ota_dfu_set_host_addr#
sl_status_t sl_wisun_ota_dfu_set_host_addr (const char * host, const uint16_t port)
Set host address and port.
Type | Direction | Argument Name | Description |
---|---|---|---|
const char * | [in] | host | Host address |
const uint16_t | [in] | port | Host port |
Set host address and port Returns
sl_status_t SL_STATUS_OK on success, otherwise SL_STATUS_FAIL
sl_wisun_ota_dfu_set_host_uri#
sl_status_t sl_wisun_ota_dfu_set_host_uri (const char * uri)
Set host uri path.
Type | Direction | Argument Name | Description |
---|---|---|---|
const char * | [in] | uri | Uri path |
Set host uri path Returns
sl_status_t SL_STATUS_OK on success, otherwise SL_STATUS_FAIL
sl_wisun_ota_dfu_start_fw_update#
sl_status_t sl_wisun_ota_dfu_start_fw_update (void )
Start firmware update.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
Start firmware update by setting SL_WISUN_OTA_DFU_STATUS_FW_UPDATE_STARTED flag Returns
sl_status_t SL_STATUS_OK on success, otherwise SL_STATUS_FAIL
sl_wisun_ota_dfu_stop_fw_update#
sl_status_t sl_wisun_ota_dfu_stop_fw_update (void )
Stop firmware update.
Type | Direction | Argument Name | Description |
---|---|---|---|
void | N/A |
Stop firmware update by setting SL_WISUN_OTA_DFU_STATUS_FW_UPDATE_STOPPED flag Returns
sl_status_t SL_STATUS_OK on success, otherwise SL_STATUS_FAIL