PSoC4 BLE Upgradable Stack OTA with bonding data shared between "Application" and "Stack"

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
SudheeshK
Moderator
Moderator
Moderator
250 sign-ins First question asked 750 replies posted

As per the current implementation of PSoC4 BLE upgradable stack OTA example project, bonding data is not shared between "Application" and "Stack" projects. 

So that, user has to connect and bond again with stack project before performing firmware update over the air.

Steps to be followed to perform firmware update over the air

  1. Connect and bond with “Application” project from the central device.
  2. Switch to “Stack” project for OTA firmware update.
  3. Connect a bond with “Stack” project again from the central device.
  4. Perform OTA firmware update.

Both "Application" and "Stack" projects store bonding data at different locations. That is the reason why user need to connect and bond with the stack project before performing firmware update over the air.

The solution is to make the "Application" and "Stack" projects share the bonding data between them. Below steps are followed to share the bonding data between "Application" and "Stack" projects. Both “Application” and “Stack” projects store the bonded device list in the structure “cyBle_flashStorage” separately.

Changes made to the Upgradable Stack OTA example project.

  1. Make the BLE name (OTA Bootloader) and address (00A050-000615) same for both Stack and Application projects.
  2. When “Application” or “Stack” projects starts,
    1. Store the address of “cyBle_flashStorage” structure to user SFlash available in PSoC4 BLE.
    2. Read address of “cyBle_flashStorage” of the other project. i.e. if current project is “Application” read the address stored by “Stack” project.
    3. Update the contents of “cyBle_flashStorage”.

Updated project is attached with this post.

0 Likes
0 Replies