diff options
-rw-r--r-- | hcid/dbus-hci.c | 10 | ||||
-rw-r--r-- | hcid/dbus-hci.h | 6 | ||||
-rw-r--r-- | hcid/security.c | 16 |
3 files changed, 28 insertions, 4 deletions
diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index c7be87e3..106660a2 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -2435,8 +2435,8 @@ void hcid_dbus_pin_code_reply(bdaddr_t *local, void *ptr) } } -int hcid_dbus_get_io_cap(bdaddr_t *local, bdaddr_t *remote, uint8_t *cap, - uint8_t *auth) +int hcid_dbus_get_io_cap(bdaddr_t *local, bdaddr_t *remote, + uint8_t *cap, uint8_t *auth) { struct adapter *adapter; struct device *device; @@ -2478,6 +2478,12 @@ int hcid_dbus_get_io_cap(bdaddr_t *local, bdaddr_t *remote, uint8_t *cap, return 0; } +int hcid_dbus_set_io_cap(bdaddr_t *local, bdaddr_t *remote, + uint8_t cap, uint8_t auth) +{ + return 0; +} + static int inquiry_cancel(int dd, int to) { struct hci_request rq; diff --git a/hcid/dbus-hci.h b/hcid/dbus-hci.h index 00d6540a..9f782fc8 100644 --- a/hcid/dbus-hci.h +++ b/hcid/dbus-hci.h @@ -54,8 +54,10 @@ void hcid_dbus_setscan_enable_complete(bdaddr_t *local); void hcid_dbus_write_class_complete(bdaddr_t *local); void hcid_dbus_write_simple_pairing_mode_complete(bdaddr_t *local); void hcid_dbus_pin_code_reply(bdaddr_t *local, void *ptr); -int hcid_dbus_get_io_cap(bdaddr_t *local, bdaddr_t *remote, uint8_t *cap, - uint8_t *auth); +int hcid_dbus_get_io_cap(bdaddr_t *local, bdaddr_t *remote, + uint8_t *cap, uint8_t *auth); +int hcid_dbus_set_io_cap(bdaddr_t *local, bdaddr_t *remote, + uint8_t cap, uint8_t auth); int hcid_dbus_user_confirm(bdaddr_t *sba, bdaddr_t *dba, uint32_t passkey); int hcid_dbus_user_passkey(bdaddr_t *sba, bdaddr_t *dba); int hcid_dbus_user_notify(bdaddr_t *sba, bdaddr_t *dba, uint32_t passkey); diff --git a/hcid/security.c b/hcid/security.c index 9472930b..b4520745 100644 --- a/hcid/security.c +++ b/hcid/security.c @@ -423,6 +423,18 @@ static void io_capa_request(int dev, bdaddr_t *sba, bdaddr_t *dba) } } +static void io_capa_response(int dev, bdaddr_t *sba, void *ptr) +{ + evt_io_capability_response *evt = ptr; + char sa[18], da[18]; + + ba2str(sba, sa); ba2str(&evt->bdaddr, da); + info("io_capa_response (sba=%s, dba=%s)", sa, da); + + hcid_dbus_set_io_cap(sba, &evt->bdaddr, + evt->capability, evt->authentication); +} + /* PIN code handling */ void set_pin_length(bdaddr_t *sba, int length) @@ -887,6 +899,10 @@ static gboolean io_security_event(GIOChannel *chan, GIOCondition cond, gpointer io_capa_request(dev, &di->bdaddr, (bdaddr_t *) ptr); break; + case EVT_IO_CAPABILITY_RESPONSE: + io_capa_response(dev, &di->bdaddr, ptr); + break; + case EVT_USER_CONFIRM_REQUEST: user_confirm_request(dev, &di->bdaddr, ptr); break; |