|
Packit Service |
8264ee |
Background
|
|
Packit Service |
8264ee |
==========
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Priority scale: High, Medium and Low
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Complexity scale: C1, C2, C4 and C8. The complexity scale is exponential,
|
|
Packit Service |
8264ee |
with complexity 1 being the lowest complexity. Complexity is a function
|
|
Packit Service |
8264ee |
of both task 'complexity' and task 'scope'.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
The general rule of thumb is that a complexity 1 task should take 1-2 weeks
|
|
Packit Service |
8264ee |
for a person very familiar with BlueZ codebase. Higher complexity tasks
|
|
Packit Service |
8264ee |
require more time and have higher uncertainty.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Higher complexity tasks should be refined into several lower complexity tasks
|
|
Packit Service |
8264ee |
once the task is better understood.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
General
|
|
Packit Service |
8264ee |
=======
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- UUID handling: Use the new functions created for UUID handling in all parts
|
|
Packit Service |
8264ee |
of BlueZ code. Currently, the new bt_uuid_* functions are being used by
|
|
Packit Service |
8264ee |
GATT-related code only.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: high
|
|
Packit Service |
8264ee |
Complexity: C4
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Update PBAP client/server implementation to 1.2 and create necessary APIs for
|
|
Packit Service |
8264ee |
new features it introduces.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C4
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Create GOEP unit tests based on its test specification:
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
https://www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=230559
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Function in src/adapter.c to convert old storage files to new ini-file format
|
|
Packit Service |
8264ee |
should be removed 6-8 months after first BlueZ 5 release.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C1
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Remove usage of symlinks for drivers, such as profiles/input/suspend.c and
|
|
Packit Service |
8264ee |
profiles/sap/sap.c. Instead, select drivers at runtime by using config
|
|
Packit Service |
8264ee |
options or probing for running D-Bus services (using e.g.
|
|
Packit Service |
8264ee |
g_dbus_add_service_watch()). Idea first mentioned on
|
|
Packit Service |
8264ee |
http://thread.gmane.org/gmane.linux.bluez.kernel/30175/focus=30190.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Reuse connection handling code of src/profile.c also for built-in profiles
|
|
Packit Service |
8264ee |
so plugins would only need to register their btd_profile and the core takes
|
|
Packit Service |
8264ee |
care of the rest including listen to the right channel and manages the sdp
|
|
Packit Service |
8264ee |
record. Once btd_profile manages the connection it can also notify about
|
|
Packit Service |
8264ee |
their state, this probably remove the need of having callbacks to
|
|
Packit Service |
8264ee |
.connect/.disconnect since their state can be tracked, it also enables any
|
|
Packit Service |
8264ee |
plugin to track any profile state change which can be useful for e.g.
|
|
Packit Service |
8264ee |
a connection policy plugin in case one is needed.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Add queueing support for src/agent.c, currently if there is any request
|
|
Packit Service |
8264ee |
pending the code fail with error EBUSY which is very inconvenient.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Low Energy
|
|
Packit Service |
8264ee |
==========
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Connection modes. Adapter interface needs to be changed to manage
|
|
Packit Service |
8264ee |
connection modes and adapter type. See Volume 3, Part C, section 9.3.
|
|
Packit Service |
8264ee |
1. Mode management: Peripheral / Central
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Advertising data. The D-Bus interface needs to be updated to enable setting
|
|
Packit Service |
8264ee |
scan response data, and to read the advertising and scan response data which
|
|
Packit Service |
8264ee |
has been broadcast from other LE devices.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Static random address setup and storage. Once this address is written
|
|
Packit Service |
8264ee |
in a given remote, the address can not be changed anymore.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C1
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Device Name Characteristic is a GAP characteristic for Low Energy. This
|
|
Packit Service |
8264ee |
characteristic shall be integrated/used in the discovery procedure. The
|
|
Packit Service |
8264ee |
idea is to report the value of this characteristic using DeviceFound signals.
|
|
Packit Service |
8264ee |
Discussion with the community is needed before to start this task. Other GAP
|
|
Packit Service |
8264ee |
characteristics for LE needs to follow a similar approach. It is not clear
|
|
Packit Service |
8264ee |
if all GAP characteristics can be exposed using properties instead of a primary
|
|
Packit Service |
8264ee |
service characteristics.
|
|
Packit Service |
8264ee |
See Volume 3, Part C, section 12.1 for more information.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
ATT/GATT (new shared stack)
|
|
Packit Service |
8264ee |
===========================
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Add complete GATT test coverage in unit/test-gatt following the GATT test
|
|
Packit Service |
8264ee |
spec. This could use shared/gatt-client and shared/gatt-server at the same
|
|
Packit Service |
8264ee |
time to test both against eachother. We should definitely have tests for
|
|
Packit Service |
8264ee |
gatt-server and gatt-client simultaneously on one side of the connection.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: High
|
|
Packit Service |
8264ee |
Complexity: C4
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Write an example using client D-Bus API using C.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: High
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Write an example using client D-Bus API using python.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: High
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Define packed structs for ATT protocol PDUs in shared/att-types to improve
|
|
Packit Service |
8264ee |
readability. We should probably do this once there are extensive unit tests
|
|
Packit Service |
8264ee |
for gatt-client/gatt-server so that we don't accidentally break working code.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Use struct iovec to pass around byte buffers that will be sent over the wire,
|
|
Packit Service |
8264ee |
instead of passing uint8_t and size_t parameters everywhere.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C1
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Move all daemon plugins and profiles that are GATT based to use
|
|
Packit Service |
8264ee |
shared/gatt-client instead of attrib/*. This is a complicated task that
|
|
Packit Service |
8264ee |
potentially needs a new plugin/profile probing interface and a lot of
|
|
Packit Service |
8264ee |
rewriting that can cause regressions in existing functionality.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C4
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Introduce a way for shared/gatt-server to check security permissions on the
|
|
Packit Service |
8264ee |
current connection through bt_att.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Implement other low-priority ATT protocol operations for shared/gatt-server:
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Read Multiple Request
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C1
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Send out indications from the "Service Changed" characteristic upon
|
|
Packit Service |
8264ee |
reconnection if a bonded device is not connected when the local database is
|
|
Packit Service |
8264ee |
modified.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: High
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Unify the GATT server and client D-Bus implementations into a single module.
|
|
Packit Service |
8264ee |
While these don't share a lot of code, keeping them all in src/gatt-dbus seems
|
|
Packit Service |
8264ee |
to make more sense from an organizational perspective.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C1
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Isolate all GATT code inside the daemon into its own module and perform
|
|
Packit Service |
8264ee |
interaction with other modules (e.g. src/device.c) via callbacks. This
|
|
Packit Service |
8264ee |
includes client/server management, tracking incoming/outgoing connections for
|
|
Packit Service |
8264ee |
ATT, and callbacks to perform profile probing.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C4
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Support included services in the GATT D-Bus client API.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C1
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Management Interface
|
|
Packit Service |
8264ee |
====================
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Mesh
|
|
Packit Service |
8264ee |
====
|
|
Packit Service |
8264ee |
- Read default configuration settings (e.g., provisioning timeout, supported
|
|
Packit Service |
8264ee |
features, etc.)from mesh.conf file.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C1
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Add examples and unit tests
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: High
|
|
Packit Service |
8264ee |
Complexity: C1
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Implement unified feature management mechanism for mesh nodes that are hosted
|
|
Packit Service |
8264ee |
on the same device
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Implement mandatory Health Server model. Most likely, this will involve
|
|
Packit Service |
8264ee |
additions to mesh D-Bus API
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Design and implement Mesh Provisioner/ Configuration Client Model.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C4
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Add support for GATT proxy server
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C4
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Merge common functionality from tools/mesh. Ideally, source code from the
|
|
Packit Service |
8264ee |
tools/mesh directory should completely dissapear.
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C2
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Support for Low Power Node (LPN)
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Low
|
|
Packit Service |
8264ee |
Complexity: C4
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
- Support for all the provisioning OOB types
|
|
Packit Service |
8264ee |
|
|
Packit Service |
8264ee |
Priority: Medium
|
|
Packit Service |
8264ee |
Complexity: C2
|