@@ -812,55 +812,99 @@ int bt_cap_initiator_broadcast_audio_delete(struct bt_cap_broadcast_source *broa
812
812
int bt_cap_initiator_broadcast_get_base (struct bt_cap_broadcast_source * broadcast_source ,
813
813
struct net_buf_simple * base_buf );
814
814
815
- /** Parameters for bt_cap_initiator_unicast_to_broadcast() */
816
- struct bt_cap_unicast_to_broadcast_param {
815
+ /** Parameters for bt_cap_handover_unicast_to_broadcast() */
816
+ struct bt_cap_handover_unicast_to_broadcast_param {
817
+ /** The type of the set. */
818
+ enum bt_cap_set_type type ;
819
+
817
820
/** The source unicast group with the streams. */
818
- struct bt_bap_unicast_group * unicast_group ;
821
+ struct bt_cap_unicast_group * unicast_group ;
819
822
820
823
/**
821
- * @brief Whether or not to encrypt the streams.
824
+ * @brief The advertising set to use for the broadcast source
822
825
*
823
- * If set to true, then the broadcast code in @p broadcast_code
824
- * will be used to encrypt the streams.
826
+ * This shall remain valid until the procedure has completed.
827
+ * If the advertising set is not started at the time of calling
828
+ * bt_cap_handover_unicast_to_broadcast(),
829
+ * the procedure will start the advertising set with @ref BT_LE_EXT_ADV_START_DEFAULT.
825
830
*/
826
- bool encrypt ;
831
+ struct bt_le_ext_adv * ext_adv ;
832
+
833
+ /** The SID of the advertising set. */
834
+ uint8_t sid ;
835
+
836
+ /** The periodic advertising interval configured for the advertising set. */
837
+ uint16_t pa_interval ;
838
+
839
+ /** The broadcast ID the advertising set is, or will be, using. */
840
+ uint32_t broadcast_id ;
827
841
828
842
/**
829
- * @brief 16-octet broadcast code.
830
- *
831
- * Only valid if @p encrypt is true.
843
+ * @brief Broadcast source parameters.
832
844
*
833
- * If the value is a string or a the value is less than 16 octets,
834
- * the remaining octets shall be 0.
845
+ * These parameters shall remain valid until the procedure has completed.
846
+ */
847
+ struct bt_cap_initiator_broadcast_create_param * broadcast_create_param ;
848
+ };
849
+
850
+ /** Callback structure for CAP procedures */
851
+ struct bt_cap_handover_cb {
852
+ /**
853
+ * @brief The unicast to broadcast handover procedure has finished
835
854
*
836
- * Example:
837
- * The string "Broadcast Code" shall be
838
- * [42 72 6F 61 64 63 61 73 74 20 43 6F 64 65 00 00]
855
+ * @param err 0 if success else a negative errno value.
856
+ * @param conn Pointer to the connection where the error occurred or NULL if local failure.
857
+ * @param unicast_group NULL if the unicast group was deleted during the procedure, else
858
+ * pointer to the unicast group provided in the parameters.
859
+ * @param broadcast_source Pointer to newly created broadcast source, or NULL in case of an
860
+ * error happening before it was created.
839
861
*/
840
- uint8_t broadcast_code [BT_ISO_BROADCAST_CODE_SIZE ];
862
+ void (* unicast_to_broadcast_complete )(int err , struct bt_conn * conn ,
863
+ struct bt_cap_unicast_group * unicast_group ,
864
+ struct bt_cap_broadcast_source * broadcast_source );
841
865
};
842
866
843
867
/**
844
- * @brief Hands over the data streams in a unicast group to a broadcast source.
868
+ * @brief Register Common Audio Profile Handover callbacks
845
869
*
846
- * The streams in the unicast group will be stopped and the unicast group
847
- * will be deleted. This can only be done for source streams.
870
+ * @param cb The callback structure. Shall remain static.
848
871
*
849
- * @note @kconfig{CONFIG_BT_CAP_INITIATOR},
850
- * @kconfig{CONFIG_BT_BAP_UNICAST_CLIENT} and
851
- * @kconfig{CONFIG_BT_BAP_BROADCAST_SOURCE} must be enabled for this function
852
- * to be enabled.
872
+ * @return 0 on success or negative error value on failure.
873
+ */
874
+ int bt_cap_handover_register_cb (const struct bt_cap_handover_cb * cb );
875
+
876
+ /**
877
+ * @brief Unregister Common Audio Profile Handover callbacks
853
878
*
854
- * @param param The parameters for the handover.
855
- * @param source The resulting broadcast source.
879
+ * @param cb The callback structure that was previously registered.
880
+ *
881
+ * @retval 0 Success
882
+ * @retval -EINVAL @p cb is NULL or @p cb was not registered
883
+ */
884
+ int bt_cap_handover_unregister_cb (const struct bt_cap_handover_cb * cb );
885
+
886
+ /**
887
+ * @brief Hands over the sink streams in a unicast group to a broadcast source.
888
+ *
889
+ * All streams in the provided unicast group will be stopped and released. The sink streams will be
890
+ * tranferred to a broadcast source, and the broadcast source information will be shared with
891
+ * all accepters that are currently receiving audio. Any stream that is not in the streaming state
892
+ * will only be released.
893
+ *
894
+ * bt_bap_broadcast_assistant_discover() must have been successfully perform for all members in @p
895
+ * param before starting this procedure.
896
+ *
897
+ * @kconfig_dep{CONFIG_BT_CAP_HANDOVER}
898
+ *
899
+ * @param param The parameters for the handover.
856
900
*
857
901
* @return 0 on success or negative error value on failure.
858
902
*/
859
- int bt_cap_initiator_unicast_to_broadcast ( const struct bt_cap_unicast_to_broadcast_param * param ,
860
- struct bt_cap_broadcast_source * * source );
903
+ int bt_cap_handover_unicast_to_broadcast (
904
+ const struct bt_cap_handover_unicast_to_broadcast_param * param );
861
905
862
- /** Parameters for bt_cap_initiator_broadcast_to_unicast () */
863
- struct bt_cap_broadcast_to_unicast_param {
906
+ /** Parameters for bt_cap_handover_broadcast_to_unicast () */
907
+ struct bt_cap_handover_broadcast_to_unicast_param {
864
908
/**
865
909
* @brief The source broadcast source with the streams.
866
910
*
@@ -890,18 +934,16 @@ struct bt_cap_broadcast_to_unicast_param {
890
934
* The streams in the broadcast source will be stopped and the broadcast source
891
935
* will be deleted.
892
936
*
893
- * @note @kconfig{CONFIG_BT_CAP_INITIATOR},
894
- * @kconfig{CONFIG_BT_BAP_UNICAST_CLIENT} and
895
- * @kconfig{CONFIG_BT_BAP_BROADCAST_SOURCE} must be enabled for this function
896
- * to be enabled.
937
+ * @kconfig_dep{CONFIG_BT_CAP_HANDOVER}
897
938
*
898
939
* @param[in] param The parameters for the handover.
899
940
* @param[out] unicast_group The resulting broadcast source.
900
941
*
901
942
* @return 0 on success or negative error value on failure.
902
943
*/
903
- int bt_cap_initiator_broadcast_to_unicast (const struct bt_cap_broadcast_to_unicast_param * param ,
904
- struct bt_bap_unicast_group * * unicast_group );
944
+ int bt_cap_handover_broadcast_to_unicast (
945
+ const struct bt_cap_handover_broadcast_to_unicast_param * param ,
946
+ struct bt_bap_unicast_group * * unicast_group );
905
947
906
948
/** Callback structure for CAP procedures */
907
949
struct bt_cap_commander_cb {
0 commit comments