Fix build break for rpm
[framework/connectivity/bluez.git] / TODO
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@openbossa.org>
221
222 Management Interface
223 ====================
224
225 - Whitelist support (initially only for LE)
226
227   Priority: Medium
228   Complexity: C2
229   Owner: Andre Guedes <andre.guedes@openbossa.org>