Digi XBee(R) ANSI C Host Library
Data Structures | Macros | Functions
xbee_bl_gen3.c File Reference

Support code for bootloader used on "Gen3" products (including S3B, S6, S6B, XLR, Cellular, SX, SX868, S8). More...

#include <stdio.h>
#include <stdlib.h>
#include "xbee/bl_gen3.h"
#include "xbee/byteorder.h"
#include "util/crc16buypass.h"

Data Structures

struct  xbee_gen3_page_ver0_t
 < XBEE_GEN3_CMD_UPLOAD_PAGE More...
 
struct  xbee_gen3_page_ver1_t
 < XBEE_GEN3_CMD_UPLOAD_PAGE More...
 

Macros

#define XBEE_GEN3_CMD_BL_VERSION   'B'
 
#define XBEE_GEN3_CMD_EXTENDED_VER   'V'
 
#define XBEE_GEN3_CMD_REGION_CODE   'N'
 
#define XBEE_GEN3_CMD_INITIALIZE   'I'
 
#define XBEE_GEN3_CMD_PROTOCOL_VER   'L'
 
#define XBEE_GEN3_CMD_MAX_BAUDRATE   'X'
 
#define XBEE_GEN3_CMD_NEW_BAUDRATE   'R'
 
#define XBEE_GEN3_CMD_UPLOAD_PAGE   'P'
 
#define XBEE_GEN3_CMD_UPLOAD_FINISHED   'F'
 
#define XBEE_GEN3_CMD_VERIFY_FW   'C'
 
#define XBEE_GEN3_RSP_SUCCESS   'U'
 Successful responses from the bootloader end with XBEE_GEN3_RSP_SUCCESS.
 
#define XBEE_GEN3_RSP_FAILURE   '\x11'
 Generic failure response from bootloader.
 
#define XBEE_GEN3_RSP_UPLOAD_CRC_ERR   '\x12'
 Checksum/CRC invalid.
 
#define XBEE_GEN3_RSP_UPLOAD_VERIFY_ERR   '\x13'
 flash write failed
 
#define _TIME_ELAPSED(x)   (xbee_millisecond_timer() - source->timer > (x))
 

Functions

void xbee_gen3_dump_extended_ver (const xbee_gen3_extended_ver_t *ver)
 
int xbee_bl_gen3_install_init (xbee_dev_t *xbee, xbee_gen3_update_t *source)
 Prepare to install new firmware on an attached XBee module. More...
 
uint16_t xbee_bl_gen3_install_state (xbee_gen3_update_t *source)
 Return a unique value identifying the install state. More...
 
int xbee_bl_gen3_install_tick (xbee_gen3_update_t *source)
 Install the firmware image stored in source. More...
 
const char * xbee_bl_gen3_install_status (xbee_gen3_update_t *source, char buffer[XBEE_GEN3_STATUS_BUF_SIZE])
 Return a string describing the current state of the firmware update. More...
 

Detailed Description

Support code for bootloader used on "Gen3" products (including S3B, S6, S6B, XLR, Cellular, SX, SX868, S8).

Firmware updates use .ebin files.

For Cellular products, all XBee Cellular modules (Cat 1 Verizon and 3G Global) use this bootloader. XBee3 Cellular modules (Cat 1 AT&T and LTE-M/NB-IoT) with firmware versions (ATVR values) ending in 0C or lower do as well.

After installing firmware *0F (1140F or 3100F) on an XBee3 Cellular module, it will update the hardware to use the "Gecko bootloader" and .gbl files for further firmware updates. See xbee/firmware.h and xbee_firmware.c for .gbl and Gecko bootloader support.

Define XBEE_BL_GEN3_VERBOSE for debugging messages.