Skip to content

Commit

Permalink
Bluetooth: ISO: Add broadcast support
Browse files Browse the repository at this point in the history
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: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  • Loading branch information
Vudentz committed Jul 23, 2022
1 parent eca0ae4 commit f764a6c
Show file tree
Hide file tree
Showing 3 changed files with 370 additions and 34 deletions.
2 changes: 2 additions & 0 deletions include/net/bluetooth/bluetooth.h
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,8 @@ struct bt_codecs {
#define BT_CODEC_TRANSPARENT 0x03
#define BT_CODEC_MSBC 0x05

#define BT_ISO_BASE 20

__printf(1, 2)
void bt_info(const char *fmt, ...);
__printf(1, 2)
Expand Down
11 changes: 11 additions & 0 deletions include/net/bluetooth/iso.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,23 @@

/* ISO defaults */
#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 */
struct sockaddr_iso {
sa_family_t iso_family;
bdaddr_t iso_bdaddr;
__u8 iso_bdaddr_type;
struct sockaddr_iso_bc iso_bc[];
};

#endif /* __ISO_H */
Loading

0 comments on commit f764a6c

Please sign in to comment.