* [PATCH 1/4] android/hal-ipc-api: Update HidHost with Android 5 API
@ 2014-11-17 14:06 Jakub Tyszkowski
2014-11-17 14:06 ` [PATCH 2/4] android/hal: Update HidHost HAL for Android 5 Jakub Tyszkowski
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Jakub Tyszkowski @ 2014-11-17 14:06 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Jakub Tyszkowski
---
android/hal-ipc-api.txt | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/android/hal-ipc-api.txt b/android/hal-ipc-api.txt
index 67a6205..a5ec44b 100644
--- a/android/hal-ipc-api.txt
+++ b/android/hal-ipc-api.txt
@@ -671,6 +671,13 @@ Notifications:
0x0c = Authentication failed
0x0d = HDL
+ Opcode 0x87 - Handshake notification
+
+ Notification parameters: Remote address (6 octets)
+ Status (1 octet)
+
+ Valid status values: Same as in Virtual Unplug notification
+
Bluetooth PAN HAL (ID 4)
========================
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/4] android/hal: Update HidHost HAL for Android 5
2014-11-17 14:06 [PATCH 1/4] android/hal-ipc-api: Update HidHost with Android 5 API Jakub Tyszkowski
@ 2014-11-17 14:06 ` Jakub Tyszkowski
2014-11-17 14:06 ` [PATCH 3/4] android/hid: Support handshake message Jakub Tyszkowski
2014-11-17 14:06 ` [PATCH 4/4] android/client: Add handshake callback Jakub Tyszkowski
2 siblings, 0 replies; 5+ messages in thread
From: Jakub Tyszkowski @ 2014-11-17 14:06 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Jakub Tyszkowski
---
android/hal-hidhost.c | 11 +++++++++++
android/hal-msg.h | 6 ++++++
2 files changed, 17 insertions(+)
diff --git a/android/hal-hidhost.c b/android/hal-hidhost.c
index 58b0218..3cfc6b6 100644
--- a/android/hal-hidhost.c
+++ b/android/hal-hidhost.c
@@ -102,6 +102,16 @@ static void handle_virtual_unplug(void *buf, uint16_t len, int fd)
ev->status);
}
+static void handle_handshake(void *buf, uint16_t len, int fd)
+{
+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+ struct hal_ev_hidhost_handshake *ev = buf;
+
+ if (cbacks->handshake_cb)
+ cbacks->handshake_cb((bt_bdaddr_t *) ev->bdaddr, ev->status);
+#endif
+}
+
/*
* handlers will be called from notification thread context,
* index in table equals to 'opcode - HAL_MINIMUM_EVENT'
@@ -120,6 +130,7 @@ static const struct hal_ipc_handler ev_handlers[] = {
/* HAL_EV_HIDHOST_VIRTUAL_UNPLUG */
{ handle_virtual_unplug, false,
sizeof(struct hal_ev_hidhost_virtual_unplug) },
+ { handle_handshake, false, sizeof(struct hal_ev_hidhost_handshake) },
};
static bt_status_t hidhost_connect(bt_bdaddr_t *bd_addr)
diff --git a/android/hal-msg.h b/android/hal-msg.h
index 773af5b..35fb78a 100644
--- a/android/hal-msg.h
+++ b/android/hal-msg.h
@@ -1263,6 +1263,12 @@ struct hal_ev_hidhost_virtual_unplug {
uint8_t status;
} __attribute__((packed));
+#define HAL_EV_HIDHOST_HANDSHAKE 0x87
+struct hal_ev_hidhost_handshake {
+ uint8_t bdaddr[6];
+ uint8_t status;
+} __attribute__((packed));
+
#define HAL_EV_PAN_CTRL_STATE 0x81
struct hal_ev_pan_ctrl_state {
uint8_t state;
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 3/4] android/hid: Support handshake message
2014-11-17 14:06 [PATCH 1/4] android/hal-ipc-api: Update HidHost with Android 5 API Jakub Tyszkowski
2014-11-17 14:06 ` [PATCH 2/4] android/hal: Update HidHost HAL for Android 5 Jakub Tyszkowski
@ 2014-11-17 14:06 ` Jakub Tyszkowski
2014-11-19 19:37 ` Szymon Janc
2014-11-17 14:06 ` [PATCH 4/4] android/client: Add handshake callback Jakub Tyszkowski
2 siblings, 1 reply; 5+ messages in thread
From: Jakub Tyszkowski @ 2014-11-17 14:06 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Jakub Tyszkowski
---
android/hidhost.c | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/android/hidhost.c b/android/hidhost.c
index 657fa8f..ba44af0 100644
--- a/android/hidhost.c
+++ b/android/hidhost.c
@@ -80,6 +80,9 @@
/* HID Virtual Cable Unplug */
#define HID_VIRTUAL_CABLE_UNPLUG 0x05
+/* HID Max. Handshake status code */
+#define HID_HANDSHAKE_ERROR 0x05
+
#define HOG_UUID "00001812-0000-1000-8000-00805f9b34fb"
static bdaddr_t adapter_addr;
@@ -391,6 +394,24 @@ send:
g_free(ev);
}
+static void bt_hid_notify_handshake(struct hid_device *dev, uint8_t *buf,
+ int len)
+{
+ struct hal_ev_hidhost_handshake ev;
+ int ev_len;
+
+ ev_len = sizeof(ev);
+ bdaddr2android(&dev->dst, ev.bdaddr);
+
+ /* crop result code to HAL range */
+ ev.status = buf[0];
+ if (ev.status > HID_HANDSHAKE_ERROR)
+ ev.status = HID_HANDSHAKE_ERROR;
+
+ ipc_send_notif(hal_ipc, HAL_SERVICE_ID_HIDHOST,
+ HAL_EV_HIDHOST_HANDSHAKE, ev_len, &ev);
+}
+
static void bt_hid_notify_virtual_unplug(struct hid_device *dev,
uint8_t *buf, int len)
{
@@ -441,7 +462,9 @@ static gboolean ctrl_io_watch_cb(GIOChannel *chan, gpointer data)
break;
}
- if (buf[0] == (HID_MSG_CONTROL | HID_VIRTUAL_CABLE_UNPLUG))
+ if (buf[0] < HID_MSG_CONTROL)
+ bt_hid_notify_handshake(dev, buf, bread);
+ else if (buf[0] == (HID_MSG_CONTROL | HID_VIRTUAL_CABLE_UNPLUG))
bt_hid_notify_virtual_unplug(dev, buf, bread);
/* reset msg type request */
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 4/4] android/client: Add handshake callback
2014-11-17 14:06 [PATCH 1/4] android/hal-ipc-api: Update HidHost with Android 5 API Jakub Tyszkowski
2014-11-17 14:06 ` [PATCH 2/4] android/hal: Update HidHost HAL for Android 5 Jakub Tyszkowski
2014-11-17 14:06 ` [PATCH 3/4] android/hid: Support handshake message Jakub Tyszkowski
@ 2014-11-17 14:06 ` Jakub Tyszkowski
2 siblings, 0 replies; 5+ messages in thread
From: Jakub Tyszkowski @ 2014-11-17 14:06 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Jakub Tyszkowski
---
android/client/if-hh.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/android/client/if-hh.c b/android/client/if-hh.c
index b2bf8ca..25519e5 100644
--- a/android/client/if-hh.c
+++ b/android/client/if-hh.c
@@ -100,6 +100,18 @@ static void virtual_unplug_cb(bt_bdaddr_t *bd_addr, bthh_status_t hh_status)
bthh_status_t2str(hh_status));
}
+/* Callback for Android 5.0 handshake api. */
+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+static void handshake_cb(bt_bdaddr_t *bd_addr, bthh_status_t hh_status)
+{
+ char addr[MAX_ADDR_STR_LEN];
+
+ haltest_info("%s: bd_addr=%s hh_status=%s\n", __func__,
+ bt_bdaddr_t2str(bd_addr, addr),
+ bthh_status_t2str(hh_status));
+}
+#endif
+
/*
* Callback for get hid info
* hid_info will contain attr_mask, sub_class, app_id, vendor_id, product_id,
@@ -163,7 +175,10 @@ static bthh_callbacks_t bthh_callbacks = {
.protocol_mode_cb = protocol_mode_cb,
.idle_time_cb = idle_time_cb,
.get_report_cb = get_report_cb,
- .virtual_unplug_cb = virtual_unplug_cb
+ .virtual_unplug_cb = virtual_unplug_cb,
+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+ .handshake_cb = handshake_cb
+#endif
};
/* init */
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 3/4] android/hid: Support handshake message
2014-11-17 14:06 ` [PATCH 3/4] android/hid: Support handshake message Jakub Tyszkowski
@ 2014-11-19 19:37 ` Szymon Janc
0 siblings, 0 replies; 5+ messages in thread
From: Szymon Janc @ 2014-11-19 19:37 UTC (permalink / raw)
To: Jakub Tyszkowski; +Cc: linux-bluetooth
Hi Jakub,
On Monday 17 of November 2014 15:06:57 Jakub Tyszkowski wrote:
> ---
> android/hidhost.c | 25 ++++++++++++++++++++++++-
> 1 file changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/android/hidhost.c b/android/hidhost.c
> index 657fa8f..ba44af0 100644
> --- a/android/hidhost.c
> +++ b/android/hidhost.c
> @@ -80,6 +80,9 @@
> /* HID Virtual Cable Unplug */
> #define HID_VIRTUAL_CABLE_UNPLUG 0x05
>
> +/* HID Max. Handshake status code */
> +#define HID_HANDSHAKE_ERROR 0x05
This should be specified in IPC document and headers (this is enum).
> +
> #define HOG_UUID "00001812-0000-1000-8000-00805f9b34fb"
>
> static bdaddr_t adapter_addr;
> @@ -391,6 +394,24 @@ send:
> g_free(ev);
> }
>
> +static void bt_hid_notify_handshake(struct hid_device *dev, uint8_t *buf,
> + int len)
> +{
> + struct hal_ev_hidhost_handshake ev;
> + int ev_len;
> +
> + ev_len = sizeof(ev);
ev_len is not needed, just pass sizeof() directly.
> + bdaddr2android(&dev->dst, ev.bdaddr);
> +
> + /* crop result code to HAL range */
> + ev.status = buf[0];
> + if (ev.status > HID_HANDSHAKE_ERROR)
> + ev.status = HID_HANDSHAKE_ERROR;
> +
> + ipc_send_notif(hal_ipc, HAL_SERVICE_ID_HIDHOST,
> + HAL_EV_HIDHOST_HANDSHAKE, ev_len, &ev);
> +}
> +
> static void bt_hid_notify_virtual_unplug(struct hid_device *dev,
> uint8_t *buf, int len)
> {
> @@ -441,7 +462,9 @@ static gboolean ctrl_io_watch_cb(GIOChannel *chan,
> gpointer data) break;
> }
>
> - if (buf[0] == (HID_MSG_CONTROL | HID_VIRTUAL_CABLE_UNPLUG))
> + if (buf[0] < HID_MSG_CONTROL)
> + bt_hid_notify_handshake(dev, buf, bread);
> + else if (buf[0] == (HID_MSG_CONTROL | HID_VIRTUAL_CABLE_UNPLUG))
> bt_hid_notify_virtual_unplug(dev, buf, bread);
This looks strange, is this value or bitmask?
>
> /* reset msg type request */
--
BR
Szymon Janc
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-11-19 19:37 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-17 14:06 [PATCH 1/4] android/hal-ipc-api: Update HidHost with Android 5 API Jakub Tyszkowski
2014-11-17 14:06 ` [PATCH 2/4] android/hal: Update HidHost HAL for Android 5 Jakub Tyszkowski
2014-11-17 14:06 ` [PATCH 3/4] android/hid: Support handshake message Jakub Tyszkowski
2014-11-19 19:37 ` Szymon Janc
2014-11-17 14:06 ` [PATCH 4/4] android/client: Add handshake callback Jakub Tyszkowski
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.