return svc_list;
}
+static void __uam_copy_db_payload_info(uam_ble_payload_s *dst_payload,
+ uam_db_payload_info_t *src_payload)
+{
+ if (src_payload) {
+ dst_payload->primary_key = src_payload->primary_key;
+ dst_payload->device_icon = src_payload->device_icon;
+ dst_payload->secondary_key = src_payload->secondary_key;
+ if (src_payload->device_uid)
+ memcpy(dst_payload->device_uid,
+ src_payload->device_uid, UAM_BLE_PAYLOAD_DEVICE_UID_LEN);
+ if (src_payload->bt_mac)
+ memcpy(dst_payload->bt_mac,
+ src_payload->bt_mac, UAM_BT_MAC_ADDRESS_STRING_LEN);
+ }
+}
+
+static void __uam_copy_uam_payload_info(
+ uam_db_payload_info_t *dst_payload, uam_ble_payload_s *src_payload)
+{
+ if (src_payload) {
+ dst_payload = g_new0(uam_db_payload_info_t, 1);
+ dst_payload->primary_key = src_payload->primary_key;
+ dst_payload->device_icon = src_payload->device_icon;
+ dst_payload->secondary_key = src_payload->secondary_key;
+ dst_payload->device_uid = g_memdup(&(src_payload->device_uid),
+ UAM_BLE_PAYLOAD_DEVICE_UID_LEN);
+ dst_payload->bt_mac = g_memdup(&(src_payload->bt_mac),
+ UAM_BT_MAC_ADDRESS_STRING_LEN);
+ }
+}
+
static void __uam_core_add_dev_to_list(
uam_db_user_info_t *user, const uam_device_info_s *dev_info,
int presence_state, unsigned long long last_seen, GSList *svc_list)
GSList *db_svc_list;
GSList *db_adv_list;
GSList *db_svc_dev_list;
+ GSList *db_payload_list;
GSList *l;
/* Init database */
}
}
+ /* Fetch payload list */
+ db_payload_list = _uam_db_get_all_payloads();
+ if (!db_payload_list) {
+ UAM_INFO_C("No device payload in database");
+ } else {
+ for (l = db_payload_list; NULL != l; l = g_slist_next(l)) {
+ db_payload_info_t *db_payload = l->data;
+ uam_db_payload_info_t *payload;
+ GSList *l1;
+
+ if (!db_payload)
+ continue;
+
+// l1 = g_slist_find_custom(payloads,
+// db_payload->payload_name, __compare_payload_name);
+ if (!l1) {
+ payload = g_new0(uam_db_payload_info_t, 1);
+ __uam_copy_uam_payload_info(payload, &(db_payload->payload_info));
+ payloads = g_slist_append(payloads, payload);
+ }
+ }
+ }
+
g_slist_free_full(db_devices, g_free);
g_slist_free_full(db_users, g_free);
g_slist_free_full(db_svc_list, g_free);
g_slist_free_full(db_adv_list, g_free);
g_slist_free_full(db_svc_dev_list, g_free);
+ g_slist_free_full(db_payload_list, g_free);
/* Set/update registered device list to plugins */
if (UAM_ERROR_NONE != _uam_pm_set_registered_devices(devices))
g_slist_free(svc_devs);
svc_devs = NULL;
+ /* Release allocated memory for payloads */
+ for (l = payloads; NULL != l; l = g_slist_next(l)) {
+ uam_db_payload_info_t *payload = l->data;
+
+ if (!payload)
+ continue;
+ g_free(payload->device_uid);
+ g_free(payload->bt_mac);
+ g_free(payload);
+ }
+ g_slist_free(payloads);
+ payloads = NULL;
+
FUNC_EXIT;
}
FUNC_EXIT;
}
-static void __uam_copy_db_payload_info(uam_ble_payload_s *dst_payload,
- uam_db_payload_info_t *src_payload)
-{
- if (src_payload) {
- dst_payload->primary_key = src_payload->primary_key;
- dst_payload->device_icon = src_payload->device_icon;
- dst_payload->secondary_key = src_payload->secondary_key;
- if (src_payload->device_uid)
- memcpy(dst_payload->device_uid,
- src_payload->device_uid, UAM_BLE_PAYLOAD_DEVICE_UID_LEN);
- if (src_payload->bt_mac)
- memcpy(dst_payload->bt_mac,
- src_payload->bt_mac, UAM_BT_MAC_ADDRESS_STRING_LEN);
- }
-}
-
-static void __uam_copy_uam_payload_info(
- uam_db_payload_info_t *dst_payload, uam_ble_payload_s *src_payload)
-{
- if (src_payload) {
- dst_payload = g_new0(uam_db_payload_info_t, 1);
- dst_payload->primary_key = src_payload->primary_key;
- dst_payload->device_icon = src_payload->device_icon;
- dst_payload->secondary_key = src_payload->secondary_key;
- dst_payload->device_uid = g_memdup(&(src_payload->device_uid),
- UAM_BLE_PAYLOAD_DEVICE_UID_LEN);
- dst_payload->bt_mac = g_memdup(&(src_payload->bt_mac),
- UAM_BT_MAC_ADDRESS_STRING_LEN);
- }
-}
-
int _uam_core_add_payload(uam_ble_payload_s *payload,
const char *device_id, int tech_type)
{
for (l = payloads; l; l = g_slist_next(l)) {
uam_db_payload_info_t *db_info = l->data;
- if (!db_info || !db_info->device_uid)
+ if (!db_info)
continue;
__uam_copy_db_payload_info(&(*payload_list)[*count], db_info);