name=OTA Cluster Platform Bootloader
category=ZigBee OTA Bootloading

# Any string is allowable here.  Generally it is either: Production Ready, Test Tool, or Requires Extending
qualityString=Production Ready for Ember Chips (Certifiable)
# This must be one of the following:  productionReady, testTool, extensionNeeded
quality=production

introducedIn=

description=This plugin provides the platform specific means to bootload a device with an application bootloader using external storage for the new image.  For an SOC platform this will simply execute the bootloader.  In that case it is assumed that the SOC bootloader can access the same storage device as the run-time application using the bootload cluster (i.e. they both have the same EEPROM driver).  For the NCP, the code is more complex but functionally the same.  This host code will launch the bootloader on the NCP, transfer the file over to the NCP via the xmodem protocol, then reboot the NCP.  It is assumed for the NCP that the serial standalone bootloader appropriate for the platform (UART or SPI) is loaded.  The NCP code requires an OTA Storage implementation and device.  This plugin does not support any host bootloading, or bootloading other microchips, but it can be extended to do so.

sourceFiles=ota-bootload-cli.c
sourceFilesSoc=ota-bootload-soc.c

# For now we include both UART and SPI files.  Later the plugin may be smart
# enough to determine what to include based on the HAL options
sourceFilesHost=ota-bootload-ncp.c, ota-bootload-ncp-uart.c, ota-bootload-ncp-spi.c, ota-bootload-xmodem.c

dependsOnClusterClient=over the air bootloading

implementedCallbacks=emberAfOtaBootloadCallback

includedByDefault=true

options=uartHostReboot

uartHostReboot.name=UART Host Reboot after NCP bootload
uartHostReboot.description=This option will trigger the UART host to reboot.  On Unix hosts this will trigger the process to terminate.  Disabling this option will allow the UART host to continue running and just reset the NCP.  SPI Hosts are always rebooted.
uartHostReboot.type=BOOLEAN
uartHostReboot.default=TRUE
