Add basic change for v1453

Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/include/ql_v2/ql_absys_api.h b/mbtk/include/ql_v2/ql_absys_api.h
new file mode 100755
index 0000000..6896f38
--- /dev/null
+++ b/mbtk/include/ql_v2/ql_absys_api.h
@@ -0,0 +1,149 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @file ql_absys.h
+  @brief
+       This file declare absys interface
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+  Copyright (c) 2018 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
+  Quectel Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+  EDIT HISTORY
+  This section contains comments describing changes made to the file.
+  Notice that changes are listed in reverse chronological order.
+  $Header: $
+  when       who          what, where, why
+  --------   ---          ----------------------------------------------------------
+  2021.12.20   jessie.lei     Created .
+-------------------------------------------------------------------------------------------------*/
+
+
+#ifndef QL_ABSYS_H_
+#define QL_ABSYS_H_
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <errno.h>
+#include "fota_info.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define PARTITION_NAME_SIZE 16
+
+
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * System ID: The dual system platforms have 2 systems: A and B.
+ *
+ */
+//--------------------------------------------------------------------------------------------------
+typedef enum absystem
+{
+    SYSTEM_A = 0,
+    SYSTEM_B = 1
+} absystem_t;
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * system status
+ */
+//--------------------------------------------------------------------------------------------------
+typedef struct
+{
+    fota_state_t ota_state;        ///< the device ota upgrade status
+    bool is_damaged;               ///< whether the device have damaged partition
+    uint8_t damaged_partname[PARTITION_NAME_SIZE];  ///< which partition damaged, and tiggered the device A/B system switch
+} sysstatus_t;
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * @brief
+ * 		get current system status, fota status & A/B partition status.
+ * @Parameter
+        [OUT] sys_state, store the status to this struct for the caller could read current system status.
+ * @return
+ *      - On success               0
+ *      - On failure              -1
+ */
+//--------------------------------------------------------------------------------------------------
+int ql_absys_getstatus(sysstatus_t *sys_state);
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * @brief
+ * 		get current active system is A or B.
+ * @Parameter
+        [InOut] cur_system, store the current active system info to this enmu.
+ * @return
+ *      - On success               0, success to get current active system
+ *      - On failure              -1, failed to get current active system
+ */
+//--------------------------------------------------------------------------------------------------
+int ql_absys_get_cur_active_part(absystem_t *cur_system);
+
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * @brief
+ *      Set flags in fota state file, need the caller do reboot system action atfer this api return 0, then A/B system will be switch atfer reboot.
+ *      If fota state is SUCCEED or NEEDSYNC (A/B system is sync), it is okay to switch A/B system, API will be return 0.
+ *      If fota state is WRITEDONE (A/B system is not sync), it is okay to switch A/B system and will be set fota state to NEEDSYNC, API will be return 0.
+ *      If fota state is UPDATE or BACKUP (A/B system is not sync), indicate the inactive partition is being updated and can not switch A/B, API will be return -2
+ *      If fota state is FAILED (A/B system is not sync), indicate the inactive partition was damaged and can not switch A/B, API will be return -3
+ * @Parameter
+ *     No parameter
+ * @return
+ *      - On success   0  indicate the switch flag was set succeed
+ *      - On failure   -1 get or set fota state and absys info failed;
+ *                     -2 indicate the inactive partition was damaged by ota upgrade, could not switch;
+ *                     -3 indicate the inactive partition is being upgraded or backup is in progress.
+ */
+//--------------------------------------------------------------------------------------------------
+int ql_absys_switch(void);
+
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * @brief
+ * 		Program a synchronization active slot partition data to non-active partition
+ * @Parameter
+ *      No parameter
+ * @return
+ *      - On success             0
+ *      - On failure            -1
+ */
+//--------------------------------------------------------------------------------------------------
+int ql_absys_sync(void);
+
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * @brief
+ * 		Program a synchronization active slot partition data to non-inactive partition
+ * @Parameter
+ *  [IN] cpu_loading_level       0   ql_otad cpuloading 98%
+ *                               1   ql_otad cpuloading 55%
+ *                               2   ql_otad cpuloading 38%
+ *                               3   ql_otad cpuloading 30%
+ *                               4   ql_otad cpuloading 25%
+ *                               5   ql_otad cpuloading 20%
+ * @return
+ *      - On success             0
+ *      - On failure            -1
+ */
+//--------------------------------------------------------------------------------------------------
+int ql_absys_sync_control(int cpu_loading_level);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //QL_ABSYS_H_