D1. Lose the System LED State characteristic since it cannot be controlled from the BLE MCU.DONE.
D2. Lose the Scrolling State characteristic – complexity and memory constraints. DONE.
D3. Simplify the IO Pin Service, possible to expose the edge connector pins only. Possibly drop it to save memory and use the event service to transport pin values in either direction. Needs further thought.
* Update: Removed all pin characteristics except for pin 0, pin 1 and pin 2.
D4. Generic Access Service: Peripheral Privacy Flag is optional and I don’t think we need it. Ditto Reconnection Address, ditto Peripheral Preferred Connection Parameters --> Removed optional characteristics Peripheral Privacy Flag, Reconnection Address and Peripheral Preferred Connection Parameters from Generic Access Service.
D5. Generic Attribute Service: profile design doc/report doesn’t show it and it’s mandatory (issue with Bluetooth Developer Studio).
D6. Device Information Service: All characteristics are optional. Which ones do we really want/need? Save a little memory --> Removed PnP ID, IEEE 11073-20601 Regulatory Certification Data List, System ID and Software Revision String characteristics.
D7. Why does LED Matrix State support “Write Without Response”? I think this should be plain “Write” so that no further writes are made until there’s been an ACK back from the previous one. Changed.
D8. MicroBit Requirements supports Write. This is (ironically and puntastically) wrong. Client should not be able to modify the requirements the MicroBit has. Changed.
D9. DFU services uses a different base UUID to the other custom services. Is this deliberate?
D10. Characteristics in the DFU service use a different base UUID to the parent service. Is this deliberate?
D11. What are the data types for DFU Control and DFU Flash Code? Assumed uint8 and array of uint8.
D12. Microbit DFU service not in the profile design. Added. Needs descriptions and data types confirming.
Profile Testing
---------------
### OPEN:
T1. Client Event characteristic should have the WRITE property and currently does not.
T2. MicroBit Event characteristic should have the READ property and currently does not.
T3. MicroBit Event characteristic should have the NOTIFY property and currently does not.
T4. MicroBit Requirements characteristic is missing from the Event Service
T5. Client Requirements characteristic is missing from the Event Service
T6. Device Name in advertising packets includes the flash code so anyone could pair to it. Should be removed.
T7. Generic Access Service: Device Name and Appearance are mandatory and so need values
T8. Review advertising parameters: Advertising frequency seems quite low. This will make the discovery process slower and overall, both the pairing and FOTA processes a little slower. Are all three advertising channels in use or not? Thinking of a class room or event it would be best to use all three.
T9. Consider using directed advertising and white listing so that only the paired peer device can (re)connect to the micro:bit. I believe we are currently performing undirected advertising.... basically broadcasting. Directed advertising will address ADV packets to the paired peer device only. As things stand it seems to me that if some other person in the classroom just decides to connect to a micro:bit that is not theirs, they’ve effectively blocked all other use of the device.... a simple DOS attack.
<divclass="text_block"><pre>Default 'out of the box' profile for the BBC Micro Bit</pre></div>
</div>
<divclass="profile_item">
<divclass="profile_label">Summary</div>
<divclass="profile_value"></div>
<divclass="profile_label">Summary:</div>
</div>
<divclass="profile_item">
<divclass="text_block"><pre>Version 1.6 - 17th October 2015
Removed the Battery Service. No way to establish battery levels on the micro:bit
Added a simple Temperature Service to exploit temperature sensors in micro:bit processors with Temperature and Temperature Period characteristics.
Accelerometer and Magnetometer period characteristics now have uint16 fields instead of uint8 which required scaling up by multipling by 10.
Accelerometer Data and Magnetometer Data characteristics now use signed 16 bit integer fields for each of their X, Y and Z parts.
Accelerometer Data and Magnetometer Data characteristics now use signed 16 bit integer fields for each of their X, Y and Z parts.
New characteristic Magnetometer Heading added to the Magnetometer Service. Provides current heading in degrees.
Removed IO Parallel Port characteristic due to complexity and memory considerations.
Added Generic Attribute Service (previously absent in the repository)
Changed the LED Matrix State characteristic field so that we now have one octet per row of LEDs for ease of use.
Version 1.5 - 10th September 2015
Button State 2 characteristic given new, distinct UUID of E95DDA91-251D-470A-A062-FA1922DFA9A8
Removed the System LED State characteristic from the LED Service since it cannot be controlled from the BLE MCU.
Removed the Scrolling State characteristic from the LED Service due to complexity and memory constraints.
Changed LED Matrix State use of “Write Without Response” to “Write” so that no further writes can be made until there’s been an ACK back from the previous one.
Removed Write property from MicroBit Requirements characteristic.</pre></div>