OTA Storage Common#

API and Callbacks for the OTA Storage Common Component.

Common code for any storage module implementing an Over-the-Air bootload cluster. It is used by either the Zigbee or legacy Ember Standalone bootloader implementations.

Modules#

OTA Storage

API#

bool
sl_zigbee_af_is_ota_image_id_valid(const sl_zigbee_af_ota_image_id_t *idToCompare)

A call to check if the OTA Image ID is valid.

Macros#

#define

Defines the minimum header length for the OTA file.

#define
OTA_MAXIMUM_HEADER_LENGTH (OTA_MINIMUM_HEADER_LENGTH + 1 + 8 + 4)

Defines the maximum header length for the OTA file.

#define
OTA_MAXIMUM_HEADER_LENGTH_2_BYTE_ALIGNED (OTA_MAXIMUM_HEADER_LENGTH + 1)
#define
OTA_MAXIMUM_HEADER_LENGTH_4_BYTE_ALIGNED (OTA_MAXIMUM_HEADER_LENGTH + 3)
#define
#define
#define
TAG_OVERHEAD (2 + 4)

Tag Overhead. 2 bytes for the Tag ID and 4 bytes for the length.

#define
isValidHeaderVersion (headerVersion)

Check if the header version is valid.

#define

Check if the header has security credentials present.

#define

Check if the header has an upgrade file destination.

#define

Check if the header has the hardware version present.

#define
SIGNATURE_TAG_DATA_SIZE (EUI64_SIZE + SL_ZIGBEE_SIGNATURE_SIZE)
#define
SIGNATURE_283K1_TAG_DATA_SIZE (EUI64_SIZE + SL_ZIGBEE_SIGNATURE_283K1_SIZE)
#define
#define
#define
INVALID_EUI64 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
#define
#define
INVALID_SLOT (uint32_t)-1
#define

Default to using storage slot 0.

API Documentation#

sl_zigbee_af_is_ota_image_id_valid#

bool sl_zigbee_af_is_ota_image_id_valid (const sl_zigbee_af_ota_image_id_t * idToCompare)

A call to check if the OTA Image ID is valid.

Parameters
TypeDirectionArgument NameDescription
const sl_zigbee_af_ota_image_id_t *[in]idToCompare

a pointer of type: sl_zigbee_af_ota_image_id_t referring to the OTA image ID

Returns

  • A ::bool value returning true if the OTA Id is valid


Macro Definition Documentation#

OTA_MINIMUM_HEADER_LENGTH#

#define OTA_MINIMUM_HEADER_LENGTH
Value:
(20 + 32 + 4)

Defines the minimum header length for the OTA file.

The total length (in bytes) was calulated from the following fields:
4 bytes: OTA upgrade file identifier
2 bytes: Unsigned 16-bit integer OTA Header version
2 bytes: Unsigned 16-bit integer OTA Header length
2 bytes: Unsigned 16-bit integer OTA Header Field control
2 bytes: Unsigned 16-bit integer Manufacturer code
2 bytes: Unsigned 16-bit integer Image type
4 bytes: Unsigned 32-bit integer File version
2 bytes: Unsigned 16-bit integer ZigBee Stack version
32 bytes: Character string OTA Header string
4 bytes: Unsigned 32-bit integer Total Image size (including header)


OTA_MAXIMUM_HEADER_LENGTH#

#define OTA_MAXIMUM_HEADER_LENGTH
Value:
(OTA_MINIMUM_HEADER_LENGTH + 1 + 8 + 4)

Defines the maximum header length for the OTA file.

The total length (in bytes) was calulated from the following fields:
1 byte: Unsigned 8-bit integer Security credential version
8 bytes: IEEE Address Upgrade file destination
2 bytes: Unsigned 16-bit integer Minimum hardware version
2 bytes: Unsigned 16-bit integer


OTA_MAXIMUM_HEADER_LENGTH_2_BYTE_ALIGNED#

#define OTA_MAXIMUM_HEADER_LENGTH_2_BYTE_ALIGNED
Value:
(OTA_MAXIMUM_HEADER_LENGTH + 1)

OTA_MAXIMUM_HEADER_LENGTH_4_BYTE_ALIGNED#

