blob: 384d428c7e3103967cbcd96898be42218ebf9d45 [file] [log] [blame]
Johan Hedberge9a15ad2010-10-05 18:58:22 +02001Background
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 Takahasi0a4c7da2011-01-03 18:45:52 -030017General
18==========
19
Elvis Pfützenreuter6bcda792011-03-16 22:36:54 -030020- 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 Takahasic66d33b2011-02-28 10:44:12 -030023
24 Priority: high
Elvis Pfützenreuter6bcda792011-03-16 22:36:54 -030025 Complexity: C4
Claudio Takahasic66d33b2011-02-28 10:44:12 -030026
Claudio Takahasi0a4c7da2011-01-03 18:45:52 -030027- 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 Padovanf491b242012-06-15 03:38:59 -030033BlueZ 5
34=======
35
36Priority/Complexity ommited as all items are required before 5.0 is
37released.
38
Johan Hedberg9cad4e62012-07-10 10:41:02 -030039- [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 Padovanf491b242012-06-15 03:38:59 -030041 anymore. Probably plugins/mgmtops.c -> src/mgmt.c
42
Gustavo Padovanf491b242012-06-15 03:38:59 -030043- Reorganize source tree according to RFC sent to linux-bluetooth
44 (Subject: [RFC] Reorganizing the BlueZ source tree)
45
Johan Hedbergf0478f02012-06-27 15:18:58 +030046- Remove deprecated D-Bus signals and methods (ensuring new ones are in
47 place to replace what's removed).
Gustavo Padovanf491b242012-06-15 03:38:59 -030048
Johan Hedbergf0478f02012-06-27 15:18:58 +030049- Remove telephony driver framework and replace with the telephony agent
50 patches.
51
Johan Hedbergb9f0bd52012-07-20 15:07:25 +030052- [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 Hedbergb7d1aba2012-06-28 15:00:33 +030055
Johan Hedberg886a8562012-07-02 13:22:51 +030056- [done] Remove UNIX socket based audio interface (along with ALSA plugin)
Johan Hedbergf0478f02012-06-27 15:18:58 +030057
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 Hedbergbfe49b42012-07-10 17:59:42 -030063- [done] Remove unmaintained plugins like pnat and maemo6
Gustavo Padovanf491b242012-06-15 03:38:59 -030064
Johan Hedbergf85dae72012-07-09 17:00:14 -030065- 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 Hedberg94e26452012-07-09 11:58:02 -030070- Switch to standard D-Bus properties interface
71
72- Switch to standard object manager interface
73
Johan Hedberg7e561c92012-08-27 16:03:16 -070074- 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 Hedberg76a712d2012-08-31 11:49:09 -070080- Convert storage to user per-remote device directories and ini-file
81 format
82
Claudio Takahasid1ca6e72010-10-15 10:03:01 -030083Low Energy
84==========
85
Claudio Takahasi02ff7992010-10-19 19:27:11 -020086- 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 Takahasi1cd29b82010-10-19 19:27:12 -0200100- 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 Takahasid6bb8622011-01-03 18:45:50 -0300114- 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 Takahasia0ba5612011-02-28 10:44:13 -0300125- 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 Takahasi4bbbd662011-02-22 17:43:06 -0300131- 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 Takahasi4c9f8c62011-02-22 17:43:09 -0300138- 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 Takahasi45ea4d52011-02-22 17:43:10 -0300144- 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 Takahasi6b9deca2010-10-13 14:44:27 -0300152- 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 Hedberge9a15ad2010-10-05 18:58:22 +0200163
164ATT/GATT
165========
166
Claudio Takahasib5892cd2011-03-23 16:40:12 -0300167- 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 Takahasi42c3dec2011-02-22 17:43:05 -0300176- ATT/GATT parsing to hcidump. Partially implemented, missing to fix
177 multiple advertises in the same event and RSSI.
Johan Hedberge9a15ad2010-10-05 18:58:22 +0200178
Johan Hedberg1d259452010-10-05 19:01:52 +0200179 Priority: Medium
Johan Hedberge9a15ad2010-10-05 18:58:22 +0200180 Complexity: C2
181
Claudio Takahasi5aa3f082011-02-24 18:21:33 -0300182- 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 Takahasi51571e72011-04-11 15:26:34 -0300189- Fix hard-coded PSM for GATT services over basic rate.
190
191 Priority: Low
192 Complexity: C1
193
Johan Hedberg52e333f2011-03-15 22:40:00 +0200194- 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 Takahasi3475c7f2011-02-22 17:43:11 -0300201- 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 Dentzb3316722010-10-07 19:21:55 +0300207- 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 Takahasi114ab532011-01-03 18:45:53 -0300214- 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 Dentzb3316722010-10-07 19:21:55 +0300225- 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 Takahasi3bce8772010-10-13 13:37:13 -0300249- 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 Takahasi950f9fd2011-02-22 17:43:08 -0300257- Long write is not implemented. Attribute server, client and command line
258 tool shall be changed to support this feature.
Luiz Augusto von Dentzb3316722010-10-07 19:21:55 +0300259
260 Priority: Low
261 Complexity: C2
262
Claudio Takahasib5b98802010-10-15 10:03:02 -0300263- 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 Lizardo4969ae42011-03-17 07:55:01 -0400270 Owner: Anderson Lizardo <anderson.lizardo@openbossa.org>
Claudio Takahasi015afd72010-10-19 19:27:10 -0200271
Johan Hedbergc89500f2011-02-24 23:24:17 -0300272Management Interface
273====================
274
Johan Hedberg6b6b1002011-03-15 21:10:45 +0200275- Whitelist support (initially only for LE)
276
277 Priority: Medium
278 Complexity: C2
Andre Guedes2c0c9662011-03-17 18:55:14 -0300279 Owner: Andre Guedes <andre.guedes@openbossa.org>