diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/adapter.c | 14 | ||||
-rw-r--r-- | src/adapter.h | 1 | ||||
-rw-r--r-- | src/sdpd.h | 10 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/adapter.c b/src/adapter.c index 8136229f5..648d2a838 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -3053,6 +3053,18 @@ static struct remote_dev_info *get_found_dev(struct btd_adapter *adapter, return dev; } +static uint8_t extract_eir_flags(uint8_t *eir_data) +{ + if (eir_data[0] == 0) + return 0; + + if (eir_data[1] != EIR_FLAGS) + return 0; + + /* For now, only one octet is used for flags */ + return eir_data[2]; +} + void adapter_update_device_from_info(struct btd_adapter *adapter, le_advertising_info *info) { @@ -3084,6 +3096,8 @@ void adapter_update_device_from_info(struct btd_adapter *adapter, g_free(dev->name); dev->name = tmp_name; } + + dev->flags = extract_eir_flags(info->data); } /* FIXME: check if other information was changed before emitting the diff --git a/src/adapter.h b/src/adapter.h index 4af69b38b..3a6753914 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -74,6 +74,7 @@ struct remote_dev_info { GSList *services; uint8_t evt_type; uint8_t bdaddr_type; + uint8_t flags; }; struct hci_dev { diff --git a/src/sdpd.h b/src/sdpd.h index 5bab86922..a46ad3cf7 100644 --- a/src/sdpd.h +++ b/src/sdpd.h @@ -36,6 +36,7 @@ #define EIR_DATA_LENGTH 240 +#define EIR_FLAGS 0x01 /* flags */ #define EIR_UUID16_SOME 0x02 /* 16-bit UUID, more available */ #define EIR_UUID16_ALL 0x03 /* 16-bit UUID, all listed */ #define EIR_UUID32_SOME 0x04 /* 32-bit UUID, more available */ @@ -47,6 +48,15 @@ #define EIR_TX_POWER 0x0A /* transmit power level */ #define EIR_DEVICE_ID 0x10 /* device ID */ +/* Flags Descriptions */ +#define EIR_LIM_DISC 0x01 /* LE Limited Discoverable Mode */ +#define EIR_GEN_DISC 0x02 /* LE General Discoverable Mode */ +#define EIR_BREDR_UNSUP 0x04 /* BR/EDR Not Supported */ +#define EIR_SIM_CONTROLLER 0x08 /* Simultaneous LE and BR/EDR to Same + Device Capable (Controller) */ +#define EIR_SIM_HOST 0x10 /* Simultaneous LE and BR/EDR to Same + Device Capable (Host) */ + typedef struct request { bdaddr_t device; bdaddr_t bdaddr; |