1 Background 2 ========== 3 4 - Priority scale: High, Medium and Low 5 6 - Complexity scale: C1, C2, C4 and C8. The complexity scale is exponential, 7 with complexity 1 being the lowest complexity. Complexity is a function 8 of both task 'complexity' and task 'scope'. 9 10 The general rule of thumb is that a complexity 1 task should take 1-2 weeks 11 for a person very familiar with BlueZ codebase. Higher complexity tasks 12 require more time and have higher uncertainty. 13 14 Higher complexity tasks should be refined into several lower complexity tasks 15 once the task is better understood. 16 17 General 18 ========== 19 20 - UUID handling: Use the new functions created for UUID handling in all parts 21 of BlueZ code. Currently, the new bt_uuid_* functions are being used by 22 GATT-related code only. 23 24 Priority: high 25 Complexity: C4 26 27 - Rename glib-helper file to a more convenient name. The ideia is try to keep 28 only sdp helpers functions. bt_* prefix shall be also changed. 29 30 Priority: Low 31 Complexity: C1 32 33 Low Energy 34 ========== 35 36 - Advertising management. Adapter interface needs to be changed to manage 37 connection modes, adapter type and advertising policy. See Volume 3, 38 Part C, section 9.3. If Attribute Server is enabled the LE capable 39 adapter shall to start advertising. Further investigation is necessary 40 to define which connectable mode needs to be supported: Non-connectable, 41 directed connectable and undirected connectable. Basically, two connectable 42 scenarios shall be addressed: 43 1. GATT client is disconnected, but intends to become a Peripheral to 44 receive indications/notifications. 45 2. GATT server intends to accept connections. 46 47 Priority: Medium 48 Complexity: C2 49 50 - Define Auto Connection Establishment Procedure. Some profiles such as 51 Proximity requires an active link to identify path lost situation. It is 52 necessary to define how to manage connections, it seems that White List 53 is appropriated to address auto connections, however is not clear if the 54 this procedure shall be a profile specific detail or if the remote device 55 object can expose a property "WhiteList", maybe "Trusted" property can be 56 also used for this purpose. Another alternative is to define a method to 57 allow application to request/register the wanted scanning/connection 58 parameters. Before start this task, a RFC/PATCH shall be sent to the ML. 59 See Volume 3, Part C, section 9.3.5 for more information. 60 61 Priority: Medium 62 Complexity: C2 63 64 - Implement a tool(or extend hciconfig) to setup the advertising parameters 65 and data. Extend hciconfig passing extra arguments when enabling the 66 advertises is not the right approach, it will be almost impossible to 67 address all arguments needed in an acceptable way. For testing, we need 68 a tool to change easily the AD Flags, the UUIDs and other data that can be 69 exported through the advertising data field. Suggestions: 1) extend hciconfig 70 passing a config file when enabling advertises; 2) write a ncurses based tool 71 72 Priority: Medium 73 Complexity: C2 74 75 - Add new property in the DeviceFound signal to report the device type: 76 BR/EDR, single mode or dual-mode. 77 78 Priority: Medium 79 Complexity: C1 80 81 - Privacy: When privacy is enabled in the adapter, LE scanning/connection 82 should use a private address. StartDiscovery method shall be changed and 83 new adapter property shall be added. 84 85 Priority: Medium 86 Complexity: C1 87 88 - Static random address setup and storage. Once this address is written 89 in the a given remote, the address can not be changed anymore. 90 91 Priority: Low 92 Complexity: C1 93 94 - Reconnection address: Reconnection address is a non resolvable private 95 address that the central writes in the peripheral. BlueZ will support 96 multiple profiles, it is not clear how it needs to be implemented. 97 Further discussion is necessary. 98 99 Priority: Low 100 Complexity: C2 101 102 - Device Name Characteristic is a GAP characteristic for Low Energy. This 103 characteristic shall be integrated/used in the discovery procedure. The 104 ideia is to report the value of this characteristic using DeviceFound signals. 105 Discussion with the community is needed before to start this task. Other GAP 106 characteristics for LE needs to follow a similar approach. It is not clear 107 if all GAP characteristics can be exposed using properties instead of a primary 108 service characteristics. 109 See Volume 3, Part C, section 12.1 for more information. 110 111 Priority: Low 112 Complexity: C2 113 114 ATT/GATT 115 ======== 116 117 - At the moment authentication and authorization is not supported at the 118 same time, read/write requirements in the attribute server needs to 119 be extended. According to Bluetooth Specification a server shall check 120 authentication and authorization requirements before any other check is 121 performed. 122 123 Priority: Medium 124 Complexity: C1 125 126 - ATT/GATT parsing to hcidump. Partially implemented, missing to fix 127 multiple advertises in the same event and RSSI. 128 129 Priority: Medium 130 Complexity: C2 131 132 - Implement ATT PDU validation. Malformed PDUs can cause division by zero 133 when decoding PDUs. A proper error PDU should be returned for this case. 134 See decoding function in att.c file. 135 136 Priority: Medium 137 Complexity: C1 138 139 - Fix hard-coded PSM for GATT services over basic rate. 140 141 Priority: Low 142 Complexity: C1 143 144 - Refactor read_by_group() and read_by_type() in src/attrib-server.c 145 (they've grown simply too big). First step could be to move out the 146 long for-loops to new functions called e.g. get_groups() and get_types(). 147 148 Priority: Low 149 Complexity: C1 150 151 - Agent for characteristics: Agent interface should be extended to support 152 authorization per characteristic if the remote is not in the trusted list. 153 154 Priority: Low 155 Complexity: C1 156 157 - gatttool should have the ability to wait for req responses before 158 quitting (some servers require a small sleep even with cmd's). Maybe a 159 --delay-exit or --timeout command line switch. 160 161 Priority: Low 162 Complexity: C1 163 164 - Refactoring of gatt.c functions. Currently, the callbacks of the services 165 and characteristics discovery functions return the ATT PDU and the caller 166 needs to call again the same function to fetch the remaining data when 167 necessary. Investigate if all results can be returned in the callback 168 result to avoid repeated code. Before change the code, please analyze 169 if this change will not break the GATT/ATT qualification tests. Maybe 170 an interactive fetch/query is necessary to pass the tests. 171 172 Priority: Low 173 Complexity: C1 174 175 - Client needs to export a property in the Device Characteristic hierarchy 176 to manage characteristic value changes reports in the remote device. 177 Currently, Client Characteristic Configuration attribute is not exposed 178 as an object. The user needs to use gatttool to change the value of the 179 this attribute to receive notification/indications. Export this attribute 180 as a property is a proposal that needs further discussion. 181 182 Priority: Low 183 Complexity: C1 184 185 - Attribute server should process queued GATT/ATT commands if the 186 client disconnects. The client can simply send a command and quit, 187 without wait for a response(ex: Write Command). For this scenario 188 that the client disconnects the link quickly the queued received 189 command is ignored. 190 191 Priority: Low 192 Complecity: C1 193 194 - Add sdp discovery support to gattool with BR (--sdp, default is 0x1f) 195 196 Priority: Low 197 Complexity: C1 198 199 - Implement Server characteristic Configuration support in the attribute 200 server to manage characteristic value broadcasting. There is a single 201 instance of the Server Characteristic Configuration for all clients. 202 See Volume 3, Part G, section 3.3.3.4 for more information. 203 204 Priority: Low 205 Complexity: C1 206 207 - Long write is not implemented. Attribute server, client and command line 208 tool shall be changed to support this feature. 209 210 Priority: Low 211 Complexity: C2 212 213 - Define attribute server API. External applications needs to register, 214 change attributes and to be notified about changes. Example: Proximity, 215 Time and Alert Profiles. "Local Service hierarchy" in the attribute-api 216 needs to be proposed and a RFC shall be sent to the ML. 217 218 Priority: Low 219 Complexity: C2 220 Owner: Anderson Lizardo <anderson.lizardo (a] openbossa.org> 221 222 Management Interface 223 ==================== 224 225 - Device discovery support (both for BR/EDR & LE) 226 227 Priority: High 228 Complexity: C3 229 230 - Blacklist support 231 232 Priority: Medium 233 Complexity: C1 234 235 - mgmt_set_fast_connectable 236 237 Priority: Medium 238 Complexity: C1 239 240 - Whitelist support (initially only for LE) 241 242 Priority: Medium 243 Complexity: C2 244 Owner: Andre Guedes <andre.guedes (a] openbossa.org> 245