Minor changes to BLE profile services (cleanup prior to merge with master branch):
- Added temperature period characteristic to match design pattern of other sensors.
- Updated endinaness of MicroBitLEDService Matrix to be more intuitive.
- Cleaned up Microbit.cpp by removing unused reference to BLE services.
- Exposed serial number and naming information thr BLE DeviceInformation and API.
- Updated BLE advertisement period to be alightly more repsonsive (200ms vs 1000ms).
- BUGFIX: micro:bit name is now always generated, regardless of BLE services.
- BUGFIX: Scroll Period data length.
All message bus listeners with the micro:bit runtie are non blocking, and safe to be called
in an interrupt context. As such, these have now all been declared MESSAGE_BUS_LISTENER_IMMEDIATE
which should mitigate all unbounded event queueing effects.
Updates to BLE interface to match specification following testing by Bluetooth SIG.
Accelerometer Period: now supports READ and WRITE
Magnetometer Period: now supports READ and WRITE
LED Matrix State: now supports READ and WRITE.
UUIDs of Temperature Service characteristic corrected.
More specifically, the build system now uses the semantic versioning meta-data
held in module.json to define a major.minor.patch version. Additionally, is the branch
being compiled is *not* the master branch, the version is appended with <branchname><githash>.
Specific updates:
- Updates to CMake files to expose this to the micro:bit runtime code.
- Addition of uBit.systemVersion() to expose this to application code.
- Displaying of version string over serial if MICROBIT_DBG is enabled.
- Distribution of version string over BLE via the firmware revision characteristic.
First functionally complete BLE profile, matching BLE speicfication v1.6.
More specifically, the following services are now functional:
- AccelerometerService
- MeganetometerService
- EventService
- TemperatureServide
- IOPinService
- DFUService
- ButtonService
- LEDService
Also, updates to underlying device drivers to enable greater configurability:
- MicroBitCompass now supports variable sample rates and temperature sensing
- MicroBitAccelerometer now supports variable sample rates and ranges
- MicroBitThermometer introduced
- MicroBitMessageBus adapted to permit enumeration and block removal of listeners
Finally, MicroBit DFU Service has been changed to the new UUIDs specificed in v1.6 of BLE spec.
Previous to this patch an explicit constructor was provided for creating
MatrixPoint instances, which meant that such objects could not be put in
ROM (since they needed to be constructed at runtime).
By using the defualt construction method for structs the MatrixPoint map
is now compiled into the rodata section, hence freeing up RAM.
Saves: 4 bytes data, 56 bytes bss, 148 bytes code.