Bluetooth: ISO: Add broadcast support

This adds broadcast support for BTPROTO_ISO by extending the
sockaddr_iso with a new struct sockaddr_iso_bc where the socket user
can set the broadcast address when receiving, the SID and the BIS
indexes it wants to synchronize.

When using BTPROTO_ISO for broadcast the roles are:

Broadcaster -> uses connect with address set to BDADDR_ANY:
> tools/isotest -s 00:00:00:00:00:00

Broadcast Receiver -> uses listen with address set to broadcaster:
> tools/isotest -d 00:AA:01:00:00:00
Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
parent eca0ae4a
...@@ -220,6 +220,8 @@ struct bt_codecs { ...@@ -220,6 +220,8 @@ struct bt_codecs {
#define BT_CODEC_TRANSPARENT 0x03 #define BT_CODEC_TRANSPARENT 0x03
#define BT_CODEC_MSBC 0x05 #define BT_CODEC_MSBC 0x05
#define BT_ISO_BASE 20
__printf(1, 2) __printf(1, 2)
void bt_info(const char *fmt, ...); void bt_info(const char *fmt, ...);
__printf(1, 2) __printf(1, 2)
......
...@@ -10,12 +10,23 @@ ...@@ -10,12 +10,23 @@
/* ISO defaults */ /* ISO defaults */
#define ISO_DEFAULT_MTU 251 #define ISO_DEFAULT_MTU 251
#define ISO_MAX_NUM_BIS 0x1f
/* ISO socket broadcast address */
struct sockaddr_iso_bc {
bdaddr_t bc_bdaddr;
__u8 bc_bdaddr_type;
__u8 bc_sid;
__u8 bc_num_bis;
__u8 bc_bis[ISO_MAX_NUM_BIS];
};
/* ISO socket address */ /* ISO socket address */
struct sockaddr_iso { struct sockaddr_iso {
sa_family_t iso_family; sa_family_t iso_family;
bdaddr_t iso_bdaddr; bdaddr_t iso_bdaddr;
__u8 iso_bdaddr_type; __u8 iso_bdaddr_type;
struct sockaddr_iso_bc iso_bc[];
}; };
#endif /* __ISO_H */ #endif /* __ISO_H */
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment