diff --git a/src/adapter.c b/src/adapter.c
index a976793..c5e856d 100644
--- a/src/adapter.c
+++ b/src/adapter.c
gboolean force;
};
+static void set_device_type(GKeyFile *key_file, char type)
+{
+ char *techno;
+ char *addr_type = NULL;
+ char *str;
+
+ switch (type) {
+ case BDADDR_BREDR:
+ techno = "BR/EDR";
+ break;
+ case BDADDR_LE_PUBLIC:
+ techno = "LE";
+ addr_type = "public";
+ break;
+ case BDADDR_LE_RANDOM:
+ techno = "LE";
+ addr_type = "static";
+ break;
+ default:
+ return;
+ }
+
+ str = g_key_file_get_string(key_file, "General",
+ "SupportedTechnologies", NULL);
+ if (!str)
+ g_key_file_set_string(key_file, "General",
+ "SupportedTechnologies", techno);
+ else if (!strstr(str, techno))
+ g_key_file_set_string(key_file, "General",
+ "SupportedTechnologies", "BR/EDR;LE");
+
+ g_free(str);
+
+ if (addr_type)
+ g_key_file_set_string(key_file, "General", "AddressType",
+ addr_type);
+}
+
static void convert_aliases_entry(GKeyFile *key_file, void *value)
{
g_key_file_set_string(key_file, "General", "Alias", value);
static void convert_entry(char *key, char *value, void *user_data)
{
struct device_converter *converter = user_data;
+ char device_type = -1;
char filename[PATH_MAX + 1];
GKeyFile *key_file;
char *data;
gsize length = 0;
- if (key[17] == '#')
+ if (key[17] == '#') {
key[17] = '\0';
+ device_type = key[18] - '0';
+ }
if (bachk(key) != 0)
return;
key_file = g_key_file_new();
g_key_file_load_from_file(key_file, filename, 0, NULL);
+
+ if (device_type >= 0)
+ set_device_type(key_file, device_type);
+
converter->cb(key_file, value);
data = g_key_file_to_data(key_file, &length, NULL);