• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Background
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
17General
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
33Low 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
114ATT/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
222Management 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@openbossa.org>
245