#define OTA_MAXIMUM_HEADER_LENGTH_4_BYTE_ALIGNED
Value:
(OTA_MAXIMUM_HEADER_LENGTH + 3)

OTA_FILE_MAGIC_NUMBER#

#define OTA_FILE_MAGIC_NUMBER
Value:
0x0BEEF11EL

MAGIC_NUMBER_OFFSET#

#define MAGIC_NUMBER_OFFSET
Value:
0

HEADER_VERSION_OFFSET#

#define HEADER_VERSION_OFFSET
Value:
4

HEADER_LENGTH_OFFSET#

#define HEADER_LENGTH_OFFSET
Value:
6

FIELD_CONTROL_OFFSET#

#define FIELD_CONTROL_OFFSET
Value:
8

MANUFACTURER_ID_OFFSET#

#define MANUFACTURER_ID_OFFSET
Value:
10

IMAGE_TYPE_ID_OFFSET#

#define IMAGE_TYPE_ID_OFFSET
Value:
12

VERSION_OFFSET#

#define VERSION_OFFSET
Value:
14

STACK_VERSION_OFFSET#

#define STACK_VERSION_OFFSET
Value:
18

HEADER_STRING_OFFSET#

#define HEADER_STRING_OFFSET
Value:
20

IMAGE_SIZE_OFFSET#

#define IMAGE_SIZE_OFFSET
Value:
52

OPTIONAL_FIELDS_OFFSET#

#define OPTIONAL_FIELDS_OFFSET
Value:
56

HEADER_LENGTH_FIELD_LENGTH#

#define HEADER_LENGTH_FIELD_LENGTH
Value:
2

TAG_OVERHEAD#

#define TAG_OVERHEAD
Value:
(2 + 4)

Tag Overhead. 2 bytes for the Tag ID and 4 bytes for the length.


isValidHeaderVersion#

#define isValidHeaderVersion
Value:
(headerVersion)

Check if the header version is valid.


SECURITY_CREDENTIAL_VERSION_FIELD_PRESENT_MASK#

#define SECURITY_CREDENTIAL_VERSION_FIELD_PRESENT_MASK
Value:
0x0001

DEVICE_SPECIFIC_FILE_PRESENT_MASK#

#define DEVICE_SPECIFIC_FILE_PRESENT_MASK
Value:
0x0002

HARDWARE_VERSIONS_PRESENT_MASK#

#define HARDWARE_VERSIONS_PRESENT_MASK
Value:
0x0004

headerHasSecurityCredentials#

#define headerHasSecurityCredentials
Value:
(header)

Check if the header has security credentials present.


headerHasUpgradeFileDest#

#define headerHasUpgradeFileDest
Value:
(header)

Check if the header has an upgrade file destination.


headerHasHardwareVersions#

#define headerHasHardwareVersions
Value:
(header)

Check if the header has the hardware version present.


SIGNATURE_TAG_DATA_SIZE#

#define SIGNATURE_TAG_DATA_SIZE
Value:
(EUI64_SIZE + SL_ZIGBEE_SIGNATURE_SIZE)

SIGNATURE_283K1_TAG_DATA_SIZE#

#define SIGNATURE_283K1_TAG_DATA_SIZE
Value:
(EUI64_SIZE + SL_ZIGBEE_SIGNATURE_283K1_SIZE)

INVALID_MANUFACTURER_ID#

#define INVALID_MANUFACTURER_ID
Value:
0xFFFF

INVALID_DEVICE_ID#

#define INVALID_DEVICE_ID
Value:
0xFFFF

INVALID_FIRMWARE_VERSION#

#define INVALID_FIRMWARE_VERSION
Value:
0xFFFFFFFFUL

INVALID_EUI64#

#define INVALID_EUI64
Value:
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }

INVALID_OTA_IMAGE_ID#

#define INVALID_OTA_IMAGE_ID
Value:
{ INVALID_MANUFACTURER_ID, \
INVALID_DEVICE_ID, \
INVALID_FIRMWARE_VERSION, \
INVALID_EUI64, \
}

INVALID_SLOT#

#define INVALID_SLOT
Value:
(uint32_t)-1

DEFAULT_SLOT#

#define DEFAULT_SLOT
Value:
0

Default to using storage slot 0.