#define INSERT_IBEACON_ADV "insert into ibeacon_adv (ibeacon_id, ibeacon_adv, adv_len) " \
"values (?, ?, ?)"
+#define DELETE_ALL_ADV_DATA "delete from ibeacon_adv "
+
+/* DELETE statements */
+static sqlite3_stmt *delete_all_adv_data;
+
/* SELECT statements */
static sqlite3_stmt *select_max_ibeacon_id;
static sqlite3_stmt *select_all_advs;
extern sqlite3 *database;
static int max_ibeacon_id;
+static void __uam_adv_finalize_delete(void)
+{
+ FUNC_ENTRY;
+
+ FINALIZE(delete_all_adv_data);
+
+ FUNC_EXIT;
+}
+
static void __uam_adv_finalize_select(void)
{
FUNC_ENTRY;
FUNC_EXIT;
}
+static int __uam_adv_prepare_delete(sqlite3 *db)
+{
+ FUNC_ENTRY;
+ int rc;
+ static int initialized;
+
+ if (initialized) {
+ FUNC_EXIT;
+ return SQLITE_OK;
+ }
+
+ PREPARE_QUERY(rc, db, delete_all_adv_data,
+ DELETE_ALL_ADV_DATA, __uam_adv_finalize_delete);
+
+ initialized = 1;
+ FUNC_EXIT;
+ return rc;
+}
+
+
static int __uam_adv_prepare_select(sqlite3 *db)
{
FUNC_ENTRY;
return UAM_ERROR_DB_FAILED;
}
+ DB_ACTION(__uam_adv_prepare_delete(db), error_code, handle_error);
DB_ACTION(__uam_adv_prepare_select(db), error_code, handle_error);
DB_ACTION(__uam_adv_prepare_insert(db), error_code, handle_error);
static void __uam_adv_table_info_finalize(void)
{
FUNC_ENTRY;
+ __uam_adv_finalize_delete();
+ __uam_adv_finalize_select();
__uam_adv_finalize_insert();
FUNC_EXIT;
}
FUNC_EXIT;
return adv_list;
}
+
+int _uam_adv_db_clear(void)
+{
+ int error_code = UAM_ERROR_NONE;
+ sqlite3_stmt *stmt = delete_all_adv_data;
+
+ if (sqlite3_step(stmt) != SQLITE_DONE) {
+ UAM_ERR("Failed to delete user data %s",
+ sqlite3_errmsg(__uam_db_recover_database()));
+ error_code = UAM_ERROR_DB_FAILED;
+ goto handle_error;
+ }
+ UAM_DBG("User data deleted ");
+
+handle_error:
+ sqlite3_reset(stmt);
+ return error_code;
+}
EXEC(UAM_ERROR_NONE, _uam_device_db_clear(), handle_error);
EXEC(UAM_ERROR_NONE, _ua_service_db_clear(), handle_error);
EXEC(UAM_ERROR_NONE, _ua_device_service_db_clear(), handle_error);
+ EXEC(UAM_ERROR_NONE, _uam_adv_db_clear(), handle_error);
UAM_DBG("Table data deleted ");
error_code = UAM_ERROR_NONE;
DB_ACTION(__ua_device_prepare_insert(db), error_code, handle_error);
handle_error:
-
FUNC_EXIT;
return error_code;
}
if (sqlite3_step(stmt) != SQLITE_DONE) {
UAM_ERR("Failed to insert device info: %s",
- sqlite3_errmsg(__uam_db_recover_database()));
+ sqlite3_errmsg(__uam_db_recover_database()));
error_code = UAM_ERROR_DB_FAILED;
goto handle_error;
}