Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of X_NUCLEO_IDB0XA1 by
x-nucleo-idb0xa1/bluenrg-hci/bluenrg_l2cap_aci.h@229:9981f62cdb1a, 2016-05-16 (annotated)
- Committer:
- Andrea Palmieri
- Date:
- Mon May 16 17:22:03 2016 +0200
- Revision:
- 229:9981f62cdb1a
- Parent:
- 132:51056160fa4a
Fix issues and add features
- Fix handles management
- Fix UUIDs management
- Implement API to read random address
- Fix clearing/setting of ADV payload
- Fix scanning behaviour
- Fix scanning while a connection is ongoing
- Implement Char Descriptor discovery
- Implement scanning/advertising filter policy (White List partial management)
- Update underlying BlueNRG stack
- Cosmetics
Signed-off-by: Andrea Palmieri <andrea.palmieri@st.com>
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Wolfgang Betz |
132:51056160fa4a | 1 | /******************** (C) COPYRIGHT 2014 STMicroelectronics ******************** |
| Wolfgang Betz |
132:51056160fa4a | 2 | * File Name : bluenrg_l2cap_aci.h |
| Wolfgang Betz |
132:51056160fa4a | 3 | * Author : AMS - HEA&RF BU |
| Wolfgang Betz |
132:51056160fa4a | 4 | * Version : V1.0.0 |
| Wolfgang Betz |
132:51056160fa4a | 5 | * Date : 26-Jun-2014 |
| Wolfgang Betz |
132:51056160fa4a | 6 | * Description : Header file with L2CAP commands for BlueNRG FW6.3. |
| Wolfgang Betz |
132:51056160fa4a | 7 | ******************************************************************************** |
| Wolfgang Betz |
132:51056160fa4a | 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS |
| Wolfgang Betz |
132:51056160fa4a | 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. |
| Wolfgang Betz |
132:51056160fa4a | 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, |
| Wolfgang Betz |
132:51056160fa4a | 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE |
| Wolfgang Betz |
132:51056160fa4a | 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING |
| Wolfgang Betz |
132:51056160fa4a | 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. |
| Wolfgang Betz |
132:51056160fa4a | 14 | *******************************************************************************/ |
| Wolfgang Betz |
132:51056160fa4a | 15 | |
| Wolfgang Betz |
132:51056160fa4a | 16 | #ifndef __BLUENRG_L2CAP_ACI_H__ |
| Wolfgang Betz |
132:51056160fa4a | 17 | #define __BLUENRG_L2CAP_ACI_H__ |
| Wolfgang Betz |
132:51056160fa4a | 18 | |
| Wolfgang Betz |
132:51056160fa4a | 19 | /** |
| Wolfgang Betz |
132:51056160fa4a | 20 | *@addtogroup L2CAP L2CAP |
| Wolfgang Betz |
132:51056160fa4a | 21 | *@brief L2CAP layer. |
| Wolfgang Betz |
132:51056160fa4a | 22 | *@{ |
| Wolfgang Betz |
132:51056160fa4a | 23 | */ |
| Wolfgang Betz |
132:51056160fa4a | 24 | |
| Wolfgang Betz |
132:51056160fa4a | 25 | /** |
| Wolfgang Betz |
132:51056160fa4a | 26 | *@defgroup L2CAP_Functions L2CAP functions |
| Wolfgang Betz |
132:51056160fa4a | 27 | *@brief API for L2CAP layer. |
| Wolfgang Betz |
132:51056160fa4a | 28 | *@{ |
| Wolfgang Betz |
132:51056160fa4a | 29 | */ |
| Wolfgang Betz |
132:51056160fa4a | 30 | |
| Wolfgang Betz |
132:51056160fa4a | 31 | /** |
| Wolfgang Betz |
132:51056160fa4a | 32 | * @brief Send an L2CAP Connection Parameter Update request from the slave to the master. |
| Wolfgang Betz |
132:51056160fa4a | 33 | * @note An @ref EVT_BLUE_L2CAP_CONN_UPD_RESP event will be raised when the master will respond to the request |
| Wolfgang Betz |
132:51056160fa4a | 34 | * (accepts or rejects). |
| Wolfgang Betz |
132:51056160fa4a | 35 | * @param conn_handle Connection handle on which the connection parameter update request has to be sent. |
| Wolfgang Betz |
132:51056160fa4a | 36 | * @param interval_min Defines minimum value for the connection event interval in the following manner: |
| Wolfgang Betz |
132:51056160fa4a | 37 | * connIntervalMin = interval_min x 1.25ms |
| Wolfgang Betz |
132:51056160fa4a | 38 | * @param interval_max Defines maximum value for the connection event interval in the following manner: |
| Wolfgang Betz |
132:51056160fa4a | 39 | * connIntervalMax = interval_max x 1.25ms |
| Wolfgang Betz |
132:51056160fa4a | 40 | * @param slave_latency Defines the slave latency parameter (number of connection events that can be skipped). |
| Wolfgang Betz |
132:51056160fa4a | 41 | * @param timeout_multiplier Defines connection timeout parameter in the following manner: |
| Wolfgang Betz |
132:51056160fa4a | 42 | * timeout_multiplier x 10ms. |
| Wolfgang Betz |
132:51056160fa4a | 43 | * @return Value indicating success or error code. |
| Wolfgang Betz |
132:51056160fa4a | 44 | */ |
| Wolfgang Betz |
132:51056160fa4a | 45 | tBleStatus aci_l2cap_connection_parameter_update_request(uint16_t conn_handle, uint16_t interval_min, |
| Wolfgang Betz |
132:51056160fa4a | 46 | uint16_t interval_max, uint16_t slave_latency, |
| Wolfgang Betz |
132:51056160fa4a | 47 | uint16_t timeout_multiplier); |
| Wolfgang Betz |
132:51056160fa4a | 48 | /** |
| Wolfgang Betz |
132:51056160fa4a | 49 | * @brief Accept or reject a connection update. |
| Wolfgang Betz |
132:51056160fa4a | 50 | * @note This command should be sent in response to a @ref EVT_BLUE_L2CAP_CONN_UPD_REQ event from the controller. |
| Wolfgang Betz |
132:51056160fa4a | 51 | * The accept parameter has to be set if the connection parameters given in the event are acceptable. |
| Wolfgang Betz |
132:51056160fa4a | 52 | * @param conn_handle Handle received in @ref EVT_BLUE_L2CAP_CONN_UPD_REQ event. |
| Wolfgang Betz |
132:51056160fa4a | 53 | * @param interval_min The connection interval parameter as received in the l2cap connection update request event |
| Wolfgang Betz |
132:51056160fa4a | 54 | * @param interval_max The maximum connection interval parameter as received in the l2cap connection update request event. |
| Wolfgang Betz |
132:51056160fa4a | 55 | * @param slave_latency The slave latency parameter as received in the l2cap connection update request event. |
| Wolfgang Betz |
132:51056160fa4a | 56 | * @param timeout_multiplier The supervision connection timeout parameter as received in the l2cap connection update request event. |
| Wolfgang Betz |
132:51056160fa4a | 57 | * @param min_ce_length Minimum length of connection event needed for the LE connection.\n |
| Wolfgang Betz |
132:51056160fa4a | 58 | * Range: 0x0000 - 0xFFFF\n |
| Wolfgang Betz |
132:51056160fa4a | 59 | * Time = N x 0.625 msec. |
| Wolfgang Betz |
132:51056160fa4a | 60 | * @param max_ce_length Maximum length of connection event needed for the LE connection.\n |
| Wolfgang Betz |
132:51056160fa4a | 61 | * Range: 0x0000 - 0xFFFF\n |
| Wolfgang Betz |
132:51056160fa4a | 62 | * Time = N x 0.625 msec. |
| Wolfgang Betz |
132:51056160fa4a | 63 | * @param id Identifier received in @ref EVT_BLUE_L2CAP_CONN_UPD_REQ event. |
| Wolfgang Betz |
132:51056160fa4a | 64 | * @param accept @arg 0x00: The connection update parameters are not acceptable. |
| Wolfgang Betz |
132:51056160fa4a | 65 | * @arg 0x01: The connection update parameters are acceptable. |
| Wolfgang Betz |
132:51056160fa4a | 66 | * @return Value indicating success or error code. |
| Wolfgang Betz |
132:51056160fa4a | 67 | */ |
| Wolfgang Betz |
132:51056160fa4a | 68 | tBleStatus aci_l2cap_connection_parameter_update_response_IDB05A1(uint16_t conn_handle, uint16_t interval_min, |
| Wolfgang Betz |
132:51056160fa4a | 69 | uint16_t interval_max, uint16_t slave_latency, |
| Wolfgang Betz |
132:51056160fa4a | 70 | uint16_t timeout_multiplier, uint16_t min_ce_length, uint16_t max_ce_length, |
| Wolfgang Betz |
132:51056160fa4a | 71 | uint8_t id, uint8_t accept); |
| Wolfgang Betz |
132:51056160fa4a | 72 | /** |
| Wolfgang Betz |
132:51056160fa4a | 73 | * @brief Accept or reject a connection update. |
| Wolfgang Betz |
132:51056160fa4a | 74 | * @note This command should be sent in response to a @ref EVT_BLUE_L2CAP_CONN_UPD_REQ event from the controller. |
| Wolfgang Betz |
132:51056160fa4a | 75 | * The accept parameter has to be set if the connection parameters given in the event are acceptable. |
| Wolfgang Betz |
132:51056160fa4a | 76 | * @param conn_handle Handle received in @ref EVT_BLUE_L2CAP_CONN_UPD_REQ event. |
| Wolfgang Betz |
132:51056160fa4a | 77 | * @param interval_min The connection interval parameter as received in the l2cap connection update request event |
| Wolfgang Betz |
132:51056160fa4a | 78 | * @param interval_max The maximum connection interval parameter as received in the l2cap connection update request event. |
| Wolfgang Betz |
132:51056160fa4a | 79 | * @param slave_latency The slave latency parameter as received in the l2cap connection update request event. |
| Wolfgang Betz |
132:51056160fa4a | 80 | * @param timeout_multiplier The supervision connection timeout parameter as received in the l2cap connection update request event. |
| Wolfgang Betz |
132:51056160fa4a | 81 | * @param id Identifier received in @ref EVT_BLUE_L2CAP_CONN_UPD_REQ event. |
| Wolfgang Betz |
132:51056160fa4a | 82 | * @param accept @arg 0x00: The connection update parameters are not acceptable. |
| Wolfgang Betz |
132:51056160fa4a | 83 | * @arg 0x01: The connection update parameters are acceptable. |
| Wolfgang Betz |
132:51056160fa4a | 84 | * @return Value indicating success or error code. |
| Wolfgang Betz |
132:51056160fa4a | 85 | */ |
| Wolfgang Betz |
132:51056160fa4a | 86 | tBleStatus aci_l2cap_connection_parameter_update_response_IDB04A1(uint16_t conn_handle, uint16_t interval_min, |
| Wolfgang Betz |
132:51056160fa4a | 87 | uint16_t interval_max, uint16_t slave_latency, |
| Wolfgang Betz |
132:51056160fa4a | 88 | uint16_t timeout_multiplier, uint8_t id, uint8_t accept); |
| Wolfgang Betz |
132:51056160fa4a | 89 | |
| Wolfgang Betz |
132:51056160fa4a | 90 | /** |
| Wolfgang Betz |
132:51056160fa4a | 91 | * @} |
| Wolfgang Betz |
132:51056160fa4a | 92 | */ |
| Wolfgang Betz |
132:51056160fa4a | 93 | |
| Wolfgang Betz |
132:51056160fa4a | 94 | /** |
| Wolfgang Betz |
132:51056160fa4a | 95 | * @defgroup L2CAP_Events L2CAP events |
| Wolfgang Betz |
132:51056160fa4a | 96 | * @{ |
| Wolfgang Betz |
132:51056160fa4a | 97 | */ |
| Wolfgang Betz |
132:51056160fa4a | 98 | |
| Wolfgang Betz |
132:51056160fa4a | 99 | /** |
| Wolfgang Betz |
132:51056160fa4a | 100 | * This event is generated when the master responds to the L2CAP connection update request packet. |
| Wolfgang Betz |
132:51056160fa4a | 101 | * For more info see CONNECTION PARAMETER UPDATE RESPONSE and COMMAND REJECT in Bluetooth Core v4.0 spec. |
| Wolfgang Betz |
132:51056160fa4a | 102 | */ |
| Wolfgang Betz |
132:51056160fa4a | 103 | #define EVT_BLUE_L2CAP_CONN_UPD_RESP (0x0800) |
| Wolfgang Betz |
132:51056160fa4a | 104 | typedef __packed struct _evt_l2cap_conn_upd_resp{ |
| Wolfgang Betz |
132:51056160fa4a | 105 | uint16_t conn_handle; /**< The connection handle related to the event. */ |
| Wolfgang Betz |
132:51056160fa4a | 106 | uint8_t event_data_length; /**< Length of following data. */ |
| Wolfgang Betz |
132:51056160fa4a | 107 | /** |
| Wolfgang Betz |
132:51056160fa4a | 108 | * @li 0x13 in case of valid L2CAP Connection Parameter Update Response packet. |
| Wolfgang Betz |
132:51056160fa4a | 109 | * @li 0x01 in case of Command Reject. |
| Wolfgang Betz |
132:51056160fa4a | 110 | */ |
| Wolfgang Betz |
132:51056160fa4a | 111 | uint8_t code; |
| Wolfgang Betz |
132:51056160fa4a | 112 | uint8_t identifier; /**< Identifier of the response. It is equal to the request. */ |
| Wolfgang Betz |
132:51056160fa4a | 113 | uint16_t l2cap_length; /**< Length of following data. It should always be 2 */ |
| Wolfgang Betz |
132:51056160fa4a | 114 | /** |
| Wolfgang Betz |
132:51056160fa4a | 115 | * Result code (parameters accepted or rejected) in case of Connection Parameter Update |
| Wolfgang Betz |
132:51056160fa4a | 116 | * Response (code=0x13) or reason code for rejection in case of Command Reject (code=0x01). |
| Wolfgang Betz |
132:51056160fa4a | 117 | */ |
| Wolfgang Betz |
132:51056160fa4a | 118 | uint16_t result; |
| Wolfgang Betz |
132:51056160fa4a | 119 | } PACKED evt_l2cap_conn_upd_resp; |
| Wolfgang Betz |
132:51056160fa4a | 120 | |
| Wolfgang Betz |
132:51056160fa4a | 121 | /** |
| Wolfgang Betz |
132:51056160fa4a | 122 | * This event is generated when the master does not respond to the connection update request |
| Wolfgang Betz |
132:51056160fa4a | 123 | * within 30 seconds. |
| Wolfgang Betz |
132:51056160fa4a | 124 | */ |
| Wolfgang Betz |
132:51056160fa4a | 125 | #define EVT_BLUE_L2CAP_PROCEDURE_TIMEOUT (0x0801) |
| Andrea Palmieri |
229:9981f62cdb1a | 126 | typedef __packed struct _evt_l2cap_procedure_timeout{ |
| Andrea Palmieri |
229:9981f62cdb1a | 127 | uint16_t conn_handle; /**< The connection handle related to the event. */ |
| Andrea Palmieri |
229:9981f62cdb1a | 128 | uint8_t event_data_length; /**< Length of following data. It should be always 0 for this event. */ |
| Andrea Palmieri |
229:9981f62cdb1a | 129 | } PACKED evt_l2cap_procedure_timeout; |
| Wolfgang Betz |
132:51056160fa4a | 130 | |
| Wolfgang Betz |
132:51056160fa4a | 131 | /** |
| Wolfgang Betz |
132:51056160fa4a | 132 | * The event is given by the L2CAP layer when a connection update request is received from the slave. |
| Wolfgang Betz |
132:51056160fa4a | 133 | * The application has to respond by calling aci_l2cap_connection_parameter_update_response(). |
| Wolfgang Betz |
132:51056160fa4a | 134 | */ |
| Wolfgang Betz |
132:51056160fa4a | 135 | #define EVT_BLUE_L2CAP_CONN_UPD_REQ (0x0802) |
| Wolfgang Betz |
132:51056160fa4a | 136 | typedef __packed struct _evt_l2cap_conn_upd_req{ |
| Wolfgang Betz |
132:51056160fa4a | 137 | /** |
| Wolfgang Betz |
132:51056160fa4a | 138 | * Handle of the connection for which the connection update request has been received. |
| Wolfgang Betz |
132:51056160fa4a | 139 | * The same handle has to be returned while responding to the event with the command |
| Wolfgang Betz |
132:51056160fa4a | 140 | * aci_l2cap_connection_parameter_update_response(). |
| Wolfgang Betz |
132:51056160fa4a | 141 | */ |
| Wolfgang Betz |
132:51056160fa4a | 142 | uint16_t conn_handle; |
| Wolfgang Betz |
132:51056160fa4a | 143 | uint8_t event_data_length; /**< Length of following data. */ |
| Wolfgang Betz |
132:51056160fa4a | 144 | /** |
| Wolfgang Betz |
132:51056160fa4a | 145 | * This is the identifier which associates the request to the |
| Wolfgang Betz |
132:51056160fa4a | 146 | * response. The same identifier has to be returned by the upper |
| Wolfgang Betz |
132:51056160fa4a | 147 | * layer in the command aci_l2cap_connection_parameter_update_response(). |
| Wolfgang Betz |
132:51056160fa4a | 148 | */ |
| Wolfgang Betz |
132:51056160fa4a | 149 | uint8_t identifier; |
| Wolfgang Betz |
132:51056160fa4a | 150 | uint16_t l2cap_length; /**< Length of the L2CAP connection update request. */ |
| Wolfgang Betz |
132:51056160fa4a | 151 | uint16_t interval_min; /**< Value as defined in Bluetooth 4.0 spec, Volume 3, Part A 4.20. */ |
| Wolfgang Betz |
132:51056160fa4a | 152 | uint16_t interval_max; /**< Value as defined in Bluetooth 4.0 spec, Volume 3, Part A 4.20. */ |
| Wolfgang Betz |
132:51056160fa4a | 153 | uint16_t slave_latency; /**< Value as defined in Bluetooth 4.0 spec, Volume 3, Part A 4.20. */ |
| Wolfgang Betz |
132:51056160fa4a | 154 | uint16_t timeout_mult; /**< Value as defined in Bluetooth 4.0 spec, Volume 3, Part A 4.20. */ |
| Wolfgang Betz |
132:51056160fa4a | 155 | } PACKED evt_l2cap_conn_upd_req; |
| Wolfgang Betz |
132:51056160fa4a | 156 | |
| Wolfgang Betz |
132:51056160fa4a | 157 | /** |
| Wolfgang Betz |
132:51056160fa4a | 158 | * @} |
| Wolfgang Betz |
132:51056160fa4a | 159 | */ |
| Wolfgang Betz |
132:51056160fa4a | 160 | |
| Wolfgang Betz |
132:51056160fa4a | 161 | /** |
| Wolfgang Betz |
132:51056160fa4a | 162 | * @} |
| Wolfgang Betz |
132:51056160fa4a | 163 | */ |
| Wolfgang Betz |
132:51056160fa4a | 164 | |
| Wolfgang Betz |
132:51056160fa4a | 165 | |
| Wolfgang Betz |
132:51056160fa4a | 166 | #endif /* __BLUENRG_L2CAP_ACI_H__ */ |
