Blame TODO

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