* [PATCH 0/3] Fix missing HFP WBS callback
@ 2015-08-27 12:01 Will Wang
2015-08-27 12:02 ` [PATCH 1/3] android/hal-ipc-api: " Will Wang
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Will Wang @ 2015-08-27 12:01 UTC (permalink / raw)
To: marcel, gustavo, johan.hedberg; +Cc: linux-bluetooth, Will Wang
Hi,
This set of patches:
- adds HFP Wideband speech(WBS) callback function for Android.
- adds a new opcode 0x91 for WBS Command notification.
The patches has been tested on Nexus 5 with Android 5.0.1 Lollipop,
and passed the PTS test "TC_AG_ACC_BI_12_I", the Android framework
outputs log such as:
08-20 18:29:39.932 E/BluetoothHeadsetServiceJni( 1442): mozzz: wbs_callback
...
08-20 18:29:39.933 D/HeadsetStateMachine( 1442): EVENT_TYPE_WBS codec is 1
08-20 18:29:39.935 D/HeadsetStateMachine( 1442): AudioManager.setParameters bt_wbs=off for PTS-HFP-MOZILLA-TPE-PC - 00:1B:DC:07:2F:9A
08-20 18:29:39.936 D/audio_hw_primary( 215): adev_set_parameters: enter: bt_wbs=off
Thanks Szymon Janc(:sjanc)'s speedy reply of the patch process questions
on IRC, and Shawn Huang(:shawnjohnjr)'s technical support.
Will Wang (3):
android/hal-ipc-api: Fix missing HFP WBS callback
android/hal-handsfree: Fix missing HFP WBS callback
android/handsfree: Fix missing HFP WBS callback
android/hal-handsfree.c | 12 ++++++++++++
android/hal-ipc-api.txt | 8 ++++++++
android/hal-msg.h | 6 ++++++
android/handsfree.c | 8 ++++++++
4 files changed, 34 insertions(+)
--
1.9.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] android/hal-ipc-api: Fix missing HFP WBS callback
2015-08-27 12:01 [PATCH 0/3] Fix missing HFP WBS callback Will Wang
@ 2015-08-27 12:02 ` Will Wang
2015-08-27 19:39 ` Szymon Janc
2015-08-27 12:02 ` [PATCH 2/3] android/hal-handsfree: " Will Wang
2015-08-27 12:02 ` [PATCH 3/3] android/handsfree: " Will Wang
2 siblings, 1 reply; 6+ messages in thread
From: Will Wang @ 2015-08-27 12:02 UTC (permalink / raw)
To: marcel, gustavo, johan.hedberg; +Cc: linux-bluetooth, Will Wang
Add definition of HFP WBS Command notification
---
android/hal-ipc-api.txt | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/android/hal-ipc-api.txt b/android/hal-ipc-api.txt
index 503b47a..e3b7798 100644
--- a/android/hal-ipc-api.txt
+++ b/android/hal-ipc-api.txt
@@ -1068,6 +1068,14 @@ Notifications:
Notification parameters: Remote address (6 octets)
+ Opcode 0x91 - WBS Command notification
+
+ Notification parameters: WBS types (1 octet)
+ Remote address (6 octets)
+
+ Valid WBS types: 0x00 = None
+ 0x01 = No
+ 0x02 = Yes
Bluetooth Advanced Audio HAL (ID 6)
Bluetooth Advanced Audio Sink HAL (ID 13)
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] android/hal-handsfree: Fix missing HFP WBS callback
2015-08-27 12:01 [PATCH 0/3] Fix missing HFP WBS callback Will Wang
2015-08-27 12:02 ` [PATCH 1/3] android/hal-ipc-api: " Will Wang
@ 2015-08-27 12:02 ` Will Wang
2015-08-27 19:47 ` Szymon Janc
2015-08-27 12:02 ` [PATCH 3/3] android/handsfree: " Will Wang
2 siblings, 1 reply; 6+ messages in thread
From: Will Wang @ 2015-08-27 12:02 UTC (permalink / raw)
To: marcel, gustavo, johan.hedberg; +Cc: linux-bluetooth, Will Wang
---
android/hal-handsfree.c | 12 ++++++++++++
android/hal-msg.h | 6 ++++++
2 files changed, 18 insertions(+)
diff --git a/android/hal-handsfree.c b/android/hal-handsfree.c
index 279b26a..9ab04c5 100644
--- a/android/hal-handsfree.c
+++ b/android/hal-handsfree.c
@@ -153,6 +153,16 @@ static void handle_nrec(void *buf, uint16_t len, int fd)
#endif
}
+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+static void handle_wbs(void *buf, uint16_t len, int fd)
+{
+ struct hal_ev_handsfree_wbs *ev = buf;
+
+ if (cbs->wbs_cb)
+ cbs->wbs_cb(ev->wbs, (bt_bdaddr_t *) (ev->bdaddr));
+}
+#endif
+
static void handle_chld(void *buf, uint16_t len, int fd)
{
struct hal_ev_handsfree_chld *ev = buf;
@@ -289,6 +299,8 @@ static const struct hal_ipc_handler ev_handlers[] = {
/* HAL_EV_HANDSFREE_HSP_KEY_PRESS */
{ handle_hsp_key_press, false,
sizeof(struct hal_ev_handsfree_hsp_key_press) },
+ /* HAL_EV_HANDSFREE_WBS */
+ { handle_wbs, false, sizeof(struct hal_ev_handsfree_wbs) },
};
static uint8_t get_mode(void)
diff --git a/android/hal-msg.h b/android/hal-msg.h
index 698f45a..ea79fa7 100644
--- a/android/hal-msg.h
+++ b/android/hal-msg.h
@@ -1638,6 +1638,12 @@ struct hal_ev_handsfree_hsp_key_press {
uint8_t bdaddr[6];
} __attribute__((packed));
+#define HAL_EV_HANDSFREE_WBS 0x91
+struct hal_ev_handsfree_wbs {
+ uint8_t wbs;
+ uint8_t bdaddr[6];
+} __attribute__((packed));
+
#define HAL_AVRCP_FEATURE_NONE 0x00
#define HAL_AVRCP_FEATURE_METADATA 0x01
#define HAL_AVRCP_FEATURE_ABSOLUTE_VOLUME 0x02
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] android/handsfree: Fix missing HFP WBS callback
2015-08-27 12:01 [PATCH 0/3] Fix missing HFP WBS callback Will Wang
2015-08-27 12:02 ` [PATCH 1/3] android/hal-ipc-api: " Will Wang
2015-08-27 12:02 ` [PATCH 2/3] android/hal-handsfree: " Will Wang
@ 2015-08-27 12:02 ` Will Wang
2 siblings, 0 replies; 6+ messages in thread
From: Will Wang @ 2015-08-27 12:02 UTC (permalink / raw)
To: marcel, gustavo, johan.hedberg; +Cc: linux-bluetooth, Will Wang
---
android/handsfree.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/android/handsfree.c b/android/handsfree.c
index f297926..919728e 100644
--- a/android/handsfree.c
+++ b/android/handsfree.c
@@ -1067,6 +1067,7 @@ static void at_cmd_bcs(struct hfp_context *result, enum hfp_gw_cmd_type type,
void *user_data)
{
struct hf_device *dev = user_data;
+ struct hal_ev_handsfree_wbs ev;
unsigned int val;
DBG("");
@@ -1085,6 +1086,13 @@ static void at_cmd_bcs(struct hfp_context *result, enum hfp_gw_cmd_type type,
break;
}
+ ev.wbs = val;
+ bdaddr2android(&dev->bdaddr, ev.bdaddr);
+
+ ipc_send_notif(hal_ipc, HAL_SERVICE_ID_HANDSFREE,
+ HAL_EV_HANDSFREE_WBS, sizeof(ev), &ev);
+
+
dev->proposed_codec = 0;
dev->negotiated_codec = val;
--
1.9.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] android/hal-ipc-api: Fix missing HFP WBS callback
2015-08-27 12:02 ` [PATCH 1/3] android/hal-ipc-api: " Will Wang
@ 2015-08-27 19:39 ` Szymon Janc
0 siblings, 0 replies; 6+ messages in thread
From: Szymon Janc @ 2015-08-27 19:39 UTC (permalink / raw)
To: Will Wang; +Cc: marcel, gustavo, johan.hedberg, linux-bluetooth
Hi Will,
On Thursday 27 August 2015 20:02:00 Will Wang wrote:
> Add definition of HFP WBS Command notification
> ---
> android/hal-ipc-api.txt | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/android/hal-ipc-api.txt b/android/hal-ipc-api.txt
> index 503b47a..e3b7798 100644
> --- a/android/hal-ipc-api.txt
> +++ b/android/hal-ipc-api.txt
> @@ -1068,6 +1068,14 @@ Notifications:
>
> Notification parameters: Remote address (6 octets)
>
> + Opcode 0x91 - WBS Command notification
> +
> + Notification parameters: WBS types (1 octet)
> + Remote address (6 octets)
> +
> + Valid WBS types: 0x00 = None
> + 0x01 = No
> + 0x02 = Yes
>
> Bluetooth Advanced Audio HAL (ID 6)
> Bluetooth Advanced Audio Sink HAL (ID 13)
This patch is now applied, thanks.
--
Szymon K. Janc
szymon.janc@gmail.com
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] android/hal-handsfree: Fix missing HFP WBS callback
2015-08-27 12:02 ` [PATCH 2/3] android/hal-handsfree: " Will Wang
@ 2015-08-27 19:47 ` Szymon Janc
0 siblings, 0 replies; 6+ messages in thread
From: Szymon Janc @ 2015-08-27 19:47 UTC (permalink / raw)
To: Will Wang; +Cc: marcel, gustavo, johan.hedberg, linux-bluetooth
Hi Will,
On Thursday 27 August 2015 20:02:01 Will Wang wrote:
> ---
> android/hal-handsfree.c | 12 ++++++++++++
> android/hal-msg.h | 6 ++++++
> 2 files changed, 18 insertions(+)
>
> diff --git a/android/hal-handsfree.c b/android/hal-handsfree.c
> index 279b26a..9ab04c5 100644
> --- a/android/hal-handsfree.c
> +++ b/android/hal-handsfree.c
> @@ -153,6 +153,16 @@ static void handle_nrec(void *buf, uint16_t len, int
> fd) #endif
> }
>
> +#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
> +static void handle_wbs(void *buf, uint16_t len, int fd)
> +{
> + struct hal_ev_handsfree_wbs *ev = buf;
> +
> + if (cbs->wbs_cb)
> + cbs->wbs_cb(ev->wbs, (bt_bdaddr_t *) (ev->bdaddr));
> +}
> +#endif
> +
This will not compile on Android KitKat (we still support it). Since daemon is
version independent we need to have empty handler on hal. So #ifdefs should be
inside function like:
static void handle_wbs(void *buf, uint16_t len, int fd)
{
#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
...
#endif
}
> static void handle_chld(void *buf, uint16_t len, int fd)
> {
> struct hal_ev_handsfree_chld *ev = buf;
> @@ -289,6 +299,8 @@ static const struct hal_ipc_handler ev_handlers[] = {
> /* HAL_EV_HANDSFREE_HSP_KEY_PRESS */
> { handle_hsp_key_press, false,
> sizeof(struct hal_ev_handsfree_hsp_key_press) },
> + /* HAL_EV_HANDSFREE_WBS */
> + { handle_wbs, false, sizeof(struct hal_ev_handsfree_wbs) },
> };
>
> static uint8_t get_mode(void)
> diff --git a/android/hal-msg.h b/android/hal-msg.h
> index 698f45a..ea79fa7 100644
> --- a/android/hal-msg.h
> +++ b/android/hal-msg.h
> @@ -1638,6 +1638,12 @@ struct hal_ev_handsfree_hsp_key_press {
> uint8_t bdaddr[6];
> } __attribute__((packed));
>
> +#define HAL_EV_HANDSFREE_WBS 0x91
> +struct hal_ev_handsfree_wbs {
> + uint8_t wbs;
> + uint8_t bdaddr[6];
> +} __attribute__((packed));
> +
> #define HAL_AVRCP_FEATURE_NONE 0x00
> #define HAL_AVRCP_FEATURE_METADATA 0x01
> #define HAL_AVRCP_FEATURE_ABSOLUTE_VOLUME 0x02
--
Szymon K. Janc
szymon.janc@gmail.com
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-08-27 19:47 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-27 12:01 [PATCH 0/3] Fix missing HFP WBS callback Will Wang
2015-08-27 12:02 ` [PATCH 1/3] android/hal-ipc-api: " Will Wang
2015-08-27 19:39 ` Szymon Janc
2015-08-27 12:02 ` [PATCH 2/3] android/hal-handsfree: " Will Wang
2015-08-27 19:47 ` Szymon Janc
2015-08-27 12:02 ` [PATCH 3/3] android/handsfree: " Will Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).