The ble-nrf51822 implementation of the BLE API generated callbacks for radio
notification events without using the minar scheduler and at very high
priority. This functionality is replaced by posting events through minar
when YOTTA_CFG_MBED_OS is defined. Note that minar could not be used directly
to post callbacks because radio notification events are handled at very high
priority, which caused a hard-fault when minar tries to enter a critical
section. Alternatively, a Timeout was used to post the callback in another
context with lower priority.
Change assembly sequence that starts the Nordic bootloader to remove
MOV instruction before cheks of IPSR. The MOV might be translated into a ADDS
that could change the APSR and cause a wrong branch to be taken.
The assemble sequence within an mbedOS application that starts the nordic
bootloader was being modified by the compiler. The result is that DFU enabled
applications could never start the bootloader correctly. This is because the
GCC compiler was translating a MOV instruction into a ADDS, which sets the
conditional flags in APSR before a conditional branch was executed. The result
of the incorrect branch caused the program to believe that it was in interrupt
mode when this was not the case.
* Update init() to match the changes around initializationCompleteCallback.
Also implemented hasInitialized().
Refer to https://github.com/ARMmbed/ble/pull/91 and https://github.com/ARMmbed/ble/issues/90.
* Some changes for memory savings. Certain singletons are now allocated
dynamically; so some memory may not be needed if the application exercises
limited functionality. Also reduced the size of some global tables for
memory savings; affected tables/constants: UUID_TABLE_MAX_ENTRIES (down to 4),
DEVICE_MANAGER_MAX_BONDS (down to 2).
Currently it just blindly writes beyond the end of the array, leading to impossible-to-find bugs.
It doesn't help that the limit on the number of characteristics doesn't seem to be documented anywhere.
* Relocate the FOTA bootloader image to this repository. The bootloader
image(s) was previously stored in the mbed SDK, but it was decided that
putting it inside the nRF module would make more sense. This allows users to
replace the bootloader with something other than the default.
The new search algorithm is:
- search for any file named nrf51822_bootloader.hex *ELSE*
- search for any file named (depending on the choice of S130/S110 softdevice)
The exact location of the bootloader image isn't too important, since mbed
SDK looks for file names in all scanned resource files.
* Initialize the member `authorizationReply` when posting read-write
authorization callbacks to the application.
* Minor rework for error handling in nRF5xGattServer::write()--including
remove of the un-necessary variable `gapConnectionHandle`.
* Update yotta CMake files to suppress warnings for unused parameters and
missing initializers (especially when building with gcc).