Home | History | Annotate | Download | only in bluez
      1 Background
      2 ==========
      3 
      4 - Priority scale: High, Medium and Low
      5 
      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'.
      9 
     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.
     13 
     14   Higher complexity tasks should be refined into several lower complexity tasks
     15   once the task is better understood.
     16 
     17 General
     18 ==========
     19 
     20 - UUID handling: Use the new functions created for UUID handling in all parts
     21   of BlueZ code.  Currently, the new bt_uuid_* functions are being used by
     22   GATT-related code only.
     23 
     24   Priority: high
     25   Complexity: C4
     26 
     27 - Rename glib-helper file to a more convenient name. The ideia is try to keep
     28   only sdp helpers functions. bt_* prefix shall be also changed.
     29 
     30   Priority: Low
     31   Complexity: C1
     32 
     33 Low Energy
     34 ==========
     35 
     36 - Advertising management. Adapter interface needs to be changed to manage
     37   connection modes, adapter type and advertising policy. See Volume 3,
     38   Part C, section 9.3. If Attribute Server is enabled the LE capable
     39   adapter shall to start advertising. Further investigation is necessary
     40   to define which connectable mode needs to be supported: Non-connectable,
     41   directed connectable and undirected connectable. Basically, two connectable
     42   scenarios shall be addressed:
     43   1. GATT client is disconnected, but intends to become a Peripheral to
     44      receive indications/notifications.
     45   2. GATT server intends to accept connections.
     46 
     47   Priority: Medium
     48   Complexity: C2
     49 
     50 - Define Auto Connection Establishment Procedure. Some profiles such as
     51   Proximity requires an active link to identify path lost situation. It is
     52   necessary to define how to manage connections, it seems that White List
     53   is appropriated to address auto connections, however is not clear if the
     54   this procedure shall be a profile specific detail or if the remote device
     55   object can expose a property "WhiteList", maybe "Trusted" property can be
     56   also used for this purpose. Another alternative is to define a method to
     57   allow application to request/register the wanted scanning/connection
     58   parameters. Before start this task, a RFC/PATCH shall be sent to the ML.
     59   See Volume 3, Part C, section 9.3.5 for more information.
     60 
     61   Priority: Medium
     62   Complexity: C2
     63 
     64 - Implement a tool(or extend hciconfig) to setup the advertising parameters
     65   and data. Extend hciconfig passing extra arguments when enabling the
     66   advertises is not the right approach, it will be almost impossible to
     67   address all arguments needed in an acceptable way. For testing, we need
     68   a tool to change easily the AD Flags, the UUIDs and other data that can be
     69   exported through the advertising data field. Suggestions: 1) extend hciconfig
     70   passing a config file when enabling advertises; 2) write a ncurses based tool
     71 
     72   Priority: Medium
     73   Complexity: C2
     74 
     75 - Add new property in the DeviceFound signal to report the device type:
     76   BR/EDR, single mode or dual-mode.
     77 
     78   Priority: Medium
     79   Complexity: C1
     80 
     81 - Privacy: When privacy is enabled in the adapter, LE scanning/connection
     82   should use a private address. StartDiscovery method shall be changed and
     83   new adapter property shall be added.
     84 
     85   Priority: Medium
     86   Complexity: C1
     87 
     88 - Static random address setup and storage. Once this address is written
     89   in the a given remote, the address can not be changed anymore.
     90 
     91   Priority: Low
     92   Complexity: C1
     93 
     94 - Reconnection address: Reconnection address is a non resolvable private
     95   address that the central writes in the peripheral. BlueZ will support
     96   multiple profiles, it is not clear how it needs to be implemented.
     97   Further discussion is necessary.
     98 
     99   Priority: Low
    100   Complexity: C2
    101 
    102 - Device Name Characteristic is a GAP characteristic for Low Energy. This
    103   characteristic shall be integrated/used in the discovery procedure. The
    104   ideia is to report the value of this characteristic using DeviceFound signals.
    105   Discussion with the community is needed before to start this task. Other GAP
    106   characteristics for LE needs to follow a similar approach. It is not clear
    107   if all GAP characteristics can be exposed using properties instead of a primary
    108   service characteristics.
    109   See Volume 3, Part C, section 12.1 for more information.
    110 
    111   Priority: Low
    112   Complexity: C2
    113 
    114 ATT/GATT
    115 ========
    116 
    117 - At the moment authentication and authorization is not supported at the
    118   same time, read/write requirements in the attribute server needs to
    119   be extended. According to Bluetooth Specification a server shall check
    120   authentication and authorization requirements before any other check is
    121   performed.
    122 
    123   Priority: Medium
    124   Complexity: C1
    125 
    126 - ATT/GATT parsing to hcidump. Partially implemented, missing to fix
    127   multiple advertises in the same event and RSSI.
    128 
    129   Priority: Medium
    130   Complexity: C2
    131 
    132 - Implement ATT PDU validation. Malformed PDUs can cause division by zero
    133   when decoding PDUs. A proper error PDU should be returned for this case.
    134   See decoding function in att.c file.
    135 
    136   Priority: Medium
    137   Complexity: C1
    138 
    139 - Fix hard-coded PSM for GATT services over basic rate.
    140 
    141   Priority: Low
    142   Complexity: C1
    143 
    144 - Refactor read_by_group() and read_by_type() in src/attrib-server.c
    145   (they've grown simply too big). First step could be to move out the
    146   long for-loops to new functions called e.g. get_groups() and get_types().
    147 
    148   Priority: Low
    149   Complexity: C1
    150 
    151 - Agent for characteristics: Agent interface should be extended to support
    152   authorization per characteristic if the remote is not in the trusted list.
    153 
    154   Priority: Low
    155   Complexity: C1
    156 
    157 - gatttool should have the ability to wait for req responses before
    158   quitting (some servers require a small sleep even with cmd's). Maybe a
    159   --delay-exit or --timeout command line switch.
    160 
    161   Priority: Low
    162   Complexity: C1
    163 
    164 - Refactoring of gatt.c functions. Currently, the callbacks of the services
    165   and characteristics discovery functions return the ATT PDU and the caller
    166   needs to call again the same function to fetch the remaining data when
    167   necessary. Investigate if all results can be returned in the callback
    168   result to avoid repeated code. Before change the code, please analyze
    169   if this change will not break the GATT/ATT qualification tests. Maybe
    170   an interactive fetch/query is necessary to pass the tests.
    171 
    172   Priority: Low
    173   Complexity: C1
    174 
    175 - Client needs to export a property in the Device Characteristic hierarchy
    176   to manage characteristic value changes reports in the remote device.
    177   Currently, Client Characteristic Configuration attribute is not exposed
    178   as an object. The user needs to use gatttool to change the value of the
    179   this attribute to receive notification/indications. Export this attribute
    180   as a property is a proposal that needs further discussion.
    181 
    182   Priority: Low
    183   Complexity: C1
    184 
    185 - Attribute server should process queued GATT/ATT commands if the
    186   client disconnects. The client can simply send a command and quit,
    187   without wait for a response(ex: Write Command). For this scenario
    188   that the client disconnects the link quickly the queued received
    189   command is ignored.
    190 
    191   Priority: Low
    192   Complecity: C1
    193 
    194 - Add sdp discovery support to gattool with BR (--sdp, default is 0x1f)
    195 
    196   Priority: Low
    197   Complexity: C1
    198 
    199 - Implement Server characteristic Configuration support in the attribute
    200   server to manage characteristic value broadcasting. There is a single
    201   instance of the Server Characteristic Configuration for all clients.
    202   See Volume 3, Part G, section 3.3.3.4 for more information.
    203 
    204   Priority: Low
    205   Complexity: C1
    206 
    207 - Long write is not implemented. Attribute server, client and command line
    208   tool shall be changed to support this feature.
    209 
    210   Priority: Low
    211   Complexity: C2
    212 
    213 - Define attribute server API. External applications needs to register,
    214   change attributes and to be notified about changes. Example: Proximity,
    215   Time and Alert Profiles. "Local Service hierarchy" in the attribute-api
    216   needs to be proposed and a RFC shall be sent to the ML.
    217 
    218   Priority: Low
    219   Complexity: C2
    220   Owner: Anderson Lizardo <anderson.lizardo (a] openbossa.org>
    221 
    222 Management Interface
    223 ====================
    224 
    225 - Device discovery support (both for BR/EDR & LE)
    226 
    227   Priority: High
    228   Complexity: C3
    229 
    230 - Blacklist support
    231 
    232   Priority: Medium
    233   Complexity: C1
    234 
    235 - mgmt_set_fast_connectable
    236 
    237   Priority: Medium
    238   Complexity: C1
    239 
    240 - Whitelist support (initially only for LE)
    241 
    242   Priority: Medium
    243   Complexity: C2
    244   Owner: Andre Guedes <andre.guedes (a] openbossa.org>
    245