bluez/TODO

248 lines
8.7 KiB
Plaintext
Raw Normal View History

2010-10-06 00:58:22 +08:00
Background
==========
- Priority scale: High, Medium and Low
- Complexity scale: C1, C2, C4 and C8. The complexity scale is exponential,
with complexity 1 being the lowest complexity. Complexity is a function
of both task 'complexity' and task 'scope'.
The general rule of thumb is that a complexity 1 task should take 1-2 weeks
for a person very familiar with BlueZ codebase. Higher complexity tasks
require more time and have higher uncertainty.
Higher complexity tasks should be refined into several lower complexity tasks
once the task is better understood.
General
==========
- UUID128 handling: Create new functions to handle UUIDs on host order.
Functions should start with prefix "bt_uuid". In the first phase, attribute
server/client and gatttool code should be changed to use these new functions.
The idea is to keep the consistency for UUID-16, UUID-32 and UUID-128. SDP
functions store UUID-16 and UUID-32 on host order, however UUID-128 is stored
on network order/big endian. Attribute Protocol uses little endian, while
SDP uses big endian. The idea is always store the UUID values on host order
and use utility functions to convert to the proper byte order depending on
the protocol: ATT or SDP.
Priority: high
Complexity: C1
- Rename glib-helper file to a more convenient name. The ideia is try to keep
only sdp helpers functions. bt_* prefix shall be also changed.
Priority: Low
Complexity: C1
Low Energy
==========
2010-10-20 05:27:11 +08:00
- Advertising management. Adapter interface needs to be changed to manage
connection modes, adapter type and advertising policy. See Volume 3,
Part C, section 9.3. If Attribute Server is enabled the LE capable
adapter shall to start advertising. Further investigation is necessary
to define which connectable mode needs to be supported: Non-connectable,
directed connectable and undirected connectable. Basically, two connectable
scenarios shall be addressed:
1. GATT client is disconnected, but intends to become a Peripheral to
receive indications/notifications.
2. GATT server intends to accept connections.
Priority: Medium
Complexity: C2
- Define Auto Connection Establishment Procedure. Some profiles such as
Proximity requires an active link to identify path lost situation. It is
necessary to define how to manage connections, it seems that White List
is appropriated to address auto connections, however is not clear if the
this procedure shall be a profile specific detail or if the remote device
object can expose a property "WhiteList", maybe "Trusted" property can be
also used for this purpose. Another alternative is to define a method to
allow application to request/register the wanted scanning/connection
parameters. Before start this task, a RFC/PATCH shall be sent to the ML.
See Volume 3, Part C, section 9.3.5 for more information.
Priority: Medium
Complexity: C2
- Implement a tool(or extend hciconfig) to setup the advertising parameters
and data. Extend hciconfig passing extra arguments when enabling the
advertises is not the right approach, it will be almost impossible to
address all arguments needed in an acceptable way. For testing, we need
a tool to change easily the AD Flags, the UUIDs and other data that can be
exported through the advertising data field. Suggestions: 1) extend hciconfig
passing a config file when enabling advertises; 2) write a ncurses based tool
Priority: Medium
Complexity: C2
- Add new property in the DeviceFound signal to report the device type:
BR/EDR, single mode or dual-mode.
Priority: Medium
Complexity: C1
- Privacy: When privacy is enabled in the adapter, LE scanning/connection
should use a private address. StartDiscovery method shall be changed and
new adapter property shall be added.
Priority: Medium
Complexity: C1
- Static random address setup and storage. Once this address is written
in the a given remote, the address can not be changed anymore.
Priority: Low
Complexity: C1
- Reconnection address: Reconnection address is a non resolvable private
address that the central writes in the peripheral. BlueZ will support
multiple profiles, it is not clear how it needs to be implemented.
Further discussion is necessary.
Priority: Low
Complexity: C2
- Device Name Characteristic is a GAP characteristic for Low Energy. This
characteristic shall be integrated/used in the discovery procedure. The
ideia is to report the value of this characteristic using DeviceFound signals.
Discussion with the community is needed before to start this task. Other GAP
characteristics for LE needs to follow a similar approach. It is not clear
if all GAP characteristics can be exposed using properties instead of a primary
service characteristics.
See Volume 3, Part C, section 12.1 for more information.
Priority: Low
Complexity: C2
2010-10-06 00:58:22 +08:00
ATT/GATT
========
2011-03-01 21:28:19 +08:00
- For BR/EDR, primary services can be registered based on the information
extracted from the service records. UUIDs, start and end handles information
are available in the record, Discover All Primary Services procedure is not
necessary. If a GATT service doesn't export a service record means that
it should not be used over BR/EDR. Don't start this task before to move the
attribute client code to the bluetoothd core.
Priority: Medium
Complexity: C1
- ATT/GATT parsing to hcidump. Partially implemented, missing to fix
multiple advertises in the same event and RSSI.
Priority: Medium
Complexity: C2
- GATT server: fix MTU exchange
Priority: Medium
Complexity: C2
- Implement ATT PDU validation. Malformed PDUs can cause division by zero
when decoding PDUs. A proper error PDU should be returned for this case.
See decoding function in att.c file.
Priority: Medium
Complexity: C1
- Agent for characteristics: Agent interface should be extended to support
authorization per characteristic if the remote is not in the trusted list.
Priority: Low
Complexity: C1
2010-10-06 17:21:17 +08:00
- gatttool should have the ability to wait for req responses before
quitting (some servers require a small sleep even with cmd's). Maybe a
--delay-exit or --timeout command line switch.
2010-10-06 00:58:22 +08:00
Priority: Low
Complexity: C1
2011-01-04 05:45:53 +08:00
- Refactoring of gatt.c functions. Currently, the callbacks of the services
and characteristics discovery functions return the ATT PDU and the caller
needs to call again the same function to fetch the remaining data when
necessary. Investigate if all results can be returned in the callback
result to avoid repeated code. Before change the code, please analyze
if this change will not break the GATT/ATT qualification tests. Maybe
an interactive fetch/query is necessary to pass the tests.
Priority: Low
Complexity: C1
- Client needs to export a property in the Device Characteristic hierarchy
to manage characteristic value changes reports in the remote device.
Currently, Client Characteristic Configuration attribute is not exposed
as an object. The user needs to use gatttool to change the value of the
this attribute to receive notification/indications. Export this attribute
as a property is a proposal that needs further discussion.
Priority: Low
Complexity: C1
- Attribute server should process queued GATT/ATT commands if the
client disconnects. The client can simply send a command and quit,
without wait for a response(ex: Write Command). For this scenario
that the client disconnects the link quickly the queued received
command is ignored.
Priority: Low
Complecity: C1
2010-10-06 00:58:22 +08:00
- Add sdp discovery support to gattool with BR (--sdp, default is 0x1f)
Priority: Low
Complexity: C1
- Implement Server characteristic Configuration support in the attribute
server to manage characteristic value broadcasting. There is a single
instance of the Server Characteristic Configuration for all clients.
See Volume 3, Part G, section 3.3.3.4 for more information.
Priority: Low
Complexity: C1
- Long write is not implemented. Attribute server, client and command line
tool shall be changed to support this feature.
2010-10-06 17:20:28 +08:00
Priority: Low
2010-10-06 17:20:28 +08:00
Complexity: C2
2010-10-06 19:40:29 +08:00
2010-10-15 21:03:02 +08:00
- Define attribute server API. External applications needs to register,
change attributes and to be notified about changes. Example: Proximity,
Time and Alert Profiles. "Local Service hierarchy" in the attribute-api
needs to be proposed and a RFC shall be sent to the ML.
Priority: Low
Complexity: C2
Management Interface
====================
- Device discovery support (both for BR/EDR & LE)
Priority: High
Complexity: C3
- EIR generation support
Priority: High
Complexity: C2
- Blacklist support
Priority: Medium
Complexity: C1
- mgmt_set_fast_connectable
Priority: Medium
Complexity: C1
2011-03-16 03:10:45 +08:00
- Whitelist support (initially only for LE)
Priority: Medium
Complexity: C2