From d56bd9dee7caab1d2ffe9d198a1a63fbc0f757d1 Mon Sep 17 00:00:00 2001 From: Andrzej Kaczmarek Date: Tue, 31 Jan 2023 14:31:03 +0100 Subject: [PATCH] nimble/ll: Add macros to handle conn handles Connection handles for ACL, CIS and BIS are assigned from the same pool so we'll just split that poll into separate ranges - we'll use msbyte as an indicator for type of conn_handle, this gives us 256 handles of each type which should be more than enough. --- nimble/controller/include/controller/ble_ll.h | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/nimble/controller/include/controller/ble_ll.h b/nimble/controller/include/controller/ble_ll.h index c4e70e6ef..5043429bb 100644 --- a/nimble/controller/include/controller/ble_ll.h +++ b/nimble/controller/include/controller/ble_ll.h @@ -335,6 +335,27 @@ struct ble_dev_addr #define BLE_LL_MAX_PDU_LEN ((BLE_LL_PDU_HDR_LEN) + (BLE_LL_MAX_PAYLOAD_LEN)) #define BLE_LL_CRCINIT_ADV (0x555555) +#define BLE_LL_CONN_HANDLE(t, h) ((((t) << 8) & BLE_LL_CONN_HANDLE_TYPE_MASK) | \ + ((h) & BLE_LL_CONN_HANDLE_IDX_MASK)) +#define BLE_LL_CONN_HANDLE_TYPE_MASK (0x0700) +#define BLE_LL_CONN_HANDLE_IDX_MASK (0x00ff) +#define BLE_LL_CONN_HANDLE_TYPE(conn_h) (((conn_h) & BLE_LL_CONN_HANDLE_TYPE_MASK) >> 8) +#define BLE_LL_CONN_HANDLE_IDX(conn_h) ((conn_h) & BLE_LL_CONN_HANDLE_IDX_MASK) + +#define BLE_LL_CONN_HANDLE_TYPE_ACL (0x00) +#define BLE_LL_CONN_HANDLE_TYPE_CIS (0x01) +#define BLE_LL_CONN_HANDLE_TYPE_BIS (0x02) +#define BLE_LL_CONN_HANDLE_TYPE_BIS_SYNC (0x03) + +#define BLE_LL_CONN_HANDLE_IS_ACL(ch) \ + (BLE_LL_CONN_HANDLE_TYPE(ch) == BLE_LL_CONN_HANDLE_TYPE_ACL) +#define BLE_LL_CONN_HANDLE_IS_CIS(ch) \ + (BLE_LL_CONN_HANDLE_TYPE(ch) == BLE_LL_CONN_HANDLE_TYPE_CIS) +#define BLE_LL_CONN_HANDLE_IS_BIS(ch) \ + (BLE_LL_CONN_HANDLE_TYPE(ch) == BLE_LL_CONN_HANDLE_TYPE_BIS) +#define BLE_LL_CONN_HANDLE_IS_BIS_SYNC(ch) \ + (BLE_LL_CONN_HANDLE_TYPE(ch) == BLE_LL_CONN_HANDLE_TYPE_BIS_SYNC) + /* Access address for advertising channels */ #define BLE_ACCESS_ADDR_ADV (0x8E89BED6)