Merge branch 'ble-profile' of https://github.com/lancaster-university/microbit-dal into ble-profile

This commit is contained in:
Joe Finney 2015-10-18 14:55:17 +01:00
commit 464cf6cb51
8 changed files with 2496 additions and 1995 deletions

View file

@ -1,62 +0,0 @@
# micro:bit BLE - Issue Tracker
----------
Profile Design
--------------
### OPEN:
### CLOSED:
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 dont 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 doesnt show it and its 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 theres 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, theyve effectively blocked all other use of the device.... a simple DOS attack.
### CLOSED:

View file

@ -1,6 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head><title>Bluetooth Developer Studio - Profile Report</title>
<head><title>Bluetooth Developer Studio - Level 1 Profile Report</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css" />
<script language="javascript" type="text/javascript" src="functions.js"></script>
@ -12,7 +12,7 @@
<div class="main_heading">
<div id="id_date" class="date">The Date</div>
<div class="heading_title">Bluetooth Developer Studio Level 1 Report</div>
<div class="heading_title">Bluetooth Developer Studio Level 1 Profile Report</div>
<div class="icon"><img src="BluetoothSIG.png"/></div>
</div>
@ -24,22 +24,44 @@
<div class="profile_item">
<div class="profile_label">Profile Name</div>
</div>
<div class="profile_item">
<div class="profile_value">BBC MICROBIT</div>
</div>
<div class="profile_item">
<div class="profile_label">Abstract</div>
<div class="profile_value"></div>
<div class="profile_label">Abstract:</div>
</div>
<div class="profile_item">
<div class="text_block"><pre>Default 'out of the box' profile for the BBC Micro Bit</pre></div>
</div>
<div class="profile_item">
<div class="profile_label">Summary</div>
<div class="profile_value"></div>
<div class="profile_label">Summary:</div>
</div>
<div class="profile_item">
<div class="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 theres been an ACK back from the previous one.
Removed Write property from MicroBit Requirements characteristic.</pre></div>
</div>
<div class="profile_item">
<div class="profile_label">Base UUID</div>
<div class="profile_value">E95D0000-251D-470A-A062-FA1922DFA9A8</div>
<div class="profile_value">E95D0000251D470AA062FA1922DFA9A8</div>
</div>
<div class="profile_item">
@ -63,152 +85,172 @@
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>Generic Access</p></div>
<div><p class="service_hdg_text1">Generic Access</p></div>
<div class="service_hdg_text2"><p>0000180000001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>00002A00-0000-1000-8000-00805F9B34FB : Device Name</p></div>
<div class="characteristic_summary"><p>Device Name : 00002A0000001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>00002A01-0000-1000-8000-00805F9B34FB : Appearance</p></div>
<div class="characteristic_summary"><p>Appearance : 00002A0100001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>Peripheral Preferred Connection Parameters : 00002A0400001000800000805F9B34FB</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>Generic Attribute</p></div>
<div><p class="service_hdg_text1">Generic Attribute</p></div>
<div class="service_hdg_text2"><p>0000180100001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>2A05 : Service Changed</p></div>
<div class="characteristic_summary"><p>Service Changed : 2A05</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>Device Information</p></div>
<div><p class="service_hdg_text1">Device Information</p></div>
<div class="service_hdg_text2"><p>0000180A00001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>00002A29-0000-1000-8000-00805F9B34FB : Manufacturer Name String</p></div>
<div class="characteristic_summary"><p>Manufacturer Name String : 00002A2900001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>00002A24-0000-1000-8000-00805F9B34FB : Model Number String</p></div>
<div class="characteristic_summary"><p>Model Number String : 00002A2400001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>00002A25-0000-1000-8000-00805F9B34FB : Serial Number String</p></div>
<div class="characteristic_summary"><p>Serial Number String : 00002A2500001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>00002A27-0000-1000-8000-00805F9B34FB : Hardware Revision String</p></div>
<div class="characteristic_summary"><p>Hardware Revision String : 00002A2700001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>00002A26-0000-1000-8000-00805F9B34FB : Firmware Revision String</p></div>
<div class="characteristic_summary"><p>Firmware Revision String : 00002A2600001000800000805F9B34FB</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>Software Revision String : 00002A2800001000800000805F9B34FB</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>ACCELEROMETER SERVICE</p></div>
<div><p class="service_hdg_text1">ACCELEROMETER SERVICE</p></div>
<div class="service_hdg_text2"><p>E95D0753251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95DCA4B-251D-470A-A062-FA1922DFA9A8 : Accelerometer Data</p></div>
<div class="characteristic_summary"><p>Accelerometer Data : E95DCA4B251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95DFB24-251D-470A-A062-FA1922DFA9A8 : Accelerometer Period</p></div>
<div class="characteristic_summary"><p>Accelerometer Period : E95DFB24251D470AA062FA1922DFA9A8</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>MAGNETOMETER SERVICE</p></div>
<div><p class="service_hdg_text1">MAGNETOMETER SERVICE</p></div>
<div class="service_hdg_text2"><p>E95DF2D8251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95DFB11-251D-470A-A062-FA1922DFA9A8 : Magnetometer Data</p></div>
<div class="characteristic_summary"><p>Magnetometer Data : E95DFB11251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D386C-251D-470A-A062-FA1922DFA9A8 : Magnetometer Period</p></div>
<div class="characteristic_summary"><p>Magnetometer Period : E95D386C251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D9715-251D-470A-A062-FA1922DFA9A8 : Magnetometer Bearing</p></div>
<div class="characteristic_summary"><p>Magnetometer Bearing : E95D9715251D470AA062FA1922DFA9A8</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>Button Service</p></div>
<div><p class="service_hdg_text1">Button Service</p></div>
<div class="service_hdg_text2"><p>E95D9882251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95DDA90-251D-470A-A062-FA1922DFA9A8 : Button 1 State</p></div>
<div class="characteristic_summary"><p>Button 1 State : E95DDA90251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95DDA91-251D-470A-A062-FA1922DFA9A8 : Button 2 State</p></div>
<div class="characteristic_summary"><p>Button 2 State : E95DDA91251D470AA062FA1922DFA9A8</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>IO PIN SERVICE</p></div>
<div><p class="service_hdg_text1">IO PIN SERVICE</p></div>
<div class="service_hdg_text2"><p>E95D127B251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D8D00-251D-470A-A062-FA1922DFA9A8 : Pin Data</p></div>
<div class="characteristic_summary"><p>Pin Data : E95D8D00251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D5899-251D-470A-A062-FA1922DFA9A8 : Pin AD Configuration</p></div>
<div class="characteristic_summary"><p>Pin AD Configuration : E95D5899251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95DB9FE-251D-470A-A062-FA1922DFA9A8 : Pin IO Configuration</p></div>
<div class="characteristic_summary"><p>Pin IO Configuration : E95DB9FE251D470AA062FA1922DFA9A8</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>LED SERVICE</p></div>
<div><p class="service_hdg_text1">LED SERVICE</p></div>
<div class="service_hdg_text2"><p>E95DD91D251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D7B77-251D-470A-A062-FA1922DFA9A8 : LED Matrix State</p></div>
<div class="characteristic_summary"><p>LED Matrix State : E95D7B77251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D93EE-251D-470A-A062-FA1922DFA9A8 : LED Text</p></div>
<div class="characteristic_summary"><p>LED Text : E95D93EE251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D0D2D-251D-470A-A062-FA1922DFA9A8 : Scrolling Delay</p></div>
<div class="characteristic_summary"><p>Scrolling Delay : E95D0D2D251D470AA062FA1922DFA9A8</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>EVENT SERVICE</p></div>
<div><p class="service_hdg_text1">EVENT SERVICE</p></div>
<div class="service_hdg_text2"><p>E95D93AF251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95DB84C-251D-470A-A062-FA1922DFA9A8 : MicroBit Requirements</p></div>
<div class="characteristic_summary"><p>MicroBit Requirements : E95DB84C251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D9775-251D-470A-A062-FA1922DFA9A8 : MicroBit Event</p></div>
<div class="characteristic_summary"><p>MicroBit Event : E95D9775251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D23C4-251D-470A-A062-FA1922DFA9A8 : Client Requirements</p></div>
<div class="characteristic_summary"><p>Client Requirements : E95D23C4251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D5404-251D-470A-A062-FA1922DFA9A8 : Client Event</p></div>
<div class="characteristic_summary"><p>Client Event : E95D5404251D470AA062FA1922DFA9A8</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>DFU CONTROL SERVICE</p></div>
<div><p class="service_hdg_text1">DFU CONTROL SERVICE</p></div>
<div class="service_hdg_text2"><p>E95D93B0251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D93B1-251D-470A-A062-FA1922DFA9A8 : DFU Control</p></div>
<div class="characteristic_summary"><p>DFU Control : E95D93B1251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D93B2-251D-470A-A062-FA1922DFA9A8 : DFU Flash Code</p></div>
<div class="characteristic_summary"><p>DFU Flash Code : E95D93B2251D470AA062FA1922DFA9A8</p></div>
</div>
<!-- Service Block -->
<div class="service_hdg">
<div class="service_hdg_text"><p>TEMPERATURE SERVICE</p></div>
<div><p class="service_hdg_text1">TEMPERATURE SERVICE</p></div>
<div class="service_hdg_text2"><p>E95D6100251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>E95D8A38-251D-470A-A062-FA1922DFA9A8 : Temperature</p></div>
<div class="characteristic_summary"><p>Temperature : E95D9250251D470AA062FA1922DFA9A8</p></div>
</div>
<div class="characteristic_hdg">
<div class="characteristic_summary"><p>Temperature Period : E95D1B25251D470AA062FA1922DFA9A8</p></div>
</div>
</div>

