Johan Hedberg | e9a15ad | 2010-10-05 18:58:22 +0200 | [diff] [blame] | 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 | |
Claudio Takahasi | 0a4c7da | 2011-01-03 18:45:52 -0300 | [diff] [blame] | 17 | General |
| 18 | ========== |
| 19 | |
Elvis Pfützenreuter | 6bcda79 | 2011-03-16 22:36:54 -0300 | [diff] [blame] | 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. |
Claudio Takahasi | c66d33b | 2011-02-28 10:44:12 -0300 | [diff] [blame] | 23 | |
| 24 | Priority: high |
Elvis Pfützenreuter | 6bcda79 | 2011-03-16 22:36:54 -0300 | [diff] [blame] | 25 | Complexity: C4 |
Claudio Takahasi | c66d33b | 2011-02-28 10:44:12 -0300 | [diff] [blame] | 26 | |
Claudio Takahasi | 0a4c7da | 2011-01-03 18:45:52 -0300 | [diff] [blame] | 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 | |
Gustavo Padovan | f491b24 | 2012-06-15 03:38:59 -0300 | [diff] [blame] | 33 | BlueZ 5 |
| 34 | ======= |
| 35 | |
| 36 | Priority/Complexity ommited as all items are required before 5.0 is |
| 37 | released. |
| 38 | |
Johan Hedberg | 9cad4e6 | 2012-07-10 10:41:02 -0300 | [diff] [blame] | 39 | - [done] Make mgmtops part of Bluetooth core. mgmt will be the only way |
| 40 | to communicate with the kernel in BlueZ so a plugin is not needed |
Gustavo Padovan | f491b24 | 2012-06-15 03:38:59 -0300 | [diff] [blame] | 41 | anymore. Probably plugins/mgmtops.c -> src/mgmt.c |
| 42 | |
Gustavo Padovan | f491b24 | 2012-06-15 03:38:59 -0300 | [diff] [blame] | 43 | - Reorganize source tree according to RFC sent to linux-bluetooth |
| 44 | (Subject: [RFC] Reorganizing the BlueZ source tree) |
| 45 | |
Johan Hedberg | f0478f0 | 2012-06-27 15:18:58 +0300 | [diff] [blame] | 46 | - Remove deprecated D-Bus signals and methods (ensuring new ones are in |
| 47 | place to replace what's removed). |
Gustavo Padovan | f491b24 | 2012-06-15 03:38:59 -0300 | [diff] [blame] | 48 | |
Johan Hedberg | f0478f0 | 2012-06-27 15:18:58 +0300 | [diff] [blame] | 49 | - Remove telephony driver framework and replace with the telephony agent |
| 50 | patches. |
| 51 | |
Johan Hedberg | b9f0bd5 | 2012-07-20 15:07:25 +0300 | [diff] [blame] | 52 | - [done] Related to the telephony architecture rework, figure out how fast |
| 53 | connectable should work. - Implemented as a property in the Telephony |
| 54 | interface. |
Johan Hedberg | b7d1aba | 2012-06-28 15:00:33 +0300 | [diff] [blame] | 55 | |
Johan Hedberg | 886a856 | 2012-07-02 13:22:51 +0300 | [diff] [blame] | 56 | - [done] Remove UNIX socket based audio interface (along with ALSA plugin) |
Johan Hedberg | f0478f0 | 2012-06-27 15:18:58 +0300 | [diff] [blame] | 57 | |
| 58 | - Clean up libbluetooth and only export a very minimal API (for |
| 59 | RFCOMM/L2CAP socket use) |
| 60 | |
| 61 | - Merge obexd.git into bluez.git |
| 62 | |
Johan Hedberg | bfe49b4 | 2012-07-10 17:59:42 -0300 | [diff] [blame] | 63 | - [done] Remove unmaintained plugins like pnat and maemo6 |
Gustavo Padovan | f491b24 | 2012-06-15 03:38:59 -0300 | [diff] [blame] | 64 | |
Johan Hedberg | f85dae7 | 2012-07-09 17:00:14 -0300 | [diff] [blame] | 65 | - Change DiscoverServices to return a list of service object paths |
| 66 | |
| 67 | - Add Agent callback for incoming just-works, maybe remote lost key as |
| 68 | well? |
| 69 | |
Johan Hedberg | 94e2645 | 2012-07-09 11:58:02 -0300 | [diff] [blame] | 70 | - Switch to standard D-Bus properties interface |
| 71 | |
| 72 | - Switch to standard object manager interface |
| 73 | |
Johan Hedberg | 7e561c9 | 2012-08-27 16:03:16 -0700 | [diff] [blame] | 74 | - Device.Connect(). Still needs closer defining. |
| 75 | |
| 76 | - Remove CreateDevice/CreatePairedDevice and use D-Bus objects for |
| 77 | discovered devices. This fixes the issue of not exposing the address |
| 78 | type in DeviceFound and the Create* method calls |
| 79 | |
Johan Hedberg | 76a712d | 2012-08-31 11:49:09 -0700 | [diff] [blame] | 80 | - Convert storage to user per-remote device directories and ini-file |
| 81 | format |
| 82 | |
Claudio Takahasi | d1ca6e7 | 2010-10-15 10:03:01 -0300 | [diff] [blame] | 83 | Low Energy |
| 84 | ========== |
| 85 | |
Claudio Takahasi | 02ff799 | 2010-10-19 19:27:11 -0200 | [diff] [blame] | 86 | - Advertising management. Adapter interface needs to be changed to manage |
| 87 | connection modes, adapter type and advertising policy. See Volume 3, |
| 88 | Part C, section 9.3. If Attribute Server is enabled the LE capable |
| 89 | adapter shall to start advertising. Further investigation is necessary |
| 90 | to define which connectable mode needs to be supported: Non-connectable, |
| 91 | directed connectable and undirected connectable. Basically, two connectable |
| 92 | scenarios shall be addressed: |
| 93 | 1. GATT client is disconnected, but intends to become a Peripheral to |
| 94 | receive indications/notifications. |
| 95 | 2. GATT server intends to accept connections. |
| 96 | |
| 97 | Priority: Medium |
| 98 | Complexity: C2 |
| 99 | |
Claudio Takahasi | 1cd29b8 | 2010-10-19 19:27:12 -0200 | [diff] [blame] | 100 | - Define Auto Connection Establishment Procedure. Some profiles such as |
| 101 | Proximity requires an active link to identify path lost situation. It is |
| 102 | necessary to define how to manage connections, it seems that White List |
| 103 | is appropriated to address auto connections, however is not clear if the |
| 104 | this procedure shall be a profile specific detail or if the remote device |
| 105 | object can expose a property "WhiteList", maybe "Trusted" property can be |
| 106 | also used for this purpose. Another alternative is to define a method to |
| 107 | allow application to request/register the wanted scanning/connection |
| 108 | parameters. Before start this task, a RFC/PATCH shall be sent to the ML. |
| 109 | See Volume 3, Part C, section 9.3.5 for more information. |
| 110 | |
| 111 | Priority: Medium |
| 112 | Complexity: C2 |
| 113 | |
Claudio Takahasi | d6bb862 | 2011-01-03 18:45:50 -0300 | [diff] [blame] | 114 | - Implement a tool(or extend hciconfig) to setup the advertising parameters |
| 115 | and data. Extend hciconfig passing extra arguments when enabling the |
| 116 | advertises is not the right approach, it will be almost impossible to |
| 117 | address all arguments needed in an acceptable way. For testing, we need |
| 118 | a tool to change easily the AD Flags, the UUIDs and other data that can be |
| 119 | exported through the advertising data field. Suggestions: 1) extend hciconfig |
| 120 | passing a config file when enabling advertises; 2) write a ncurses based tool |
| 121 | |
| 122 | Priority: Medium |
| 123 | Complexity: C2 |
| 124 | |
Claudio Takahasi | a0ba561 | 2011-02-28 10:44:13 -0300 | [diff] [blame] | 125 | - Add new property in the DeviceFound signal to report the device type: |
| 126 | BR/EDR, single mode or dual-mode. |
| 127 | |
| 128 | Priority: Medium |
| 129 | Complexity: C1 |
| 130 | |
Claudio Takahasi | 4bbbd66 | 2011-02-22 17:43:06 -0300 | [diff] [blame] | 131 | - Privacy: When privacy is enabled in the adapter, LE scanning/connection |
| 132 | should use a private address. StartDiscovery method shall be changed and |
| 133 | new adapter property shall be added. |
| 134 | |
| 135 | Priority: Medium |
| 136 | Complexity: C1 |
| 137 | |
Claudio Takahasi | 4c9f8c6 | 2011-02-22 17:43:09 -0300 | [diff] [blame] | 138 | - Static random address setup and storage. Once this address is written |
| 139 | in the a given remote, the address can not be changed anymore. |
| 140 | |
| 141 | Priority: Low |
| 142 | Complexity: C1 |
| 143 | |
Claudio Takahasi | 45ea4d5 | 2011-02-22 17:43:10 -0300 | [diff] [blame] | 144 | - Reconnection address: Reconnection address is a non resolvable private |
| 145 | address that the central writes in the peripheral. BlueZ will support |
| 146 | multiple profiles, it is not clear how it needs to be implemented. |
| 147 | Further discussion is necessary. |
| 148 | |
| 149 | Priority: Low |
| 150 | Complexity: C2 |
| 151 | |
Claudio Takahasi | 6b9deca | 2010-10-13 14:44:27 -0300 | [diff] [blame] | 152 | - Device Name Characteristic is a GAP characteristic for Low Energy. This |
| 153 | characteristic shall be integrated/used in the discovery procedure. The |
| 154 | ideia is to report the value of this characteristic using DeviceFound signals. |
| 155 | Discussion with the community is needed before to start this task. Other GAP |
| 156 | characteristics for LE needs to follow a similar approach. It is not clear |
| 157 | if all GAP characteristics can be exposed using properties instead of a primary |
| 158 | service characteristics. |
| 159 | See Volume 3, Part C, section 12.1 for more information. |
| 160 | |
| 161 | Priority: Low |
| 162 | Complexity: C2 |
Johan Hedberg | e9a15ad | 2010-10-05 18:58:22 +0200 | [diff] [blame] | 163 | |
| 164 | ATT/GATT |
| 165 | ======== |
| 166 | |
Claudio Takahasi | b5892cd | 2011-03-23 16:40:12 -0300 | [diff] [blame] | 167 | - At the moment authentication and authorization is not supported at the |
| 168 | same time, read/write requirements in the attribute server needs to |
| 169 | be extended. According to Bluetooth Specification a server shall check |
| 170 | authentication and authorization requirements before any other check is |
| 171 | performed. |
| 172 | |
| 173 | Priority: Medium |
| 174 | Complexity: C1 |
| 175 | |
Claudio Takahasi | 42c3dec | 2011-02-22 17:43:05 -0300 | [diff] [blame] | 176 | - ATT/GATT parsing to hcidump. Partially implemented, missing to fix |
| 177 | multiple advertises in the same event and RSSI. |
Johan Hedberg | e9a15ad | 2010-10-05 18:58:22 +0200 | [diff] [blame] | 178 | |
Johan Hedberg | 1d25945 | 2010-10-05 19:01:52 +0200 | [diff] [blame] | 179 | Priority: Medium |
Johan Hedberg | e9a15ad | 2010-10-05 18:58:22 +0200 | [diff] [blame] | 180 | Complexity: C2 |
| 181 | |
Claudio Takahasi | 5aa3f08 | 2011-02-24 18:21:33 -0300 | [diff] [blame] | 182 | - Implement ATT PDU validation. Malformed PDUs can cause division by zero |
| 183 | when decoding PDUs. A proper error PDU should be returned for this case. |
| 184 | See decoding function in att.c file. |
| 185 | |
| 186 | Priority: Medium |
| 187 | Complexity: C1 |
| 188 | |
Claudio Takahasi | 51571e7 | 2011-04-11 15:26:34 -0300 | [diff] [blame] | 189 | - Fix hard-coded PSM for GATT services over basic rate. |
| 190 | |
| 191 | Priority: Low |
| 192 | Complexity: C1 |
| 193 | |
Johan Hedberg | 52e333f | 2011-03-15 22:40:00 +0200 | [diff] [blame] | 194 | - Refactor read_by_group() and read_by_type() in src/attrib-server.c |
| 195 | (they've grown simply too big). First step could be to move out the |
| 196 | long for-loops to new functions called e.g. get_groups() and get_types(). |
| 197 | |
| 198 | Priority: Low |
| 199 | Complexity: C1 |
| 200 | |
Claudio Takahasi | 3475c7f | 2011-02-22 17:43:11 -0300 | [diff] [blame] | 201 | - Agent for characteristics: Agent interface should be extended to support |
| 202 | authorization per characteristic if the remote is not in the trusted list. |
| 203 | |
| 204 | Priority: Low |
| 205 | Complexity: C1 |
| 206 | |
Luiz Augusto von Dentz | b331672 | 2010-10-07 19:21:55 +0300 | [diff] [blame] | 207 | - gatttool should have the ability to wait for req responses before |
| 208 | quitting (some servers require a small sleep even with cmd's). Maybe a |
| 209 | --delay-exit or --timeout command line switch. |
| 210 | |
| 211 | Priority: Low |
| 212 | Complexity: C1 |
| 213 | |
Claudio Takahasi | 114ab53 | 2011-01-03 18:45:53 -0300 | [diff] [blame] | 214 | - Refactoring of gatt.c functions. Currently, the callbacks of the services |
| 215 | and characteristics discovery functions return the ATT PDU and the caller |
| 216 | needs to call again the same function to fetch the remaining data when |
| 217 | necessary. Investigate if all results can be returned in the callback |
| 218 | result to avoid repeated code. Before change the code, please analyze |
| 219 | if this change will not break the GATT/ATT qualification tests. Maybe |
| 220 | an interactive fetch/query is necessary to pass the tests. |
| 221 | |
| 222 | Priority: Low |
| 223 | Complexity: C1 |
| 224 | |
Luiz Augusto von Dentz | b331672 | 2010-10-07 19:21:55 +0300 | [diff] [blame] | 225 | - Client needs to export a property in the Device Characteristic hierarchy |
| 226 | to manage characteristic value changes reports in the remote device. |
| 227 | Currently, Client Characteristic Configuration attribute is not exposed |
| 228 | as an object. The user needs to use gatttool to change the value of the |
| 229 | this attribute to receive notification/indications. Export this attribute |
| 230 | as a property is a proposal that needs further discussion. |
| 231 | |
| 232 | Priority: Low |
| 233 | Complexity: C1 |
| 234 | |
| 235 | - Attribute server should process queued GATT/ATT commands if the |
| 236 | client disconnects. The client can simply send a command and quit, |
| 237 | without wait for a response(ex: Write Command). For this scenario |
| 238 | that the client disconnects the link quickly the queued received |
| 239 | command is ignored. |
| 240 | |
| 241 | Priority: Low |
| 242 | Complecity: C1 |
| 243 | |
| 244 | - Add sdp discovery support to gattool with BR (--sdp, default is 0x1f) |
| 245 | |
| 246 | Priority: Low |
| 247 | Complexity: C1 |
| 248 | |
Claudio Takahasi | 3bce877 | 2010-10-13 13:37:13 -0300 | [diff] [blame] | 249 | - Implement Server characteristic Configuration support in the attribute |
| 250 | server to manage characteristic value broadcasting. There is a single |
| 251 | instance of the Server Characteristic Configuration for all clients. |
| 252 | See Volume 3, Part G, section 3.3.3.4 for more information. |
| 253 | |
| 254 | Priority: Low |
| 255 | Complexity: C1 |
| 256 | |
Claudio Takahasi | 950f9fd | 2011-02-22 17:43:08 -0300 | [diff] [blame] | 257 | - Long write is not implemented. Attribute server, client and command line |
| 258 | tool shall be changed to support this feature. |
Luiz Augusto von Dentz | b331672 | 2010-10-07 19:21:55 +0300 | [diff] [blame] | 259 | |
| 260 | Priority: Low |
| 261 | Complexity: C2 |
| 262 | |
Claudio Takahasi | b5b9880 | 2010-10-15 10:03:02 -0300 | [diff] [blame] | 263 | - Define attribute server API. External applications needs to register, |
| 264 | change attributes and to be notified about changes. Example: Proximity, |
| 265 | Time and Alert Profiles. "Local Service hierarchy" in the attribute-api |
| 266 | needs to be proposed and a RFC shall be sent to the ML. |
| 267 | |
| 268 | Priority: Low |
| 269 | Complexity: C2 |
Anderson Lizardo | 4969ae4 | 2011-03-17 07:55:01 -0400 | [diff] [blame] | 270 | Owner: Anderson Lizardo <anderson.lizardo@openbossa.org> |
Claudio Takahasi | 015afd7 | 2010-10-19 19:27:10 -0200 | [diff] [blame] | 271 | |
Johan Hedberg | c89500f | 2011-02-24 23:24:17 -0300 | [diff] [blame] | 272 | Management Interface |
| 273 | ==================== |
| 274 | |
Johan Hedberg | 6b6b100 | 2011-03-15 21:10:45 +0200 | [diff] [blame] | 275 | - Whitelist support (initially only for LE) |
| 276 | |
| 277 | Priority: Medium |
| 278 | Complexity: C2 |
Andre Guedes | 2c0c966 | 2011-03-17 18:55:14 -0300 | [diff] [blame] | 279 | Owner: Andre Guedes <andre.guedes@openbossa.org> |