szymon-czapracki commented on code in PR #1813:
URL: https://github.com/apache/mynewt-nimble/pull/1813#discussion_r1732858361


##########
apps/bttester/src/btp_bap.c:
##########
@@ -371,8 +401,171 @@ static const struct btp_handler handlers[] = {
         .expect_len = sizeof(struct bap_bap_broadcast_source_stop_cmd),
         .func = broadcast_source_stop,
     },
+    {
+        .opcode = BTP_BAP_SET_BROADCAST_CODE,
+        .index = BTP_INDEX,
+        .expect_len = sizeof(struct btp_bap_set_broadcast_code_cmd),
+        .func = broadcast_code_set,
+    },
+    {
+        .opcode = BTP_BAP_BROADCAST_SINK_SETUP,
+        .index = BTP_INDEX,
+        .expect_len = BTP_HANDLER_LENGTH_VARIABLE,
+        .func = broadcast_sink_setup,
+    },
+    {
+        .opcode = BTP_BAP_BROADCAST_SINK_STOP,
+        .index = BTP_INDEX,
+        .expect_len = BTP_HANDLER_LENGTH_VARIABLE,
+        .func = broadcast_sink_stop,
+    },
 };
 
+#define BROADCAST_SINK_PA_SYNC_TIMEOUT_DEFAULT  0x07D0
+
+static int
+broadcast_sink_pa_sync_params_get(struct ble_gap_periodic_sync_params *params)
+{
+    params->skip = 0;
+    params->sync_timeout = BROADCAST_SINK_PA_SYNC_TIMEOUT_DEFAULT;
+    params->reports_disabled = false;
+
+    return 0;
+}
+
+static int
+broadcast_sink_disc_start(const struct ble_gap_ext_disc_params *params)
+{
+    uint8_t own_addr_type;
+    int rc;
+
+    /* Figure out address to use while scanning. */
+    rc = ble_hs_id_infer_auto(0, &own_addr_type);
+    if (rc != 0) {
+        console_printf("determining own address type failed (%d)", rc);
+        assert(0);
+    }
+
+    rc = ble_gap_ext_disc(own_addr_type, 0, 0, 0, 0, 0, params, NULL, NULL, 
NULL);
+    if (rc != 0) {
+        console_printf("ext disc failed (%d)", rc);
+    }
+
+    return rc;
+}
+
+static int
+broadcast_sink_disc_stop(void)
+{
+    int rc;
+
+    rc = ble_gap_disc_cancel();
+    if (rc != 0) {
+        console_printf("disc cancel failed (%d)", rc);
+    }
+
+    return rc;
+}
+
+static int
+broadcast_sink_action_fn(struct ble_audio_broadcast_sink_action *action, void 
*arg)
+{
+    switch (action->type) {
+    case BLE_AUDIO_BROADCAST_SINK_ACTION_PA_SYNC:
+        return broadcast_sink_pa_sync_params_get(action->pa_sync.out_params);
+    case BLE_AUDIO_BROADCAST_SINK_ACTION_BIG_SYNC:
+        break;
+    case BLE_AUDIO_BROADCAST_SINK_ACTION_BIS_SYNC:
+        return 0;
+    case BLE_AUDIO_BROADCAST_SINK_ACTION_DISC_START:
+        return broadcast_sink_disc_start(action->disc_start.params_preferred);
+    case BLE_AUDIO_BROADCAST_SINK_ACTION_DISC_STOP:
+        return broadcast_sink_disc_stop();
+    default:
+        assert(false);
+        return BLE_HS_ENOTSUP;
+    }
+
+    return 0;
+}
+
+static int
+broadcast_sink_audio_event_handler(struct ble_audio_event *event, void *arg)
+{
+    switch (event->type) {
+    case BLE_AUDIO_EVENT_BROADCAST_SINK_PA_SYNC_STATE:
+        console_printf("source_id=0x%02x PA sync: %s\n",
+                       event->broadcast_sink_pa_sync_state.source_id,
+                       ble_audio_broadcast_sink_sync_state_str(
+                               event->broadcast_sink_pa_sync_state.state));
+        break;
+    case BLE_AUDIO_EVENT_BROADCAST_SINK_BIS_SYNC_STATE:
+        console_printf("source_id=0x%02x bis_index=0x%02x BIS sync: %s\n",
+                       event->broadcast_sink_bis_sync_state.source_id,
+                       event->broadcast_sink_bis_sync_state.bis_index,
+                       ble_audio_broadcast_sink_sync_state_str(
+                               event->broadcast_sink_bis_sync_state.state));
+        if (event->broadcast_sink_bis_sync_state.state ==
+            BLE_AUDIO_BROADCAST_SINK_SYNC_STATE_ESTABLISHED) {
+            console_printf("conn_handle=0x%04x\n",
+                           event->broadcast_sink_bis_sync_state.conn_handle);
+        }
+        break;
+    default:
+        break;
+    }
+
+    return 0;
+}
+
+static int
+scan_delegator_pick_source_id_to_swap(uint8_t *out_source_id_to_swap)
+{
+    /* TODO: Add some logic here */
+    *out_source_id_to_swap = 0;
+
+    return 0;
+}
+
+static int
+scan_delegator_action_fn(struct ble_audio_scan_delegator_action *action, void 
*arg)
+{
+    switch (action->type) {
+    case BLE_AUDIO_SCAN_DELEGATOR_ACTION_SOURCE_ADD:
+        console_printf("Source Add:\nsource_id=%u\n", 
action->source_add.source_id);
+        if (action->source_add.out_source_id_to_swap == NULL) {
+            return 0;
+        } else {
+            return 
scan_delegator_pick_source_id_to_swap(action->source_add.out_source_id_to_swap);
+        }
+    case BLE_AUDIO_SCAN_DELEGATOR_ACTION_SOURCE_MODIFY:
+        console_printf("Source Modify:\nsource_id=%u\n", 
action->source_modify.source_id);
+        break;
+    case BLE_AUDIO_SCAN_DELEGATOR_ACTION_SOURCE_REMOVE:
+        console_printf("Source Remove:\nsource_id=%u\n", 
action->source_remove.source_id);
+        break;
+    default:
+        assert(false);
+        return BLE_HS_ENOTSUP;
+    }
+
+    return 0;
+}
+
+static int
+scan_delegator_audio_event_handler(struct ble_audio_event *event, void *arg)
+{
+    switch (event->type) {
+    case BLE_AUDIO_EVENT_BROADCAST_ANNOUNCEMENT:
+        console_printf("\n");

Review Comment:
   Leftover - removed.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to