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
=======

- UUID handling: Use the new functions created for UUID handling in all parts
  of BlueZ code.  Currently, the new bt_uuid_* functions are being used by
  GATT-related code only.

  Priority: high
  Complexity: C4

- Update PBAP client/server implementation to 1.2 and create necessary APIs for
  new features it introduces.

  Priority: Medium
  Complexity: C4

- Create GOEP unit tests based on its test specification:

  https://www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=230559

  Priority: Medium
  Complexity: C2

- Function in src/adapter.c to convert old storage files to new ini-file format
  should be removed 6-8 months after first BlueZ 5 release.

  Priority: Low
  Complexity: C1

- Remove usage of symlinks for drivers, such as profiles/input/suspend.c and
  profiles/sap/sap.c. Instead, select drivers at runtime by using config
  options or probing for running D-Bus services (using e.g.
  g_dbus_add_service_watch()). Idea first mentioned on
  http://thread.gmane.org/gmane.linux.bluez.kernel/30175/focus=30190.

- Reuse connection handling code of src/profile.c also for built-in profiles
  so plugins would only need to register their btd_profile and the core takes
  care of the rest including listen to the right channel and manages the sdp
  record. Once btd_profile manages the connection it can also notify about
  their state, this probably remove the need of having callbacks to
  .connect/.disconnect since their state can be tracked, it also enables any
  plugin to track any profile state change which can be useful for e.g.
  a connection policy plugin in case one is needed.

  Priority: Low
  Complexity: C2

- Add queueing support for src/agent.c, currently if there is any request
  pending the code fail with error EBUSY which is very inconvenient.

  Priority: Low
  Complexity: C2

Low Energy
==========

- Connection modes. Adapter interface needs to be changed to manage
  connection modes and adapter type. See Volume 3, Part C, section 9.3.
  1. Mode management: Peripheral / Central

  Priority: Medium
  Complexity: C2

- Advertising data. The D-Bus interface needs to be updated to enable setting
  scan response data, and to read the advertising and scan response data which
  has been broadcast from other LE devices.

  Priority: Medium
  Complexity: C2

- Static random address setup and storage. Once this address is written
  in a given remote, the address can not be changed anymore.

  Priority: Low
  Complexity: C1

- Device Name Characteristic is a GAP characteristic for Low Energy. This
  characteristic shall be integrated/used in the discovery procedure. The
  idea 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

ATT/GATT (new shared stack)
===========================

- Add complete GATT test coverage in unit/test-gatt following the GATT test
  spec. This could use shared/gatt-client and shared/gatt-server at the same
  time to test both against eachother. We should definitely have tests for
  gatt-server and gatt-client simultaneously on one side of the connection.

  Priority: High
  Complexity: C4

- Write an example using client D-Bus API using C.

  Priority: High
  Complexity: C2

- Write an example using client D-Bus API using python.

  Priority: High
  Complexity: C2

- Define packed structs for ATT protocol PDUs in shared/att-types to improve
  readability. We should probably do this once there are extensive unit tests
  for gatt-client/gatt-server so that we don't accidentally break working code.

  Priority: Medium
  Complexity: C2

- Use struct iovec to pass around byte buffers that will be sent over the wire,
  instead of passing uint8_t and size_t parameters everywhere.

  Priority: Medium
  Complexity: C1

- Move all daemon plugins and profiles that are GATT based to use
  shared/gatt-client instead of attrib/*. This is a complicated task that
  potentially needs a new plugin/profile probing interface and a lot of
  rewriting that can cause regressions in existing functionality.

  Priority: Medium
  Complexity: C4

- Introduce a way for shared/gatt-server to check security permissions on the
  current connection through bt_att.

  Priority: Medium
  Complexity: C2

- Implement other low-priority ATT protocol operations for shared/gatt-server:

      Read Multiple Request

  Priority: Low
  Complexity: C1

- Send out indications from the "Service Changed" characteristic upon
  reconnection if a bonded device is not connected when the local database is
  modified.

  Priority: High
  Complexity: C2

- Unify the GATT server and client D-Bus implementations into a single module.
  While these don't share a lot of code, keeping them all in src/gatt-dbus seems
  to make more sense from an organizational perspective.

  Priority: Low
  Complexity: C1

- Isolate all GATT code inside the daemon into its own module and perform
  interaction with other modules (e.g. src/device.c) via callbacks. This
  includes client/server management, tracking incoming/outgoing connections for
  ATT, and callbacks to perform profile probing.

  Priority: Low
  Complexity: C4

- Support included services in the GATT D-Bus client API.

  Priority: Medium
  Complexity: C1

Management Interface
====================
