4 - Priority scale: High, Medium and Low
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'.
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.
14 Higher complexity tasks should be refined into several lower complexity tasks
15 once the task is better understood.
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.
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.
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.
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.
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
75 - Add new property in the DeviceFound signal to report the device type:
76 BR/EDR, single mode or dual-mode.
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.
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.
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.
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.
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
126 - ATT/GATT parsing to hcidump. Partially implemented, missing to fix
127 multiple advertises in the same event and RSSI.
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.
139 - Fix hard-coded PSM for GATT services over basic rate.
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().
151 - Agent for characteristics: Agent interface should be extended to support
152 authorization per characteristic if the remote is not in the trusted list.
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.
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.
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.
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
194 - Add sdp discovery support to gattool with BR (--sdp, default is 0x1f)
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.
207 - Long write is not implemented. Attribute server, client and command line
208 tool shall be changed to support this feature.
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.
220 Owner: Anderson Lizardo <anderson.lizardo@openbossa.org>
225 - Device discovery support (both for BR/EDR & LE)
235 - mgmt_set_fast_connectable
240 - Whitelist support (initially only for LE)
244 Owner: Andre Guedes <andre.guedes@openbossa.org>