diff --git a/lib/hci.c b/lib/hci.c
index ce272f6..89b2318 100644
--- a/lib/hci.c
+++ b/lib/hci.c
return 0;
}
+
+int hci_le_read_remote_features(int dd, uint16_t handle, uint8_t *features, int to)
+{
+ evt_le_read_remote_used_features_complete rp;
+ le_read_remote_used_features_cp cp;
+ struct hci_request rq;
+
+ memset(&cp, 0, sizeof(cp));
+ cp.handle = handle;
+
+ memset(&rq, 0, sizeof(rq));
+ rq.ogf = OGF_LE_CTL;
+ rq.ocf = OCF_LE_READ_REMOTE_USED_FEATURES;
+ rq.event = EVT_LE_READ_REMOTE_USED_FEATURES_COMPLETE;
+ rq.cparam = &cp;
+ rq.clen = LE_READ_REMOTE_USED_FEATURES_CP_SIZE;
+ rq.rparam = &rp;
+ rq.rlen = EVT_LE_READ_REMOTE_USED_FEATURES_COMPLETE_SIZE;
+
+ if (hci_send_req(dd, &rq, to) < 0)
+ return -1;
+
+ if (rp.status) {
+ errno = EIO;
+ return -1;
+ }
+
+ if (features)
+ memcpy(features, rp.features, 8);
+
+ return 0;
+}
diff --git a/lib/hci_lib.h b/lib/hci_lib.h
index 50744c3..eba3cd1 100644
--- a/lib/hci_lib.h
+++ b/lib/hci_lib.h
uint16_t latency, uint16_t supervision_timeout,
uint16_t min_ce_length, uint16_t max_ce_length,
uint16_t *handle, int to);
-
int hci_le_conn_update(int dd, uint16_t handle, uint16_t min_interval,
uint16_t max_interval, uint16_t latency,
uint16_t supervision_timeout, int to);
int hci_le_rm_white_list(int dd, const bdaddr_t *bdaddr, uint8_t type, int to);
int hci_le_read_white_list_size(int dd, uint8_t *size, int to);
int hci_le_clear_white_list(int dd, int to);
+int hci_le_read_remote_features(int dd, uint16_t handle, uint8_t *features, int to);
+
int hci_for_each_dev(int flag, int(*func)(int dd, int dev_id, long arg), long arg);
int hci_get_route(bdaddr_t *bdaddr);