I have the need to update the Cypress PRoC over BLE (OTA). The application itself is also BLE (so should share the BLE API code space rather than duplicating it). I am referencing AN 97060.
I assumed that the FixedStack OTA would allow me to put the BootLoader service in the fixed BootLoader part, and my own services in the BootLoadable part and they could still share the large BLE API calls. But AN97060 says "Make sure that the final bootloadable project schematic does not contain the BLE Component. If the bootloadable project already contains a BLE Component, then: a. Move it to BLE_OTA_FixedStack_Bootloader01 project. b. Add and configure the bootloader service into the existing BLE Component (see Adding Bootloader Service). "
I read that as saying that I have to define all my BLE services up front in the FixedStack area (and can therefore no longer add to or update them).
==> Is that true for the FixedStack OTA? That my services/characteristics are frozen in the fixed stack area? And only non BLE code goes in the application area?
I initially was looking at the UpgradableStack, but when compiling, it appears that with BLE, the stack application is already almost 50% of the flash space thereby making it possible that it will later exceed 50% and not be able to be updated anyway (you need half the flash to hold the new copy of the StackApplication when it is being updated). But the UpgradableStack model does allow me to have a BLE component in the 'UserApplication' area leading me to believe that I can update my BLE services without having to update the Stack portion of the code...
==> Is it true that UpgradableStack solution would allow me to have just the boot loader service and application update in the StackApplication area and all of my custom BLE services in the UserApplication area?
I am ok with not updating the Stack area if I can use all existing BLE APIs and define my own services from the User Application area...
Thank you for your assistance!