Skip to content

Commit

Permalink
nimble/audio: Modify BASS control point write access
Browse files Browse the repository at this point in the history
Modify BASS control point write access in a way that
it would use flattened mbuf to pass data to handler.
Previous solution was prone to errors due to chained mbufs.

Fix handler check from simple bool comparison to ensuring
that it's not NULL.

Add opcode variable to hold proper operation id in write access.
This is helpful during debugging operations.
  • Loading branch information
szymon-czapracki authored and rymanluk committed Sep 2, 2024
1 parent 6f5b33c commit cda8b20
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions nimble/host/audio/services/bass/src/ble_audio_svc_bass.c
Original file line number Diff line number Diff line change
Expand Up @@ -627,13 +627,16 @@ ble_svc_audio_bass_find_handler(uint8_t opcode)
static int
ble_svc_audio_bass_ctrl_point_write_access(struct ble_gatt_access_ctxt *ctxt, uint16_t conn_handle)
{
uint8_t opcode;
struct os_mbuf *om;
uint16_t mbuf_len = OS_MBUF_PKTLEN(ctxt->om);
struct ble_svc_audio_bass_ctrl_point_handler *handler;

uint8_t opcode = ctxt->om->om_data[0];
opcode = ctxt->om->om_data[0];

handler = ble_svc_audio_bass_find_handler(opcode);

if (!handler) {
if (handler == NULL) {
return BLE_SVC_AUDIO_BASS_ERR_OPCODE_NOT_SUPPORTED;
}

Expand All @@ -643,7 +646,12 @@ ble_svc_audio_bass_ctrl_point_write_access(struct ble_gatt_access_ctxt *ctxt, ui
return BLE_ATT_ERR_WRITE_REQ_REJECTED;
}

return handler->handler_cb(&ctxt->om->om_data[1], ctxt->om->om_len - 1, conn_handle);
ctxt->om = os_mbuf_pullup(ctxt->om, mbuf_len);
if (!ctxt->om) {
return BLE_ATT_ERR_UNLIKELY;
}

return handler->handler_cb(&om->om_data[1], mbuf_len - 1, conn_handle);
}

static int
Expand Down

0 comments on commit cda8b20

Please sign in to comment.