diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-07-14 14:13:49 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-07-14 14:13:49 -0400 |
commit | a8bd28baf21b9ee6b8486666b771283e566c0d31 (patch) | |
tree | 6e98a4bd353ac3abd808698b9bca05abac6168b1 /net/bluetooth/hci_sysfs.c | |
parent | 41a96212b3b7b3cd59e8e8d33e6dabf0e21d9778 (diff) |
[Bluetooth] Export remote Simple Pairing mode via sysfs
Since the remote Simple Pairing mode is stored together with the
inquiry cache, it makes sense to show it together with the other
information.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/hci_sysfs.c')
-rw-r--r-- | net/bluetooth/hci_sysfs.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/net/bluetooth/hci_sysfs.c b/net/bluetooth/hci_sysfs.c index 84360c117d4e..a18871e01582 100644 --- a/net/bluetooth/hci_sysfs.c +++ b/net/bluetooth/hci_sysfs.c | |||
@@ -113,11 +113,13 @@ static ssize_t show_inquiry_cache(struct device *dev, struct device_attribute *a | |||
113 | struct inquiry_data *data = &e->data; | 113 | struct inquiry_data *data = &e->data; |
114 | bdaddr_t bdaddr; | 114 | bdaddr_t bdaddr; |
115 | baswap(&bdaddr, &data->bdaddr); | 115 | baswap(&bdaddr, &data->bdaddr); |
116 | n += sprintf(buf + n, "%s %d %d %d 0x%.2x%.2x%.2x 0x%.4x %d %u\n", | 116 | n += sprintf(buf + n, "%s %d %d %d 0x%.2x%.2x%.2x 0x%.4x %d %d %u\n", |
117 | batostr(&bdaddr), | 117 | batostr(&bdaddr), |
118 | data->pscan_rep_mode, data->pscan_period_mode, data->pscan_mode, | 118 | data->pscan_rep_mode, data->pscan_period_mode, |
119 | data->dev_class[2], data->dev_class[1], data->dev_class[0], | 119 | data->pscan_mode, data->dev_class[2], |
120 | __le16_to_cpu(data->clock_offset), data->rssi, e->timestamp); | 120 | data->dev_class[1], data->dev_class[0], |
121 | __le16_to_cpu(data->clock_offset), | ||
122 | data->rssi, data->ssp_mode, e->timestamp); | ||
121 | } | 123 | } |
122 | 124 | ||
123 | hci_dev_unlock_bh(hdev); | 125 | hci_dev_unlock_bh(hdev); |
@@ -249,15 +251,28 @@ static ssize_t show_conn_address(struct device *dev, struct device_attribute *at | |||
249 | return sprintf(buf, "%s\n", batostr(&bdaddr)); | 251 | return sprintf(buf, "%s\n", batostr(&bdaddr)); |
250 | } | 252 | } |
251 | 253 | ||
254 | static ssize_t show_conn_features(struct device *dev, struct device_attribute *attr, char *buf) | ||
255 | { | ||
256 | struct hci_conn *conn = dev_get_drvdata(dev); | ||
257 | |||
258 | return sprintf(buf, "0x%02x%02x%02x%02x%02x%02x%02x%02x\n", | ||
259 | conn->features[0], conn->features[1], | ||
260 | conn->features[2], conn->features[3], | ||
261 | conn->features[4], conn->features[5], | ||
262 | conn->features[6], conn->features[7]); | ||
263 | } | ||
264 | |||
252 | #define CONN_ATTR(_name,_mode,_show,_store) \ | 265 | #define CONN_ATTR(_name,_mode,_show,_store) \ |
253 | struct device_attribute conn_attr_##_name = __ATTR(_name,_mode,_show,_store) | 266 | struct device_attribute conn_attr_##_name = __ATTR(_name,_mode,_show,_store) |
254 | 267 | ||
255 | static CONN_ATTR(type, S_IRUGO, show_conn_type, NULL); | 268 | static CONN_ATTR(type, S_IRUGO, show_conn_type, NULL); |
256 | static CONN_ATTR(address, S_IRUGO, show_conn_address, NULL); | 269 | static CONN_ATTR(address, S_IRUGO, show_conn_address, NULL); |
270 | static CONN_ATTR(features, S_IRUGO, show_conn_features, NULL); | ||
257 | 271 | ||
258 | static struct device_attribute *conn_attrs[] = { | 272 | static struct device_attribute *conn_attrs[] = { |
259 | &conn_attr_type, | 273 | &conn_attr_type, |
260 | &conn_attr_address, | 274 | &conn_attr_address, |
275 | &conn_attr_features, | ||
261 | NULL | 276 | NULL |
262 | }; | 277 | }; |
263 | 278 | ||