diff --git a/CHANGELOG.md b/CHANGELOG.md index b77a4df9e..b21ba6e39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,11 +9,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## Unreleased ### Added +- L2CAP: additional authorization_required param in l2cap_ecbm_register_service - GATT Client: support GATT over Enhanced LE Bearer - GATT Server: support GATT over Enhanced LE Bearer - LE Device DB: le_device_db_dump dumps LTK - Port for Zephyr 3.x - ### Fixed - HCI: fix remove le device from whitelist - HFP: use 'don't care' to accept SCO connections, fixes issue on ESP32 diff --git a/src/ble/att_server.c b/src/ble/att_server.c index b7bd70390..5819eeff4 100644 --- a/src/ble/att_server.c +++ b/src/ble/att_server.c @@ -1637,7 +1637,7 @@ uint8_t att_server_eatt_init(uint8_t num_eatt_bearers, uint8_t * storage_buffer, eatt_bearer++; } // TODO: define minimum EATT MTU - l2cap_ecbm_register_service(att_server_eatt_handler, BLUETOOTH_PSM_EATT, 64, 0); + l2cap_ecbm_register_service(att_server_eatt_handler, BLUETOOTH_PSM_EATT, 64, 0, false); return 0; } diff --git a/src/l2cap.c b/src/l2cap.c index a8d718287..aac04cc19 100644 --- a/src/l2cap.c +++ b/src/l2cap.c @@ -5245,6 +5245,7 @@ uint8_t l2cap_cbm_register_service(btstack_packet_handler_t packet_handler, uint service->mtu = 0; service->packet_handler = packet_handler; service->required_security_level = security_level; + service->requires_authorization = false; // add to services list btstack_linked_list_add(&l2cap_le_services, (btstack_linked_item_t *) service); @@ -5406,7 +5407,8 @@ uint8_t l2cap_cbm_provide_credits(uint16_t local_cid, uint16_t credits){ #ifdef ENABLE_L2CAP_ENHANCED_CREDIT_BASED_FLOW_CONTROL_MODE -uint8_t l2cap_ecbm_register_service(btstack_packet_handler_t packet_handler, uint16_t psm, uint16_t min_remote_mtu, gap_security_level_t security_level){ +uint8_t l2cap_ecbm_register_service(btstack_packet_handler_t packet_handler, uint16_t psm, uint16_t min_remote_mtu, + gap_security_level_t security_level, bool authorization_required) { // check for already registered psm l2cap_service_t *service = l2cap_cbm_get_service(psm); @@ -5426,6 +5428,7 @@ uint8_t l2cap_ecbm_register_service(btstack_packet_handler_t packet_handler, uin service->mtu = min_remote_mtu; service->packet_handler = packet_handler; service->required_security_level = security_level; + service->requires_authorization = authorization_required; // add to services list btstack_linked_list_add(&l2cap_enhanced_services, (btstack_linked_item_t *) service); diff --git a/src/l2cap.h b/src/l2cap.h index 15b62fa40..0c2695ebe 100644 --- a/src/l2cap.h +++ b/src/l2cap.h @@ -418,6 +418,9 @@ typedef struct { // required security level gap_security_level_t required_security_level; + // requires authorization + bool requires_authorization; + } l2cap_service_t; @@ -709,9 +712,11 @@ uint8_t l2cap_cbm_provide_credits(uint16_t local_cid, uint16_t credits); * @param psm * @param min_remote_mtu * @param security_level + * @oaram authorization_required * @return status */ -uint8_t l2cap_ecbm_register_service(btstack_packet_handler_t packet_handler, uint16_t psm, uint16_t min_remote_mtu, gap_security_level_t security_level); +uint8_t l2cap_ecbm_register_service(btstack_packet_handler_t packet_handler, uint16_t psm, uint16_t min_remote_mtu, + gap_security_level_t security_level, bool authorization_required); /** * @brief Unregister L2CAP service in Enhanced Credit-Based Flow-Control Mode