sjanc commented on code in PR #1813:
URL: https://github.com/apache/mynewt-nimble/pull/1813#discussion_r1740609336
##########
apps/bttester/src/btp/bttester.h:
##########
@@ -142,12 +142,16 @@ gatt_svr_register_cb(struct ble_gatt_register_ctxt *ctxt,
void *arg);
int
gatt_svr_init(void);
-#if MYNEWT_VAL(BLE_ISO_BROADCAST_SOURCE)
+#if MYNEWT_VAL(BLE_AUDIO)
uint8_t
tester_init_bap(void);
uint8_t
tester_unregister_bap(void);
-#endif /* MYNEWT_VAL(BLE_ISO_BROADCAST_SOURCE) */
+uint8_t
+tester_init_bass(void);
+uint8_t
+tester_unregister_bass(void);
+#endif /* MYNEWT_VAL(BLE_AUDIO) */
-#endif /* __BTTESTER_H__ */
+#endif /* __BTTESTER_H */
Review Comment:
thi is closing __BTTESTER_H__
##########
apps/bttester/src/btp_bap.c:
##########
@@ -319,6 +329,74 @@ broadcast_source_start(const void *cmd, uint16_t cmd_len,
void *rsp,
return BTP_STATUS_SUCCESS;
}
+static uint8_t
+broadcast_code_set(const void *cmd, uint16_t cmd_len, void *rsp,
+ uint16_t *rsp_len)
+{
+ int i;
+ const struct btp_bap_set_broadcast_code_cmd *cp = cmd;
+
+ sinks[sink_num].addr = cp->addr;
Review Comment:
we should reject if sink_num is too big, now it will write pass sinks[]
##########
apps/bttester/src/btp_bap.c:
##########
@@ -319,6 +329,74 @@ broadcast_source_start(const void *cmd, uint16_t cmd_len,
void *rsp,
return BTP_STATUS_SUCCESS;
}
+static uint8_t
+broadcast_code_set(const void *cmd, uint16_t cmd_len, void *rsp,
+ uint16_t *rsp_len)
+{
+ int i;
+ const struct btp_bap_set_broadcast_code_cmd *cp = cmd;
+
+ sinks[sink_num].addr = cp->addr;
+ sinks[sink_num].bd_addr_type = cp->bd_addr_type;
+ sinks[sink_num].source_id = cp->source_id;
+
+ for (i = 0; i < BLE_AUDIO_BROADCAST_CODE_SIZE; i++) {
+ sinks[sink_num].broadcast_code[i] = cp->broadcast_code[i];
+ }
+
+ sink_num++;
+
+ return BTP_STATUS_SUCCESS;
+}
+
+static uint8_t
+broadcast_sink_setup(const void *cmd, uint16_t cmd_len, void *rsp,
+ uint16_t *rsp_len)
+{
+ int rc, i;
+ struct ble_audio_broadcast_sink_add_params params = {0};
+
+ for (i = 0; i < sink_num; i++) {
+ memcpy(params.broadcast_code, sinks[i].broadcast_code,
+ BLE_AUDIO_BROADCAST_CODE_SIZE);
+ params.broadcast_code_is_valid = true;
+ rc = ble_audio_broadcast_sink_start(sinks[i].source_id, ¶ms);
+ if (rc) {
+ return BTP_STATUS_FAILED;
+ }
+ }
+
+ return BTP_STATUS_SUCCESS;
+}
+
+static int
+scan_delegator_receive_state_foreach_fn(struct
ble_audio_scan_delegator_receive_state_entry *entry,
+ void *addr)
+{
+ if (ble_addr_cmp(addr, &entry->source_desc.addr)) {
+ ble_audio_broadcast_sink_stop(entry->source_id);
+ }
+
+ return 0;
+}
+
+static uint8_t
+broadcast_sink_stop(const void *cmd, uint16_t cmd_len, void *rsp,
+ uint16_t *rsp_len)
+{
+ ble_addr_t addr;
+ const struct btp_bap_broadcast_sink_stop_cmd *cp = cmd;
+ uint8_t broadcast_to_stop[BLE_AUDIO_BROADCAST_CODE_SIZE];
Review Comment:
this seems to be unused...
##########
apps/bttester/src/btp_bap.c:
##########
@@ -371,8 +449,169 @@ 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 = 0,
+ .func = broadcast_sink_setup,
+ },
+ {
+ .opcode = BTP_BAP_BROADCAST_SINK_STOP,
+ .index = BTP_INDEX,
+ .expect_len = sizeof(struct btp_bap_broadcast_sink_stop_cmd),
+ .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);
Review Comment:
console_printf doesn add any additional context like function name, you
should probably make those less generic (or include __func__ maybe?)
same for other messages, include function name or make them less generic
##########
apps/bttester/src/btp_bap.c:
##########
@@ -319,6 +329,74 @@ broadcast_source_start(const void *cmd, uint16_t cmd_len,
void *rsp,
return BTP_STATUS_SUCCESS;
}
+static uint8_t
+broadcast_code_set(const void *cmd, uint16_t cmd_len, void *rsp,
+ uint16_t *rsp_len)
+{
+ int i;
+ const struct btp_bap_set_broadcast_code_cmd *cp = cmd;
+
+ sinks[sink_num].addr = cp->addr;
+ sinks[sink_num].bd_addr_type = cp->bd_addr_type;
+ sinks[sink_num].source_id = cp->source_id;
+
+ for (i = 0; i < BLE_AUDIO_BROADCAST_CODE_SIZE; i++) {
Review Comment:
just memcpy this
##########
apps/bttester/src/btp_bap.c:
##########
@@ -19,29 +19,39 @@
/* btp_bap.c - Bluetooth Basic Audio Profile Tester */
+#include "btp/bttester.h"
#include "syscfg/syscfg.h"
+#include <string.h>
+
#if MYNEWT_VAL(BLE_ISO_BROADCAST_SOURCE)
#include "btp/btp_bap.h"
-
#include "btp/btp.h"
#include "console/console.h"
-#include "nimble/ble.h"
#include "host/ble_hs.h"
#include "host/util/util.h"
#include "math.h"
#include "audio/ble_audio_broadcast_source.h"
+#include "audio/ble_audio_broadcast_sink.h"
#include "audio/ble_audio.h"
#include "host/ble_iso.h"
#define BROADCAST_ADV_INSTANCE 1
static struct ble_audio_big_subgroup big_subgroup;
+static struct broadcast_sink {
+ uint8_t bd_addr_type;
Review Comment:
ble_addr_t already has type in it...
--
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]