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 - UUID128 handling: Create new functions to handle UUIDs on host order.
21 Functions should start with prefix "bt_uuid". In the first phase, attribute
22 server/client and gatttool code should be changed to use these new functions.
23 The idea is to keep the consistency for UUID-16, UUID-32 and UUID-128. SDP
24 functions store UUID-16 and UUID-32 on host order, however UUID-128 is stored
25 on network order/big endian. Attribute Protocol uses little endian, while
26 SDP uses big endian. The idea is always store the UUID values on host order
27 and use utility functions to convert to the proper byte order depending on
28 the protocol: ATT or SDP.
33 - Rename glib-helper file to a more convenient name. The ideia is try to keep
34 only sdp helpers functions. bt_* prefix shall be also changed.
42 - Advertising management. Adapter interface needs to be changed to manage
43 connection modes, adapter type and advertising policy. See Volume 3,
44 Part C, section 9.3. If Attribute Server is enabled the LE capable
45 adapter shall to start advertising. Further investigation is necessary
46 to define which connectable mode needs to be supported: Non-connectable,
47 directed connectable and undirected connectable. Basically, two connectable
48 scenarios shall be addressed:
49 1. GATT client is disconnected, but intends to become a Peripheral to
50 receive indications/notifications.
51 2. GATT server intends to accept connections.
56 - Define Auto Connection Establishment Procedure. Some profiles such as
57 Proximity requires an active link to identify path lost situation. It is
58 necessary to define how to manage connections, it seems that White List
59 is appropriated to address auto connections, however is not clear if the
60 this procedure shall be a profile specific detail or if the remote device
61 object can expose a property "WhiteList", maybe "Trusted" property can be
62 also used for this purpose. Another alternative is to define a method to
63 allow application to request/register the wanted scanning/connection
64 parameters. Before start this task, a RFC/PATCH shall be sent to the ML.
65 See Volume 3, Part C, section 9.3.5 for more information.
70 - Implement a tool(or extend hciconfig) to setup the advertising parameters
71 and data. Extend hciconfig passing extra arguments when enabling the
72 advertises is not the right approach, it will be almost impossible to
73 address all arguments needed in an acceptable way. For testing, we need
74 a tool to change easily the AD Flags, the UUIDs and other data that can be
75 exported through the advertising data field. Suggestions: 1) extend hciconfig
76 passing a config file when enabling advertises; 2) write a ncurses based tool
81 - Add new property in the DeviceFound signal to report the device type:
82 BR/EDR, single mode or dual-mode.
87 - Privacy: When privacy is enabled in the adapter, LE scanning/connection
88 should use a private address. StartDiscovery method shall be changed and
89 new adapter property shall be added.
94 - Static random address setup and storage. Once this address is written
95 in the a given remote, the address can not be changed anymore.
100 - Reconnection address: Reconnection address is a non resolvable private
101 address that the central writes in the peripheral. BlueZ will support
102 multiple profiles, it is not clear how it needs to be implemented.
103 Further discussion is necessary.
108 - Device Name Characteristic is a GAP characteristic for Low Energy. This
109 characteristic shall be integrated/used in the discovery procedure. The
110 ideia is to report the value of this characteristic using DeviceFound signals.
111 Discussion with the community is needed before to start this task. Other GAP
112 characteristics for LE needs to follow a similar approach. It is not clear
113 if all GAP characteristics can be exposed using properties instead of a primary
114 service characteristics.
115 See Volume 3, Part C, section 12.1 for more information.
123 - For BR/EDR, primary services can be registered based on the information
124 extracted from the service records. UUIDs, start and end handles information
125 are available in the record, Discover All Primary Services procedure is not
126 necessary. If a GATT service doesn't export a service record means that
127 it should not be used over BR/EDR. Don't start this task before to move the
128 attribute client code to the bluetoothd core.
133 - ATT/GATT parsing to hcidump. Partially implemented, missing to fix
134 multiple advertises in the same event and RSSI.
139 - GATT server: fix MTU exchange
144 - Implement ATT PDU validation. Malformed PDUs can cause division by zero
145 when decoding PDUs. A proper error PDU should be returned for this case.
146 See decoding function in att.c file.
151 - Refactor read_by_group() and read_by_type() in src/attrib-server.c
152 (they've grown simply too big). First step could be to move out the
153 long for-loops to new functions called e.g. get_groups() and get_types().
158 - Agent for characteristics: Agent interface should be extended to support
159 authorization per characteristic if the remote is not in the trusted list.
164 - gatttool should have the ability to wait for req responses before
165 quitting (some servers require a small sleep even with cmd's). Maybe a
166 --delay-exit or --timeout command line switch.
171 - Refactoring of gatt.c functions. Currently, the callbacks of the services
172 and characteristics discovery functions return the ATT PDU and the caller
173 needs to call again the same function to fetch the remaining data when
174 necessary. Investigate if all results can be returned in the callback
175 result to avoid repeated code. Before change the code, please analyze
176 if this change will not break the GATT/ATT qualification tests. Maybe
177 an interactive fetch/query is necessary to pass the tests.
182 - Client needs to export a property in the Device Characteristic hierarchy
183 to manage characteristic value changes reports in the remote device.
184 Currently, Client Characteristic Configuration attribute is not exposed
185 as an object. The user needs to use gatttool to change the value of the
186 this attribute to receive notification/indications. Export this attribute
187 as a property is a proposal that needs further discussion.
192 - Attribute server should process queued GATT/ATT commands if the
193 client disconnects. The client can simply send a command and quit,
194 without wait for a response(ex: Write Command). For this scenario
195 that the client disconnects the link quickly the queued received
201 - Add sdp discovery support to gattool with BR (--sdp, default is 0x1f)
206 - Implement Server characteristic Configuration support in the attribute
207 server to manage characteristic value broadcasting. There is a single
208 instance of the Server Characteristic Configuration for all clients.
209 See Volume 3, Part G, section 3.3.3.4 for more information.
214 - Long write is not implemented. Attribute server, client and command line
215 tool shall be changed to support this feature.
220 - Define attribute server API. External applications needs to register,
221 change attributes and to be notified about changes. Example: Proximity,
222 Time and Alert Profiles. "Local Service hierarchy" in the attribute-api
223 needs to be proposed and a RFC shall be sent to the ML.
231 - Device discovery support (both for BR/EDR & LE)
236 - EIR generation support
246 - mgmt_set_fast_connectable
251 - Whitelist support (initially only for LE)