Message ID | 20200413162513.2221-4-pali@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | bluez: Export SDP "Remote audio volume control" item for HSP profile | expand |
Hi Pali, On Mon, Apr 13, 2020 at 9:25 AM Pali Rohár <pali@kernel.org> wrote: > > This would allow DBus agents to implement HS role of HSP profile. > We don't use Signed-off-by on userspace, other than that and the introduction of have_features Im fine with the patches. > Signed-off-by: Pali Rohár <pali@kernel.org> > --- > src/profile.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 64 insertions(+) > > diff --git a/src/profile.c b/src/profile.c > index 3b7e08f26..09627fbbd 100644 > --- a/src/profile.c > +++ b/src/profile.c > @@ -56,6 +56,7 @@ > > #define DUN_DEFAULT_CHANNEL 1 > #define SPP_DEFAULT_CHANNEL 3 > +#define HSP_HS_DEFAULT_CHANNEL 6 > #define HFP_HF_DEFAULT_CHANNEL 7 > #define OPP_DEFAULT_CHANNEL 9 > #define FTP_DEFAULT_CHANNEL 10 > @@ -155,6 +156,49 @@ > </attribute> \ > </record>" > > +/* SDP record for Headset role of HSP 1.2 profile with Erratum 3507 */ > +#define HSP_HS_RECORD \ > + "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \ > + <record> \ > + <attribute id=\"0x0001\"> \ > + <sequence> \ > + <uuid value=\"0x1108\" /> \ > + <uuid value=\"0x1131\" /> \ > + <uuid value=\"0x1203\" /> \ > + </sequence> \ > + </attribute> \ > + <attribute id=\"0x0004\"> \ > + <sequence> \ > + <sequence> \ > + <uuid value=\"0x0100\" /> \ > + </sequence> \ > + <sequence> \ > + <uuid value=\"0x0003\" /> \ > + <uint8 value=\"0x%02x\" /> \ > + </sequence> \ > + </sequence> \ > + </attribute> \ > + <attribute id=\"0x0005\"> \ > + <sequence> \ > + <uuid value=\"0x1002\" /> \ > + </sequence> \ > + </attribute> \ > + <attribute id=\"0x0009\"> \ > + <sequence> \ > + <sequence> \ > + <uuid value=\"0x1108\" /> \ > + <uint16 value=\"0x%04x\" /> \ > + </sequence> \ > + </sequence> \ > + </attribute> \ > + <attribute id=\"0x0100\"> \ > + <text value=\"%s\" /> \ > + </attribute> \ > + <attribute id=\"0x0302\"> \ > + <boolean value=\"%s\" /> \ > + </attribute> \ > + </record>" > + > #define HSP_AG_RECORD \ > "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \ > <record> \ > @@ -1789,6 +1833,16 @@ static char *get_hfp_ag_record(struct ext_profile *ext, struct ext_io *l2cap, > ext->have_features ? ext->features : 0x9); > } > > +static char *get_hsp_hs_record(struct ext_profile *ext, struct ext_io *l2cap, > + struct ext_io *rfcomm) > +{ > + /* HSP 1.2: By default Remote Audio Volume Control is off */ > + return g_strdup_printf(HSP_HS_RECORD, rfcomm->chan, ext->version, > + ext->name, > + (ext->have_features && (ext->features & 0x1)) > + ? "true" : "false"); > +} > + > static char *get_hsp_ag_record(struct ext_profile *ext, struct ext_io *l2cap, > struct ext_io *rfcomm) > { > @@ -2012,6 +2066,16 @@ static struct default_settings { > .auto_connect = true, > .get_record = get_hfp_ag_record, > .version = 0x0107, > + }, { > + .uuid = HSP_HS_UUID, > + .name = "Headset unit", > + .priority = BTD_PROFILE_PRIORITY_HIGH, > + .remote_uuid = HSP_AG_UUID, > + .channel = HSP_HS_DEFAULT_CHANNEL, > + .authorize = true, > + .auto_connect = true, > + .get_record = get_hsp_hs_record, > + .version = 0x0102, > }, { > .uuid = HSP_AG_UUID, > .name = "Headset Voice gateway", > -- > 2.20.1 >
diff --git a/src/profile.c b/src/profile.c index 3b7e08f26..09627fbbd 100644 --- a/src/profile.c +++ b/src/profile.c @@ -56,6 +56,7 @@ #define DUN_DEFAULT_CHANNEL 1 #define SPP_DEFAULT_CHANNEL 3 +#define HSP_HS_DEFAULT_CHANNEL 6 #define HFP_HF_DEFAULT_CHANNEL 7 #define OPP_DEFAULT_CHANNEL 9 #define FTP_DEFAULT_CHANNEL 10 @@ -155,6 +156,49 @@ </attribute> \ </record>" +/* SDP record for Headset role of HSP 1.2 profile with Erratum 3507 */ +#define HSP_HS_RECORD \ + "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \ + <record> \ + <attribute id=\"0x0001\"> \ + <sequence> \ + <uuid value=\"0x1108\" /> \ + <uuid value=\"0x1131\" /> \ + <uuid value=\"0x1203\" /> \ + </sequence> \ + </attribute> \ + <attribute id=\"0x0004\"> \ + <sequence> \ + <sequence> \ + <uuid value=\"0x0100\" /> \ + </sequence> \ + <sequence> \ + <uuid value=\"0x0003\" /> \ + <uint8 value=\"0x%02x\" /> \ + </sequence> \ + </sequence> \ + </attribute> \ + <attribute id=\"0x0005\"> \ + <sequence> \ + <uuid value=\"0x1002\" /> \ + </sequence> \ + </attribute> \ + <attribute id=\"0x0009\"> \ + <sequence> \ + <sequence> \ + <uuid value=\"0x1108\" /> \ + <uint16 value=\"0x%04x\" /> \ + </sequence> \ + </sequence> \ + </attribute> \ + <attribute id=\"0x0100\"> \ + <text value=\"%s\" /> \ + </attribute> \ + <attribute id=\"0x0302\"> \ + <boolean value=\"%s\" /> \ + </attribute> \ + </record>" + #define HSP_AG_RECORD \ "<?xml version=\"1.0\" encoding=\"UTF-8\" ?> \ <record> \ @@ -1789,6 +1833,16 @@ static char *get_hfp_ag_record(struct ext_profile *ext, struct ext_io *l2cap, ext->have_features ? ext->features : 0x9); } +static char *get_hsp_hs_record(struct ext_profile *ext, struct ext_io *l2cap, + struct ext_io *rfcomm) +{ + /* HSP 1.2: By default Remote Audio Volume Control is off */ + return g_strdup_printf(HSP_HS_RECORD, rfcomm->chan, ext->version, + ext->name, + (ext->have_features && (ext->features & 0x1)) + ? "true" : "false"); +} + static char *get_hsp_ag_record(struct ext_profile *ext, struct ext_io *l2cap, struct ext_io *rfcomm) { @@ -2012,6 +2066,16 @@ static struct default_settings { .auto_connect = true, .get_record = get_hfp_ag_record, .version = 0x0107, + }, { + .uuid = HSP_HS_UUID, + .name = "Headset unit", + .priority = BTD_PROFILE_PRIORITY_HIGH, + .remote_uuid = HSP_AG_UUID, + .channel = HSP_HS_DEFAULT_CHANNEL, + .authorize = true, + .auto_connect = true, + .get_record = get_hsp_hs_record, + .version = 0x0102, }, { .uuid = HSP_AG_UUID, .name = "Headset Voice gateway",
This would allow DBus agents to implement HS role of HSP profile. Signed-off-by: Pali Rohár <pali@kernel.org> --- src/profile.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+)