This adds APIs to convert iso_qos to bap_qos and reversed. --- src/shared/bap.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ src/shared/bap.h | 5 +++++ 2 files changed, 56 insertions(+) diff --git a/src/shared/bap.c b/src/shared/bap.c index ce579e171..1cf0fcfb9 100644 --- a/src/shared/bap.c +++ b/src/shared/bap.c @@ -7505,3 +7505,54 @@ bool bt_bap_bcode_cb_unregister(struct bt_bap *bap, unsigned int id) return false; } + +void bt_bap_iso_qos_to_bap_qos(struct bt_iso_qos *iso_qos, + struct bt_bap_qos *bap_qos) +{ + bap_qos->bcast.big = iso_qos->bcast.big; + bap_qos->bcast.bis = iso_qos->bcast.bis; + bap_qos->bcast.sync_factor = iso_qos->bcast.sync_factor; + bap_qos->bcast.packing = iso_qos->bcast.packing; + bap_qos->bcast.framing = iso_qos->bcast.framing; + bap_qos->bcast.encryption = iso_qos->bcast.encryption; + if (bap_qos->bcast.encryption) + bap_qos->bcast.bcode = util_iov_new(iso_qos->bcast.bcode, + sizeof(iso_qos->bcast.bcode)); + bap_qos->bcast.options = iso_qos->bcast.options; + bap_qos->bcast.skip = iso_qos->bcast.skip; + bap_qos->bcast.sync_timeout = iso_qos->bcast.sync_timeout; + bap_qos->bcast.sync_cte_type = + iso_qos->bcast.sync_cte_type; + bap_qos->bcast.mse = iso_qos->bcast.mse; + bap_qos->bcast.timeout = iso_qos->bcast.timeout; + bap_qos->bcast.io_qos.interval = + iso_qos->bcast.in.interval; + bap_qos->bcast.io_qos.latency = iso_qos->bcast.in.latency; + bap_qos->bcast.io_qos.phy = iso_qos->bcast.in.phy; + bap_qos->bcast.io_qos.rtn = iso_qos->bcast.in.rtn; + bap_qos->bcast.io_qos.sdu = iso_qos->bcast.in.sdu; +} + +void bt_bap_qos_to_iso_qos(struct bt_bap_qos *bap_qos, + struct bt_iso_qos *iso_qos) +{ + memset(iso_qos, 0, sizeof(*iso_qos)); + + iso_qos->bcast.big = bap_qos->bcast.big; + iso_qos->bcast.bis = bap_qos->bcast.bis; + iso_qos->bcast.sync_factor = bap_qos->bcast.sync_factor; + iso_qos->bcast.packing = bap_qos->bcast.packing; + iso_qos->bcast.framing = bap_qos->bcast.framing; + iso_qos->bcast.encryption = bap_qos->bcast.encryption; + if (bap_qos->bcast.bcode && bap_qos->bcast.bcode->iov_base) + memcpy(iso_qos->bcast.bcode, bap_qos->bcast.bcode->iov_base, + bap_qos->bcast.bcode->iov_len); + iso_qos->bcast.options = bap_qos->bcast.options; + iso_qos->bcast.skip = bap_qos->bcast.skip; + iso_qos->bcast.sync_timeout = bap_qos->bcast.sync_timeout; + iso_qos->bcast.sync_cte_type = bap_qos->bcast.sync_cte_type; + iso_qos->bcast.mse = bap_qos->bcast.mse; + iso_qos->bcast.timeout = bap_qos->bcast.timeout; + memcpy(&iso_qos->bcast.out, &bap_qos->bcast.io_qos, + sizeof(struct bt_iso_io_qos)); +} diff --git a/src/shared/bap.h b/src/shared/bap.h index 248871b12..dfd169980 100644 --- a/src/shared/bap.h +++ b/src/shared/bap.h @@ -300,3 +300,8 @@ unsigned int bt_bap_bcode_cb_register(struct bt_bap *bap, bool bt_bap_bcode_cb_unregister(struct bt_bap *bap, unsigned int id); struct bt_bap *bt_bap_get_session(struct bt_att *att, struct gatt_db *db); + +void bt_bap_iso_qos_to_bap_qos(struct bt_iso_qos *iso_qos, + struct bt_bap_qos *bap_qos); +void bt_bap_qos_to_iso_qos(struct bt_bap_qos *bap_qos, + struct bt_iso_qos *iso_qos); -- 2.43.0