Legacy HAL#

The Legacy HAL is an implementation of the Hardware Abstraction Layer (HAL) that was used by the Zigbee EmberZNet and Flex Connect stacks before their transition to the new component-based architecture (Zigbee version 7.0 and Connect version 3.0).

This component is not a complete duplicate of the old HAL. It only contains the most commonly used pieces to enable our networking stacks and sample applications and to support porting customer applications to the new component-based implementation. Currently, Zigbee and Connect sample applications are dependent on this component. Eventually, they will be ported to use new HAL components directly so that this component can become optional or be deprecated. Note

  • This component is only designed to be used with Zigbee and Connect stack applications. Do not use with any other stacks as it will likely introduce problems.

Modules#

HalEepromInformationType

EepromStateType

Application Bootloader Interface

Button

Common Bootloader

Cyclic Redundancy Check

Diagnostics

LED

Microcontroller functions

Random Numbers

Reset Cause Definitions

SimEE2 to NVM3 Upgrade

Simulated EEPROM 1 and 2

Standalone Bootloader

Functions#

Call this function to get information about the external EEPROM and its capabilities.

EmberStatus
halCommonIdleForMilliseconds(uint32_t *duration)

Macros#

#define
EEPROM_PAGE_SIZE (128ul)

Definition of an EEPROM page size, in bytes.

#define
EEPROM_FIRST_PAGE (0)

Define the location of the first page in EEPROM.

#define
EEPROM_IMAGE_START (EEPROM_FIRST_PAGE * EEPROM_PAGE_SIZE)

Define the location of the image start in EEPROM as a function of the EEPROM_FIRST_PAGE and EEPROM_PAGE_SIZE.

#define
EEPROM_SUCCESS 0U

Define EEPROM success status.

#define
EEPROM_ERR 1U

Define EEPROM error status.

#define
EEPROM_ERR_MASK 0x80U

Define EEPROM error mask.

#define
EEPROM_ERR_PG_BOUNDARY 0x81U

Define EEPROM page boundary error.

#define
EEPROM_ERR_PG_SZ 0x82U

Define EEPROM page size error.

#define
EEPROM_ERR_WRT_DATA 0x83U

Define EEPROM write data error.

#define
EEPROM_ERR_IMG_SZ 0x84U

Define EEPROM image too large error.

#define
EEPROM_ERR_ADDR 0x85U

Define EEPROM invalid address error.

#define
EEPROM_ERR_INVALID_CHIP 0x86U

Define EEPROM chip initialization error.

#define
EEPROM_ERR_ERASE_REQUIRED 0x87U

Define EEPROM erase required error.

#define
EEPROM_ERR_NO_ERASE_SUPPORT 0x88U

Define EEPROM error for no erase support.

#define
EEPROM_INFO_VERSION (0x0202)

The current version of the HalEepromInformationType data structure.

#define
EEPROM_INFO_MAJOR_VERSION (0x0200)
#define
EEPROM_INFO_MAJOR_VERSION_MASK (0xFF00)
#define
EEPROM_INFO_MIN_VERSION_WITH_WORD_SIZE_SUPPORT 0x0102U
#define
EEPROM_CAPABILITIES_ERASE_SUPPORTED (0x0001U)

Eeprom capabilites mask that indicates the erase API is supported.

#define
EEPROM_CAPABILITIES_PAGE_ERASE_REQD (0x0002U)

Eeprom capabilites mask that indicates page erasing is required before new data can be written to a device.

#define
EEPROM_CAPABILITIES_BLOCKING_WRITE (0x0004U)

Eeprom capabilites mask that indicates that the write routine is blocking on this device.

#define
EEPROM_CAPABILITIES_BLOCKING_ERASE (0x0008U)

Eeprom capabilites mask that indicates that the erase routine is blocking on this device.

#define
EEPROM_CAPABILITIES_PART_ERASE_SECONDS (0x0010U)

Eeprom capabilities mask that indicateds that the partEraseTime field of HalEepromInformationType is in seconds instead of the usual millisecondss.

#define
simulatedTimePasses ()

Function Documentation#

halEepromInfo#

const HalEepromInformationType * halEepromInfo (void )

Call this function to get information about the external EEPROM and its capabilities.

Parameters
TypeDirectionArgument NameDescription
voidN/A

The format of this call must not be altered. However, the content can be changed to work with a different device.

Returns


halCommonGetInt16uMillisecondTick#

uint16_t halCommonGetInt16uMillisecondTick (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

halCommonGetInt32uMillisecondTick#

uint32_t halCommonGetInt32uMillisecondTick (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

halCommonGetInt64uMillisecondTick#

uint64_t halCommonGetInt64uMillisecondTick (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

halCommonGetInt16uQuarterSecondTick#

uint16_t halCommonGetInt16uQuarterSecondTick (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

halInternalStartSystemTimer#

uint16_t halInternalStartSystemTimer (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

halCommonDelayMicroseconds#

void halCommonDelayMicroseconds (uint16_t us)
Parameters
TypeDirectionArgument NameDescription
uint16_tN/Aus

halCommonDelayMilliseconds#

void halCommonDelayMilliseconds (uint16_t ms)
Parameters
TypeDirectionArgument NameDescription
uint16_tN/Ams

halCommonIdleForMilliseconds#

EmberStatus halCommonIdleForMilliseconds (uint32_t * duration)
Parameters
TypeDirectionArgument NameDescription
uint32_t *N/Aduration

halStackSymbolDelayAIsr#

void halStackSymbolDelayAIsr (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

halStackRadioPowerUpBoard#

void halStackRadioPowerUpBoard (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

halStackRadioPowerDownBoard#

void halStackRadioPowerDownBoard (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A

halStackProcessBootCount#

void halStackProcessBootCount (void )
Parameters
TypeDirectionArgument NameDescription
voidN/A