* [PATCH v3 1/5] android: Define class of device as four bytes in IPC doc
2013-10-29 11:52 [PATCH v3 0/5] initial code for pairing support Szymon Janc
@ 2013-10-29 11:52 ` Szymon Janc
2013-10-29 11:52 ` [PATCH v3 2/5] android: Update IPC headers to match SSP and PIN requests events Szymon Janc
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Szymon Janc @ 2013-10-29 11:52 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
For PIN and SSP requests callback define CoD as 4 bytes. This will
allow HAL library to pass CoD direclty to callback. Will also match
how CoD is passed as property.
---
android/hal-ipc-api.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/android/hal-ipc-api.txt b/android/hal-ipc-api.txt
index dc0d067..e7af8a3 100644
--- a/android/hal-ipc-api.txt
+++ b/android/hal-ipc-api.txt
@@ -354,13 +354,13 @@ Notifications:
Notification parameters: Remote address (6 octets)
Remote name (249 octets)
- Class of device (3 octets)
+ Class of device (4 octets)
Opcode 0x87 - SSP Request notification
Notification parameters: Remote address (6 octets)
Remote name (249 octets)
- Class of device (3 octets)
+ Class of device (4 octets)
Pairing variant (1 octet)
Passkey (4 octets)
--
1.8.4.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 2/5] android: Update IPC headers to match SSP and PIN requests events
2013-10-29 11:52 [PATCH v3 0/5] initial code for pairing support Szymon Janc
2013-10-29 11:52 ` [PATCH v3 1/5] android: Define class of device as four bytes in IPC doc Szymon Janc
@ 2013-10-29 11:52 ` Szymon Janc
2013-10-29 11:52 ` [PATCH v3 3/5] android/hal: Add support for handling bond state change event Szymon Janc
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Szymon Janc @ 2013-10-29 11:52 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
Name should be 249 bytes so it is always NULL terminated string.
Class of device is send as uint32. This will allow to make simple
passing of data in HAL library without need of copying data.
---
android/hal-msg.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/android/hal-msg.h b/android/hal-msg.h
index a4eb2a8..80b47d6 100644
--- a/android/hal-msg.h
+++ b/android/hal-msg.h
@@ -356,15 +356,15 @@ struct hal_ev_discovery_state_changed {
#define HAL_EV_PIN_REQUEST 0x86
struct hal_ev_pin_request {
uint8_t bdaddr[6];
- uint8_t name[249 - 1];
- uint8_t class_of_dev[3];
+ uint8_t name[249];
+ uint32_t class_of_dev;
} __attribute__((packed));
#define HAL_EV_SSP_REQUEST 0x87
struct hal_ev_ssp_request {
uint8_t bdaddr[6];
- uint8_t name[249 - 1];
- uint8_t class_of_dev[3];
+ uint8_t name[249];
+ uint32_t class_of_dev;
uint8_t pairing_variant;
uint32_t passkey;
} __attribute__((packed));
--
1.8.4.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 3/5] android/hal: Add support for handling bond state change event
2013-10-29 11:52 [PATCH v3 0/5] initial code for pairing support Szymon Janc
2013-10-29 11:52 ` [PATCH v3 1/5] android: Define class of device as four bytes in IPC doc Szymon Janc
2013-10-29 11:52 ` [PATCH v3 2/5] android: Update IPC headers to match SSP and PIN requests events Szymon Janc
@ 2013-10-29 11:52 ` Szymon Janc
2013-10-29 11:52 ` [PATCH v3 4/5] android/hal: Add support for handling pin request event Szymon Janc
2013-10-29 11:52 ` [PATCH v3 5/5] android/hal: Add support for handling SSP " Szymon Janc
4 siblings, 0 replies; 8+ messages in thread
From: Szymon Janc @ 2013-10-29 11:52 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
---
android/hal-bluetooth.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index 5f6dcbe..a3f5038 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -68,6 +68,16 @@ static void handle_adapter_props_changed(void *buf, uint16_t len)
bt_hal_cbacks->adapter_properties_cb(ev->status, ev->num_props, props);
}
+static void handle_bond_state_change(void *buf)
+{
+ struct hal_ev_bond_state_changed *ev = buf;
+ bt_bdaddr_t *addr = (bt_bdaddr_t *) ev->bdaddr;
+
+ if (bt_hal_cbacks->bond_state_changed_cb)
+ bt_hal_cbacks->bond_state_changed_cb(ev->status, addr,
+ ev->state);
+}
+
void bt_thread_associate(void)
{
if (bt_hal_cbacks->thread_evt_cb)
@@ -98,6 +108,9 @@ void bt_notify_adapter(uint16_t opcode, void *buf, uint16_t len)
case HAL_EV_ADAPTER_PROPS_CHANGED:
handle_adapter_props_changed(buf, len);
break;
+ case HAL_EV_BOND_STATE_CHANGED:
+ handle_bond_state_change(buf);
+ break;
default:
DBG("Unhandled callback opcode=0x%x", opcode);
break;
--
1.8.4.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 4/5] android/hal: Add support for handling pin request event
2013-10-29 11:52 [PATCH v3 0/5] initial code for pairing support Szymon Janc
` (2 preceding siblings ...)
2013-10-29 11:52 ` [PATCH v3 3/5] android/hal: Add support for handling bond state change event Szymon Janc
@ 2013-10-29 11:52 ` Szymon Janc
2013-10-29 12:19 ` Johan Hedberg
2013-10-29 11:52 ` [PATCH v3 5/5] android/hal: Add support for handling SSP " Szymon Janc
4 siblings, 1 reply; 8+ messages in thread
From: Szymon Janc @ 2013-10-29 11:52 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
---
android/hal-bluetooth.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index a3f5038..a1a4ef4 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -78,6 +78,16 @@ static void handle_bond_state_change(void *buf)
ev->state);
}
+static void handle_pin_request(void *buf)
+{
+ struct hal_ev_pin_request *ev = buf;
+ bt_bdaddr_t *addr = (bt_bdaddr_t *) ev->bdaddr;
+ bt_bdname_t *name = (bt_bdname_t *) ev->name;
+
+ if (bt_hal_cbacks->pin_request_cb)
+ bt_hal_cbacks->pin_request_cb(addr, name, ev->class_of_dev);
+}
+
void bt_thread_associate(void)
{
if (bt_hal_cbacks->thread_evt_cb)
@@ -111,6 +121,9 @@ void bt_notify_adapter(uint16_t opcode, void *buf, uint16_t len)
case HAL_EV_BOND_STATE_CHANGED:
handle_bond_state_change(buf);
break;
+ case HAL_EV_PIN_REQUEST:
+ handle_pin_request(buf);
+ break;
default:
DBG("Unhandled callback opcode=0x%x", opcode);
break;
--
1.8.4.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v3 4/5] android/hal: Add support for handling pin request event
2013-10-29 11:52 ` [PATCH v3 4/5] android/hal: Add support for handling pin request event Szymon Janc
@ 2013-10-29 12:19 ` Johan Hedberg
2013-10-29 12:40 ` Szymon Janc
0 siblings, 1 reply; 8+ messages in thread
From: Johan Hedberg @ 2013-10-29 12:19 UTC (permalink / raw)
To: Szymon Janc; +Cc: linux-bluetooth
Hi Szymon,
On Tue, Oct 29, 2013, Szymon Janc wrote:
> ---
> android/hal-bluetooth.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
I've applied the first three patches in this set, but are you sure the
following isn't prone to unaligned access issues:
> + bt_bdaddr_t *addr = (bt_bdaddr_t *) ev->bdaddr;
> + bt_bdname_t *name = (bt_bdname_t *) ev->name;
I.e. wouldn't this be an issue if the expected alignment of bt_bdaddr_t
and bt_bdname_t pointers is different from the alignment of ev->bdaddr
and ev->name.
Johan
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 4/5] android/hal: Add support for handling pin request event
2013-10-29 12:19 ` Johan Hedberg
@ 2013-10-29 12:40 ` Szymon Janc
0 siblings, 0 replies; 8+ messages in thread
From: Szymon Janc @ 2013-10-29 12:40 UTC (permalink / raw)
To: Johan Hedberg; +Cc: linux-bluetooth
Hi Johan,
> Hi Szymon,
>
> On Tue, Oct 29, 2013, Szymon Janc wrote:
> > ---
> > android/hal-bluetooth.c | 13 +++++++++++++
> > 1 file changed, 13 insertions(+)
>
> I've applied the first three patches in this set, but are you sure the
> following isn't prone to unaligned access issues:
>
> > + bt_bdaddr_t *addr = (bt_bdaddr_t *) ev->bdaddr;
> > + bt_bdname_t *name = (bt_bdname_t *) ev->name;
>
> I.e. wouldn't this be an issue if the expected alignment of bt_bdaddr_t
> and bt_bdname_t pointers is different from the alignment of ev->bdaddr
> and ev->name.
bt_bdaddr_t and bt_bdname_t are declared as packed structures so this is safe.
I'll add comment in v4 as suggested.
--
BR
Szymon Janc
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 5/5] android/hal: Add support for handling SSP request event
2013-10-29 11:52 [PATCH v3 0/5] initial code for pairing support Szymon Janc
` (3 preceding siblings ...)
2013-10-29 11:52 ` [PATCH v3 4/5] android/hal: Add support for handling pin request event Szymon Janc
@ 2013-10-29 11:52 ` Szymon Janc
4 siblings, 0 replies; 8+ messages in thread
From: Szymon Janc @ 2013-10-29 11:52 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Szymon Janc
---
android/hal-bluetooth.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
index a1a4ef4..f14fbb5 100644
--- a/android/hal-bluetooth.c
+++ b/android/hal-bluetooth.c
@@ -88,6 +88,18 @@ static void handle_pin_request(void *buf)
bt_hal_cbacks->pin_request_cb(addr, name, ev->class_of_dev);
}
+static void handle_ssp_request(void *buf)
+{
+ struct hal_ev_ssp_request *ev = buf;
+ bt_bdaddr_t *addr = (bt_bdaddr_t *) ev->bdaddr;
+ bt_bdname_t *name = (bt_bdname_t *) ev->name;
+
+ if (bt_hal_cbacks->ssp_request_cb)
+ bt_hal_cbacks->ssp_request_cb(addr, name, ev->class_of_dev,
+ ev->pairing_variant,
+ ev->passkey);
+}
+
void bt_thread_associate(void)
{
if (bt_hal_cbacks->thread_evt_cb)
@@ -124,6 +136,9 @@ void bt_notify_adapter(uint16_t opcode, void *buf, uint16_t len)
case HAL_EV_PIN_REQUEST:
handle_pin_request(buf);
break;
+ case HAL_EV_SSP_REQUEST:
+ handle_ssp_request(buf);
+ break;
default:
DBG("Unhandled callback opcode=0x%x", opcode);
break;
--
1.8.4.1
^ permalink raw reply related [flat|nested] 8+ messages in thread