summaryrefslogtreecommitdiff
path: root/android/hal-utils.c
diff options
context:
space:
mode:
authorSzymon Janc <szymon.janc@tieto.com>2014-11-27 16:29:13 +0100
committerSzymon Janc <szymon.janc@tieto.com>2014-12-15 12:34:53 +0100
commit9d7cb5390537eac25200772ff48b01ef43b508ce (patch)
treed9f78da96395df8e83d0a466ab2e2fc4aeddd95e /android/hal-utils.c
parent42fa7fa74b83b0b1a6d3cb8ab38126b1e2979c3d (diff)
downloadbluez-9d7cb5390537eac25200772ff48b01ef43b508ce.tar.gz
android/hal-utils: Refactor btproperty2str
This function grown to big. Factor out more complex properties to separate helper functions.
Diffstat (limited to 'android/hal-utils.c')
-rw-r--r--android/hal-utils.c168
1 files changed, 76 insertions, 92 deletions
diff --git a/android/hal-utils.c b/android/hal-utils.c
index 004d89d6c..e45f6e4a6 100644
--- a/android/hal-utils.c
+++ b/android/hal-utils.c
@@ -258,8 +258,77 @@ const char *bdaddr2str(const bt_bdaddr_t *bd_addr)
return bt_bdaddr_t2str(bd_addr, buf);
}
+static void bonded_devices2string(char *str, void *prop, int prop_len)
+{
+ int count = prop_len / sizeof(bt_bdaddr_t);
+ bt_bdaddr_t *addr = prop;
+
+ strcat(str, "{");
+
+ while (count--) {
+ strcat(str, bdaddr2str(addr));
+ if (count)
+ strcat(str, ", ");
+ addr++;
+ }
+
+ strcat(str, "}");
+}
+
+static void uuids2string(char *str, void *prop, int prop_len)
+{
+ int count = prop_len / sizeof(bt_uuid_t);
+ bt_uuid_t *uuid = prop;
+
+ strcat(str, "{");
+
+ while (count--) {
+ strcat(str, btuuid2str(uuid->uu));
+ if (count)
+ strcat(str, ", ");
+ uuid++;
+ }
+
+ strcat(str, "}");
+}
+
+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+static void local_le_feat2string(char *str, const bt_local_le_features_t *f)
+{
+ uint16_t scan_num;
+
+ str += sprintf(str, "{\n");
+
+ str += sprintf(str, "Privacy supported: %s,\n",
+ f->local_privacy_enabled ? "TRUE" : "FALSE");
+
+ str += sprintf(str, "Num of advertising instances: %u,\n",
+ f->max_adv_instance);
+
+ str += sprintf(str, "PRA offloading support: %s,\n",
+ f->rpa_offload_supported ? "TRUE" : "FALSE");
+
+ str += sprintf(str, "Num of offloaded IRKs: %u,\n",
+ f->max_irk_list_size);
+
+ str += sprintf(str, "Num of offloaded scan filters: %u,\n",
+ f->max_adv_filter_supported);
+
+ scan_num = (f->scan_result_storage_size_hibyte << 8) +
+ f->scan_result_storage_size_lobyte;
+
+ str += sprintf(str, "Num of offloaded scan results: %u,\n", scan_num);
+
+ str += sprintf(str, "Activity & energy report support: %s\n",
+ f->activity_energy_info_supported ? "TRUE" : "FALSE");
+
+ sprintf(str, "}");
+}
+#endif
+
const char *btproperty2str(const bt_property_t *property)
{
+ bt_service_record_t *rec;
static char buf[4096];
char *p;
@@ -273,132 +342,47 @@ const char *btproperty2str(const bt_property_t *property)
snprintf(p, property->len + 1, "%s",
((bt_bdname_t *) property->val)->name);
break;
-
case BT_PROPERTY_BDADDR:
sprintf(p, "%s", bdaddr2str((bt_bdaddr_t *) property->val));
break;
-
case BT_PROPERTY_CLASS_OF_DEVICE:
sprintf(p, "%06x", *((int *) property->val));
break;
-
case BT_PROPERTY_TYPE_OF_DEVICE:
sprintf(p, "%s", bt_device_type_t2str(
- *((bt_device_type_t *) property->val)));
+ *((bt_device_type_t *) property->val)));
break;
-
case BT_PROPERTY_REMOTE_RSSI:
sprintf(p, "%d", *((char *) property->val));
break;
-
case BT_PROPERTY_ADAPTER_SCAN_MODE:
sprintf(p, "%s",
bt_scan_mode_t2str(*((bt_scan_mode_t *) property->val)));
break;
-
case BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT:
sprintf(p, "%d", *((int *) property->val));
break;
-
case BT_PROPERTY_ADAPTER_BONDED_DEVICES:
- {
- int count = property->len / sizeof(bt_bdaddr_t);
- char *ptr = property->val;
-
- strcat(p, "{");
-
- while (count--) {
- strcat(p, bdaddr2str((bt_bdaddr_t *) ptr));
- if (count)
- strcat(p, ", ");
- ptr += sizeof(bt_bdaddr_t);
- }
-
- strcat(p, "}");
-
- }
+ bonded_devices2string(p, property->val, property->len);
break;
-
case BT_PROPERTY_UUIDS:
- {
- int count = property->len / sizeof(bt_uuid_t);
- uint8_t *ptr = property->val;
-
- strcat(p, "{");
-
- while (count--) {
- strcat(p, btuuid2str(ptr));
- if (count)
- strcat(p, ", ");
- ptr += sizeof(bt_uuid_t);
- }
-
- strcat(p, "}");
-
- }
+ uuids2string(p, property->val, property->len);
break;
-
case BT_PROPERTY_SERVICE_RECORD:
- {
- bt_service_record_t *rec = property->val;
-
- sprintf(p, "{%s, %d, %s}", btuuid2str(rec->uuid.uu),
+ rec = property->val;
+ sprintf(p, "{%s, %d, %s}", btuuid2str(rec->uuid.uu),
rec->channel, rec->name);
- }
break;
#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
case BT_PROPERTY_LOCAL_LE_FEATURES:
- {
- bt_local_le_features_t *f = property->val;
- int l;
- uint16_t s;
-
- l = sprintf(p, "{\n");
- p += l;
-
- l = sprintf(p, "Privacy supported: %s,\n",
- f->local_privacy_enabled ?
- "TRUE" : "FALSE");
- p += l;
-
- l = sprintf(p, "Num of advertising instances: %u,\n",
- f->max_adv_instance);
- p += l;
-
- l = sprintf(p, "PRA offloading support: %s,\n",
- f->rpa_offload_supported ?
- "TRUE" : "FALSE");
-
- p += l;
-
- l = sprintf(p, "Num of offloaded IRKs: %u,\n",
- f->max_irk_list_size);
- p += l;
-
- l = sprintf(p, "Num of offloaded scan filters: %u,\n",
- f->max_adv_filter_supported);
- p += l;
-
- s = (f->scan_result_storage_size_hibyte << 8) +
- f->scan_result_storage_size_lobyte;
-
- l = sprintf(p, "Num of offloaded scan results: %u,\n",
- s);
- p += l;
-
- l = sprintf(p, "Activity & energy report support: %s\n",
- f->activity_energy_info_supported ?
- "TRUE" : "FALSE");
- p += l;
-
- sprintf(p, "}");
- }
+ local_le_feat2string(p, property->val);
break;
#endif
case BT_PROPERTY_REMOTE_VERSION_INFO:
case BT_PROPERTY_REMOTE_DEVICE_TIMESTAMP:
default:
sprintf(p, "%p", property->val);
+ break;
}
return buf;