This is an automated email from the ASF dual-hosted git repository.

janc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit f901dfa0c2fec668e277ae4546dffdd15f320962
Author: Mariusz Skamra <[email protected]>
AuthorDate: Tue Mar 5 11:43:58 2024 +0100

    nimble/iso: Fix missing big_handle return parameter
    
    This fixes ble_iso_create_big to return the BIG handle created
    to the API user.
    
    Signed-off-by: Mariusz Skamra <[email protected]>
---
 apps/btshell/src/cmd_iso.c                         | 5 ++++-
 nimble/host/audio/src/ble_audio_broadcast_source.c | 6 ++++--
 nimble/host/include/host/ble_iso.h                 | 4 +++-
 nimble/host/src/ble_iso.c                          | 5 ++++-
 4 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/apps/btshell/src/cmd_iso.c b/apps/btshell/src/cmd_iso.c
index 284f02111..27a9bc9d4 100644
--- a/apps/btshell/src/cmd_iso.c
+++ b/apps/btshell/src/cmd_iso.c
@@ -164,6 +164,7 @@ cmd_iso_big_create(int argc, char **argv)
 {
     struct ble_iso_create_big_params params = { 0 };
     struct ble_iso_big_params big_params = { 0 };
+    uint8_t big_handle;
     int rc;
 
     rc = parse_arg_init(argc - 1, argv + 1);
@@ -235,12 +236,14 @@ cmd_iso_big_create(int argc, char **argv)
     big_params.broadcast_code = parse_arg_extract("broadcast_code");
     big_params.encryption = big_params.broadcast_code ? 1 : 0;
 
-    rc = ble_iso_create_big(&params, &big_params);
+    rc = ble_iso_create_big(&params, &big_params, &big_handle);
     if (rc != 0) {
         console_printf("BIG create failed (%d)\n", rc);
         return rc;
     }
 
+    console_printf("New big_handle %u created\n", big_handle);
+
     return 0;
 }
 
diff --git a/nimble/host/audio/src/ble_audio_broadcast_source.c 
b/nimble/host/audio/src/ble_audio_broadcast_source.c
index d243a5f19..20edcceab 100644
--- a/nimble/host/audio/src/ble_audio_broadcast_source.c
+++ b/nimble/host/audio/src/ble_audio_broadcast_source.c
@@ -25,6 +25,7 @@
 #if MYNEWT_VAL(BLE_ISO_BROADCAST_SOURCE)
 struct ble_audio_broadcast {
     SLIST_ENTRY(ble_audio_broadcast) next;
+    uint8_t big_handle;
     uint8_t adv_instance;
     struct ble_audio_base *base;
     struct ble_iso_big_params *big_params;
@@ -332,7 +333,8 @@ ble_audio_broadcast_start(uint8_t adv_instance,
         return rc;
     }
 
-    rc = ble_iso_create_big(&create_big_params, broadcast->big_params);
+    rc = ble_iso_create_big(&create_big_params, broadcast->big_params,
+                            &broadcast->big_handle);
     if (rc) {
         BLE_HS_LOG_ERROR("Failed to create BIG (rc=%d)\n", rc);
         return rc;
@@ -378,7 +380,7 @@ ble_audio_broadcast_destroy(uint8_t adv_instance)
         return rc;
     }
 
-    rc = ble_iso_terminate_big(adv_instance);
+    rc = ble_iso_terminate_big(broadcast->big_handle);
     if (rc) {
         BLE_HS_LOG_ERROR("Failed to terminate BIG\n");
         return rc;
diff --git a/nimble/host/include/host/ble_iso.h 
b/nimble/host/include/host/ble_iso.h
index 1bae3366d..ee99b962b 100644
--- a/nimble/host/include/host/ble_iso.h
+++ b/nimble/host/include/host/ble_iso.h
@@ -307,6 +307,7 @@ struct ble_iso_create_big_params {
  *                                  the BIG. These parameters include settings
  *                                  such as SDU interval, maximum SDU size,
  *                                  transport latency, etc.
+ * @param[out] big_handle       BIG instance handle
  *
  * @return                      0 on success;
  *                              an error code on failure.
@@ -315,7 +316,8 @@ struct ble_iso_create_big_params {
  * function specified in @p create_params.
  */
 int ble_iso_create_big(const struct ble_iso_create_big_params *create_params,
-                       const struct ble_iso_big_params *big_params);
+                       const struct ble_iso_big_params *big_params,
+                       uint8_t *big_handle);
 
 /**
  * Terminates an existing Broadcast Isochronous Group (BIG).
diff --git a/nimble/host/src/ble_iso.c b/nimble/host/src/ble_iso.c
index 503cdd0d0..76bc94803 100644
--- a/nimble/host/src/ble_iso.c
+++ b/nimble/host/src/ble_iso.c
@@ -228,7 +228,8 @@ ble_iso_big_free(struct ble_iso_big *big)
 #if MYNEWT_VAL(BLE_ISO_BROADCAST_SOURCE)
 int
 ble_iso_create_big(const struct ble_iso_create_big_params *create_params,
-                   const struct ble_iso_big_params *big_params)
+                   const struct ble_iso_big_params *big_params,
+                   uint8_t *big_handle)
 {
     struct ble_hci_le_create_big_cp cp = { 0 };
     struct ble_iso_big *big;
@@ -271,6 +272,8 @@ ble_iso_create_big(const struct ble_iso_create_big_params 
*create_params,
         memcpy(cp.broadcast_code, big_params->broadcast_code, 16);
     }
 
+    *big_handle = big->handle;
+
     return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE,
                                         BLE_HCI_OCF_LE_CREATE_BIG),
                              &cp, sizeof(cp),NULL, 0);

Reply via email to