BLE OTA Upgradable stack: Bootloader and Application use single BLE component

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

cross mob
FrSt_4749731
Level 3
Level 3
10 replies posted 10 questions asked 10 sign-ins

Hello,

I am trying to understand the BLE OTA upgradable stack and would like to know if bootloader defines BLE component using the stack-only and then application using the new BLE component with profile-only.

Why do I need to define 2 components if the BLE stack should be shared? And if the second is only a reference to the first one, why does not the second one just reuse all the settings from the first one (Profiles, GAP settings)?

Is it possible to use only one BLE component that is shared between bootloader and the application?

Thanks for the answer, Frenk

0 Likes
1 Solution
SudheeshK
Moderator
Moderator
Moderator
250 sign-ins First question asked 750 replies posted

Hello,

In our upgradable stack OTA bootloader example project, "Application" and "Stack" projects store the bonding information at different locations. That is why, you need to bond with them separately.

Please find the example project available at: PSoC4 BLE Upgradable Stack OTA with bonding data s... - Cypress Developer Community. In this project, the existing bootloader project is modified to share bonding data between "Application" and "Stack " projects. 

Thanks and Regards,

Sudheesh

View solution in original post

0 Likes
3 Replies
VenkataD_41
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hi Frenk,

>>"Why do I need to define 2 components if the BLE stack should be shared? And if the second is only a reference to the first one, why does not the second one just reuse all the settings from the first one (Profiles, GAP settings)?"

This is just for flexibility for the user to implement two different GAP and GATT settings for his stack and application projects. For example, user can set two different security settings one for uploading the Stack and/or application and two for the application it self.

Please let us know if you are facing any confusion or difficulty with this method. We will forward your comments to our software development team.

>>"Is it possible to use only one BLE component that is shared between bootloader and the application?"

Yes. It should be possible. Please note that this needs some complex effort to implement and therefore user has to implement on his own.

Hope this information helps !!

Thanks

Ganesh

0 Likes

Hello Ganesh,

Thank you very much for this explanation. It explain few thigs, but this flexibility causes the user to use two GAP profiles, for example for bootloader we can use "BLE bootloader" and for the normal mode "BLE application". And it complicates update FW from the usability view as now you have to boot the device manually into the bootloader mode. Ok here we could send a BLE message from the phone to switch the device to bootloader mode.

And you are then using different GAP settings, so on the mobile phone the user has to connect to 2 different device. Or am I wrong, can we put the same GAP settings to both BLE components?

Would be fine if user could just use the mobile app to set device into the bootloader mode, send all the FW, mobile application would restart automatically and user could continue using the application.

Am I also correct that if I update the BLE application only, the bonding information remains. But if I update also the BLE stack, then the bonding information is lost.

About using 1 BLE component and complex effort, how complex do you mean it? Few weeks or few months of work. I thought if we are sharing the stack then it would be simple to share the GAP/GATT settings. They are stored in the metadata section, I thought that both application and bootloader access both metadata sections?

Thanks again for you time, Frenk

0 Likes
SudheeshK
Moderator
Moderator
Moderator
250 sign-ins First question asked 750 replies posted

Hello,

In our upgradable stack OTA bootloader example project, "Application" and "Stack" projects store the bonding information at different locations. That is why, you need to bond with them separately.

Please find the example project available at: PSoC4 BLE Upgradable Stack OTA with bonding data s... - Cypress Developer Community. In this project, the existing bootloader project is modified to share bonding data between "Application" and "Stack " projects. 

Thanks and Regards,

Sudheesh

0 Likes