View file

@ -42,25 +42,25 @@ p
}
.date {
width: 240px;
width: 100px;
line-height: 79px;
height: 79px;
float:left;
float:left;
}
.heading_title {
width: 800px;
width: 980px;
line-height: 79px;
height: 79px;
float:left;
text-align:center;
float:left;
text-align:center;
}
.icon {
width: 240px;
width: 200px;
line-height: 79px;
height: 79;
float:left;
height: 79;
float:left;
}
.section_hdg {
@ -87,7 +87,6 @@ p
.profile_item {
float:left;
width:1265px;
height:33px;
border-width: 1px;
border-style: solid;
border-color: #FFFFFF;
@ -96,21 +95,28 @@ p
}
.profile_label {
width: 300px;
font-size: 14px;
font-weight:bold;
width: 300px;
font-size: 14px;
font-weight:bold;
line-height: 33px;
height: 33px;
float:left;
float:left;
}
.profile_value {
font-size: 14px;
line-height: 33px;
height: 33px;
line-height: 33px;
height: 33px;
float:left;
}
.text_block {
font-size: 14px;
float:left;
padding-top: 5px;
padding-bottom: 5px;
}
.services_section_hdg {
float:left;
width:1280px;
@ -141,17 +147,28 @@ p
border-color: #FFFFFF;
}
.service_hdg_text {
font-size: 18px;
font-weight:bold;
color:#ffffff;
float:left;
width:1270px;
.service_hdg_text1 {
font-size: 18px;
font-weight:bold;
color:#ffffff;
float:left;
width:800px;
padding-left: 10px;
height:33px;
line-height: 33px;
background-color: #339933
}
.service_hdg_text2 {
font-size: 18px;
font-weight:bold;
color:#ffffff;
float:left;
width:470px;
height:33px;
line-height: 33px;
background-color: #339933
}
.service_item {
float:left;

File diff suppressed because it is too large Load diff

View file

@ -42,25 +42,25 @@ p
}
.date {
width: 240px;
width: 100px;
line-height: 79px;
height: 79px;
float:left;
float:left;
}
.heading_title {
width: 800px;
width: 980px;
line-height: 79px;
height: 79px;
float:left;
text-align:center;
float:left;
text-align:center;
}
.icon {
width: 240px;
width: 200px;
line-height: 79px;
height: 79;
float:left;
height: 79;
float:left;
}
.section_hdg {
@ -87,7 +87,6 @@ p
.profile_item {
float:left;
width:1265px;
height:33px;
border-width: 1px;
border-style: solid;
border-color: #FFFFFF;
@ -106,11 +105,18 @@ p
.profile_value {
font-size: 14px;
line-height: 33px;
height: 33px;
line-height: 33px;
height: 33px;
float:left;
}
.text_block {
font-size: 14px;
float:left;
padding-top: 5px;
padding-bottom: 5px;
}
.services_section_hdg {
float:left;
width:1280px;
@ -156,7 +162,6 @@ p
.service_item {
float:left;
width:1265px;
height:33px;
border-width: 1px;
border-style: solid;
border-color: #FFFFFF;
@ -226,7 +231,6 @@ p
.characteristic_item {
float:left;
width:1280px;
height:33px;
border-width: 1px;
border-style: solid;
border-color: #FFFFFF;
@ -245,15 +249,23 @@ p
background-color: #F5F6CE
}
.characteristic_label {
width: 300px;
font-size: 12px;
font-weight:bold;
width: 300px;
font-size: 12px;
font-weight:bold;
line-height: 33px;
height: 33px;
float:left;
float:left;
padding-left: 45px;
}
.char_text_block {
font-size: 14px;
float:left;
padding-top: 5px;
padding-bottom: 5px;
padding-left: 45px;
}
.characteristic_value {
width: 935px;
font-size: 12px;
@ -443,3 +455,13 @@ p
{
text-align: right;
}
.mandatory_property {
width: 935px;
font-size: 12px;
line-height: 33px;
height: 33px;
float:left;
font-weight:bold;
color:#ff0000;
}

File diff suppressed because it is too large Load diff

View file

@ -42,25 +42,25 @@ p
}
.date {
width: 240px;
width: 100px;
line-height: 79px;
height: 79px;
float:left;
float:left;
}
.heading_title {
width: 800px;
width: 980px;
line-height: 79px;
height: 79px;
float:left;
text-align:center;
float:left;
text-align:center;
}
.icon {
width: 240px;
width: 200px;
line-height: 79px;
height: 79;
float:left;
height: 79;
float:left;
}
.section_hdg {
@ -87,7 +87,6 @@ p
.profile_item {
float:left;
width:1265px;
height:33px;
border-width: 1px;
border-style: solid;
border-color: #FFFFFF;
@ -106,11 +105,18 @@ p
.profile_value {
font-size: 14px;
line-height: 33px;
height: 33px;
line-height: 33px;
height: 33px;
float:left;
}
.text_block {
font-size: 14px;
float:left;
padding-top: 5px;
padding-bottom: 5px;
}
.services_section_hdg {
float:left;
width:1280px;
@ -156,7 +162,6 @@ p
.service_item {
float:left;
width:1265px;
height:33px;
border-width: 1px;
border-style: solid;
border-color: #FFFFFF;
@ -226,7 +231,6 @@ p
.characteristic_item {
float:left;
width:1280px;
height:33px;
border-width: 1px;
border-style: solid;
border-color: #FFFFFF;
@ -254,6 +258,14 @@ p
padding-left: 45px;
}
.char_text_block {
font-size: 14px;
float:left;
padding-top: 5px;
padding-bottom: 5px;
padding-left: 45px;
}
.characteristic_value {
width: 935px;
font-size: 12px;
@ -443,3 +455,13 @@ p
{
text-align: right;
}
.mandatory_property {
width: 935px;
font-size: 12px;
line-height: 33px;
height: 33px;
float:left;
font-weight:bold;
color:#ff0000;
}