Add T106 header file.

Change-Id: I139abf126f194dc011d5cdf531722152f90a1e90
diff --git a/mbtk/include/lynq/liblog.h b/mbtk/include/lynq/liblog.h
new file mode 100755
index 0000000..d1ca261
--- /dev/null
+++ b/mbtk/include/lynq/liblog.h
@@ -0,0 +1,36 @@
+#ifndef __LIBLOG_H__
+#define __LIBLOG_H__
+
+#include <unistd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum
+{
+    LOG_UNSET = -1,
+    LOG_VERBOSE = 0,
+    LOG_ERROR,  
+    LOG_WARNING,
+    LOG_INFO,
+    LOG_DEBUG,  
+    LOG_LEVEL_MAX
+}log_level_enum;
+
+void lynq_log_global_output(log_level_enum Level,const char *format,...);
+void lynq_log_configuration_init(const char *log_name);
+const char* lynq_read_log_version();
+
+//log level api
+int lynq_set_log_level(const char * module_name, log_level_enum level);
+int lynq_get_log_level(const char * module_name, log_level_enum *level);
+int lynq_set_special_log_level(const char * exe_name, const char * module_name, log_level_enum level);
+int lynq_get_special_log_level(const char * exe_name, const char * module_name, log_level_enum *level);
+int lynq_notify_recalc_log_level(pid_t pid);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  //__LOG_H__
diff --git a/mbtk/include/lynq/liblynq-at-common.h b/mbtk/include/lynq/liblynq-at-common.h
new file mode 100755
index 0000000..5ca8ca8
--- /dev/null
+++ b/mbtk/include/lynq/liblynq-at-common.h
@@ -0,0 +1,14 @@
+#ifndef LIBLYNQ_AT_COMMON_H
+#define LIBLYNQ_AT_COMMON_H 1
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void ( *lynq_atsvc_incb )( const char *input,const int length);
+typedef void ( *lynq_atsvc_outcb )(char *output, int out_max_size, int mode);
+lynq_atsvc_incb lynq_register_at_common(lynq_atsvc_outcb out_cb);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
\ No newline at end of file
diff --git a/mbtk/include/lynq/lynq-adc.h b/mbtk/include/lynq/lynq-adc.h
new file mode 100755
index 0000000..0af4d5d
--- /dev/null
+++ b/mbtk/include/lynq/lynq-adc.h
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum ADC_CHANNEL_ENUM
+{
+    QADC_NONE = 0,
+    ADC0 =1,
+    ADC1 =2,
+    ADC2 =3,
+    QADC_END
+}ADC_CHANNEL_E;
+
+int qser_adc_show(ADC_CHANNEL_E qadc);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/mbtk/include/lynq/lynq-gpio.h b/mbtk/include/lynq/lynq-gpio.h
new file mode 100755
index 0000000..5af9f50
--- /dev/null
+++ b/mbtk/include/lynq/lynq-gpio.h
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAX_GPIO_NUM        (200)
+static void *test_gpio_handle[MAX_GPIO_NUM]={NULL};
+
+int lynq_gpio_init(int gpio, int direction, int value, int pullsel);
+
+int lynq_gpio_deinit(int gpio);
+
+int lynq_gpio_direction_set(int gpio, int direction);
+
+int lynq_gpio_value_set(int gpio, int value);
+
+int lynq_gpio_value_get(int gpio);
+
+int lynq_gpio_pullsel_set(int gpio, int pullsel);
+
+int lynq_gpio_pullsel_get(int gpio);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/mbtk/include/lynq/lynq-irq.h b/mbtk/include/lynq/lynq-irq.h
new file mode 100755
index 0000000..36fd9ed
--- /dev/null
+++ b/mbtk/include/lynq/lynq-irq.h
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+int line_gpio[15]={-1,48,49,50,51,52,53,54,119,128,129,-1,131,-1,125};//this is the line match gpio
+
+typedef void (*irq_handler)(void);
+
+int lynq_irq_install(int line, irq_handler irq_handler, int trig_type);
+
+int lynq_irq_uninstall(int line);
+
+int lynq_irq_set_type(int line, int trig_type);
+
+int lynq_irq_get_type(int line);
+
+int lynq_irq_set_wake(int line, int en);
+
+int lynq_irq_get_wake(int line);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/mbtk/include/qser/qser_audio.h b/mbtk/include/lynq/lynq-qser-audio.h
similarity index 61%
rename from mbtk/include/qser/qser_audio.h
rename to mbtk/include/lynq/lynq-qser-audio.h
index 8bad8e2..93e78c9 100755
--- a/mbtk/include/qser/qser_audio.h
+++ b/mbtk/include/lynq/lynq-qser-audio.h
@@ -1,41 +1,40 @@
-/*
-* qser_audio.h
+/*******************************************************
 *
-* QSER audio header file.
+* @brief: Add audio api
+* @details:  add liblynq-qser-audio api
+* @author:   yu.dong
+* @date:     2023.9.28
+* @version:  V1.0
+* @copyright:Copyright (c) MobileTek
 *
-* Author : lb
-* Date   : 2023/11/23 10:52:01
-*/
-#ifndef _QSER_AUDIO_H
-#define _QSER_AUDIO_H
-#include "mbtk_type.h"
+*********************************************/
+#ifndef LYNQ_QSER_AUDIO
+#define LYNQ_QSER_AUDIO
+
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 typedef void (*_cb_onPlayer)(int);
 
 int qser_AudPlayer_Open(char* device, _cb_onPlayer cb_fun);
-
 int qser_AudPlayer_PlayFrmFile(int hdl, const char *fd, int offset);
-
 int qser_AudPlayer_Pause(int hdl);
-
 int qser_AudPlayer_Resume(int hdl);
-
 void qser_AudPlayer_Stop(int hdl);
-
 void qser_AudPlayer_Close(int hdl);
 
 int qser_AudRecorder_Open(char* device, _cb_onPlayer cb_fun);
-
 int qser_AudRecorder_StartRecord(int hdl, const char *fd, int offset);
-
 int qser_AudRecorder_Pause(void);
-
 int qser_AudRecorder_Resume(void);
-
 void qser_AudRecorder_Stop(void);
-
 void qser_AudRecorder_Close(void);
 
 void qser_Audio_Deinit(void);
 
-#endif /* _QSER_AUDIO_H */
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/mbtk/include/lynq/lynq-qser-autosuspend.h b/mbtk/include/lynq/lynq-qser-autosuspend.h
new file mode 100755
index 0000000..8ea9c01
--- /dev/null
+++ b/mbtk/include/lynq/lynq-qser-autosuspend.h
@@ -0,0 +1,71 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdlib.h>
+#include <pthread.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAX_LOCK_NUM 128
+
+#define E_READ -2
+#define E_WRITE -3
+#define E_TABLE_FULL -4
+#define E_LOCK_EXIST -5
+#define E_INPUT_ERROR -6
+
+typedef enum 
+{
+    E_QL_LPM_FALLING = 0, /* Falling, Means wakeupin falling to wakeup the module, or wakeupout falling to wakeup mcu
+. */
+    E_QL_LPM_RISING = 1, /* Rising, Means  wakeupin rising to wakeup the module,  or wakeupout rising to wakeup  mcu. 
+*/
+}qser_lpm_edge_t;
+
+typedef int qser_lpm_pin_t;
+
+
+typedef struct{
+    qser_lpm_pin_t wakeupin_pin;
+    qser_lpm_edge_t wakeupin_edge;
+}qser_lpm_wakeupin_data_t;
+
+typedef struct{
+    qser_lpm_pin_t wakeupout_pin;
+    qser_lpm_edge_t wakeupout_edge;
+}qser_lpm_wakeupout_data_t;
+
+
+typedef void (*qser_lpm_Handler_t)
+(
+    qser_lpm_edge_t lpm_edge
+);
+
+typedef struct{
+    qser_lpm_wakeupin_data_t wakeupin;
+    qser_lpm_wakeupout_data_t wakeupout;
+}qser_pm_cfg_t;
+
+
+typedef struct
+{
+    char lock_name[MAX_LOCK_NUM][64];
+} LOCK_TABLE;
+
+int read_lock_table(void);
+int qser_lpm_init(qser_lpm_Handler_t qser_lpm_handler, qser_pm_cfg_t *qser_lpm_cfg);
+int qser_lpm_deinit(void);
+int qser_autosuspend_enable(char enable);
+int qser_wakelock_create(const char *name, size_t len);
+int qser_wakelock_lock(int fd);
+int qser_wakelock_unlock(int fd);
+int qser_wakelock_destroy(int fd);
+
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/mbtk/include/lynq/lynq-qser-data.h b/mbtk/include/lynq/lynq-qser-data.h
new file mode 100755
index 0000000..c84ab21
--- /dev/null
+++ b/mbtk/include/lynq/lynq-qser-data.h
@@ -0,0 +1,272 @@
+#ifndef __LYNQ_QSER_DATA_H__
+#define __LYNQ_QSER_DATA_H__
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <stdbool.h>
+#include <netinet/in.h>
+
+typedef enum {
+	QSER_DATA_CALL_ERROR_NONE = 0,
+	QSER_DATA_CALL_ERROR_INVALID_PARAMS,
+} qser_data_call_error_e;
+
+typedef enum {
+	QSER_DATA_CALL_DISCONNECTED = 0,            /*!< call is disconnected */
+	QSER_DATA_CALL_CONNECTED,                   /*!< call is connected */
+} qser_data_call_state_e;
+
+typedef enum {
+	QSER_DATA_CALL_TYPE_IPV4 = 0,           /*!< IPv4 call. */
+	QSER_DATA_CALL_TYPE_IPV6,               /*!< IPv6 call. */
+	QSER_DATA_CALL_TYPE_IPV4V6,             /*!< IPv4 and IPv6 call (Only used call start or stop). */
+} qser_data_call_ip_family_e;
+
+typedef enum {
+	QSER_APN_PDP_TYPE_IPV4 = 0,
+	QSER_APN_PDP_TYPE_PPP,
+	QSER_APN_PDP_TYPE_IPV6,
+	QSER_APN_PDP_TYPE_IPV4V6,
+} qser_apn_pdp_type_e;
+
+typedef enum {
+	QSER_APN_AUTH_PROTO_DEFAULT = 0,
+	QSER_APN_AUTH_PROTO_NONE,
+	QSER_APN_AUTH_PROTO_PAP,
+	QSER_APN_AUTH_PROTO_CHAP,
+	QSER_APN_AUTH_PROTO_PAP_CHAP,
+} qser_apn_auth_proto_e;
+
+#define QSER_APN_MAX_LIST 8
+#define QSER_APN_NAME_SIZE 150
+#define QSER_APN_USERNAME_SIZE 127
+#define QSER_APN_PASSWORD_SIZE 127
+
+struct v4_address_status {
+	struct in_addr ip;                    /*!< Public IPv4 address. */
+	struct in_addr gateway;               /*!< Public IPv4 gateway. */
+	struct in_addr pri_dns;               /*!< Primary Domain Name Service IP address. */
+	struct in_addr sec_dns;               /*!< Secondary Domain Name Service IP address. */
+};
+
+struct v6_address_status {
+	struct in6_addr ip;                   /*!< Public IPv6 address. */
+	struct in6_addr gateway;              /*!< Public IPv6 gateway. */
+	struct in6_addr pri_dns;              /*!< Primary Domain Name Service IPv6 address. */
+	struct in6_addr sec_dns;              /*!< Secondary Domain Name Service IPv6 address. */
+};
+
+typedef struct {
+	char profile_idx;                               /*!< UMTS/CMDA profile ID. */
+	char name[16];                                  /*!< Interface Name. */
+	qser_data_call_ip_family_e ip_family;             /*!< IP version. */
+	qser_data_call_state_e state;                     /*!< The dial status. */
+	qser_data_call_error_e err;                       /*!< The Reason code after data call disconnected. */
+	union {
+		struct v4_address_status v4;            /*!< IPv4 information. */
+		struct v6_address_status v6;            /*!< IPv6 information. */
+	};
+} qser_data_call_state_s;
+
+/*
+ *!< Client callback function used to post event indications.
+ */
+typedef void (*qser_data_call_evt_cb_t)(qser_data_call_state_s *state);
+
+typedef struct {
+	char profile_idx;                        /*!< UMTS/CMDA profile ID. */
+	bool reconnect;                          /*!< Whether to re-dial after disconnecting the network. */
+	qser_data_call_ip_family_e ip_family;      /*!< IP version. */
+	char cdma_username[QSER_APN_USERNAME_SIZE];     /*!< Username used during data network authentication. */
+	char cdma_password[QSER_APN_PASSWORD_SIZE];     /*!< Password to be used during data network authentication. */
+} qser_data_call_s;
+
+struct pkt_stats {
+	unsigned long pkts_tx;              /*!< Number of packets transmitted. */
+	unsigned long pkts_rx;              /*!< Number of packets received. */
+	long long bytes_tx;                 /*!< Number of bytes transmitted. */
+	long long bytes_rx;                 /*!< Number of bytes received. */
+	unsigned long pkts_dropped_tx;      /*!< Number of transmit packets dropped. */
+	unsigned long pkts_dropped_rx;      /*!< Number of receive packets dropped. */
+};
+
+struct v4_info {
+	char name[16];                          /*!< Interface Name. */
+	qser_data_call_state_e state;             /*!< The dial status. */
+	bool reconnect;                         /*!< re-dial flag. */
+	struct v4_address_status addr;          /*!< IPv4 IP Address information. */
+	struct pkt_stats stats;                 /*!< IPv4 statics */
+};
+
+struct v6_info {
+	char name[16];                          /*!< Interface Name. */
+	qser_data_call_state_e state;             /*!< The dial status. */
+	bool reconnect;                         /*!< re-dial flag. */
+	struct v6_address_status addr;          /*!< IPv6 IP Address information. */
+	struct pkt_stats stats;                 /*!< IPv6 statics */
+};
+
+typedef struct {
+	char profile_idx;                        /*!< UMTS/CDMA profile ID. */
+	qser_data_call_ip_family_e ip_family;      /*!< IP version. */
+	struct v4_info v4;                       /*!< IPv4 information */
+	struct v6_info v6;                       /*!< IPv6 information */
+} qser_data_call_info_s;
+
+typedef struct {
+	unsigned char profile_idx;              /*!< UMTS/CDMA profile ID. */
+	qser_apn_pdp_type_e pdp_type;             /*!< Packet Data Protocol (PDP) type specifies the type of data payload
+	                                             exchanged over the airlink when the packet data session is
+	                                             established with this profile. */ 
+	qser_apn_auth_proto_e auth_proto;         /*!< Authentication Protocol. */
+	char apn_name[QSER_APN_NAME_SIZE];        /*!< A string parameter that is a logical name used to select the GGSN
+	                                             and external packet data network. */ 
+	char username[QSER_APN_USERNAME_SIZE];    /*!< Username used during data network authentication. */
+	char password[QSER_APN_PASSWORD_SIZE];    /*!< Password to be used during data network authentication. */
+    char apn_type[QSER_APN_NAME_SIZE];
+} qser_apn_info_s;
+
+typedef struct {
+	qser_apn_pdp_type_e pdp_type;             /*!< Packet Data Protocol (PDP) type specifies the type of data payload
+						  exchanged over the airlink when the packet data session is
+						  established with this profile. */ 
+	qser_apn_auth_proto_e auth_proto;         /*!< Authentication Protocol. */
+	char apn_name[QSER_APN_NAME_SIZE];        /*!< A string parameter that is a logical name used to select the GGSN
+						  and external packet data network. */ 
+	char username[QSER_APN_USERNAME_SIZE];    /*!< Username used during data network authentication. */
+	char password[QSER_APN_PASSWORD_SIZE];    /*!< Password to be used during data network authentication. */
+    char apn_type[QSER_APN_NAME_SIZE];
+} qser_apn_add_s;
+
+typedef struct {
+	int cnt;
+	qser_apn_info_s apn[QSER_APN_MAX_LIST];
+} qser_apn_info_list_s;
+
+
+/**
+ * Initialization data call module, and callback function registered.
+ *
+ * @param [in] evt_cb           callback fucntion
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int qser_data_call_init(qser_data_call_evt_cb_t evt_cb);
+
+/**
+ * Destroy data call module, and unregister callback funciton
+ *
+ * @param 
+ *   None
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern void qser_data_call_destroy(void);
+
+/**
+ * Starts a data call. If profile index is zero, it will call CDMA profile.
+ *
+ * @param [in] data_call        The data call parameters
+ * @param [out] error           Error code returned by data call 
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int qser_data_call_start(qser_data_call_s *data_call, qser_data_call_error_e *err);
+
+/**
+ * Stop a data call.
+ *
+ * @param [in] profile_idx      UMTS/CDMA profile ID
+ * @param [in] ip_family        IP Version
+ * @param [out] error           Error code returned by data call 
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int qser_data_call_stop(char profile_idx, qser_data_call_ip_family_e ip_family, qser_data_call_error_e *err);
+
+/**
+ * Get a data call information.
+ *
+ * @param [in] profile_idx      UMTS/CDMA profile ID
+ * @param [in] ip_family        IP Version
+ * @param [out] info            The Data Call information
+ * @param [out] error           Error code returned by data call 
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int qser_data_call_info_get(char profile_idx,
+				 qser_data_call_ip_family_e ip_family,
+				 qser_data_call_info_s *info,
+				 qser_data_call_error_e *err);
+
+/**
+ * Changes the settings in a configured profile. 
+ *
+ * @param [in] apn      the profile information.
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned, such apn not exist.
+ * 
+ */
+extern int qser_apn_set(qser_apn_info_s *apn);
+
+/**
+ * Retrieves the settings from a configured profile.
+ *
+ * @param [in] profile_idx        UMTS/CDMA profile ID
+ * @param [out] apn               the profile information.
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int qser_apn_get(unsigned char profile_idx, qser_apn_info_s *apn);
+
+/**
+ * Retrieves the settings from a configured profile.
+ *
+ * @param [in] apn               the profile information.
+ * @param [out] profile_idx        UMTS/CDMA profile ID
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int qser_apn_add(qser_apn_add_s *apn, unsigned char *profile_idx);
+
+/**
+ * Delete a configured profile.
+ *
+ * @param [in] profile_idx        UMTS/CDMA profile ID
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int qser_apn_del(unsigned char profile_idx);
+
+/**
+ * Retrieves the settings from a configured profile list.
+ *
+ * @param [out] apn_list          the profile list information.
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int qser_apn_get_list(qser_apn_info_list_s *apn_list);
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/mbtk/include/lynq/lynq-qser-fota.h b/mbtk/include/lynq/lynq-qser-fota.h
new file mode 100755
index 0000000..34be9aa
--- /dev/null
+++ b/mbtk/include/lynq/lynq-qser-fota.h
@@ -0,0 +1,26 @@
+/*******************************************************

+* 

+* @brief:

+* @details:  add fota upgrade api

+* @author:   l.yang

+* @date:     2023.8.3

+* @version:  V1.0

+* @copyright:Copyright (c) MobileTek 

+*

+*********************************************/

+#ifndef LYNQ_QSER_FOTA

+#define LYNQ_QSER_FOTA 

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+int lynq_get_upgrade_status(void);

+int lynq_fota_set_addr_value(char        *value,int size);

+int lynq_fota_nrestart(void);

+int lynq_rock_main(int first_run);

+

+#ifdef __cplusplus

+}

+#endif

+#endif

+

diff --git a/mbtk/include/lynq/lynq-qser-voice.h b/mbtk/include/lynq/lynq-qser-voice.h
new file mode 100755
index 0000000..8748ae3
--- /dev/null
+++ b/mbtk/include/lynq/lynq-qser-voice.h
@@ -0,0 +1,139 @@
+/**
+ *@file     qser_voice.h
+ *@date     2017-11-30
+ *@author
+ *@brief
+ */
+
+
+#ifndef __LYNQ_QSER_VOICE_H__
+#define __LYNQ_QSER_VOICE_H__
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "mbtk_type.h"
+
+typedef enum
+{
+    E_QSER_VCALL_EXTERNAL_SLOT_1,
+    E_QSER_VCALL_EXTERNAL_SLOT_2,
+    E_QSER_VCALL_EMBEDDED,
+    E_QSER_VCALL_REMOTE,
+    E_QSER_VCALL_ID_MAX
+}E_QSER_VCALL_ID_T;
+
+typedef enum
+{
+    E_QSER_VOICE_CALL_STATE_INCOMING      = 0x0000, /**< MT incoming; CC setup. */
+    E_QSER_VOICE_CALL_STATE_DIALING       = 0x0001, /**< Dialing state. */
+    E_QSER_VOICE_CALL_STATE_ALERTING      = 0x0002, /**< MT call waiting; MO alterting. */
+    E_QSER_VOICE_CALL_STATE_ACTIVE        = 0x0003, /**< Call is active. */
+    E_QSER_VOICE_CALL_STATE_HOLDING       = 0x0004, /**< Call is on hold. */
+    E_QSER_VOICE_CALL_STATE_END           = 0x0005, /**< Call is disconnected. */
+    E_QSER_VOICE_CALL_STATE_WAITING       = 0x0006, /**< Call is waiting. */
+}qser_voice_call_state_t;
+
+typedef enum
+{
+    E_QSER_VOICE_CALL_WAITING_VOICE_ENABLED       = 0, /**<  Voice call waiting enabled. */
+    E_QSER_VOICE_CALL_WAITING_DISABLED            = 1, /**<  Voice call waiting disabled. */
+}E_QSER_VOICE_CALL_WAITING_SERVICE_T;
+
+typedef struct
+{
+    E_QSER_VOICE_CALL_WAITING_SERVICE_T   waiting_service;
+}qser_voice_call_waiting_service_t;
+
+typedef qser_voice_call_state_t E_QSER_VOICE_CALL_STATE_T;
+
+typedef uint32_t voice_client_handle_type;
+
+/* Callback function registered via QSER_Voice_Call_AddStateHandler;
+   This will be called if any stated changed of call_id
+*/
+typedef void (*QSER_VoiceCall_StateHandlerFunc_t)
+(
+    int                     caLOCAL_C_INCLUDESll_id,
+    char*                   phone_num,
+    E_QSER_VOICE_CALL_STATE_T state,
+    void                    *contextPtr
+);
+
+/* Init voice module and return h_voice, this should be called before any other APIs */
+int qser_voice_call_client_init(voice_client_handle_type  *ph_voice);
+
+/* DeInit voice module and release resources, this should be called at last */
+int qser_voice_call_client_deinit(voice_client_handle_type h_voice);
+
+/* Add callback function, if any call state changed, handlerPtr will be called to notify App */
+int qser_voice_call_addstatehandler(voice_client_handle_type          h_voice,
+                                  QSER_VoiceCall_StateHandlerFunc_t   handlerPtr,
+                                  void*                             contextPtr);
+
+/* Remove callback function, won't receive any notify anymore */
+int qser_voice_call_removestatehandle(voice_client_handle_type       h_voice);
+
+/* Start call and return call_id, this can be used in the later */
+int qser_voice_call_start(voice_client_handle_type    h_voice,
+                        E_QSER_VCALL_ID_T             simId,
+                        char*                       phone_number,   ///< [IN] Destination identifier for the voice
+                        int                         *call_id);       ///< [OUT] call id
+
+/* End call of call_id, which returned by QSER_Voice_Call_Start or callback func register via QSER_Voice_Call_AddStateHandler */
+int qser_voice_call_end(  voice_client_handle_type    h_voice,
+                        int                         call_id);        ///< [IN] call id, return by QSER_Voice_Start
+
+/* Answer the call of call_id, which returned by callback func register via QSER_Voice_Call_AddStateHandler */
+int qser_voice_call_answer(voice_client_handle_type    h_voice,
+                         int                         call_id );
+
+int qser_voice_call_switch_waiting_or_holding_and_active(voice_client_handle_type h_voice);
+
+//set voice speech volume
+int qser_voice_set_speech_volume(const int volume);
+
+//Get voice speech volume
+int qser_voice_get_speech_volume(int *volume);
+
+//Set voice call waiting
+int qser_voice_call_setwaiting
+(
+    int                                 h_voice,
+    qser_voice_call_waiting_service_t e_service
+);
+
+//Get voice call waiting status
+int qser_voice_call_getwaitingstatus
+(
+    int                                 h_voice,
+    qser_voice_call_waiting_service_t *pe_service
+);
+
+
+/*
+Usage 1 (register callback and wait for new call in, then answer):
+1, QSER_Voice_Call_Client_Init
+2, QSER_Voice_Call_AddStateHandler(pf_cb)
+3, wait for new call arrive, pf_cb will pass the call_id to app.
+4, QSER_Voice_Call_Answer(call_id)
+5, QSER_Voice_Call_End
+6, QSER_Voice_Call_Client_Deinit
+
+
+Usage 2 (call out):
+1, QSER_Voice_Call_Client_Init
+2, QSER_Voice_Call_AddStateHandler(pf_cb)
+3, QSER_Voice_Call_Start
+4, QSER_Voice_Call_End
+5, QSER_Voice_Call_Client_Deinit
+
+
+*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // __QSER_VOICE_H__
+
diff --git a/mbtk/include/qser/qser_alarm.h b/mbtk/include/lynq/lynq_alarm.h
similarity index 100%
rename from mbtk/include/qser/qser_alarm.h
rename to mbtk/include/lynq/lynq_alarm.h
diff --git a/mbtk/include/lynq/lynq_audio_api.h b/mbtk/include/lynq/lynq_audio_api.h
deleted file mode 100755
index 44a3278..0000000
--- a/mbtk/include/lynq/lynq_audio_api.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-*
-* Data : 2022/10/27 17:26:46
-* Author : LuoJian
-*/
-#ifndef _LYNQ_AUDIO_API_H
-#define _LYNQ_AUDIO_API_H
-#ifdef MBTK_PLATFORM_ASR1803
-#include "mbtk_audio.h"
-#endif
-
-//播放音频文件
-int lynq_media_play_audio(const char *path);
-
-//停止播放音频文件
-void lynq_media_stop_audio(void);
-
-//录制音频文件
-int lynq_media_rec_audio(const char *path);
-
-//停止录制音频文件
-void lynq_media_rec_stop_audio(void);
-
-//获取功放音量
-//volume (0~100)
-int lynq_get_spk_volume(int* volume);
-
-//设置功放音量。
-int lynq_set_spk_volume(const int volume);
-
-//获取麦克风音量
-int lynq_get_mic_volume(int* volume);
-
-//设置麦克风音量
-int lynq_set_mic_volume(const int volume);
-
-#ifdef MBTK_PLATFORM_ASR1803
-int lynq_audio_ubus_client_init(mbtk_audio_client_handle_type *ph_audio, mbtk_dtmf_cb cb);
-
-int lynq_audio_ubus_client_deinit(mbtk_audio_client_handle_type h_audio);
-#endif
-
-#endif /* _LYNQ_AUDIO_API_H */
-
diff --git a/mbtk/include/lynq/lynq_autosuspend.h b/mbtk/include/lynq/lynq_autosuspend.h
new file mode 100755
index 0000000..efd1219
--- /dev/null
+++ b/mbtk/include/lynq/lynq_autosuspend.h
@@ -0,0 +1,37 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <unistd.h>
+#include <dlfcn.h>
+#include <pthread.h>
+#include <stdbool.h>
+#include <time.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+struct time_info_t
+{
+    long sleep_start_time;
+    long wakeup_time;
+};
+
+int lynq_autosleep_enable(void);
+int lynq_autosleep_disable(void);
+int lynq_wait_wakeup_event(long *sleep_start_time, long * wakeup_time);
+
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+int lynq_set_lpmode(int lp_mode);
+int release_wake_lock(char *name);
+int acquire_wake_lock(int lock, char *name);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/mbtk/include/lynq/lynq_call.h b/mbtk/include/lynq/lynq_call.h
new file mode 100755
index 0000000..3bb398f
--- /dev/null
+++ b/mbtk/include/lynq/lynq_call.h
@@ -0,0 +1,181 @@
+#ifndef LYNQ_CALL_H

+#define LYNQ_CALL_H 1

+#ifdef __cplusplus

+extern "C" {

+#endif

+#define LYNQ_PHONE_NUMBER_MAX 32

+#define INDEX_IS_NUMBER( alpha_char )   \

+   ( ( (alpha_char >= '0') && (alpha_char <= '9') ) ? 1 : 0 )

+#define LYNQ_CALL_MAX 3

+#define LYNQ_CALL_FAIL_VENDOR_CAUSE 64

+#define MAX_IP_LENGTH 128

+#define MAX_VLAN_INFO_LENGTH 32

+#define MAX_SSRC_INFO_LENGTH 10   /*2^32=4294967296, 10 digit*/

+

+typedef enum {

+    LYNQ_CALL_FAIL_UNOBTAINABLE_NUMBER = 1,

+    LYNQ_CALL_FAIL_NORMAL = 16,

+    LYNQ_CALL_FAIL_BUSY = 17,

+    LYNQ_CALL_FAIL_CONGESTION = 34,

+    LYNQ_CALL_FAIL_ACM_LIMIT_EXCEEDED = 68,

+    LYNQ_CALL_FAIL_CALL_BARRED = 240,

+    LYNQ_CALL_FAIL_FDN_BLOCKED = 241,

+    LYNQ_CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242,

+    LYNQ_CALL_FAIL_IMEI_NOT_ACCEPTED = 243,

+    LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_USSD = 244, /* STK Call Control */

+    LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_SS = 245,

+    LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_DIAL = 246,

+    LYNQ_CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,

+    LYNQ_CALL_FAIL_CDMA_DROP = 1001,

+    LYNQ_CALL_FAIL_CDMA_INTERCEPT = 1002,

+    LYNQ_CALL_FAIL_CDMA_REORDER = 1003,

+    LYNQ_CALL_FAIL_CDMA_SO_REJECT = 1004,

+    LYNQ_CALL_FAIL_CDMA_RETRY_ORDER = 1005,

+    LYNQ_CALL_FAIL_CDMA_ACCESS_FAILURE = 1006,

+    LYNQ_CALL_FAIL_CDMA_PREEMPTED = 1007,

+    LYNQ_CALL_FAIL_CDMA_NOT_EMERGENCY = 1008, /* For non-emergency number dialed

+                                            during emergency callback mode */

+    LYNQ_CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009, /* CDMA network access probes blocked */

+    LYNQ_CALL_FAIL_ERROR_UNSPECIFIED = 0xffff

+} lynq_last_call_fail_cause_t;

+typedef struct

+{

+    lynq_last_call_fail_cause_t cause_code;

+    char vendor_cause[LYNQ_CALL_FAIL_VENDOR_CAUSE];

+}lynqLastCallFailCause;

+int lynq_init_call(int uToken);

+int lynq_deinit_call();

+int lynq_call(int *handle,char addr[]);

+int lynq_call_answer();

+int lynq_call_hungup(int*handle);

+int lynq_call_hungup_all();

+int lynq_set_auto_answercall(const int mode);

+int lynq_get_mute_mic(int *status);

+int lynq_set_mute_mic(const int enable);

+int lynq_get_speech_volume(int *volume);

+int lynq_set_speech_volume(const int volume);

+int lynq_incall_record_start(const char* file_path);

+int lynq_incall_record_stop();

+int lynq_set_DTMF(const char callnum);

+int lynq_set_DTMF_volume(const int volume);

+int lynq_get_current_call_state(int *handle,    int *call_state,int *toa,int *direction,char addr[]);

+/*lei add for T8TSK-17 2022/7/20*/

+int lynq_switch_waiting_or_holding_and_active(void);

+int lynq_hangup_waiting_or_background(void);

+int lynq_hangup_foreground_resume_background(void);

+

+/* add for T106bug-213 2023/9/18 */

+void lynq_release_wait_call();

+

+/*lei add for API-163/API-164 2023/1/3*/

+/**

+ * @brief                  wait_call_state_change

+ *                        

+ * @param  handle            call_id            

+ * @return int

+ */

+int lynq_wait_call_state_change(int *handle);

+/*lei add for API-163/API-164 2023/1/3*/

+/*lei add for T8TSK-17 2022/7/20*/

+

+#ifdef ECALL_SUPPORT

+typedef enum{

+    LYNQ_ECALL_SET_NUMBER = 0,     /* Set Number */

+    LYNQ_ECALL_SET_URI = 1,      /* Set Uri */   

+}LYNQ_ECall_Set_Type;

+

+typedef enum{

+    LYNQ_EMER_CAT_MANUAL_ECALL = 0,      /* Manual Emergency eCall */

+    LYNQ_EMER_CAT_AUTO_ECALL = 1,     /*  Automatic Emergency eCall */

+}LYNQ_ECall_Category;

+

+typedef enum{

+    LYNQ_ECALL_TEST = 0,     /* Test eCall */

+    LYNQ_ECALL_EMERGENCY = 1,      /* Emergency eCall */

+    LYNQ_ECALL_RECONFIG = 2,     /*  Reconfiguration eCall */

+    LYNQ_ECALL_MO_MAX=3,

+    LYNQ_ECALL_CALLBACK = 3,     /*  Callback eCall */

+    LYNQ_ECALL_VAR_MAX, 

+    LYNQ_ECALL_VAR_NONE=LYNQ_ECALL_VAR_MAX,

+}LYNQ_ECall_Variant;

+

+typedef enum{

+    LYNQ_ECALL_SENDING_START = 1,

+    LYNQ_ECALL_SENDING_MSD = 2,

+    LYNQ_ECALL_LLACK_RECEIVED = 3,

+    LYNQ_ECALL_ALACK_POSITIVE_RECEIVED = 4,

+    LYNQ_ECALL_ALACK_CLEARDOWN_RECEIVED = 5,

+    LYNQ_ECALL_DAILING = 9,

+    LYNQ_ECALL_ALERTING = 10,

+    LYNQ_ECALL_ACTIVE = 11,

+    LYNQ_ECALL_DISCONNECTED = 12,

+    LYNQ_ECALL_IMS_ACTIVE = 13,

+    LYNQ_ECALL_IMS_DISCONNECTED = 14,

+    LYNQ_ECALL_ABNORMAL_HANGUP=15,

+    LYNQ_ECALL_IMS_MSD_ACK = 20,

+    LYNQ_ECALL_IMS_UPDATE_MSD = 21,

+    LYNQ_ECALL_IMS_IN_BAND_TRANSFER = 22,

+    LYNQ_ECALL_IMS_MSD_NACK = 23,

+    LYNQ_ECALL_IMS_SRVCC = 24,

+    LYNQ_ECALL_ONLY_DEREGISTRATION = 31,

+    LYNQ_ECALL_MAY_DEREGISTER = 32,

+    LYNQ_ECALL_PSAP_CALLBACK_START = 40,

+    LYNQ_ECALL_PSAP_CALLBACK_IMS_UPDATE_MSD = 41,

+    LYNQ_ECALL_SENDING_START_IN_VOICE=8000,    

+    LYNQ_ECALL_T2_TIMER_OUT = 9000,

+    LYNQ_ECALL_T5_TIMER_OUT = 9001,

+    LYNQ_ECALL_T6_TIMER_OUT = 9002,

+    LYNQ_ECALL_T7_TIMER_OUT = 9003,

+    LYNQ_ECALL_REDIAL_TIMER_OUT = 9004,    

+    LYNQ_ECALL_AUTO_ANS_TIMER_OUT = 9005,

+    LYNQ_ECALL_AUTO_ANS_IMS_TIMER_OUT = 9006,

+    LYNQ_ECALL_UNSPECIFIED = 0xffff,

+}LYNQ_ECall_Indication;

+

+int lynq_set_test_num(LYNQ_ECall_Set_Type type, const char *test_num, int test_num_length);

+int lynq_fast_ecall(int* handle, LYNQ_ECall_Category lynq_ecall_cat, LYNQ_ECall_Variant lynq_ecall_variant,  const char *addr, int addr_length, const unsigned char *msd_data, int msd_length);

+int lynq_set_msd(int* handle, const unsigned char *msd_data, int msd_length);

+int lynq_set_ivs(int enable);

+int lynq_ivs_push_msd();

+int lynq_wait_ecall_indication(int* handle, LYNQ_ECall_Indication *eCall_Indication);

+#endif

+

+/*Audio Path setting begin*/

+typedef enum{

+    AUDIO_MODE_CODEC = 0,     /* Codec */

+    AUDIO_MODE_RTP = 1,      /* RTP */       

+}LYNQ_Audio_Mode;

+

+typedef enum{

+    RTP_CLIENT = 0,     

+    RTP_SERVER =1,

+    RTP_MODE_MAX

+}LYNQ_Rtp_Mode;

+

+typedef enum{

+    Rtp_Ssrc_random = 0,     

+    Rtp_Ssrc_specific =1,   

+}LYNQ_Rtp_Ssrc_Mode;

+

+/*set*/

+int lynq_set_voice_audio_mode(const LYNQ_Audio_Mode audio_mode); 

+int lynq_set_remote_rtp_ip(const char* ip, const int ip_length);

+int lynq_set_vlan_info(const char* vlan_info, const int vlan_info_length);

+int lynq_set_rtp_port(const LYNQ_Rtp_Mode rtp_mode, const int port);

+int lynq_set_rtp_param(const int clock_rate,const int channels,const int latency); //only for client

+int lynq_set_call_rtp_ssrc(const LYNQ_Rtp_Ssrc_Mode ssrc_mode, const unsigned int ssrc);

+

+/*get*/

+LYNQ_Audio_Mode lynq_get_voice_audio_mode();

+int lynq_get_remote_rtp_ip(char* ip, const int ip_length);

+int lynq_get_vlan_info(char* vlan_info, const int vlan_info_length);

+int lynq_get_rtp_port(const LYNQ_Rtp_Mode rtp_mode, int* port);

+int lynq_get_rtp_param(int* clock_rate,int* channels, int* latency);//only for client

+int lynq_get_call_rtp_ssrc(int* ssrc_mod, unsigned int* ssrc);

+/*Audio Path setting end*/

+

+void lynq_set_test_mode(const int test_mode);

+#ifdef __cplusplus

+}

+#endif

+#endif

diff --git a/mbtk/include/lynq/lynq_call_api.h b/mbtk/include/lynq/lynq_call_api.h
deleted file mode 100755
index 889875f..0000000
--- a/mbtk/include/lynq/lynq_call_api.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-*
-* Data : 2022/11/07 16:57:28
-* Author : HanZhiyu
-*/
-
-#ifdef MBTK_PLATFORM_ASR1803
-#include "mbtk_audio.h"
-#endif
-
-typedef enum {
-    LYNQ_CALL_FAIL_UNOBTAINABLE_NUMBER = 1,
-    LYNQ_CALL_FAIL_NORMAL = 16,
-    LYNQ_CALL_FAIL_BUSY = 17,
-    LYNQ_CALL_FAIL_CONGESTION = 34,
-    LYNQ_CALL_FAIL_ACM_LIMIT_EXCEEDED = 68,
-    LYNQ_CALL_FAIL_LYNQ_CALL_BARRED = 240,
-    LYNQ_CALL_FAIL_FDN_BLOCKED = 241,
-    LYNQ_CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242,
-    LYNQ_CALL_FAIL_IMEI_NOT_ACCEPTED = 243,
-    LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_USSD = 244, /* STK LYNQ_CALL Control */
-    LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_SS = 245,
-    LYNQ_CALL_FAIL_DIAL_MODIFIED_TO_DIAL = 246,
-    LYNQ_CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000,
-    LYNQ_CALL_FAIL_CDMA_DROP = 1001,
-    LYNQ_CALL_FAIL_CDMA_INTERCEPT = 1002,
-    LYNQ_CALL_FAIL_CDMA_REORDER = 1003,
-    LYNQ_CALL_FAIL_CDMA_SO_REJECT = 1004,
-    LYNQ_CALL_FAIL_CDMA_RETRY_ORDER = 1005,
-    LYNQ_CALL_FAIL_CDMA_ACCESS_FAILURE = 1006,
-    LYNQ_CALL_FAIL_CDMA_PREEMPTED = 1007,
-    LYNQ_CALL_FAIL_CDMA_NOT_EMERGENCY = 1008, /* For non-emergency number dialed
-                                            during emergency callback mode */
-    LYNQ_CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009, /* CDMA network access probes blocked */
-    LYNQ_CALL_FAIL_ERROR_UNSPECIFIED = 0xffff
-} lynq_last_call_fail_cause_t;
-
-typedef enum{
-    AUDIO_MODE_CODEC = 0,     /* Codec */
-    AUDIO_MODE_RTP = 1,      /* RTP */
-}LYNQ_Audio_Mode;
-
-typedef enum{
-    RTP_CLIENT = 0,     /*客户端,从远端拉文件到本地播放*/
-RTP_SERVER =1,     /*服务器端,推文件到远端播放*/
-RTP_MODE_MAX
-}LYNQ_Rtp_Mode;
-
-typedef enum{
-    LYNQ_CALL_ACTIVE,
-    LYNQ_CALL_HOLDING,
-    LYNQ_CALL_DIALING,
-    LYNQ_CALL_ALERTING,
-    LYNQ_CALL_INCOMING,
-    LYNQ_CALL_WAITING,
-    LYNQ_CALL_OFFERING,
-}LYNQ_Call_State;
-
-int lynq_init_call(int uToken);
-int lynq_deinit_call(void);
-int lynq_call(int *handle, char addr[]);
-int lynq_call_answer();
-int lynq_call_hungup_all();
-int lynq_call_hungup(int *handle);
-int lynq_hangup_waiting_or_background(void);
-int lynq_switch_waiting_or_holding_and_active(void);
-int lynq_hangup_foreground_resume_background(void);
-int lynq_wait_incoming_call(void *incoming_call_cb);
-int lynq_get_mute_mic (int *status);
-int lynq_set_mute_mic(const int enable);
-int lynq_set_DTMF(const char callnum);
-int lynq_get_current_call_state(int *handle,int *call_state,int*toa,int *direction,char addr[]);
-//void lynq_audio_volume_cb(int volume);
-int lynq_set_speech_volume(const int volume);
-int lynq_get_speech_volume(int * volume);
diff --git a/mbtk/include/lynq/lynq_data.h b/mbtk/include/lynq/lynq_data.h
new file mode 100755
index 0000000..1ee15ba
--- /dev/null
+++ b/mbtk/include/lynq/lynq_data.h
@@ -0,0 +1,82 @@
+#ifndef LYNQ_DATA_H
+#define LYNQ_DATA_H 
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define LYNQ_APN_CHANNEL_MAX 10
+#define LYNQ_PDP_TYPE_MAX_LEN 16
+#define LYNQ_IFACE_NAME_MAX_LEN 50
+#define LYNQ_APN_MAX_LEN 50
+#define LYNQ_TYPE_MAX_LEN 50
+#define LYNQ_ADDRESSES_MAX_LEN 100
+#define LYNQ_DNSES_MAX_LEN 256
+#define LYNQ_GATEWAYS_MAX_LEN 50
+#define LYNQ_PCSCF_MAX_LEN 256
+#define LYNQ_APN_TYPE_MAX_LEN 50
+#define LYNQ_PDP_ADDR_MAX_LEN 64
+#define LYNQ_DNS_ADDR_MAX_LEN 256
+#define LYNQ_GETWAYS_ADDR_MAX_LEN 64
+#define LYNQ_POXY_ADDR_MAX_LEN 64
+
+
+typedef struct {
+    int            status;     /* A RIL_DataCallFailCause, 0 which is PDP_FAIL_NONE if no error */
+    int            suggestedRetryTime; /* If status != 0, this fields indicates the suggested retry
+                                           back-off timer value RIL wants to override the one
+                                           pre-configured in FW.
+                                           The unit is miliseconds.
+                                           The value < 0 means no value is suggested.
+                                           The value 0 means retry should be done ASAP.
+                                           The value of INT_MAX(0x7fffffff) means no retry. */
+    int            cid;        /* Context ID, uniquely identifies this call */
+    int            active;     /* 0=inactive, 1=active/physical link down, 2=active/physical link up */
+    char           type[LYNQ_PDP_TYPE_MAX_LEN];       /* One of the PDP_type values in TS 27.007 section 10.1.1.
+                                   For example, "IP", "IPV6", "IPV4V6", or "PPP". If status is
+                                   PDP_FAIL_ONLY_SINGLE_BEARER_ALLOWED this is the type supported
+                                   such as "IP" or "IPV6" */
+    char           ifname[LYNQ_IFACE_NAME_MAX_LEN];     /* The network interface name */
+    char           addresses[LYNQ_PDP_ADDR_MAX_LEN];  /* A space-delimited list of addresses with optional "/" prefix length,
+                                   e.g., "192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
+                                   May not be empty, typically 1 IPv4 or 1 IPv6 or
+                                   one of each. If the prefix length is absent the addresses
+                                   are assumed to be point to point with IPv4 having a prefix
+                                   length of 32 and IPv6 128. */
+    char           dnses[LYNQ_DNS_ADDR_MAX_LEN];      /* A space-delimited list of DNS server addresses,
+                                   e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
+                                   May be empty. */
+    char           gateways[LYNQ_GETWAYS_ADDR_MAX_LEN];   /* A space-delimited list of default gateway addresses,
+                                   e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
+                                   May be empty in which case the addresses represent point
+                                   to point connections. */
+    char           pcscf[LYNQ_POXY_ADDR_MAX_LEN];    /* the Proxy Call State Control Function address
+                                 via PCO(Protocol Configuration Option) for IMS client. */
+    int            mtu;        /* MTU received from network
+                                   Value <= 0 means network has either not sent a value or
+                                   sent an invalid value */
+} lynq_data_call_response_v11_t;
+
+typedef struct
+{
+    int index;
+    char apn[LYNQ_APN_MAX_LEN];
+    char apnType[LYNQ_APN_TYPE_MAX_LEN];
+}lynq_apn_info;
+
+int lynq_init_data(int uToken);
+int lynq_deinit_data();
+int lynq_setup_data_call(int *handle);
+int lynq_deactive_data_call(int *handle);
+int lynq_setup_data_call_sp(int *handle,char *apn,char *apnType,char *user,char *password,char *authType,char *normalProtocol,char *roamingProtocol);
+int lynq_setup_data_call_sp_t106(int *handle,char *apn,char *apnType,char *user,char *password,char *authType,char *normalProtocol,char *roamingProtocol);
+//int lynq_deactive_data_call_sp(int *handle,char *apnType);
+int lynq_get_data_call_list(int *handle,lynq_data_call_response_v11_t *dataCallList);
+int lynq_wait_data_call_state_change(int *handle);
+int lynq_modify_apn_db(const int cmd,char *id,char *mcc,char *mnc,char *apn,char *apntype,char *user,char *password,char *normalprotocol,char *roamingprotocol,char *carrier,char *out);
+int lynq_reset_apn(char *result);
+int lynq_get_apn_table(int *size,lynq_apn_info **list);
+void lynq_release_wait_data_call();
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/mbtk/include/lynq/lynq_deflog.h b/mbtk/include/lynq/lynq_deflog.h
new file mode 100755
index 0000000..3fecfc7
--- /dev/null
+++ b/mbtk/include/lynq/lynq_deflog.h
@@ -0,0 +1,73 @@
+#ifndef __LYNQ_DEFLOG_H__

+#define __LYNQ_DEFLOG_H__

+#include "liblog.h"

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+typedef void (*LYNQ_WRITE_LOG_PTR)(log_level_enum level, const char *format, ...);

+extern LYNQ_WRITE_LOG_PTR lynq_write_log;

+LYNQ_WRITE_LOG_PTR lynq_log_function_init(const char *log_name);

+

+int lynq_syslog_set_file_size(int value);

+int lynq_syslog_get_file_size(void);

+int lynq_syslog_set_file_rotate(int value);

+int lynq_syslog_get_file_rotate(void);

+

+#ifdef __cplusplus

+}

+#endif

+

+#define lynq_log_verbose(...)  do { lynq_write_log(LOG_VERBOSE,__VA_ARGS__);} while (0)

+#define lynq_log_error(...)  do {lynq_write_log(LOG_ERROR,__VA_ARGS__);} while (0)

+#define lynq_log_warning(...)  do {lynq_write_log(LOG_WARNING,__VA_ARGS__);} while (0)

+#define lynq_log_info(...)  do {lynq_write_log(LOG_INFO,__VA_ARGS__);} while (0)

+#define lynq_log_debug(...)  do {lynq_write_log(LOG_DEBUG,__VA_ARGS__);} while (0)

+

+#define LYVERBLOG(...)  do {lynq_write_log(LOG_VERBOSE,__VA_ARGS__);} while (0)

+#define LYERRLOG(...)  do {lynq_write_log(LOG_ERROR,__VA_ARGS__);} while (0)

+#define LYWARNLOG(...)  do {lynq_write_log(LOG_WARNING,__VA_ARGS__);} while(0)

+#define LYINFLOG(...)  do {lynq_write_log(LOG_INFO,__VA_ARGS__);} while (0)

+#define LYDBGLOG(...)  do {lynq_write_log(LOG_DEBUG,__VA_ARGS__);} while (0)

+

+// just for comcompatibility, do nothing

+#define LYLOGSET(a) do{;}while(0)

+#define LYLOGEINIT(Y) do{;}while(0)

+

+#ifndef ALOGV

+#define ALOGV(...) do {lynq_write_log(LOG_VERBOSE,__VA_ARGS__);} while (0)

+#endif

+

+#ifndef ALOGE

+#define ALOGE(...) do {lynq_write_log(LOG_ERROR,__VA_ARGS__);} while (0)

+#endif

+

+#ifndef ALOGW

+#define ALOGW(...) do {lynq_write_log(LOG_WARNING,__VA_ARGS__);} while (0)

+#endif

+

+#ifndef ALOGI

+#define ALOGI(...) do {lynq_write_log(LOG_INFO,__VA_ARGS__);} while (0)

+#endif

+

+#ifndef ALOGD

+#define ALOGD(...) do {lynq_write_log(LOG_DEBUG,__VA_ARGS__);} while (0)

+#endif

+

+#define DEFINE_LYNQ_LIB_LOG(tag) \

+    LYNQ_WRITE_LOG_PTR __attribute__ ((visibility ("hidden"))) lynq_write_log = NULL; \

+    void __attribute__((constructor)) tag##_init() \

+    { \

+        lynq_write_log = lynq_log_function_init(#tag); \

+    }

+

+#define DEFINE_LYNQ_EXE_LOG(tag) \

+    LYNQ_WRITE_LOG_PTR __attribute__ ((visibility ("hidden"))) lynq_write_log = NULL; \

+    void __attribute__((constructor)) tag##_init() \

+    { \

+        lynq_write_log = lynq_log_function_init(#tag); \

+        lynq_log_configuration_init(#tag); \

+    }

+

+#endif  //__LYNQ_DEFLOG_H__

diff --git a/mbtk/include/lynq/lynq_ecall_api.h b/mbtk/include/lynq/lynq_ecall_api.h
deleted file mode 100755
index 58b6e41..0000000
--- a/mbtk/include/lynq/lynq_ecall_api.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#ifndef LYNQ_ECALL_H
-#define LYNQ_ECALL_H
-#include "mbtk_type.h"
-#include "mbtk_log.h"
-
-typedef uint32 ecall_handle_type;
-
-typedef enum{
-    LYNQ_ECALL_SET_NUMBER = 0,     /* Set Number */
-    LYNQ_ECALL_SET_URI = 1,      /* Set Uri */
-}LYNQ_ECall_Set_Type;
-
-typedef enum{
-    LYNQ_EMER_CAT_MANUAL_ECALL = 0,      /* Manual Emergency eCall */
-    LYNQ_EMER_CAT_AUTO_ECALL = 1,     /*  Automatic Emergency eCall */
-}LYNQ_ECall_Category;
-
-typedef enum{
-    LYNQ_ECALL_TEST = 0,     /* Test eCall */
-    LYNQ_ECALL_EMERGENCY = 1,      /* Emergency eCall */
-    LYNQ_ECALL_RECONFIG = 2,     /*  Reconfiguration eCall */
-    LYNQ_ECALL_VAR_MAX,
-}LYNQ_ECall_Variant;
-
-typedef enum{
-    LYNQ_ECALL_SENDING_START = 1,
-    LYNQ_ECALL_SENDING_MSD = 2,
-    LYNQ_ECALL_LLACK_RECEIVED = 3,
-    LYNQ_ECALL_ALACK_POSITIVE_RECEIVED = 4,
-    LYNQ_ECALL_ALACK_CLEARDOWN_RECEIVED = 5,
-    LYNQ_ECALL_ACTIVE = 11,
-    LYNQ_ECALL_DISCONNECTED = 12,
-    LYNQ_ECALL_IMS_ACTIVE = 13,
-    LYNQ_ECALL_IMS_DISCONNECTED = 14,
-    LYNQ_ECALL_ABNORMAL_HANGUP=15,
-    LYNQ_ECALL_IMS_MSD_ACK = 20,
-    LYNQ_ECALL_IMS_UPDATE_MSD = 21,
-    LYNQ_ECALL_IMS_IN_BAND_TRANSFER = 22,
-    LYNQ_ECALL_IMS_MSD_NACK = 23,
-    LYNQ_ECALL_IMS_SRVCC = 24,
-    LYNQ_ECALL_ONLY_DEREGISTRATION = 31,
-    LYNQ_ECALL_MAY_DEREGISTER = 32,
-    LYNQ_ECALL_PSAP_CALLBACK_START = 40,
-    LYNQ_ECALL_PSAP_CALLBACK_IMS_UPDATE_MSD = 41,
-    LYNQ_ECALL_T2_TIMER_OUT = 9000,
-    LYNQ_ECALL_T5_TIMER_OUT = 9001,
-    LYNQ_ECALL_T6_TIMER_OUT = 9002,
-    LYNQ_ECALL_T7_TIMER_OUT = 9003,
-    LYNQ_ECALL_REDIAL_TIMER_OUT = 9004,
-    LYNQ_ECALL_AUTO_ANS_TIMER_OUT = 9005,
-    LYNQ_ECALL_AUTO_ANS_IMS_TIMER_OUT = 9006,
-    LYNQ_ECALL_UNSPECIFIED = 0xffff,
-}LYNQ_ECall_Indication;
-
-int lynq_ecall_init(ecall_handle_type *handle);
-int lynq_ecall_deinit(ecall_handle_type handle);
-int lynq_set_test_num(LYNQ_ECall_Set_Type type, const char *test_num, int test_num_length);
-int lynq_set_reconf_num(LYNQ_ECall_Set_Type type, const char *reconf_num, int reconf_num_length);
-int lynq_fast_ecall(int* handle,
-                    LYNQ_ECall_Category lynq_ecall_cat,
-                    LYNQ_ECall_Variant lynq_ecall_variant,
-                    const char *addr, int addr_length,
-                    const unsigned char *msd_data, int msd_length);
-int lynq_make_ecall(int* handle, LYNQ_ECall_Variant type);
-int lynq_set_msd(int* handle, const unsigned char *msd_data, int msd_length);
-int lynq_set_ivs(int enable);
-int lynq_ivs_push_msd();
-int lynq_wait_ecall_indication(int* handle, LYNQ_ECall_Indication *eCall_Indication);
-int lynq_ecall_hungup(int handle);
-
-#endif
diff --git a/mbtk/include/lynq/lynq_gnss.h b/mbtk/include/lynq/lynq_gnss.h
index 679039b..6e2827a 100755
--- a/mbtk/include/lynq/lynq_gnss.h
+++ b/mbtk/include/lynq/lynq_gnss.h
@@ -1,121 +1,69 @@
-#ifndef __MBTK_LYNQ_GNSS_H__
-#define __MBTK_LYNQ_GNSS_H__
+/*
+* qser_gnss.h
+*
+* QSER GNSS header file.
+*
+* Author : lb
+* Date   : 2023/11/23 11:13:18
+*/
+#ifndef _QSER_GNSS_H
+#define _QSER_GNSS_H
+#include "mbtk_type.h"
+
+typedef unsigned int Uint_t;
 
 typedef enum
 {
-    E_LYNQ_LOC_MSG_ID_STATUS_INFO = 0,
-    E_LYNQ_LOC_MSG_ID_LOCATION_INFO,
-    E_LYNQ_LOC_MSG_ID_SV_INFO,
-    E_LYNQ_LOC_MSG_ID_NMEA_INFO,
-    E_LYNQ_LOC_MSG_ID_CAPABILITIES_INFO,
-    E_LYNQ_LOC_MSG_ID_AGPS_STATUS,
-    E_LYNQ_LOC_MSG_ID_NI_NOTIFICATION,
-    E_LYNQ_LOC_MSG_ID_XTRA_REPORT_SERVER,
-}E_LYNQ_LOC_MSG_ID_T;
+    E_MT_LOC_MSG_ID_LOCATION_INFO, /**< pv_data = & mopen_location_info_t */
+    E_MT_LOC_MSG_ID_NMEA_INFO, /**< pv_data = & mopen_gnss_nmea_info_t */
+} e_msg_id_t;
 
-#define LYNQ_LOC_NMEA_MAX_LENGTH  255                 /**  NMEA string maximum length. */
+typedef void (*gnss_handler_func_t)
+(
+    Uint_t *h_loc,
+    e_msg_id_t e_msg_id, //消息 ID
+    void *pv_data, //消息内容,取决于 ID,如下说明
+    void *context_ptr //用于区分哪个返回的消息
+)/* lynq_AddRxIndMsgHandler_t*/;
+
 typedef struct
 {
-    int64_t     timestamp;                          /**<   System Timestamp, marked for when got the nmea data */
-    int         length;                             /**<   NMEA string length. */
-    char        nmea[LYNQ_LOC_NMEA_MAX_LENGTH + 1];   /**<   NMEA string.*/
-}LYNQ_LOC_NMEA_INFO_T;  /* Message */
+    uint32_t year; // 大于 1980
+    uint32_t month; // 1-12
+    uint32_t day; // 1-31
+    uint32_t hour; // 0-23
+    uint32_t minute; // 0-59
+    uint32_t second; // 0-59
+    uint32_t millisecond; // 0-999
+} LYNQ_INJECT_TIME_INTO_T; /* Message */
 
-/* callback function register to lynq_gnss_rx_ind_msg_handler
-   e_msg_id: which kind of msg can be received depend on the bit_mask set in QL_LOC_Set_Indications;
-   pv_data: depend on the e_msg_id type.
-*/
-typedef void (*lynq_gnss_rx_ind_msg_handler_t)
-(
-    uint32  h_loc,
-    E_LYNQ_LOC_MSG_ID_T   e_msg_id,
-    void                    *pv_data,
-    void                    *contextPtr
-);
+typedef enum {
+    DELETE_NOTHING = 0, /*不删除数据*/
+    DELETE_EPHEMERIS = 1, /*删除星历*/
+    DELETE_ALMANAC = 2, /*删除历书*/
+    DELETE_POSITION_TIME = 3, /*删除时间和位置信息. */
+    DELETE_UTC = 4, /*删除 UTC 时间*/
+    DELETE_ALL = 5 /*删除所有*/
+} DELETE_AIDING_DATA_TYPE_T;
 
-/**
- * @brief      function description
- *
- * @details    detailed description
- *
- * @param      param
- *
- * @return     return type
- */
-int lynq_gnss_init(void);
-/**
- * @brief      function description
- *
- * @details    detailed description
- *
- * @param      param
- *
- * @return     return type
- */
-int lynq_gnss_deinit(void);
+int qser_Gnss_Init (uint32_t *h_gnss);
 
-/**
- * @brief      function description
- *
- * @details    detailed description
- *
- * @param      param
- *
- * @return     return type
- */
-int lynq_gnss_callback_reg(lynq_gnss_rx_ind_msg_handler_t handlerPtr);
+int qser_Gnss_Deinit (uint32_t h_gnss);
 
-/**
- * @brief      function description
- *
- * @details    detailed description
- *
- * @param      param
- *
- * @return     return type
- */
-int lynq_gnss_start(void);
-/**
- * @brief      function description
- *
- * @details    detailed description
- *
- * @param      param
- *
- * @return     return type
- */
-int lynq_gnss_stop(void);
+int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss);
 
-/**
- * @brief      function description
- *
- * @details    detailed description
- *
- * @param      param
- *
- * @return     return type
- */
-int lynq_gnss_agps_dataconnopen(void);
-/**
- * @brief      function description
- *
- * @details    detailed description
- *
- * @param      param
- *
- * @return     return type
- */
-int lynq_gnss_dev_reset(void);
+int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type);
 
-/**
- * @brief      function description
- *
- * @details    detailed description
- *
- * @param      param
- *
- * @return     return type
- */
-int lynq_gnss_enable_glonass(void);
+int qser_Gnss_Start (uint32_t h_gnss);
 
-#endif
+int qser_Gnss_Stop (uint32_t h_gnss);
+
+int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info);
+
+int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags);
+
+int qser_Gnss_download_tle();
+
+int qser_Gnss_injectEphemeris(uint32_t h_gnss);
+
+#endif /* _QSER_GNSS_H */
diff --git a/mbtk/include/lynq/lynq_led.h b/mbtk/include/lynq/lynq_led.h
new file mode 100755
index 0000000..c95282b
--- /dev/null
+++ b/mbtk/include/lynq/lynq_led.h
@@ -0,0 +1,12 @@
+#ifndef LYNQ_LED_H

+#define LYNQ_LED_H 1

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+int lynq_set_netled_on(const int test_mode);

+int lynq_set_statusled_on(const int test_mode);

+#ifdef __cplusplus

+}

+#endif

+#endif

diff --git a/mbtk/include/lynq/lynq_net_api.h b/mbtk/include/lynq/lynq_net_api.h
deleted file mode 100755
index 30f8837..0000000
--- a/mbtk/include/lynq/lynq_net_api.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
-*
-* Data : 2022/10/21 16:00:28
-* Author : LiuBin
-*/
-#ifndef _LYNQ_NET_API_H
-#define _LYNQ_NET_API_H
-#include "mbtk_info_api.h"
-
-typedef enum {
-    RADIO_TECH_3GPP = 1, /* 3GPP Technologies - GSM, WCDMA */
-    RADIO_TECH_3GPP2 = 2 /* 3GPP2 Technologies - CDMA */
-} RIL_RadioTechnologyFamily;
-
-typedef struct
-{
-    int rssi;   // 0: 113 dBm or less
-                // 1: 111 dBm
-                // 2...30: 109 dBm...53 dBm
-                // 31: 51 dBm or greater
-                // 99: not known or not detectable
-    int ber;  // 0...7 as RXQUAL values in the table in 3GPP TS 45.008 [20] subclause 8.2.4
-                // 99 not known or not detectable
-    int gsm_sig_valid;
-    int rxlev;// 0:rssi < -110 dBm
-                // 1: -110 dBm <= rssi < -109 dBm
-                // 2: -109 dBm <= rssi < -108 dBm
-                // ......
-                // 61: -50 dBm <= rssi < -49 dBm
-                // 62: -49 dBm <= rssi < -48 dBm
-                // 63: -48 dBm <= rssi
-                // 99: not known or not detectable
-    int umts_sig_valid;
-    int rscp; // 0: rscp < -120 dBm
-                // 1: -120 dBm <= rscp < -119 dBm
-                // 2: -119 dBm <= rscp < -118 dBm
-                // ......
-                // 94: -27 dBm <= rscp < -26 dBm
-                // 95: -26 dBm <= rscp < -25 dBm
-                // 96: - 25 dBm <= rscp
-                // 255: not known or not detectable
-    int ecno; // 0: Ec/Io < -24 dB
-                // 1: -24 dB <= Ec/Io < -23.5 dB
-                // 2: -23.5 dB <= Ec/Io < -23 dB
-                // ......
-                // 47: -1 dB <= Ec/Io < -0.5 dB
-                // 48: -0.5 dB <= Ec/Io < 0 dB
-                // 49: 0 dB <= Ec/Io
-                // 255: not known or not detectable
-    int lte_sig_valid;
-    int rsrq; // 0: rsrq < -19.5 dB
-                // 1: -19.5 dB <= rsrq < -19 dB
-                // 2: -19 dB <= rsrq < -18.5 dB
-                // ......
-                // 32: -4 dB <= rsrq < -3.5 dB
-                // 33: -3.5 dB <= rsrq < -3 dB
-                // 34: -3 dB <= rsrq
-                // 255: not known or not detectable
-    int rsrp; // 0: rsrp < -140 dBm
-                // 1: -140 dBm <= rsrp < -139 dBm
-                // 2: -139 dBm <= rsrp < -138 dBm
-                // ......
-                // 95: -46 dBm <= rsrp < -45 dBm
-                // 96: -45 dBm <= rsrp < -44 dBm
-                // 97: -44 dBm <= rsrp
-                // 255: not known or not detectable
-} signalStrength_t;
-
-typedef enum {
-    ZONE_NUM_SOC = 0,
-    ZONE_NUM_RF
-} ZONE_NUM;
-
-int lynq_network_init(int uToken);
-
-int lynq_network_deinit(void);
-
-int lynq_get_version(char buf[]);
-
-int lynq_get_imei(char buf[]);
-
-int lynq_get_sn(char buf[]);
-
-int lynq_shutdown(char options[]);
-
-int lynq_time_set(mbtk_time_type_enum time_type, char* time_str);
-
-int lynq_get_zone_tmp(ZONE_NUM num, int *temp);
-
-int lynq_get_sim_status(int *card_status);
-
-int lynq_get_imsi(char buf[]);
-
-int lynq_get_iccid(char buf[]);
-
-int lynq_query_phone_number(char buf[]);
-
-int lynq_sim_power (int mode);
-
-int lynq_query_operater(char *OperatorFN,char *OperatorSH,char *MccMnc);
-
-int lynq_query_network_selection_mode (int *netselMode);
-
-int lynq_set_network_selection_mode(const char *mode, const char* mccmnc);
-
-int lynq_query_available_network(list_node_t** net_list);
-
-int lynq_query_registration_state(const char *type, int* regState,int *imsRegState,char * LAC,char *CID,int *netType,int * radioTechFam,int *netRejected);
-
-int lynq_query_prefferred_networktype (int *preNetType);
-
-int lynq_set_prefferred_networktype (const int preNetType);
-
-int lynq_set_band_mode(int gsm_band, int umts_band, int tdlte_band, int fddlte_band);
-
-int lynq_query_available_bandmode (int *gsm_band, int *umts_band, int *tdlte_band, int *fddlte_band);
-
-int lynq_radio_on (const int data);
-
-int lynq_query_radio_tech (int* radioTech);
-
-int lynq_solicited_signal_strength (signalStrength_t *solSigStren);
-
-int lynq_set_ims (const int ims_mode);
-
-int lynq_init_cell(void);
-
-int lynq_deinit_cell(void);
-
-int lynq_query_cell_info(int *type, list_node_t **cell_list);
-
-void lynq_set_cell_info(char *mem);
-
-/*
-* Set specific APN informations.
-*
-* cid : 2-7
-*/
-int lynq_apn_set(int cid, mbtk_ip_type_enum ip_type, const void* apn_name,
-                    const void *user_name, const void *user_pass, const void *auth);
-
-/*
-* Get current all APN informations.
-*/
-int lynq_apn_get(int *apn_num, mbtk_apn_info_t apns[]);
-
-/*
-* Start data call.
-*/
-int lynq_data_call_start(int cid, int timeout);
-
-/*
-* Stop data call.
-*/
-int lynq_data_call_stop(int cid, int timeout);
-
-/*
-* Query data call state.
-*/
-int lynq_data_call_query(int cid, mbtk_ipv4_info_t *ipv4, mbtk_ipv6_info_t *ipv6);
-
-/*
-*Get native ip and free port
-*/
-int lynq_get_ip_and_port(char *ipBuf_out,int *port,int iptype);
-
-#endif /* _LYNQ_NET_API_H */
diff --git a/mbtk/include/lynq/lynq_network.h b/mbtk/include/lynq/lynq_network.h
new file mode 100755
index 0000000..e878e6b
--- /dev/null
+++ b/mbtk/include/lynq/lynq_network.h
@@ -0,0 +1,147 @@
+#ifndef LYNQ_NETWORK_H

+#define LYNQ_NETWORK_H 

+#ifdef __cplusplus

+extern "C" {

+#endif

+#define MODEM_GEN97 1

+#define CELLINFO_MAX_NUM  10

+#define LY_RECOVER_TIMER_INTERVAL 128

+#define MAX_CELLINFO_ITEM_NUMBER 32

+#define MAX_OOS_CFG_ITEM_NUMBER 32

+/*T800 platform support gsm,wcdma lte,nr */

+typedef struct{

+    int gw_sig_valid; /*1 valid,1 invalid*/

+    int rssi;         /* Valid values are (0-31, 99) as defined in TS 27.007 8.5 */

+    int wcdma_sig_valid;/*1 valid,0 invalid*/

+    int wcdma_signalstrength;

+    int rscp;        /* The Received Signal Code Power in dBm multipled by -1.

+                      * Range : 25 to 120

+                      * INT_MAX: 0x7FFFFFFF denotes invalid value.

+                      * Reference: 3GPP TS 25.123, section 9.1.1.1 */

+    int ecno;        /* Valid values are positive integers.  This value is the actual Ec/Io multiplied

+                      * by -10.  Example: If the actual Ec/Io is -12.5 dB, then this response value

+                      * will be 125.*/

+    int lte_sig_valid;/*1 valid,0 invalid*/

+    int lte_signalstrength;                      

+    int rsrp;        /* The current Reference Signal Receive Power in dBm multipled by -1.

+                      * Range: 44 to 140 dBm

+                      * INT_MAX: 0x7FFFFFFF denotes invalid value.

+                      * Reference: 3GPP TS 36.133 9.1.4 */

+    int rsrq;        /* The current Reference Signal Receive Quality in dB multiplied by -1.

+                      * Range: 20 to 3 dB.

+                      * INT_MAX: 0x7FFFFFFF denotes invalid value.

+                      * Reference: 3GPP TS 36.133 9.1.7 */

+    int rssnr;       /* The current reference signal signal-to-noise ratio in 0.1 dB units.

+                      * Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB).

+                      * INT_MAX : 0x7FFFFFFF denotes invalid value.

+                      * Reference: 3GPP TS 36.101 8.1.1 */

+    int nr_sig_valid;/*1 valid,0 invalid*/

+    int ssRsrp;      /* SS(Synchronization Signal) reference signal received power, multipled by -1.

+                      * Reference: 3GPP TS 38.215.

+                      * Range [44, 140], INT_MAX means invalid/unreported.*/

+    int ssRsrq;      /* SS reference signal received quality, multipled by -1.

+                      * Reference: 3GPP TS 38.215.

+                      * Range [3, 20], INT_MAX means invalid/unreported.*/

+    int ssSinr;      /* SS signal-to-noise and interference ratio.

+                      * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.

+                      * Range [-23, 40], INT_MAX means invalid/unreported.*/

+    int csiRsrp;     /* CSI reference signal received power, multipled by -1.

+                      * Reference: 3GPP TS 38.215.

+                      * Range [44, 140], INT_MAX means invalid/unreported.*/

+    int csiRsrq;     /* CSI reference signal received quality, multipled by -1.

+                      * Reference: 3GPP TS 38.215.

+                      * Range [3, 20], INT_MAX means invalid/unreported.*/

+    int csiSinr;     /* CSI signal-to-noise and interference ratio.

+                      * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.

+                      * Range [-23, 40], INT_MAX means invalid/unreported.*/

+}signalStrength_t;

+

+typedef enum { 

+    NETWORK_RADIO_ON_TYPE_CFUN_0=0,  

+    NETWORK_RADIO_ON_TYPE_NORMAL_MODE=1,

+    NETWORK_RADIO_ON_TYPE_FLIGHT_MODE=4,

+}lynq_network_radio_on_type;  

+

+int lynq_network_init(int utoken);

+int lynq_network_deinit(void);

+int lynq_query_operater(char *OperatorFN,char *OperatorSH,char *MccMnc);

+int lynq_query_network_selection_mode(int *netselMode);

+int lynq_set_network_selection_mode(const char *mode,const char* mccmnc);

+int lynq_query_available_network(char *OperatorFN,char *OperatorSH,char *MccMnc,char * NetStatus);

+int lynq_query_registration_state(const char *type,int* regState,int* imsRegState,char * LAC,char * CID,int *netType,int *radioTechFam,int *netRejected);

+int lynq_query_prefferred_networktype(int *preNetType);

+int lynq_set_prefferred_networktype(const int preffertype);

+int lynq_query_cell_info(uint64_t cellinfo[CELLINFO_MAX_NUM],int tac[CELLINFO_MAX_NUM],int earfcn[CELLINFO_MAX_NUM],int * realNum);

+int lynq_set_unsol_cell_info_listrate(const int rate);

+int lynq_set_band_mode(const int bandmode);

+int lynq_query_available_bandmode(int availBanMode[]);

+int lynq_radio_on(const lynq_network_radio_on_type type);

+int lynq_query_radio_state(int *radio_state);

+int lynq_query_radio_tech(int* radioTech);

+int lynq_solicited_signal_strength(signalStrength_t *solSigStren);

+int lynq_set_ims(const int ims_mode);

+int lynq_wait_signalchanges(int *handle);

+int lynq_get_urc_info(const int handle,signalStrength_t *solSigStren,int *slot_id);

+

+typedef enum {  

+  LYNQ_CELL_INFO_TYPE_GSM    = 2,  

+  LYNQ_CELL_INFO_TYPE_WCDMA  = 3,

+  LYNQ_CELL_INFO_TYPE_LTE    = 4, 

+  LYNQ_CELL_INFO_TYPE_NR    = 5

+} lynq_network_cell_info_type;

+

+int lynq_query_serve_cell_info(int serve_cell_info[MAX_CELLINFO_ITEM_NUMBER], int * valid_number);

+

+typedef enum {

+    NETWORK_STATE_BUFFER_TYPE_VOICE_REG,

+    NETWORK_STATE_BUFFER_TYPE_DATA_REG,

+    NETWORK_STATE_BUFFER_TYPE_IMS_REG,

+    NETWORK_STATE_BUFFER_TYPE_MAX,

+}lynq_network_state_buffer_type;    

+int lynq_set_state_buffer_valid_period_of_network(lynq_network_state_buffer_type type,int valid_period);

+int lynq_get_state_buffer_valid_period_of_network(lynq_network_state_buffer_type type);

+#ifdef MODEM_GEN97

+/**@brief set or get OOS recover timer interval

+* @param mode [IN] <mode>:

+*  0:set

+*  1:get

+* @param interval [IN] <interval>: the recovery timer interval.

+*  field:

+*    T1,T2,...,T23:integer value 0~0xFFFFFFFF

+*    The length of time in seconds.

+*    defualt interval: 20,20,60,60,60,60,90,90,90,90,90,90,180,180,180,180,180,180,360,360,360,360,360

+* @param result [OUT] <result>: the recovery timer interval,when the mode is 1, this parameter is valid.

+

+* @return

+*  0:success

+*  other:failure

+*/

+int lynq_oos_recover_timer_interval(int mode, char interval[LY_RECOVER_TIMER_INTERVAL],char result[LY_RECOVER_TIMER_INTERVAL]);

+/**@brief set deep sleep recover timer interval

+

+* @param recovery_threshold [IN] <recovery_threshold>: valid range 2-10  //After performing several rounds of normal recovery, deep sleep mode optimization will be applied

+

+* @param fullband_timer [IN] <fullband_timer>:valid range 90-360 //fullband intervarl length in deep sleep mode

+

+* @param sniffer_timer [IN] <sniffer_timer>:valid range 10-60 // sniffe intervarl length in deep sleep mode.

+

+* @param inactive_mode [IN] <inactive_mode>:

+*  0 Exit inactive mode 

+*  1 enter inactive mode

+

+* @return

+*  0:success

+*  other:failure

+*/

+int lynq_oos_deep_sleep_recover_timer_interval(int recovery_threshold,int fullband_timer,int sniffer_timer,int inactive_mode);

+#endif

+#if (defined MOBILETEK_TARGET_PLATFORM_T106) || (defined MODEM_GEN97)

+int lynq_set_oos_net_scan_cfg(int config_list[MAX_OOS_CFG_ITEM_NUMBER], int valid_num);

+int lynq_get_oos_net_scan_cfg(int config_list[MAX_OOS_CFG_ITEM_NUMBER], int* valid_num);

+#endif

+void lynq_set_test_mode(const int test_mode);

+#ifdef __cplusplus

+}

+#endif

+

+#endif

diff --git a/mbtk/include/lynq/lynq_qser_network.h b/mbtk/include/lynq/lynq_qser_network.h
new file mode 100755
index 0000000..e7727c2
--- /dev/null
+++ b/mbtk/include/lynq/lynq_qser_network.h
@@ -0,0 +1,425 @@
+/**
+ *@file     QSER_nw.h
+ *@date     2018-02-22
+ *@author
+ *@brief
+ */
+#ifndef __LYNQ_QSER_NETWORK_H__
+#define __LYNQ_QSER_NETWORK_H__
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "mbtk_type.h"
+
+typedef uint32_t nw_client_handle_type;
+
+
+#define QSER_NW_MODE_NONE     0x00    /**<  No network. */
+#define QSER_NW_MODE_GSM      0x01    /**<  Include GSM networks. */
+#define QSER_NW_MODE_WCDMA    0x02    /**<  Include WCDMA networks. */
+#define QSER_NW_MODE_CDMA     0x04    /**<  Include CDMA networks. */
+#define QSER_NW_MODE_EVDO     0x08    /**<  Include EVDO networks. */
+#define QSER_NW_MODE_LTE      0x10    /**<  Include LTE networks. */
+#define QSER_NW_MODE_TDSCDMA  0x20    /**<  Include TDSCDMA networks. */
+
+typedef enum
+{
+    E_QSER_NW_ROAM_STATE_OFF  = 0,    /**<  None, or roaming indicator off. */
+    E_QSER_NW_ROAM_STATE_ON   = 1     /**<  Roaming indicator on. */
+}E_QSER_NW_ROAM_STATE_TYPE_T;
+
+/** Configures the settings that define the MCM network interface. */
+typedef struct
+{
+    /*  Configuration parameters for MCM network registration Network registration details Technology dependent network registration details */
+    uint64_t                        preferred_nw_mode;  /**<   Preferred network mode for connections; a bitmask of QSER_NW_MODE_xxxx.*/
+    E_QSER_NW_ROAM_STATE_TYPE_T   roaming_pref;       /**<   Roaming preference.*/
+}QSER_NW_CONFIG_INFO_T;
+
+/** Configures the OOS (out of service)  settings that define the MCM network interface. */
+#define QSER_NW_OOS_CFG_TYPE_FAST_SCAN          0x00    /**<  fast net scan */
+#define QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN     0x01    /**<  full band scan */
+
+typedef struct
+{
+    /*    Configuration parameters for MCM network fast network scan when OOS (out of service)*/
+    char                        enable;
+    uint16_t                    time_interval;
+}QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T;
+
+typedef struct
+{
+    /*    Configuration parameters for MCM network full band network scan when OOS (out of service)*/
+    int t_min;
+    int t_step;
+    int t_num;
+    int t_max;
+}QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T;
+
+
+typedef struct
+{
+    char                        type;  /**<   QSER_NW_OOS_CFG_TYPE_xxxx.*/
+    union {
+    QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T  fast_can_info;       // 00
+    QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T full_band_scan_info;     // 01
+  } u;
+}QSER_NW_OOS_CONFIG_INFO_T;
+
+//defined for QSER_NW_EventRegister
+#define     NW_IND_VOICE_REG_EVENT_IND_FLAG               (1 << 0)    /**< msg format : QSER_NW_VOICE_REG_EVENT_IND_T */
+#define     NW_IND_DATA_REG_EVENT_IND_FLAG                (1 << 1)    /**< msg format : QSER_NW_DATA_REG_EVENT_IND_T */
+#define     NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG         (1 << 2)    /**< msg format : QSER_NW_SINGNAL_EVENT_IND_T */
+
+typedef struct
+{
+    char long_eons[512 + 1];    /**<   Long EONS.*/
+    char short_eons[512 + 1];   /**<   Short EONS.*/
+    char mcc[3 + 1];            /**<   Mobile country code.*/
+    char mnc[3 + 1];            /**<   Mobile network code.*/
+}QSER_NW_OPERATOR_NAME_INFO_T;
+
+typedef enum
+{
+    E_QSER_NW_RADIO_TECH_TD_SCDMA = 1,
+    E_QSER_NW_RADIO_TECH_GSM      = 2,    /**<  GSM; only supports voice. */
+    E_QSER_NW_RADIO_TECH_HSPAP    = 3,    /**<  HSPA+. */
+    E_QSER_NW_RADIO_TECH_LTE      = 4,    /**<  LTE. */
+    E_QSER_NW_RADIO_TECH_EHRPD    = 5,    /**<  EHRPD. */
+    E_QSER_NW_RADIO_TECH_EVDO_B   = 6,    /**<  EVDO B. */
+    E_QSER_NW_RADIO_TECH_HSPA     = 7,    /**<  HSPA. */
+    E_QSER_NW_RADIO_TECH_HSUPA    = 8,    /**<  HSUPA. */
+    E_QSER_NW_RADIO_TECH_HSDPA    = 9,    /**<  HSDPA. */
+    E_QSER_NW_RADIO_TECH_EVDO_A   = 10,   /**<  EVDO A. */
+    E_QSER_NW_RADIO_TECH_EVDO_0   = 11,   /**<  EVDO 0. */
+    E_QSER_NW_RADIO_TECH_1xRTT    = 12,   /**<  1xRTT. */
+    E_QSER_NW_RADIO_TECH_IS95B    = 13,   /**<  IS95B. */
+    E_QSER_NW_RADIO_TECH_IS95A    = 14,   /**<  IS95A. */
+    E_QSER_NW_RADIO_TECH_UMTS     = 15,   /**<  UMTS. */
+    E_QSER_NW_RADIO_TECH_EDGE     = 16,   /**<  EDGE. */
+    E_QSER_NW_RADIO_TECH_GPRS     = 17,   /**<  GPRS. */
+    E_QSER_NW_RADIO_TECH_NONE     = 18    /**<  No technology selected. */
+}E_QSER_NW_RADIO_TECH_TYPE_T;
+
+
+typedef enum
+{
+    E_QSER_NW_TECH_DOMAIN_NONE    = 0,    /**<  None. */
+    E_QSER_NW_TECH_DOMAIN_3GPP    = 1,    /**<  3GPP. */
+    E_QSER_NW_TECH_DOMAIN_3GPP2   = 2,    /**<  3GPP2. */
+}E_QSER_NW_TECH_DOMAIN_TYPE_T;
+
+typedef enum
+{
+    E_QSER_NW_IMSI_UNKNOWN_HLR_DENY_REASON                    = 1, /**<  IMSI unknown in HLR. */
+    E_QSER_NW_ILLEGAL_MS_DENY_REASON                          = 2, /**<  Illegal MS. */
+    E_QSER_NW_IMSI_UNKNOWN_VLR_DENY_REASON                    = 3, /**<  IMSI unknown in VLR. */
+    E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON                   = 4, /**<  IMEI not accepted. */
+    E_QSER_NW_ILLEGAL_ME_DENY_REASON                          = 5, /**<  Illegal ME. */
+    E_QSER_NW_PLMN_NOT_ALLOWED_DENY_REASON                    = 6, /**<  PLMN not allowed. */
+    E_QSER_NW_LA_NOT_ALLOWED_DENY_REASON                      = 7, /**<  Location area not allowed. */
+    E_QSER_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON              = 8, /**<  Roaming not allowed in this location area. */
+    E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON                = 9, /**<  No suitable cells in location area. */
+    E_QSER_NW_NETWORK_FAILURE_DENY_REASON                     = 10, /**<  Network failure. */
+    E_QSER_NW_MAC_FAILURE_DENY_REASON                         = 11, /**<  MAC failure. */
+    E_QSER_NW_SYNCH_FAILURE_DENY_REASON                       = 12, /**<  Sync failure. */
+    E_QSER_NW_CONGESTION_DENY_REASON                          = 13, /**<  Congestion. */
+    E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON     = 14, /**<  GSM authentication unacceptable. */
+    E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON                  = 15, /**<  Not authorized in this CSG. */
+    E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON        = 16, /**<  Service option not supported. */
+    E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON   = 17, /**<  Requested service option not subscribed. */
+    E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON           = 18, /**<  Call cannot be identified. */
+    E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON          = 19, /**<  Semantically incorrect message. */
+    E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON              = 20, /**<  Invalid mandatory information. */
+    E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON               = 21, /**<  Message type non-existent or not implemented. */
+    E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON           = 22, /**<  Message type not compatible with the protocol state. */
+    E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON                  = 23, /**<  Conditional IE error. */
+    E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON     = 24, /**<  Message not compatible with the protocol state. */
+    E_QSER_NW_PROTOCOL_ERROR_DENY_REASON                      = 25, /**<  Unspecified protocol error. */
+}E_QSER_NW_DENY_REASON_TYPE_T;
+
+
+typedef enum
+{
+    E_QSER_NW_SERVICE_NONE     = 0x0000,  /**<  Not registered or no data. */
+    E_QSER_NW_SERVICE_LIMITED  = 0x0001,  /**<  Registered; emergency service only. */
+    E_QSER_NW_SERVICE_FULL     = 0x0002,  /**<  Registered, full service. */
+}E_QSER_NW_SERVICE_TYPE_T;
+
+typedef struct
+{
+    E_QSER_NW_TECH_DOMAIN_TYPE_T  tech_domain;        /**<   Technology, used to determine the structure type  tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
+    E_QSER_NW_RADIO_TECH_TYPE_T   radio_tech;         /**<   Radio technology; see #nw_radio_tech_t_v01.*/
+    E_QSER_NW_ROAM_STATE_TYPE_T   roaming;            /**<   0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
+    E_QSER_NW_DENY_REASON_TYPE_T  deny_reason;        /**<   Set when registration state is #nw_deny_reason_t_v01.*/
+    E_QSER_NW_SERVICE_TYPE_T      registration_state; /**<   Registration state.*/
+}QSER_NW_COMMON_REG_INFO_T;
+
+
+typedef struct
+{
+    E_QSER_NW_TECH_DOMAIN_TYPE_T  tech_domain;        /**<   Technology, used to determine the structure type  tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
+    E_QSER_NW_RADIO_TECH_TYPE_T   radio_tech;         /**<   Radio technology; see #nw_radio_tech_t_v01.*/
+    char                            mcc[3+1];           /**<   Mobile country code.*/
+    char                            mnc[3+1];           /**<   Mobile network code.*/
+    E_QSER_NW_ROAM_STATE_TYPE_T   roaming;            /**<   0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
+    uint8_t                         forbidden;          /**<   Forbidden: 0 -- No, 1 -- Yes.*/
+    uint32_t                        cid;                /**<   Cell ID for the registered 3GPP system.*/
+    uint16_t                        lac;                /**<   Locatin area code for the registered 3GPP system.*/
+    uint16_t                        psc;                /**<   Primary scrambling code (WCDMA only); 0 -- None.*/
+    uint16_t                        tac;                /**<   Tracking area code information for LTE.*/
+}QSER_NW_3GPP_REG_INFO_T;
+
+
+typedef struct
+{
+    E_QSER_NW_TECH_DOMAIN_TYPE_T  tech_domain;        /**<   Technology, used to determine structure type  tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
+    E_QSER_NW_RADIO_TECH_TYPE_T   radio_tech;         /**<   Radio technology; see #nw_radio_tech_t_v01.*/
+    char                            mcc[3+1];           /**<   Mobile country code.*/
+    char                            mnc[3+1];           /**<   Mobile network code.*/
+    E_QSER_NW_ROAM_STATE_TYPE_T   roaming;            /**<   Roaming status; see #nw_roam_state_t_v01.*/
+    uint8_t                         forbidden;          /**<   Forbidden: 0 -- No, 1 -- Yes.*/
+    uint8_t                         inPRL;              /**<   0 -- Not in PRL, 1 -- In PRL.*/
+    uint8_t                         css;                /**<   Concurrent services supported: 0 -- No, 1 -- Yes.*/
+    uint16_t                        sid;                /**<   CDMA system ID.*/
+    uint16_t                        nid;                /**<   CDMA network ID.*/
+    uint16_t                        bsid;               /**<   Base station ID. @newpagetable */
+}QSER_NW_3GPP2_REG_INFO_T;
+
+/** Gets the status associated with the connection of \<id\>. */
+typedef struct
+{
+    uint8_t                         voice_registration_valid;               /**< Must be set to TRUE if voice_registration is being passed. */
+    QSER_NW_COMMON_REG_INFO_T     voice_registration;                     /**<   Voice registration. */
+
+    uint8_t                         data_registration_valid;                /**< Must be set to TRUE if data_registration is being passed. */
+    QSER_NW_COMMON_REG_INFO_T     data_registration;                      /**<   Data registration. */
+
+    uint8_t                         voice_registration_details_3gpp_valid;  /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
+    QSER_NW_3GPP_REG_INFO_T       voice_registration_details_3gpp;        /**<   Voice registration details for 3GPP. */
+
+    uint8_t                         data_registration_details_3gpp_valid;   /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
+    QSER_NW_3GPP_REG_INFO_T       data_registration_details_3gpp;         /**<   Data registration details for 3GPP. */
+
+    uint8_t                         voice_registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
+    QSER_NW_3GPP2_REG_INFO_T      voice_registration_details_3gpp2;       /**<   Voice registration details for 3GPP2. */
+
+    uint8_t                         data_registration_details_3gpp2_valid;  /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
+    QSER_NW_3GPP2_REG_INFO_T      data_registration_details_3gpp2;        /**<   Data registration details for 3GPP2. */
+}QSER_NW_REG_STATUS_INFO_T;
+
+
+typedef struct
+{
+    int8_t      rssi;       /**<   RSSI in dBm. Indicates received signal strength. A signed value; -125 or lower indicates no signal.*/
+}QSER_NW_GSM_SIGNAL_INFO_T;
+
+
+typedef struct
+{
+    int8_t      rssi;       /**<   RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
+    int16_t     ecio;       /**<   Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
+}QSER_NW_WCDMA_SIGNAL_INFO_T;
+
+typedef struct
+{
+    int8_t      rssi;       /**<   RSSI in dBm. Indicates forward link pilot Ec.    a signed value; -125 or lower indicates no signal.*/
+    int8_t      rscp;       /**<   RSCP in dBm.*/
+    int16_t     ecio;       /**<   Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
+    int8_t      sinr;       /**<   Measured SINR in dB. @newpagetable */
+}QSER_NW_TDSCDMA_SIGNAL_INFO_T;
+
+typedef struct
+{
+    int8_t      rssi;       /**<   RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
+    int8_t      rsrq;       /**<   RSRQ value in dB (signed integer value), as measured by L1. Range: -3 to -20 (-3 equals -3 dB, -20 equals -20 dB).*/
+    int16_t      rsrp;       /**<   Current RSRP in dBm, as measured by L1. Range: -44 to -140 (-44 equals -44 dBm, -140 equals -140 dBm).*/
+    int16_t      snr;        /**<   SNR level as a scaled integer in units of 0.1 dB; e.g., -16 dB has a value of -160 and 24.6 dB has a value of 246.*/
+}QSER_NW_LTE_SIGNAL_INFO_T;
+
+typedef struct
+{
+    int8_t      rssi;       /**<   RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
+    int16_t     ecio;       /**<   Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
+}QSER_NW_CDMA_SIGNAL_INFO_T;
+
+typedef struct
+{
+    int8_t      rssi;       /**<   RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
+    int16_t     ecio;       /**<   Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
+    int8_t      sinr;       /**<   SINR level.*/
+    int32_t     io;         /**<   Received IO in dBm. */
+}QSER_NW_HDR_SIGNAL_INFO_T;
+
+typedef struct
+{
+    int16_t     ssRsrp;   /* SS(Synchronization Signal) reference signal received power, multipled by -1.
+                      * Reference: 3GPP TS 38.215.
+                      * Range [44, 140], INT_MAX means invalid/unreported.*/
+    int16_t     ssRsrq;   /* SS reference signal received quality, multipled by -1.
+                      * Reference: 3GPP TS 38.215.
+                      * Range [3, 20], INT_MAX means invalid/unreported.*/
+    int16_t     ssSinr;   /* SS signal-to-noise and interference ratio.
+                      * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
+                      * Range [-23, 40], INT_MAX means invalid/unreported.*/
+    int16_t     csiRsrp;  /* CSI reference signal received power, multipled by -1.
+                      * Reference: 3GPP TS 38.215.
+                      * Range [44, 140], INT_MAX means invalid/unreported.*/
+    int16_t     csiRsrq;  /* CSI reference signal received quality, multipled by -1.
+                      * Reference: 3GPP TS 38.215.
+                      * Range [3, 20], INT_MAX means invalid/unreported.*/
+    int16_t     csiSinr;  /* CSI signal-to-noise and interference ratio.
+                      * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1.
+                      * Range [-23, 40], INT_MAX means invalid/unreported.*/
+}QSER_NW_NR_SIGNAL_INFO_T;
+
+
+/** Gets signal strength information. */
+typedef struct
+{
+    uint8_t                         gsm_sig_info_valid;         /**< Must be set to TRUE if gsm_sig_info is being passed. */
+    QSER_NW_GSM_SIGNAL_INFO_T     gsm_sig_info;               /**<   GSM signal information. */
+    uint8_t                         wcdma_sig_info_valid;       /**< Must be set to TRUE if wcdma_sig_info is being passed. */
+    QSER_NW_WCDMA_SIGNAL_INFO_T   wcdma_sig_info;             /**<   WCDMA signal information. */
+    uint8_t                         tdscdma_sig_info_valid;     /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
+    QSER_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info;           /**<   TDSCDMA signal information. */
+    uint8_t                         lte_sig_info_valid;         /**< Must be set to TRUE if lte_sig_info is being passed. */
+    QSER_NW_LTE_SIGNAL_INFO_T     lte_sig_info;               /**<   LTE signal information. */
+    uint8_t                         cdma_sig_info_valid;        /**< Must be set to TRUE if cdma_sig_info is being passed. */
+    QSER_NW_CDMA_SIGNAL_INFO_T    cdma_sig_info;              /**<   CDMA signal information. */
+    uint8_t                         hdr_sig_info_valid;         /**< Must be set to TRUE if hdr_sig_info is being passed. */
+    QSER_NW_HDR_SIGNAL_INFO_T     hdr_sig_info;               /**<   HDR signal information. */
+    uint8_t                         nr_sig_info_valid;
+    QSER_NW_NR_SIGNAL_INFO_T      nr_sig_info;
+}QSER_NW_SIGNAL_STRENGTH_INFO_T;
+
+
+
+
+
+/* @bridef Callback function registered to QSER_NW_AddRxMsgHandler
+ * map of ind_flag and ind_msg_buf as bellow :
+ *  NW_IND_VOICE_REG_EVENT_IND_FLAG : QSER_NW_VOICE_REG_EVENT_IND_T
+ *  NW_IND_DATA_REG_EVENT_IND_FLAG : QSER_NW_DATA_REG_EVENT_IND_T
+ *  NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG : QSER_NW_SINGNAL_EVENT_IND_T
+ *  NW_IND_CELL_ACCESS_STATE_CHG_EVENT_IND_FLAG : QSER_NW_CELL_ACCESS_STATE_EVENT_IND_T
+ *  NW_IND_NITZ_TIME_UPDATE_EVENT_IND_FLAG : QSER_NW_NITZ_TIME_EVENT_IND_T
+ * */
+typedef void (*QSER_NW_RxMsgHandlerFunc_t)(
+    nw_client_handle_type h_nw,
+    uint32_t ind_flag,
+    void                  *ind_msg_buf,
+    uint32_t              ind_msg_len,
+    void                  *contextPtr
+);
+
+
+/** Indication message; Indication for the corresponding registered event flag NW_IND_VOICE_REG_EVENT_IND_FLAG */
+typedef struct {
+
+  uint8_t                         registration_valid;               /**< Must be set to TRUE if voice_registration is being passed. */
+  QSER_NW_COMMON_REG_INFO_T     registration;                     /**< Voice registration. */
+
+  uint8_t                         registration_details_3gpp_valid;  /**< Must be set to TRUE if voice_registration_details_3gpp is being passed. */
+  QSER_NW_3GPP_REG_INFO_T       registration_details_3gpp;        /**< Voice registration details for 3GPP. */
+
+  uint8_t                         registration_details_3gpp2_valid; /**< Must be set to TRUE if voice_registration_details_3gpp2 is being passed. */
+  QSER_NW_3GPP2_REG_INFO_T      registration_details_3gpp2;       /**< Voice registration details for 3GPP2. */
+}QSER_NW_VOICE_REG_EVENT_IND_T;
+
+/** Indication message; Indication for the corresponding registered event flag NW_IND_DATA_REG_EVENT_IND_FLAG */
+typedef struct {
+
+  uint8_t                         registration_valid;               /**< Must be set to TRUE if data_registration is being passed. */
+  QSER_NW_COMMON_REG_INFO_T     registration;                     /**< Data registration. */
+
+  uint8_t                         registration_details_3gpp_valid;  /**< Must be set to TRUE if data_registration_details_3gpp is being passed. */
+  QSER_NW_3GPP_REG_INFO_T       registration_details_3gpp;        /**< Data registration details for 3GPP. */
+
+  uint8_t                         registration_details_3gpp2_valid; /**< Must be set to TRUE if data_registration_details_3gpp2 is being passed. */
+  QSER_NW_3GPP2_REG_INFO_T      registration_details_3gpp2;       /**< Data registration details for 3GPP2. */
+}QSER_NW_DATA_REG_EVENT_IND_T;
+
+
+/** Indication message; Indication for the corresponding registered event flag NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG */
+typedef struct {
+    uint8_t gsm_sig_info_valid;                       /**< Must be set to TRUE if gsm_sig_info is being passed. */
+    QSER_NW_GSM_SIGNAL_INFO_T       gsm_sig_info;   /**< GSM singal information. */
+
+    uint8_t wcdma_sig_info_valid;                     /**< Must be set to TRUE if wcdma_sig_info is being passed. */
+    QSER_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info;     /**< WCDMA singal information. */
+
+    uint8_t tdscdma_sig_info_valid;                   /**< Must be set to TRUE if tdscdma_sig_info is being passed. */
+    QSER_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA singal information. */
+
+    uint8_t lte_sig_info_valid;                       /**< Must be set to TRUE if lte_sig_info is being passed. */
+    QSER_NW_LTE_SIGNAL_INFO_T lte_sig_info;         /**< LTE singal information. */
+
+    uint8_t cdma_sig_info_valid;                      /**< Must be set to TRUE if cdma_sig_info is being passed. */
+    QSER_NW_CDMA_SIGNAL_INFO_T cdma_sig_info;       /**< CDMA singal information. */
+
+    uint8_t hdr_sig_info_valid;                       /**< Must be set to TRUE if hdr_sig_info is being passed. */
+    QSER_NW_HDR_SIGNAL_INFO_T hdr_sig_info;         /**< HDR singal information. */
+
+    uint8_t                         nr_sig_info_valid;
+    QSER_NW_NR_SIGNAL_INFO_T      nr_sig_info;
+}QSER_NW_SINGNAL_EVENT_IND_T;
+
+
+int qser_nw_client_init(nw_client_handle_type  *ph_nw);
+
+int qser_nw_client_deinit(nw_client_handle_type  h_nw);
+
+int qser_nw_set_config
+(
+    nw_client_handle_type       h_nw,
+    QSER_NW_CONFIG_INFO_T     *pt_info
+);
+
+int qser_nw_set_oos_config
+(
+    nw_client_handle_type       h_nw,
+    QSER_NW_OOS_CONFIG_INFO_T     *pt_info
+);
+
+int qser_nw_get_oos_config
+(
+    nw_client_handle_type       h_nw,
+    QSER_NW_OOS_CONFIG_INFO_T     *pt_info
+);
+
+int qser_nw_event_register
+(
+    nw_client_handle_type       h_nw,
+    uint32_t                    bitmask // bit OR of NW_IND_xxxx_EVENT_ON
+);
+
+int qser_nw_get_operator_name
+(
+    nw_client_handle_type           h_nw,
+    QSER_NW_OPERATOR_NAME_INFO_T  *pt_info //You should malloc this or may cause stack overflow
+);
+
+int qser_nw_get_reg_status
+(
+    nw_client_handle_type               h_nw,
+    QSER_NW_REG_STATUS_INFO_T         *pt_info
+);
+
+int qser_nw_get_signal_strength
+(
+    nw_client_handle_type               h_nw,
+    QSER_NW_SIGNAL_STRENGTH_INFO_T    *pt_info
+);
+
+int qser_nw_add_rx_msg_handler
+(
+    nw_client_handle_type        h_nw,
+    QSER_NW_RxMsgHandlerFunc_t handlerPtr,
+    void* contextPtr
+);
+
+#ifdef __cplusplus
+}
+#endif
+#endif//__QSER_NW_H__
diff --git a/mbtk/include/lynq/lynq_qser_sim.h b/mbtk/include/lynq/lynq_qser_sim.h
new file mode 100755
index 0000000..bf2782a
--- /dev/null
+++ b/mbtk/include/lynq/lynq_qser_sim.h
@@ -0,0 +1,384 @@
+#ifndef __LYNQ_QSER_SIM__
+#define __LYNQ_QSER_SIM__
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <stdint.h>
+#include "mbtk_type.h"
+
+#define QSER_SIM_IMSI_LEN_MAX     16  /**  Maximum length of IMSI data. */
+#define QSER_SIM_ICCID_LEN_MAX    20  /**  Maximum length of ICCID data. */
+
+typedef enum
+{
+    E_QSER_SUCCESS                        = 0,    /**<  Success. */
+    E_QSER_ERROR_BADPARM                  = 4,    /**<  Bad parameter. */
+}E_QSER_ERROR_CODE_T;
+
+typedef uint32_t sim_client_handle_type;
+
+typedef enum
+{
+    QSER_SIM_SLOT_ID_1          = 0xB01,    /**< Identify card in slot 1.  */
+    QSER_SIM_SLOT_ID_2          = 0xB02,    /**< Identify card in slot 2.  */
+}QSER_SIM_SLOT_ID_TYPE_T;
+
+typedef enum
+{
+    QSER_SIM_APP_TYPE_UNKNOWN   = 0xB00,    /**<  Unknown application type  */
+    QSER_SIM_APP_TYPE_3GPP      = 0xB01,    /**< Identify the SIM/USIM application on the card.  */
+    QSER_SIM_APP_TYPE_3GPP2     = 0xB02,    /**< Identify the RUIM/CSIM application on the card.  */
+    QSER_SIM_APP_TYPE_ISIM      = 0xB03,    /**< Identify the ISIM application on the card.  */
+}QSER_SIM_APP_TYPE_T;
+
+typedef struct
+{
+    QSER_SIM_SLOT_ID_TYPE_T     e_slot_id;  /**< Indicates the slot to be used. */
+    QSER_SIM_APP_TYPE_T         e_app;      /**< Indicates the type of the application. */
+}QSER_SIM_APP_ID_INFO_T;  /* Type */
+
+#define QSER_SIM_PIN_LEN_MAX  8   /**  Maximum length of PIN data. */
+
+typedef enum
+{
+    QSER_SIM_PIN_ID_1 = 0xB01,  /**< Level 1 user verification.  */
+    QSER_SIM_PIN_ID_2 = 0xB02,  /**< Level 2 user verification.  */
+}QSER_SIM_PIN_ID_TYPE_T;
+
+typedef struct
+{
+    QSER_SIM_APP_ID_INFO_T        app_info;                           /**< Application identification information. */
+    QSER_SIM_PIN_ID_TYPE_T  pin_id;                             /**< PIN ID. */
+    uint32_t                    pin_value_len;                      /**< Must be set to the number of elements in pin_value. */
+    char                        pin_value[QSER_SIM_PIN_LEN_MAX];  /*  Value of the PIN */
+}QSER_SIM_VERIFY_PIN_INFO_T;
+
+/** Changes the PIN value of an application. The application must pass both the
+    new and the old values of the PIN to complete the operation.
+    The same PIN can be used by multiple sessions (i.e., the PIN is shared
+    between GSM and RUIM in an ICC card). The PIN is automatically verified
+    for all the sessions when the command is executed. */
+typedef struct
+{
+    QSER_SIM_APP_ID_INFO_T        app_info;                               /**< Application identification information. */
+    QSER_SIM_PIN_ID_TYPE_T  pin_id;                                 /**< PIN ID. */
+    uint32_t                    old_pin_value_len;                      /**< Must be set to the number of elements in old_pin_value. */
+    char                        old_pin_value[QSER_SIM_PIN_LEN_MAX];  /**< Value of the old PIN as a sequence of ASCII characters. */
+    uint32_t                    new_pin_value_len;                      /**< Must be set to the number of elements in new_pin_value. */
+    char                        new_pin_value[QSER_SIM_PIN_LEN_MAX];  /**< Value of the new PIN as a sequence of ASCII characters. */
+}QSER_SIM_CHANGE_PIN_INFO_T;
+
+/** Unblocks a blocked PIN using the PUK code. The client must pass PUK1 to unblock PIN1 or PUK2 to unblock PIN2.
+    The same PIN can be used by multiple sessions (i.e., the PIN is shared between GSM and RUIM in an ICC card).
+    The PIN is automatically verified for all the sessions when the command is executed. */
+typedef struct
+{
+    QSER_SIM_APP_ID_INFO_T        app_info;                               /**< Application identification information. */
+    QSER_SIM_PIN_ID_TYPE_T  pin_id;                                 /**< PIN ID. */
+    uint32_t                    puk_value_len;                          /**< Must be set to the number of elements in puk_value. */
+    char                        puk_value[QSER_SIM_PIN_LEN_MAX];      /**< Value of the PUK as a sequence of ASCII characters. */
+    uint32_t                    new_pin_value_len;                      /**< Must be set to the number of elements in new_pin_value. */
+    char                        new_pin_value[QSER_SIM_PIN_LEN_MAX];  /**< Value of the new PIN as a sequence of ASCII characters. */
+}QSER_SIM_UNBLOCK_PIN_INFO_T;
+
+/** Enables the PIN on an application. */
+typedef  QSER_SIM_VERIFY_PIN_INFO_T QSER_SIM_ENABLE_PIN_INFO_T; //Same
+
+/** Disables the PIN of an application, */
+typedef  QSER_SIM_VERIFY_PIN_INFO_T QSER_SIM_DISABLE_PIN_INFO_T; //Same
+
+
+typedef enum
+{
+    QSER_SIM_PERSO_FEATURE_TYPE_UNKNOWN                 = 0xB00, /**<  Unknown personalization feature.  */
+    QSER_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK            = 0xB01, /**<  Featurization based on 3GPP MCC and MNC.  */
+    QSER_SIM_PERSO_FEATURE_TYPE_3GPP_NETWORK_SUBSET     = 0xB02, /**<  Featurization based on 3GPP MCC, MNC, and IMSI digits 6 and 7.  */
+    QSER_SIM_PERSO_FEATURE_TYPE_3GPP_SERVICE_PROVIDER   = 0xB03, /**<  Featurization based on 3GPP MCC, MNC, and GID1.  */
+    QSER_SIM_PERSO_FEATURE_TYPE_3GPP_CORPORATE          = 0xB04, /**<  Featurization based on 3GPP MCC, MNC, GID1, and GID2.  */
+    QSER_SIM_PERSO_FEATURE_TYPE_3GPP_SIM                = 0xB05, /**<  Featurization based on the 3GPP IMSI.  */
+    QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_1    = 0xB06, /**<  Featurization based on 3GPP2 MCC and MNC.  */
+    QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_NETWORK_TYPE_2    = 0xB07, /**<  Featurization based on 3GPP2 IRM code.  */
+    QSER_SIM_PERSO_FEATURE_TYPE_3GPP2_RUIM              = 0xB08, /**<  Featurization based on 3GPP2 IMSI_M.  */
+}QSER_SIM_PERSO_FEATURE_TYPE_T;
+
+typedef enum
+{
+    QSER_SIM_CARD_STATE_UNKNOWN                     = 0xB01,    /**< Card state unknown. */
+    QSER_SIM_CARD_STATE_ABSENT                      = 0xB02,    /**< Card is absent. */
+    QSER_SIM_CARD_STATE_PRESENT                     = 0xB03,    /**< Card is present. */
+    QSER_SIM_CARD_STATE_ERROR_UNKNOWN               = 0xB04,    /**< Unknown error state. */
+    QSER_SIM_CARD_STATE_ERROR_POWER_DOWN            = 0xB05,    /**< Power down. */
+    QSER_SIM_CARD_STATE_ERROR_POLL_ERROR            = 0xB06,    /**< Poll error. */
+    QSER_SIM_CARD_STATE_ERROR_NO_ATR_RECEIVED       = 0xB07,    /**<  Failed to receive an answer to reset.  */
+    QSER_SIM_CARD_STATE_ERROR_VOLT_MISMATCH         = 0xB08,    /**< Voltage mismatch. */
+    QSER_SIM_CARD_STATE_ERROR_PARITY_ERROR          = 0xB09,    /**< Parity error. */
+    QSER_SIM_CARD_STATE_ERROR_SIM_TECHNICAL_PROBLEMS= 0xB0A,    /**< Card returned technical problems. */
+}QSER_SIM_CARD_STATE_TYPE_T;  /**< Card state. */
+
+typedef enum
+{
+    QSER_SIM_CARD_TYPE_UNKNOWN  = 0xB00,    /**<  Unidentified card type.  */
+    QSER_SIM_CARD_TYPE_ICC      = 0xB01,    /**<  Card of SIM or RUIM type.  */
+    QSER_SIM_CARD_TYPE_UICC     = 0xB02,    /**<  Card of USIM or CSIM type.  */
+}QSER_SIM_CARD_TYPE_T;
+
+typedef enum
+{
+    QSER_SIM_PROV_STATE_NONE    = 0xB00,    /**<  Nonprovisioning.  */
+    QSER_SIM_PROV_STATE_PRI     = 0xB01,    /**<  Primary provisioning subscription.  */
+    QSER_SIM_PROV_STATE_SEC     = 0xB02,    /**<  Secondary provisioning subscription.  */
+}QSER_SIM_SUBSCRIPTION_TYPE_T;
+
+typedef enum
+{
+    QSER_SIM_APP_STATE_UNKNOWN                  = 0xB00,    /**< Application state unknown. */
+    QSER_SIM_APP_STATE_DETECTED                 = 0xB01,    /**<  Detected state.  */
+    QSER_SIM_APP_STATE_PIN1_REQ                 = 0xB02,    /**<  PIN1 required.  */
+    QSER_SIM_APP_STATE_PUK1_REQ                 = 0xB03,    /**<  PUK1 required.  */
+    QSER_SIM_APP_STATE_INITALIZATING            = 0xB04,    /**<  Initializing.  */
+    QSER_SIM_APP_STATE_PERSO_CK_REQ             = 0xB05,    /**<  Personalization control key required.  */
+    QSER_SIM_APP_STATE_PERSO_PUK_REQ            = 0xB06,    /**<  Personalization unblock key required.  */
+    QSER_SIM_APP_STATE_PERSO_PERMANENTLY_BLOCKED= 0xB07,    /**<  Personalization is permanently blocked.  */
+    QSER_SIM_APP_STATE_PIN1_PERM_BLOCKED        = 0xB08,    /**<  PIN1 is permanently blocked.  */
+    QSER_SIM_APP_STATE_ILLEGAL                  = 0xB09,    /**<  Illegal application state.  */
+    QSER_SIM_APP_STATE_READY                    = 0xB0A,    /**<  Application ready state.  @newpage */
+}QSER_SIM_APP_STATE_TYPE_T;
+
+typedef enum
+{
+    QSER_SIM_PIN_STATE_UNKNOWN                  = 0xB01,    /**< Unknown PIN state. */
+    QSER_SIM_PIN_STATE_ENABLED_NOT_VERIFIED     = 0xB02,    /**<  PIN required, but has not been verified.  */
+    QSER_SIM_PIN_STATE_ENABLED_VERIFIED         = 0xB03,    /**<  PIN required and has been verified.  */
+    QSER_SIM_PIN_STATE_DISABLED                 = 0xB04,    /**<  PIN not required.  */
+    QSER_SIM_PIN_STATE_BLOCKED                  = 0xB05,    /**<  PIN verification has failed too many times and is blocked. Recoverable through PUK verification.  */
+    QSER_SIM_PIN_STATE_PERMANENTLY_BLOCKED      = 0xB06,    /**<  PUK verification has failed too many times and is not recoverable.  */
+}QSER_SIM_PIN_STATE_TYPE_T;
+
+typedef struct
+{
+    QSER_SIM_SUBSCRIPTION_TYPE_T      subscription;           /**<   Type of subscription (i.e., primary, secondary, etc.). */
+    QSER_SIM_APP_STATE_TYPE_T         app_state;              /**<   Current state of the application. */
+    QSER_SIM_PERSO_FEATURE_TYPE_T   perso_feature;          /**<   Current personalization state and feature enabled. */
+    uint8_t                             perso_retries;          /**<   Number of personalization retries. */
+    uint8_t                             perso_unblock_retries;  /**<   Number of personalization unblock retries. */
+    QSER_SIM_PIN_STATE_TYPE_T         pin1_state;             /**<   Current PIN 1 state. */
+    uint8_t                             pin1_num_retries;       /**<   Number of PIN 1 retries. */
+    uint8_t                             puk1_num_retries;       /**<   Number of PUK 1 retries. */
+    QSER_SIM_PIN_STATE_TYPE_T         pin2_state;             /**<   Current PIN 2 state. */
+    uint8_t                             pin2_num_retries;       /**<   Number of PIN 2 retries. */
+    uint8_t                             puk2_num_retries;       /**<   Number of PUK 2 retries. */
+}QSER_SIM_CARD_APP_INFO_T;
+
+typedef struct
+{
+    QSER_SIM_CARD_APP_INFO_T          app_3gpp;               /**<   Stores 3GPP application information. */
+    QSER_SIM_CARD_APP_INFO_T          app_3gpp2;              /**<   Stores 3GPP2 application information. */
+    QSER_SIM_CARD_APP_INFO_T          app_isim;               /**<   Stores ISIM application information. */
+}QSER_SIM_CARD_ALL_APP_INFO_T;
+
+typedef struct
+{
+    QSER_SIM_CARD_STATE_TYPE_T      e_card_state;/**<   Current card and card error state. */
+    QSER_SIM_CARD_TYPE_T            e_card_type; /**<   Card type. */
+    QSER_SIM_CARD_ALL_APP_INFO_T      card_app_info; /**<   Stores all relevant application information. */
+}QSER_SIM_CARD_STATUS_INFO_T;
+
+int qser_sim_client_init(sim_client_handle_type  *ph_sim);
+
+int qser_sim_client_deinit(sim_client_handle_type h_sim);
+
+/*===========================================================================
+
+  FUNCTION:  qser_sim_getimsi
+
+===========================================================================*/
+/*
+    @brief
+    Function sends a command to the modem to retrieve the IMSI (for 3GPP)
+    or IMSI_M (for 3GPP2) from the SIM in ASCII form
+
+    @return
+    void
+*/
+/*=========================================================================*/
+int qser_sim_getimsi(
+    sim_client_handle_type          h_sim,
+    QSER_SIM_APP_ID_INFO_T            *pt_info,   ///< [IN] The SIM identifier info.
+    char                            *imsi,      ///< [OUT] IMSI buffer
+    size_t                          imsiLen     ///< [IN] IMSI buffer length
+);
+
+
+/*===========================================================================
+
+  FUNCTION:  qser_sim_geticcid
+
+===========================================================================*/
+/*
+    @brief
+    Function sends a command to the modem to retrieve the ICCID from
+    SIM in ASCII form
+
+    @return
+    int
+*/
+/*=========================================================================*/
+int qser_sim_geticcid
+(
+    sim_client_handle_type          h_sim,
+    QSER_SIM_SLOT_ID_TYPE_T     simId,     ///< [IN] The SIM identifier.
+    char                            *iccid,    ///< [OUT] ICCID
+    size_t                          iccidLen   ///< [IN] ICCID buffer length
+);
+
+
+/*===========================================================================
+
+  FUNCTION:  qser_sim_getphonenumber
+
+===========================================================================*/
+/*
+    @brief
+    Function sends a command to the modem to retrieve the device phone
+    number from MSISDN (for 3GPP) or MDN (for 3GPP2) from the SIM in
+    ASCII form
+
+    @return
+    int
+*/
+/*=========================================================================*/
+int qser_sim_getphonenumber
+(
+    sim_client_handle_type          h_sim,
+    QSER_SIM_APP_ID_INFO_T            *pt_info,   ///< [IN] The SIM identifier.
+    char                            *phone_num, ///< [OUT] phone number
+    size_t                          phoneLen    ///< [IN] phone number buffer length
+);
+
+/*===========================================================================
+
+  FUNCTION:  qser_sim_verifypin
+
+===========================================================================*/
+/*
+    @brief
+    Function sends a command to the modem to verify either PIN1 or PIN2
+
+    @return
+    int
+*/
+/*=========================================================================*/
+int qser_sim_verifypin
+(
+    sim_client_handle_type      h_sim,
+    QSER_SIM_VERIFY_PIN_INFO_T    *pt_info   ///< [IN] Verify PIN infor
+);
+
+
+/*===========================================================================
+
+  FUNCTION:  qser_sim_changepin
+
+===========================================================================*/
+/*
+    @brief
+    Function sends a command to the modem to change the value of
+    either PIN1 or PIN2
+
+    @return
+    int
+*/
+/*=========================================================================*/
+int qser_sim_changepin
+(
+    sim_client_handle_type      h_sim,
+    QSER_SIM_CHANGE_PIN_INFO_T    *pt_info   ///< [IN] Change PIN infor
+);
+
+
+/*===========================================================================
+
+  FUNCTION:  qser_sim_unblockpin
+
+===========================================================================*/
+/*
+    @brief
+    Function sends a command to the modem to unblock a PIN1 or PIN2 that
+    has been blocked
+
+    @return
+    int
+*/
+/*=========================================================================*/
+int qser_sim_unblockpin
+(
+    sim_client_handle_type      h_sim,
+    QSER_SIM_UNBLOCK_PIN_INFO_T   *pt_info   ///< [IN] Unblock PIN infor
+);
+
+/*===========================================================================
+
+  FUNCTION:  qser_sim_enablepin
+
+===========================================================================*/
+/*
+    @brief
+    Function sends a command to the modem to enable PIN1 or PIN2
+
+    @return
+    int
+*/
+/*=========================================================================*/
+int qser_sim_enablepin
+(
+    sim_client_handle_type      h_sim,
+    QSER_SIM_ENABLE_PIN_INFO_T    *pt_info   ///< [IN] Enable PIN infor
+);
+
+/*===========================================================================
+
+  FUNCTION:  qser_sim_disablepin
+
+===========================================================================*/
+/*
+    @brief
+    Function sends a command to the modem to disable PIN1 or PIN2
+
+    @return
+    int
+*/
+/*=========================================================================*/
+int qser_sim_disablepin
+(
+    sim_client_handle_type      h_sim,
+    QSER_SIM_DISABLE_PIN_INFO_T   *pt_info   ///< [IN] Disable PIN infor
+);
+
+
+/*===========================================================================
+
+  FUNCTION:  qser_sim_getcardstatus
+
+===========================================================================*/
+/*
+    @brief
+    Function retrieves the server cached card status informations and
+    sends the information to the client
+
+    @return
+    int
+*/
+/*=========================================================================*/
+int qser_sim_getcardstatus
+(
+    sim_client_handle_type          h_sim,
+    QSER_SIM_SLOT_ID_TYPE_T     simId,     ///< [IN] The SIM identifier.
+    QSER_SIM_CARD_STATUS_INFO_T   *pt_info   ///< [OUT] Cart status infor output
+);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file
diff --git a/mbtk/include/lynq/lynq_qser_sms.h b/mbtk/include/lynq/lynq_qser_sms.h
new file mode 100755
index 0000000..7276fca
--- /dev/null
+++ b/mbtk/include/lynq/lynq_qser_sms.h
@@ -0,0 +1,241 @@
+#ifndef LYNQ_QSER_SMS_H
+#define LYNQ_QSER_SMS_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <sys/types.h>
+#include <stdint.h>
+
+#define MIN_MSM_PARAM_NUM 4
+#define MIN_IMS_MSM_PARAM_NUM 6
+#define MIN_WRITMSM_PARAM_NUM 5
+#define MSG_MAX_LEN 1024
+#define TELEPHONNUM_LEN 64
+#define STORAGSMS_MAX_SIZE 128
+#define SMSC_MAX_LEN 22
+#define SMS_NUM_MAX 255
+
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+typedef uint32_t sms_client_handle_type;
+
+/**  Maximum length of an SMS. */
+#define QSER_SMS_MAX_MT_MSG_LENGTH    1440
+
+/**  Maximum string length. */
+#define QSER_SMS_MAX_ADDR_LENGTH      252
+
+/**  Maximum string length. */
+#define QSER_SMS_MAX_SCA_TYPLENGTH 3
+
+typedef enum   
+{    
+    QSER_SMS_7BIT        = 0,
+    QSER_SMS_8BIT     = 1,
+    QSER_SMS_UCS2            = 2,
+    //<2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao, <[SMS] Segment 1==> CharSet to Alpha implementation.>
+    //QSER_SMS_IRA             = 3,//just for inside test 
+    //>2017/12/28-QCM9XOL00004C001-P01-Vicent.Gao
+
+}QSER_SMS_T;   
+
+typedef enum   
+{    
+    QSER_SMS_MO               = 0,    ///< SMS mobile terminated message.  
+    QSER_SMS_MT               = 1,    ///< SMS mobile originated message. 
+    QSER_SMS_BROADCAST_MT      = 2     ///< SMS Cell Broadcast message.   
+}QSER_SMS_TYPT; 
+
+typedef enum 
+{
+    QSER_SMS_STORAGTYPNONE      = -1,   /**<  Message no need to store. */
+    QSER_SMS_STORAGTYPUIM       = 0,    /**<  Message store to UIM. */
+    QSER_SMS_STORAGTYPNV        = 1,    /**<  Message store to NV. */
+    QSER_SMS_STORAGTYPDB     = 2,    /**<  Message store to NV. */
+}QSER_SMS_STORAGTYPT;
+
+typedef enum 
+{
+    QSER_SMS_MESSAGMODUNKNOWN   = -1,   /**<  Message type CDMA */
+    QSER_SMS_MESSAGMODCDMA      = 0,    /**<  Message type CDMA */
+    QSER_SMS_MESSAGMODGW        = 1,    /**<  Message type GW. */
+}QSER_SMS_MODTYPT;
+
+typedef struct 
+ {
+    uint8_t total_segments;     /**<     The number of long  short message*/
+    uint8_t seg_number;         /**<     Current number.*/
+	uint8_t referencnumber;   /**< referencnumber.*/
+}QSER_sms_user_data_head_t; 
+
+typedef struct
+{
+    /* If sms is stored, it won't parse, you need read it by yourself */
+    QSER_SMS_STORAGTYPT storage;                          ///specify where stored this msg
+    
+    QSER_SMS_T       format;
+    QSER_SMS_TYPT         type;
+    char                    src_addr[QSER_SMS_MAX_ADDR_LENGTH]; ///Telephone number string.  
+    int                     sms_data_len;
+    char                    sms_data[QSER_SMS_MAX_MT_MSG_LENGTH];   ///SMS content, data format depends on format
+    char                    timestamp[21];                      ///Message time stamp (in text mode). string format: "yy/MM/dd,hh:mm:ss+/-TimeZone" 
+    uint8_t                 user_data_head_valid;               //indicate whether long sms. TRUE-long sms; FALSE-short message;
+    QSER_sms_user_data_head_t  user_data_head;                    //long sms user data head info.
+    QSER_SMS_MODTYPT    mode;                             ///specify where stored this msg cdma or gw area
+    uint32_t                storage_index;                      ///storage index, -1 means not store
+} QSER_sms_info_t;
+     
+typedef struct
+{
+    QSER_SMS_STORAGTYPT storage;
+    QSER_SMS_MODTYPT    mode;
+    uint32_t                storage_idx;
+} QSER_sms_storage_info_t;
+
+typedef enum 
+{
+    QSER_SMS_UNKNOWN            = -1, 
+    QSER_SMS_DISCARD            = 0x00, /*  Incoming messages for this route are discarded by the WMS service without 
+                                            notifying QMI_WMS clients */
+    QSER_SMS_STORAND_NOTIFY   = 0x01, /*  Incoming messages for this route are stored to the specified device 
+                                            memory, and new message notifications */
+    QSER_SMS_TRANSFER_ONLY      = 0x02, /*  Incoming messages for this route are transferred to the client, and the
+                                            client is expected to send ACK to the network */
+    QSER_SMS_TRANSFER_AND_ACK   = 0x03, /*  Incoming messages for this route are transferred to the client, and ACK is
+                                            sent to the network */
+}QSER_SMS_RECEPTION_ACTION_TYPT;
+
+#define QSER_WMS_MESSAGLENGTH_MAX 255
+
+typedef enum 
+ {
+    QSER_WMS_MESSAGCDMA            = 0x00,     //- 0x00 -- MESSAGCDMA -- CDMA \n 
+    QSER_WMS_MESSAGGW_PP           = 0x06,     //- 0x06 -- MESSAGGW_PP -- GW_PP
+}QSER_WMS_MESSAGTYPE;
+
+
+typedef struct
+ {
+  QSER_WMS_MESSAGTYPE format;
+  uint32_t raw_messaglen;                             /**< Must be set to # of elements in raw_message */
+  uint8_t raw_message[QSER_WMS_MESSAGLENGTH_MAX];       /**< Raw message data*/
+}QSER_wms_send_raw_message_data_t; 
+
+typedef enum
+{
+  QSER_WMS_TL_CAUSCODADDR_VACANT                        = 0x00, 
+  QSER_WMS_TL_CAUSCODADDR_TRANSLATION_FAILURE           = 0x01, 
+  QSER_WMS_TL_CAUSCODNETWORK_RESOURCSHORTAGE          = 0x02, 
+  QSER_WMS_TL_CAUSCODNETWORK_FAILURE                    = 0x03, 
+  QSER_WMS_TL_CAUSCODINVALID_TELESERVICID             = 0x04, 
+  QSER_WMS_TL_CAUSCODNETWORK_OTHER                      = 0x05, 
+  QSER_WMS_TL_CAUSCODNO_PAGRESPONSE                   = 0x20, 
+  QSER_WMS_TL_CAUSCODDEST_BUSY                          = 0x21, 
+  QSER_WMS_TL_CAUSCODNO_ACK                             = 0x22, 
+  QSER_WMS_TL_CAUSCODDEST_RESOURCSHORTAGE             = 0x23, 
+  QSER_WMS_TL_CAUSCODSMS_DELIVERY_POSTPONED             = 0x24, 
+  QSER_WMS_TL_CAUSCODDEST_OUT_OF_SERV                   = 0x25, 
+  QSER_WMS_TL_CAUSCODDEST_NOT_AT_ADDR                   = 0x26, 
+  QSER_WMS_TL_CAUSCODDEST_OTHER                         = 0x27, 
+  QSER_WMS_TL_CAUSCODRADIO_IF_RESOURCSHORTAGE         = 0x40, 
+  QSER_WMS_TL_CAUSCODRADIO_IF_INCOMPATABILITY           = 0x41, 
+  QSER_WMS_TL_CAUSCODRADIO_IF_OTHER                     = 0x42, 
+  QSER_WMS_TL_CAUSCODENCODING                           = 0x60, 
+  QSER_WMS_TL_CAUSCODSMS_ORIG_DENIED                    = 0x61, 
+  QSER_WMS_TL_CAUSCODSMS_TERM_DENIED                    = 0x62, 
+  QSER_WMS_TL_CAUSCODSUPP_SERV_NOT_SUPP                 = 0x63, 
+  QSER_WMS_TL_CAUSCODSMS_NOT_SUPP                       = 0x64, 
+  QSER_WMS_TL_CAUSCODMISSING_EXPECTED_PARAM             = 0x65, 
+  QSER_WMS_TL_CAUSCODMISSING_MAND_PARAM                 = 0x66, 
+  QSER_WMS_TL_CAUSCODUNRECOGNIZED_PARAM_VAL             = 0x67, 
+  QSER_WMS_TL_CAUSCODUNEXPECTED_PARAM_VAL               = 0x68, 
+  QSER_WMS_TL_CAUSCODUSER_DATA_SIZERR                 = 0x69, 
+  QSER_WMS_TL_CAUSCODGENERAL_OTHER                      = 0x6A, 
+}QSER_WMS_TL_CAUSCODTYPE;
+
+
+
+typedef struct
+ {
+  uint16_t                              messagid;            /*  Message ID */
+  uint8_t                               causcodvalid;      /**< Must be set to true if causcode is being passed */
+  QSER_WMS_TL_CAUSCODTYPE           causcode;  
+}QSER_wms_raw_send_resp_t;
+
+typedef struct 
+ {
+  char service_center_addr[QSER_SMS_MAX_ADDR_LENGTH + 1];         /**<   Address of the service center.*/
+  uint8_t service_center_addr_typvalid;
+  char service_center_addr_type[QSER_SMS_MAX_SCA_TYPLENGTH + 1];    /**<   129 if the SMSC address does not start with a "+" characte;
+                                                                           145 if the SMSC address starts with a "+" character*/
+}QSER_sms_service_center_cfg_t;
+
+typedef QSER_sms_info_t       QSER_SMS_Msg_t; 
+typedef QSER_sms_info_t*      QSER_SMS_MsgRef; 
+
+/* Callback function registered to qser_sms_addrxmsghandler, msgRef contains the detail msg infor */
+typedef void (*QSER_SMS_RxMsgHandlerFunc_t)(QSER_SMS_MsgRef msgRef, void* contextPtr);
+
+/* Init SMS module and return h_sms, this should be called before any othe ones */
+int qser_sms_client_init(sms_client_handle_type  *ph_sms);
+
+/* Add callback function, if any new msg arrived, it will notify app */
+int qser_sms_addrxmsghandler(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr);
+
+/* Send sms, you just need to fill format/src_addr/sms_data_len/sms_data,
+   if format is UCS2, the data should be Unicode-BE format.
+*/
+int qser_sms_send_sms(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info);
+
+/* DeInit SMS module and release resource, this should be called in the last one. */
+int qser_sms_client_deinit(sms_client_handle_type h_sms);
+     
+/* Delete the SMS specified in the  pt_sms_storage */
+int qser_sms_deletefromstorage(sms_client_handle_type  h_sms, QSER_sms_storage_info_t  *pt_sms_storage);
+
+/* Send sms PDU.
+*/
+int qser_sms_send_smspdu( sms_client_handle_type     h_sms,
+                         QSER_wms_send_raw_message_data_t *raw_messagdata,
+                         QSER_wms_raw_send_resp_t *rawresp);
+
+
+/* Get sms center address.
+*/
+int qser_sms_getsmscenteraddress( sms_client_handle_type     h_sms,
+                       QSER_sms_service_center_cfg_t *set_sca_cfg);
+
+/* Set sms center address.
+*/
+int qser_sms_setsmscenteraddress( sms_client_handle_type     h_sms,
+                       QSER_sms_service_center_cfg_t *get_sca_cfg);
+
+/*
+Usage 1 (register callback and wait for new sms arrive): 
+1, qser_sms_client_init
+2, qser_sms_addrxmsghandler(pf_cb)
+3, wait for sms arrive, pf_cb will pass the detail sms info to app.
+4, qser_sms_client_deinit
+
+
+Usage 2 (Send sms): 
+1, qser_sms_client_init
+2, qser_sms_addrxmsghandler(pf_cb)
+3, qser_sms_send_sms
+4, qser_sms_client_deinit
+
+
+Usage 3 (store sms): 
+1, qser_sms_client_init
+2, qser_sms_addrxmsghandler(pf_cb)
+3, qser_sms_setroutelist (Notice: class-0 not allowed to store, class-2 must be stored to UIM)
+4, pf_cb will be called when new sms arrived, and tell you where the sms stored
+5, you can call qser_sms_deletefromstorage to delete specified sms, the location can be got from pf_cb.
+6, qser_sms_client_deinit
+*/
+    
+#ifdef __cplusplus
+}
+#endif
+#endif
\ No newline at end of file
diff --git a/mbtk/include/lynq/lynq_sim.h b/mbtk/include/lynq/lynq_sim.h
new file mode 100755
index 0000000..8f2849a
--- /dev/null
+++ b/mbtk/include/lynq/lynq_sim.h
@@ -0,0 +1,98 @@
+/*=============================================================================
+#     FileName: lynq_sim.h
+#     Desc: about SIMAPI
+#     Author: lei
+#     Version: V2.0
+#     LastChange: 2023-03-13
+#     History:
+# If you need to use any API under lynq_sim, you must first call the lynq_sim_init() function to initialize these functions.
+=============================================================================*/
+#ifndef __LYNQ_SIM__
+#define __LYNQ_SIM__
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "mbtk_type.h"
+
+int lynq_get_sim_status(int *card_status);
+int lynq_get_imsi(char buf[]);
+int lynq_sim_init(int utoken);
+int lynq_sim_deinit(void);
+int lynq_enable_pin(char pin[]);
+int lynq_disable_pin(char pin[]);
+int lynq_get_iccid(char buf[]);
+int lynq_query_pin_lock(char *pin,int buf[]);
+int lynq_verify_pin(char *pin);
+int lynq_change_pin(char *old_pin, char *new_pin);
+int lynq_unlock_pin(char *puk, char *pin);
+int lynq_query_phone_number(char buf[]);
+int lynq_switch_card(int slot);
+int lynq_screen(int num);
+int lynq_get_imei(char buf[]);
+int lynq_get_imei_and_sv(char imei[],char sv[]);
+
+/**
+ * @brief                   Request SIM I/O operation.
+ *                          This is similar to the TS 27.007 "restricted SIM" operation
+ *                          where it assumes all of the EF selection will be done by the callee.
+ * @param  list             type: [IN] list[0]:one of the commands listed for TS 27.007 +CRSM.(command)
+ *                          type: [IN] list[1]:EF id(fileid)
+ *                          type: [IN] list[2]:offset(p1)
+ *                          type: [IN] list[3]:offset(p2)
+ *                          type: [IN] list[4]:response len,sometimes needn't care(p3)
+ * @param  path             type: [IN] "pathid" from TS 27.007 +CRSM command.
+                            type: [IN] Path is in hex asciii format eg "7f205f70"
+                            type: [IN] Path must always be provided.
+ * @param  data             type: [IN] May be NULL
+ * @param  pin2             type: [IN] May be NULL
+ * @param  aidPtr           type: [IN] AID value, See ETSI 102.221 8.1 and 101.220 4, NULL if no value.
+ * @param  sw               type: [OUT]
+ * @param  simResponse      type: [OUT] response
+ * @return int
+ */
+int lynq_req_sim_io(int list[5], char *path, char *data, char *pin2, char *aidPtr, int sw[2], char *simResponse);
+
+/**
+ * @brief
+ * @param  options         type: [IN] [options] define whether you want to halt, power-off, or reboot the machine.May be NULL
+ * @param  time            type: [IN] [time] specifies when you want the shutdown to perform.May be NULL
+ * @param  message         type: [IN] [message] adds a message that announces the shutdown.May be NULL
+ * @return int
+ */
+int lynq_shutdown(char options[], char time[], char message[]);
+
+/**
+ * @brief                   get currnet version of mobiletek
+ * @param  buf              type: [out] My Param doc
+ * @return int
+ */
+int lynq_get_version(char buf[]);
+
+/**
+ * @brief sim power on/off
+ *
+ */
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+int lynq_reset_sim(void);
+#else
+int lynq_sim_power(int mode);
+#endif
+/**
+ * @brief reset modem
+ *
+ */
+int lynq_reset_modem(void);
+
+/**
+ * @brief factory test to both radio on/off
+ *
+ */
+int lynq_factory_radio_state(int num);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/mbtk/include/lynq/lynq_sms.h b/mbtk/include/lynq/lynq_sms.h
new file mode 100755
index 0000000..0d346a6
--- /dev/null
+++ b/mbtk/include/lynq/lynq_sms.h
@@ -0,0 +1,28 @@
+#ifndef LYNQ_SMS_H

+#define LYNQ_SMS_H 1

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+#define MIN_MSM_PARAM_NUM 4

+#define MIN_IMS_MSM_PARAM_NUM 6

+#define MIN_WRITE_MSM_PARAM_NUM 5

+#define MSG_MAX_LEN 1024

+#define TELEPHONE_NUM_LEN 64

+#define STORAGE_SMS_MAX_SIZE 128

+#define SMSC_MAX_LEN 22

+#define SMS_NUM_MAX 255

+

+int lynq_sms_init(int uToken);

+int lynq_sms_deinit(void);

+int lynq_send_sms(char telephony_num[TELEPHONE_NUM_LEN], int charset, char *msg, int msglen);

+int lynq_read_sms(int index,int *status,int *charset,char smsc[SMSC_MAX_LEN],int *smscLen,int *smslen,char message[MSG_MAX_LEN],char teleNum[TELEPHONE_NUM_LEN],int *numLen,int *current,int *total);

+int lynq_get_smsc_address(char service_num[SMSC_MAX_LEN]);

+int lynq_set_smsc_address(const char* service_num);

+int lynq_list_sms(char index_list[SMS_NUM_MAX]);

+int lynq_delete_sms(int index);

+int lynq_wait_receive_new_sms(int *handle);

+#ifdef __cplusplus

+}

+#endif

+#endif

diff --git a/mbtk/include/lynq/lynq_sms_api.h b/mbtk/include/lynq/lynq_sms_api.h
deleted file mode 100755
index cedf230..0000000
--- a/mbtk/include/lynq/lynq_sms_api.h
+++ /dev/null
@@ -1,73 +0,0 @@
-#ifndef LYNQ_SMS_QPI_H

-#define LYNQ_SMS_QPI_H

-/*

-*

-* Data : 2022/11/29 

-* Author : LuoJian

-*/

-

-#include "mbtk_type.h"

-

-#define TELEPHONE_NUM_MAX 16

-#define MSM_NUMBER_MAX 1024+1

-#define RES_NUM_MIN 128

-

-

-enum EnumDCS {

-    BIT7 = 0,            // GSM ×Ö·û¼¯

-    BIT8 = 1,            // ASCII×Ö·û¼¯

-    UCS2 = 2             // Unicode ×Ö·û¼¯

-};

-

-struct PDUUDH {

-    unsigned int count;    // ÐÅÏ¢ÔªËØÊý¾Ý×Ö½ÚÊý

-    char IEI;           // ÐÅÏ¢ÔªËØ±êʶ

-    char *IED;          // ÐÅÏ¢ÔªËØÊý¾Ý

-};

-

-// Óû§Êý¾ÝÍ·

-struct UDHS {

-    int count;

-    struct PDUUDH *UDH;

-};

-

-struct SMS_Struct {

-    char *SCA;         // ·þÎñÖÐÐĵØÖ·

-    char *OA;          // ·¢ËÍ·½µØÖ·

-    char *SCTS;        // ·þÎñÖÐÐÄʱ¼ä´Á

-    struct UDHS *UDH;     // Óû§Êý¾ÝÍ·

-    char *UD;          // Óû§Êý¾Ý

-

-    bool RP;              // Ó¦´ð·¾¶

-    bool UDHI;            // Óû§Êý¾ÝÍ·±êʶ

-    bool SRI;             // ״̬±¨¸æÖ¸Ê¾

-    bool MMS;             // ¸ü¶àÐÅÏ¢·¢ËÍ

-    int MTI;              // ÐÅÏ¢ÀàÐÍָʾ

-

-    char PID;          // PID ЭÒé±êʶ

-

-    enum EnumDCS DCS;      // Êý¾Ý±àÂë·½°¸

-    bool TC;              // Îı¾Ñ¹Ëõָʾ 0£º δѹËõ 1£ºÑ¹Ëõ

-    int MC;               // ÏûÏ¢ÀàÐÍ -1£º ÎÞ 1£ºÒƶ¯Éè±¸ÌØ¶¨ÀàÐÍ 2£ºSIMÌØ¶¨ÀàÐÍ 3£ºÖÕ¶ËÉè±¸ÌØ¶¨ÀàÐÍ

-

-};

-

-extern struct SMS_Struct PDUDecoding(const char *data);

-#define DSC_to_msg(DSC) (DSC == 0 ? "Bit7" : (DSC == 1 ? "Bit8" : "UCS2"))

-

-

-

-int lynq_init_sms(int uToken);

-int lynq_deinit_sms(void);

-int lynq_delete_sms(int index);

-int lynq_wait_receive_new_sms(int *handle);

-int lynq_send_sms(char *telephony_num, int state, char *msg);

-int lynq_list_sms(int stat, int index, char *data);

-int lynq_query_sms_storage_status(void);

-

-void lynq_sms_state_change_cb(const void* data, int data_len);

-

-int lynq_get_smsc_address(char *serviceNumber);

-int lynq_set_smsc_address(const char* service_num);

-

-#endif

diff --git a/mbtk/include/lynq/lynq_systime.h b/mbtk/include/lynq/lynq_systime.h
new file mode 100755
index 0000000..f1d4805
--- /dev/null
+++ b/mbtk/include/lynq/lynq_systime.h
@@ -0,0 +1,122 @@
+/**@file lynq-systime.h

+ *

+ * @brief Sync systime form each time source.

+ *

+ * @author sj.zhang

+ *

+ * @date 2023-08-14

+ *

+ * @version V1.0

+ *

+ * @copyright Copyright (c) MobileTek

+ */

+#include <stdio.h>

+#include <string.h>

+#include <stdlib.h>

+#include <time.h>

+

+#ifndef _LYNQ_SYSTIME_H_

+#define _LYNQ_SYSTIME_H_

+

+#ifdef __cplusplus

+extern "C"

+{

+#endif

+

+typedef struct time_source_status

+{

+    int ntp;

+    int nitz;

+    int gnss;

+}time_src_status_s;

+

+#ifdef MOBILETEK_TARGET_PLATFORM_T106

+

+    /**@brief Set the rtc time to the system time.

+     *

+     * @param void

+     *

+     * @return

+     *      0:success

+     *      other:failure

+     */

+    int lynq_sync_time_from_rtc(void);

+

+    /**@brief Set the system time to the rtc time.

+     *

+     * @param void

+     *

+     * @return

+     *      0:success

+     *      other:failure

+     */

+    int lynq_set_rtc_time(void);

+

+    /**@brief Query the rtc time.

+     *

+     * @param [OUT] ulsec: rtc time, secconds from 1900.1.1 00:00

+     *

+     * @return

+     *      0:success

+     *      other:failure

+     */

+    int lynq_get_rtc_time(unsigned long *ulsec);

+#endif

+

+    /**@brief Query the time source status now.

+     *

+     * @param [OUT] ntp, nitz, gnss:

+     *        0: disable

+     *        1: enable

+     *

+     * @return

+     *      0 : success

+     *      other:failure

+     */

+    int lynq_get_time_src_status(time_src_status_s *time_src);

+

+    /**@brief Turn sntp on/off

+     *

+     * @param enable [IN] : 0  disenable; 1 enable;

+     *

+     * @return

+     *    0 set success

+     *    1 SNTP_DISENABLE

+     *    2 SNTP_ALREADY_ENABLE

+     */

+    int ntp_sync_time(int enable);

+

+    /**@brief Enable/Disenable sync time from NITZ.

+     *

+     * @param enable [IN] : 0  disenable; 1 enable;

+     *

+     * @return

+     *      0:success

+     *      other:failure

+     */

+    int modem_time_enable(int enable);

+

+    /**@brief Enable/Disenable sync time from GNSS.

+     *

+     * @param enable [IN] : 0  disenable; 1 enable;

+     *

+     * @return

+     *      0:success

+     *      other:failure

+     */

+    int gnss_time_enable(int enable);

+

+    /**@brief User set systime manually.

+     *

+     * @param enable [IN] : 0  disenable; 1 enable;

+     *

+     * @return

+     *      0:success

+     *      other:failure

+     */

+    int user_set_time(char *date, char *time);

+

+#ifdef __cplusplus

+}

+#endif

+#endif

diff --git a/mbtk/include/mbtk/mbtk_info_api.h b/mbtk/include/mbtk/mbtk_info_api.h
index 411f309..fe4268d 100755
--- a/mbtk/include/mbtk/mbtk_info_api.h
+++ b/mbtk/include/mbtk/mbtk_info_api.h
@@ -11,6 +11,7 @@
 #include "mbtk_list.h"
 #include "mbtk_log.h"
 #include "mbtk_utils.h"
+#include "mbtk_pdu_sms.h"
 
 #ifndef UNUSED
 #define UNUSED(a)    (void)(a)
@@ -624,6 +625,163 @@
 int mbtk_radio_state_set(mbtk_info_handle_t* handle, int radio_state);
 
 /*
+* Return sms cmgf.
+*/
+int mbtk_sms_cmgf_get(mbtk_info_handle_t* handle, int *volte_state);
+
+/*
+* Set sms cmgf.
+*
+* volte_state:
+* 0 : PDU mode.
+* 1 :  text mode.
+*
+* Restarting takes effect after execution.
+*/
+int mbtk_sms_cmgf_set(mbtk_info_handle_t* handle, int mode);
+
+/*
+* Set sms cmgs.
+*
+if PDU mode (+CMGF=0):
++CMGS=<length><CR>
+PDU is given<ctrl-Z/ESC>
+
+if text mode (+CMGF=1):
++CMGS=<da>[,<toda>]<CR>
+text is entered<ctrl-Z/ESC>
+
+* Restarting takes effect after execution.
+*/
+int mbtk_sms_cmgs_set(mbtk_info_handle_t* handle, char * cmgs, char *resp);
+
+/*
+* Set sms cmgw.
+*
+if text mode (+CMGF=1):
++CMGW=<oa/da>[,<tooa/toda>[,<stat>]]
+<CR>
+text is entered<ctrl-Z/ESC>
+if PDU mode (+CMGF=0):
++CMGW=<length>[,<stat>]<CR>PDU is
+given<ctrl-Z/ESC>
+
+*/
+int mbtk_sms_cmgw_set(mbtk_info_handle_t* handle, char * cmgw, char *resp);
+
+/*
+* Set sms cmgd.
+*
+* +CMGD=<index>[,<delflag>]
+*
+* Restarting takes effect after execution.
+*/
+int mbtk_sms_cmgd_set(mbtk_info_handle_t* handle, char * cmdg);
+
+/*
+* Set sms cmgl.
+*
+* AT+CMGL[=<stat>]
+*
+* Restarting takes effect after execution.
+*/
+int mbtk_sms_cmgl_set(mbtk_info_handle_t* handle, char * cmgl, char *resp);
+
+/*
+* Return sms csca.
+*/
+int mbtk_sms_csca_get(mbtk_info_handle_t* handle, char *buf);
+
+/*
+* Set sms csca.
+*
+* AT+CSCA=<number> [,<type>]
+*
+* Restarting takes effect after execution.
+*/
+int mbtk_sms_csca_set(mbtk_info_handle_t* handle, char * csca);
+
+/*
+* Set sms csmp.
+*
+* AT+CSMP=[<fo>[,<vp>[,<pid>[,<dcs>]]]]
+*
+* Restarting takes effect after execution.
+*/
+int mbtk_sms_csmp_set(mbtk_info_handle_t* handle, char * csmp);
+
+/*
+* Set sms cscb.
+*
+* AT+CSCB=<[<mode>[,<mids>[,<dcss>]]]>
+*
+* Restarting takes effect after execution.
+*/
+int mbtk_sms_cscb_set(mbtk_info_handle_t* handle, char * cscb);
+
+/*
+* Set sms cnmi.
+*
+at+cnmi=1,2
+
+OK
+if sending fails:
++CMS ERROR: <err>
+*/
+int mbtk_sms_cnmi_set(mbtk_info_handle_t* handle);
+
+/*
+* Set sms cmss.
+*
++CMSS=<index>[,<da>[,<toda>]]
+
+if sending successful:
++CMSS: <mr>
+OK
+if sending fails:
++CMS ERROR: <err>
+*/
+int mbtk_sms_cmss_set(mbtk_info_handle_t* handle, char * cmss, char *resp);
+
+/*
+* Return sms cmgf.
+*/
+int mbtk_sms_cpms_get(mbtk_info_handle_t* handle, char * mem);
+
+/*
+* Set sms cpms.
+*
+* AT+CPMS=<mem1>[,<mem2>[,<mem3>]]
+*
+* Restarting takes effect after execution.
+*/
+int mbtk_sms_cpms_set(mbtk_info_handle_t* handle, char * mem, char* response);
+
+/*
+* Set sms cm.
+*
+* +CMGR=<index>
+
+if PDU mode (+CMGF=0) ��command successful:
++CMGR: <stat>,[<alpha>],<length><CR><LF><pdu>
+OK
+if text mode (+CMGF=1), command successful and SMS-DELIVER:
++CMGR:<stat>,<oa>,[<alpha>],<scts>[,<tooa>,<fo>,<pid>,<dcs
+>, <sca>,<tosca>,<length>]<CR><LF><data>
+OK
+if text mode (+CMGF=1), command successful and SMS-SUBMIT:
++CMGR:
+<stat>,<da>,[<alpha>][,<toda>,<fo>,<pid>,<dcs>,[<vp>],
+<sca>,<tosca>,<length>]<CR><LF><data>
+OK
+otherwise:
++CMS ERROR: <err>
+*
+* Restarting takes effect after execution.
+*/
+int mbtk_sms_cmgr_set(mbtk_info_handle_t* handle, int index, char *resp);
+
+/*
 * Get sim state.
 */
 int mbtk_sim_state_get(mbtk_info_handle_t* handle, mbtk_sim_state_enum *sim_state);
diff --git a/mbtk/include/mbtk/mbtk_pdu_sms.h b/mbtk/include/mbtk/mbtk_pdu_sms.h
new file mode 100755
index 0000000..c6416df
--- /dev/null
+++ b/mbtk/include/mbtk/mbtk_pdu_sms.h
@@ -0,0 +1,191 @@
+//

+// Created by hitmoon on 15-12-9.

+//

+

+#ifndef SMS_SMS_H

+#define SMS_SMS_H

+

+#include <string.h>

+#include "mbtk_utf.h"

+#include "mbtk_type.h"

+

+#define MAX_SMS_NR 32

+

+//typedef int bool;

+

+#define true 1

+#define false 0

+

+enum EnumDCS {

+    BIT7 = 0,            // GSM 字符集

+    BIT8 = 1,            // ASCII字符集

+    UCS2 = 2             // Unicode 字符集

+};

+

+enum EnumUDL {

+    BIT7UDL = 160,

+    BIT8UDL = 140,

+    UCS2UDL = 70

+};

+

+enum EnumCSMIEI {

+    BIT8MIEI = 0,

+    BIT16MIEI = 8

+};

+

+struct PDUUDH {

+    unsigned int count;    // 信息元素数据字节数

+    char IEI;           // 信息元素标识

+    char *IED;          // 信息元素数据

+};

+

+// 用户数据头

+struct UDHS {

+    int count;

+    struct PDUUDH *UDH;

+};

+

+// 用户数据数组,用于拆分短信

+struct UDS {

+    unsigned int total;

+    char **Data;

+};

+

+// 编码后短信

+struct PDUS {

+    unsigned int count;

+    char **PDU;

+};

+

+struct ByteArray {

+    char *array;

+    unsigned int len;

+};

+

+struct SMS_Struct {

+    char *SCA;         // 服务中心地址

+    char *OA;          // 发送方地址

+    char *SCTS;        // 服务中心时间戳

+    struct UDHS *UDH;     // 用户数据头

+    char *UD;          // 用户数据

+

+    bool RP;              // 应答路径

+    bool UDHI;            // 用户数据头标识

+    bool SRI;             // 状态报告指示

+    bool MMS;             // 更多信息发送

+    int MTI;              // 信息类型指示

+

+    char PID;          // PID 协议标识

+

+    enum EnumDCS DCS;      // 数据编码方案

+    bool TC;              // 文本压缩指示 0: 未压缩 1:压缩

+    int MC;               // 消息类型 -1: 无 1:移动设备特定类型 2:SIM特定类型 3:终端设备特定类型

+

+};

+

+

+// 短信解码

+struct SMS_Struct PDUDecoding(const char *data);

+

+// 短信编码, 自动确定编码方案

+struct PDUS *PDUEncoding(char *SCA, char *DA, char *UDC, struct UDHS *udhs);

+

+// 短信编码真正的工作

+/// 发送方PDU格式(SMS-SUBMIT-PDU)

+/// SCA(Service Center Adress):短信中心,长度1-12

+/// PDU-Type(Protocol Data Unit Type):协议数据单元类型,长度1

+/// MR(Message Reference):消息参考值,为0~255。长度1

+/// DA(Destination Adress):接收方SME的地址,长度2-12

+/// PID(Protocol Identifier):协议标识,长度1

+/// DCS(Data Coding Scheme):编码方案,长度1

+/// VP(Validity Period):有效期,长度为1(相对)或者7(绝对或增强)

+/// UDL(User Data Length):用户数据段长度,长度1

+/// UD(User Data):用户数据,长度0-140

+

+struct PDUS *PDUDoEncoding(char *SCA, char *DA, char *UDC, struct UDHS *udhs, enum EnumDCS DCS);

+

+

+// 服务中心地址解码

+char *SCADecoding(const char *data, int *EndIndex);

+

+// 原始地址解码

+char *OADecoding(const char *data, int index, int *EndIndex);

+

+// 服务中心时间戳解码

+char *SCTSDecoding(const char *data, int index);

+

+// BCD 解码

+int BCDDecoding(const char *data, int index, bool isMSB);

+

+// 用户数据头解码

+struct UDHS *UDHDecoding(const char *data, int index);

+

+// 用户数据解码

+char *UserDataDecoding(const char *data, int index, bool UDHI, enum EnumDCS dcs);

+

+// 7-Bit编码解压缩

+char *BIT7Unpack(const char *data, int index, int Septets, int FillBits);

+

+// 转换GSM字符编码到Unicode编码

+char *BIT7Decoding(char *BIT7Data, unsigned int size);

+

+// 7-Bit序列和Unicode编码是否相同

+int isBIT7Same(u_int16_t UCS2);

+

+// 判断是否是GSM字符串

+int isGSMString(char *Data);

+

+// 用户数据拆分

+struct UDS *UDCSplit(char *UDC, struct UDHS *uhds, enum EnumDCS DCS);

+

+// 获得用户数据头长度

+int getUDHL(struct UDHS *udhs);

+

+// 计算需要的7-Bit编码字节数

+int SeptetsLength(char *source);

+

+// 将7-Bit编码字节数换算成UCS2编码字符数

+int SeptetsToChars(char *source, int index, int septets);

+

+// 在用户数据头中增加长短信信息元素

+struct UDHS *UpdateUDH(struct UDHS *udhs, int CSMMR, int total, int index);

+

+//单条短信编码

+char *SoloPDUEncoding(char *SCA, char *DA, char *UC, struct UDHS *udhs, enum EnumDCS DCS);

+

+// SCA编码

+char *SCAEncoding(char *SCA);

+

+// PDUTYPE 编码

+char *PDUTypeEncoding(bool UDH);

+

+// MR,消息参考值

+char *MREncoding();

+

+//接收方SME地址

+char *DAEncoding(char *DA);

+

+// 协议标识

+char *PIDEncoding();

+

+// 编码方案

+char *DCSEncoding(char *UD, enum EnumDCS DCS);

+

+// 用户数据长度及内容

+char *UDEncoding(char *UD, struct UDHS *udhs, enum EnumDCS DCS);

+

+// 用户数据头编码

+char *UDHEncoding(struct UDHS *udhs, int *UDHL);

+

+// 用户数据内容编码

+char *UDCEncoding(char *UDC, int *UDCL, int UDHL, enum EnumDCS DCS);

+

+// 将UCS2编码字符串转换成7-Bit编码字节 序列

+struct ByteArray *BIT7Encoding(char *UDC, int *Septets);

+

+//  7-Bit编码压缩

+char *BIT7Pack(struct ByteArray *Bit7Array, int UDHL);

+

+void sms_init();

+

+#endif //SMS_SMS_H

diff --git a/mbtk/include/mbtk/mbtk_utf.h b/mbtk/include/mbtk/mbtk_utf.h
new file mode 100755
index 0000000..6a16ced
--- /dev/null
+++ b/mbtk/include/mbtk/mbtk_utf.h
@@ -0,0 +1,85 @@
+//

+// Created by hitmoon on 15-12-17.

+//

+

+#ifndef SMS_UTF_H

+#define SMS_UTF_H

+

+#include <stddef.h>

+#include <sys/types.h>

+

+typedef unsigned int UTF32;

+/* at least 32 bits */

+typedef unsigned short UTF16;

+/* at least 16 bits */

+typedef unsigned char UTF8;

+/* typically 8 bits */

+typedef unsigned char Boolean; /* 0 or 1 */

+

+/* Some fundamental constants */

+#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD

+#define UNI_MAX_BMP (UTF32)0x0000FFFF

+#define UNI_MAX_UTF16 (UTF32)0x0010FFFF

+#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF

+#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF

+

+typedef enum {

+    conversionOK, /* conversion successful */

+            sourceExhausted, /* partial character in source, but hit end */

+            targetExhausted, /* insuff. room in target for conversion */

+            sourceIllegal        /* source sequence is illegal/malformed */

+} ConversionResult;

+

+typedef enum {

+    strictConversion = 0,

+    lenientConversion

+} ConversionFlags;

+

+/* This is for C++ and does no harm in C */

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+ConversionResult ConvertUTF8toUTF16(

+        const UTF8 **sourceStart, const UTF8 *sourceEnd,

+        UTF16 **targetStart, UTF16 *targetEnd, ConversionFlags flags);

+

+ConversionResult ConvertUTF16toUTF8(

+        const UTF16 **sourceStart, const UTF16 *sourceEnd,

+        UTF8 **targetStart, UTF8 *targetEnd, ConversionFlags flags);

+

+ConversionResult ConvertUTF8toUTF32(

+        const UTF8 **sourceStart, const UTF8 *sourceEnd,

+        UTF32 **targetStart, UTF32 *targetEnd, ConversionFlags flags);

+

+ConversionResult ConvertUTF32toUTF8(

+        const UTF32 **sourceStart, const UTF32 *sourceEnd,

+        UTF8 **targetStart, UTF8 *targetEnd, ConversionFlags flags);

+

+ConversionResult ConvertUTF16toUTF32(

+        const UTF16 **sourceStart, const UTF16 *sourceEnd,

+        UTF32 **targetStart, UTF32 *targetEnd, ConversionFlags flags);

+

+ConversionResult ConvertUTF32toUTF16(

+        const UTF32 **sourceStart, const UTF32 *sourceEnd,

+        UTF16 **targetStart, UTF16 *targetEnd, ConversionFlags flags);

+

+Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd);

+

+#ifdef __cplusplus

+}

+#endif

+

+// 获得下一个char的起始地址

+u_int32_t next_char(unsigned char **string);

+

+const unsigned char *utf32toutf8(wchar_t *source, unsigned char *target, size_t size,  int *len);

+

+unsigned char *utf16toutf8(unsigned short *source, unsigned char *target, size_t size,  int *len);

+unsigned short *utf8toutf16(unsigned char *source, unsigned short *target, size_t size,  int *len);

+

+int utf8len(unsigned char *string);

+int is_acsii(unsigned char *string);

+size_t utf8_get_size(unsigned char *source, size_t num);

+

+#endif //SMS_UTF_H

diff --git a/mbtk/include/qser/qser_adc.h b/mbtk/include/qser/qser_adc.h
deleted file mode 100755
index faa1cf3..0000000
--- a/mbtk/include/qser/qser_adc.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-* qser_adc.h
-*
-* QSER adc header file.
-*
-* Author : lb
-* Date   : 2023/11/23 11:03:26
-*/
-#ifndef _QSER_ADC_H
-#define _QSER_ADC_H
-#include "mbtk_type.h"
-
-typedef enum ADC_CHANNEL
-{
-    QADC_NONE = 0, //标志位 0 正常模式
-    ADC0 = 1, //指定 ADC0 通道
-    ADC1 = 2, //指定 ADC1 通道
-    ADC2 = 3, //指定 ADC2 通道
-    QADC_END //枚举结束标志
-} ADC_CHANNEL_E;
-
-int qser_adc_show(ADC_CHANNEL_E qadc);
-
-#endif /* _QSER_ADC_H */
diff --git a/mbtk/include/qser/qser_data_call.h b/mbtk/include/qser/qser_data_call.h
deleted file mode 100755
index fbeddad..0000000
--- a/mbtk/include/qser/qser_data_call.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-* qser_data_call.h
-*
-* QSER data call header file.
-*
-* Author : lb
-* Date   : 2023/11/23 13:32:37
-*/
-#ifndef _QSER_DATA_CALL_H
-#define _QSER_DATA_CALL_H
-#include "mbtk_type.h"
-
-#define QSER_APN_MAX_LIST 8
-#define QSER_APN_NAME_SIZE 150
-#define QSER_APN_USERNAME_SIZE 127
-#define QSER_APN_PASSWORD_SIZE 127
-
-typedef enum {
-    QSER_DATA_CALL_ERROR_NONE = 0,
-    QSER_DATA_CALL_ERROR_INVALID_PARAMS,
-} qser_data_call_error_e;
-
-typedef enum {
-    QSER_DATA_CALL_TYPE_IPV4 = 0, /*!< IPv4 call. */
-    QSER_DATA_CALL_TYPE_IPV6, /*!< IPv6 call. */
-    QSER_DATA_CALL_TYPE_IPV4V6, /*!< IPv4 and IPv6 call (Only used call start or stop). */
-} qser_data_call_ip_family_e;
-
-typedef enum {
-    QSER_APN_PDP_TYPE_IPV4 = 0,
-    QSER_APN_PDP_TYPE_PPP,
-    QSER_APN_PDP_TYPE_IPV6,
-    QSER_APN_PDP_TYPE_IPV4V6,
-} qser_apn_pdp_type_e;
-
-typedef enum {
-    QSER_APN_AUTH_PROTO_DEFAULT = 0,
-    QSER_APN_AUTH_PROTO_NONE,
-    QSER_APN_AUTH_PROTO_PAP,
-    QSER_APN_AUTH_PROTO_CHAP,
-    QSER_APN_AUTH_PROTO_PAP_CHAP,
-} qser_apn_auth_proto_e;
-
-typedef struct {
-    char profile_idx; /*!< UMTS/CMDA profile ID. */
-    bool reconnect; /*!< Whether to re-dial after disconnecting the network.*/
-    qser_data_call_ip_family_e ip_family; /*!< IP version. */
-    char cdma_username[QSER_APN_USERNAME_SIZE]; /*!< Username used during data network authentication. */
-    char cdma_password[QSER_APN_PASSWORD_SIZE]; /*!< Password to be used during data network authentication. */
-} qser_data_call_s;
-
-struct v4_info {
-    char name[16]; /*!< Interface Name. */
-    qser_data_call_state_e state; /*!< The dial status. */
-    bool reconnect; /*!< re-dial flag. */
-    struct v4_address_status addr; /*!< IPv4 IP Address information. */
-    struct pkt_stats stats; /*!< IPv4 statics */
-};
-
-struct v6_info {
-    char name[16]; /*!< Interface Name. */
-    qser_data_call_state_e state; /*!< The dial status. */
-    bool reconnect; /*!< re-dial flag. */
-    struct v6_address_status addr; /*!< IPv6 IP Address information. */
-    struct pkt_stats stats; /*!< IPv6 statics */
-};
-
-typedef struct {
-    char profile_idx; /*!< UMTS/CDMA profile ID. */
-    qser_data_call_ip_family_e ip_family; /*!< IP version. */
-    struct v4_info v4; /*!< IPv4 information */
-    struct v6_info v6; /*!< IPv6 information */
-} qser_data_call_info_s;
-
-typedef struct {
-    unsigned char profile_idx; /*!< UMTS/CDMA profile ID. */
-    qser_apn_pdp_type_e pdp_type; /*!< Packet Data Protocol (PDP) type specifies the type of data payload exchanged over the airlink when the packet data session is established with this profile. */
-    qser_apn_auth_proto_e auth_proto; /*!< Authentication Protocol. */
-    char apn_name[QSER_APN_NAME_SIZE]; /*!< A string parameter that is a logical name used to select the GGSN and external packet data network. */
-    char username[QSER_APN_USERNAME_SIZE]; /*!< Username used during data network authentication. */
-    char password[QSER_APN_PASSWORD_SIZE]; /*!< Password to be used during data network authentication. */
-    char apn_type[QSER_APN_NAME_SIZE]; /*The primary key of the apn table, cannot insert two apn information with the same apn_type*/
-} qser_apn_info_s;
-
-typedef struct {
-    qser_apn_pdp_type_e pdp_type; /*!< Packet Data Protocol (PDP) type specifies the type of data payload exchanged over the airlink when the packet data session is established with this profile. */
-    qser_apn_auth_proto_e auth_proto; /*!< Authentication Protocol. */
-    char apn_name[QSER_APN_NAME_SIZE]; /*!< A string parameter that is a logical name used to select the GGSN and external packet data network. */
-    char username[QSER_APN_USERNAME_SIZE]; /*!< Username used during data network authentication. */
-    char password[QSER_APN_PASSWORD_SIZE]; /*!< Password to be used during data network authentication. */
-    char apn_type[QSER_APN_NAME_SIZE]; /*The primary key of the apn table, cannot insert two apn information with the same apn_type*/
-} qser_apn_add_s;
-
-typedef struct {
-    int cnt; /*apn[] 数组中有效 apn 的数目 */
-    qser_apn_info_s apn[QSER_APN_MAX_LIST];
-} qser_apn_info_list_s;
-
-typedef void (*qser_data_call_evt_cb_t)(qser_data_call_state_s *state);
-
-int qser_data_call_init(qser_data_call_evt_cb_t evt_cb);
-
-void qser_data_call_destroy(void);
-
-int qser_data_call_start(qser_data_call_s *data_call, qser_data_call_error_e *err);
-
-int qser_data_call_stop(char profile_idx, qser_data_call_ip_family_e ip_family, qser_data_call_error_e *err);
-
-int qser_data_call_info_get(char profile_idx,qser_data_call_ip_family_e ip_family,qser_data_call_info_s *info,qser_data_call_error_e *err);
-
-int qser_apn_set(qser_apn_info_s *apn);
-
-int qser_apn_get(unsigned char profile_idx, qser_apn_info_s *apn);
-
-int qser_apn_add(qser_apn_add_s *apn, unsigned char *profile_idx);
-
-int qser_apn_del(unsigned char profile_idx);
-
-int qser_apn_get_list(qser_apn_info_list_s *apn_list);
-
-#endif /* _QSER_DATA_CALL_H */
diff --git a/mbtk/include/qser/qser_fota.h b/mbtk/include/qser/qser_fota.h
deleted file mode 100755
index 7425d21..0000000
--- a/mbtk/include/qser/qser_fota.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-* qser_fota.h
-*
-* QSER Fota header file.
-*
-* Author : lb
-* Date   : 2023/11/23 11:09:33
-*/
-#ifndef _QSER_FOTA_H
-#define _QSER_FOTA_H
-#include "mbtk_type.h"
-
-int lynq_rock_main(int first_run);
-
-int lynq_fota_set_addr_value(char *value,int size);
-
-int lynq_fota_nrestart(void);
-
-int lynq_get_upgrade_status(void);
-
-
-#endif /* _QSER_FOTA_H */
diff --git a/mbtk/include/qser/qser_gnss.h b/mbtk/include/qser/qser_gnss.h
deleted file mode 100755
index 6e2827a..0000000
--- a/mbtk/include/qser/qser_gnss.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-* qser_gnss.h
-*
-* QSER GNSS header file.
-*
-* Author : lb
-* Date   : 2023/11/23 11:13:18
-*/
-#ifndef _QSER_GNSS_H
-#define _QSER_GNSS_H
-#include "mbtk_type.h"
-
-typedef unsigned int Uint_t;
-
-typedef enum
-{
-    E_MT_LOC_MSG_ID_LOCATION_INFO, /**< pv_data = & mopen_location_info_t */
-    E_MT_LOC_MSG_ID_NMEA_INFO, /**< pv_data = & mopen_gnss_nmea_info_t */
-} e_msg_id_t;
-
-typedef void (*gnss_handler_func_t)
-(
-    Uint_t *h_loc,
-    e_msg_id_t e_msg_id, //消息 ID
-    void *pv_data, //消息内容,取决于 ID,如下说明
-    void *context_ptr //用于区分哪个返回的消息
-)/* lynq_AddRxIndMsgHandler_t*/;
-
-typedef struct
-{
-    uint32_t year; // 大于 1980
-    uint32_t month; // 1-12
-    uint32_t day; // 1-31
-    uint32_t hour; // 0-23
-    uint32_t minute; // 0-59
-    uint32_t second; // 0-59
-    uint32_t millisecond; // 0-999
-} LYNQ_INJECT_TIME_INTO_T; /* Message */
-
-typedef enum {
-    DELETE_NOTHING = 0, /*不删除数据*/
-    DELETE_EPHEMERIS = 1, /*删除星历*/
-    DELETE_ALMANAC = 2, /*删除历书*/
-    DELETE_POSITION_TIME = 3, /*删除时间和位置信息. */
-    DELETE_UTC = 4, /*删除 UTC 时间*/
-    DELETE_ALL = 5 /*删除所有*/
-} DELETE_AIDING_DATA_TYPE_T;
-
-int qser_Gnss_Init (uint32_t *h_gnss);
-
-int qser_Gnss_Deinit (uint32_t h_gnss);
-
-int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss);
-
-int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type);
-
-int qser_Gnss_Start (uint32_t h_gnss);
-
-int qser_Gnss_Stop (uint32_t h_gnss);
-
-int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info);
-
-int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags);
-
-int qser_Gnss_download_tle();
-
-int qser_Gnss_injectEphemeris(uint32_t h_gnss);
-
-#endif /* _QSER_GNSS_H */
diff --git a/mbtk/include/qser/qser_log.h b/mbtk/include/qser/qser_log.h
deleted file mode 100755
index b77736e..0000000
--- a/mbtk/include/qser/qser_log.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-* qser_log.h
-*
-* QSER Log Header File.
-*
-* Author : lb
-* Date   : 2023/11/23 11:43:21
-*/
-#ifndef _QSER_LOG_H
-#define _QSER_LOG_H
-#include "mbtk_type.h"
-
-typedef enum
-{
-    LOG_VERBOSE = 0,
-    LOG_ERROR,
-    LOG_WARNING,
-    LOG_INFO,
-    LOG_DEBUG,
-    LOG_LEVEL_MAX
-} log_level_enum;
-
-void lynq_log_configuration_init(const char *log_name);
-
-void lynq_log_global_output(log_level_enum Level,const char *format,...);
-
-int lynq_syslog_set_file_size(int value);
-
-int lynq_syslog_get_file_size(void);
-
-int lynq_syslog_set_file_rotate(int value);
-
-int lynq_syslog_get_file_rotate(void);
-
-int lynq_set_log_level(const char * module_name, log_level_enum level);
-
-int lynq_get_log_level(const char * module_name, log_level_enum *level);
-
-int lynq_set_special_log_level(const char * exe_name, const char * module_name, log_level_enum level);
-
-int lynq_get_special_log_level(const char * exe_name, const char * module_name, log_level_enum *level);
-
-int lynq_notify_recalc_log_level(pid_t pid);
-
-void lynq_log_debug(const char *format,...);
-
-void lynq_log_info(const char *format,...);
-
-void lynq_log_warning(const char *format,...);
-
-void lynq_log_error(const char *format,...);
-
-void lynq_log_verbose(const char *format,...);
-
-#endif /* _QSER_LOG_H */
diff --git a/mbtk/include/qser/qser_net_light.h b/mbtk/include/qser/qser_net_light.h
deleted file mode 100755
index d58968d..0000000
--- a/mbtk/include/qser/qser_net_light.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-* qser_net_light.h
-*
-* QSER network light control API.
-*
-* Author : lb
-* Date   : 2023/11/23 13:09:47
-*/
-#ifndef _QSER_NET_LIGHT_H
-#define _QSER_NET_LIGHT_H
-#include "mbtk_type.h"
-
-int lynq_set_netled_on(int led_mode);
-
-int lynq_set_statusled_on(int led_mode);
-
-#endif /* _QSER_NET_LIGHT_H */
diff --git a/mbtk/include/qser/qser_network.h b/mbtk/include/qser/qser_network.h
deleted file mode 100755
index 2bcaa7a..0000000
--- a/mbtk/include/qser/qser_network.h
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
-* qser_network.h
-*
-* QSER network API.
-*
-* Author : lb
-* Date   : 2023/11/23 13:59:44
-*/
-#ifndef _QSER_NETWORK_H
-#define _QSER_NETWORK_H
-#include "mbtk_type.h"
-
-typedef uint32_t nw_client_handle_type;
-
-#define QSER_NW_MODE_NONE 0x00 /**< No network. */
-#define QSER_NW_MODE_GSM 0x01 /**< Include GSM networks. */
-#define QSER_NW_MODE_WCDMA 0x02 /**< Include WCDMA networks. */
-#define QSER_NW_MODE_CDMA 0x04 /**< Include CDMA networks. */
-#define QSER_NW_MODE_EVDO 0x08 /**< Include EVDO networks. */
-#define QSER_NW_MODE_LTE 0x10 /**< Include LTE networks. */
-#define QSER_NW_MODE_TDSCDMA 0x20 /**< Include TDSCDMA networks. */
-#define NW_IND_VOICE_REG_EVENT_IND_FLAG (1 << 0) /**< msg format : QSER_NW_VOICE_REG_EVENT_IND_T */
-#define NW_IND_DATA_REG_EVENT_IND_FLAG (1 << 1) /**< msg format : QSER_NW_DATA_REG_EVENT_IND_T */
-#define NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG (1 << 2) /**< msg format : QSER_NW_SINGNAL_EVENT_IND_T */
-#define QSER_NW_OOS_CFG_TYPE_FAST_SCAN 0x00 /**< fast net scan */
-#define QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN 0x01 /**< full band scan */
-
-
-typedef enum
-{
-    E_QSER_NW_ROAM_STATE_OFF = 0, /**< None, or roaming indicator off. */
-    E_QSER_NW_ROAM_STATE_ON = 1 /**< Roaming indicator on. */
-} E_QSER_NW_ROAM_STATE_TYPE_T; // (Not Support Now)
-
-/** Configures the settings that define the MCM network interface. */
-typedef struct
-{
-    /* Configuration parameters for MCM network registration Network registration details Technology
-    dependent network registration details */
-    uint64_t preferred_nw_mode; /**< Preferred network mode for
-    connections; a bitmask of QSER_NW_MODE_xxxx.*/
-    E_QSER_NW_ROAM_STATE_TYPE_T roaming_pref; /**< Roaming preference.*/
-} QSER_NW_CONFIG_INFO_T;
-
-typedef struct
-{
-    char long_eons[512 + 1]; /**< Long EONS.*/
-    char short_eons[512 + 1]; /**< Short EONS.*/
-    char mcc[3 + 1]; /**< Mobile country code.*/
-    char mnc[3 + 1]; /**< Mobile network code.*/
-} QSER_NW_OPERATOR_NAME_INFO_T;
-
-typedef enum
-{
-    E_QSER_NW_TECH_DOMAIN_NONE = 0, /**< None. */
-    E_QSER_NW_TECH_DOMAIN_3GPP = 1, /**< 3GPP. */
-    E_QSER_NW_TECH_DOMAIN_3GPP2 = 2, /**< 3GPP2. */
-} E_QSER_NW_TECH_DOMAIN_TYPE_T;
-
-typedef enum
-{
-    E_QSER_NW_IMSI_UNKNOWN_HLR_DENY_REASON = 1, /**< IMSI unknown in HLR. */
-    E_QSER_NW_ILLEGAL_MS_DENY_REASON = 2, /**< Illegal MS. */
-    E_QSER_NW_IMSI_UNKNOWN_VLR_DENY_REASON = 3, /**< IMSI    unknown in VLR. */
-    E_QSER_NW_IMEI_NOT_ACCEPTED_DENY_REASON = 4, /**< IMEI    not accepted. */
-    E_QSER_NW_ILLEGAL_ME_DENY_REASON = 5, /**< Illegal    ME. */
-    E_QSER_NW_PLMN_NOT_ALLOWED_DENY_REASON = 6, /**<    PLMN not allowed. */
-    E_QSER_NW_LA_NOT_ALLOWED_DENY_REASON = 7, /**<    Location area not allowed. */
-    E_QSER_NW_ROAMING_NOT_ALLOWED_LA_DENY_REASON = 8, /**<    Roaming not allowed in this location area. */
-    E_QSER_NW_NO_SUITABLE_CELLS_LA_DENY_REASON = 9, /**< No    suitable cells in location area. */
-    E_QSER_NW_NETWORK_FAILURE_DENY_REASON = 10, /**<    Network failure. */
-    E_QSER_NW_MAC_FAILURE_DENY_REASON = 11, /**< MAC    failure. */
-    E_QSER_NW_SYNCH_FAILURE_DENY_REASON = 12, /**< Sync    failure. */
-    E_QSER_NW_CONGESTION_DENY_REASON = 13, /**<    Congestion. */
-    E_QSER_NW_GSM_AUTHENTICATION_UNACCEPTABLE_DENY_REASON = 14, /**<    GSM authentication unacceptable. */
-    E_QSER_NW_NOT_AUTHORIZED_CSG_DENY_REASON = 15, /**< Not    authorized in this CSG. */
-    E_QSER_NW_SERVICE_OPTION_NOT_SUPPORTED_DENY_REASON = 16, /**<    Service option not supported. */
-    E_QSER_NW_REQ_SERVICE_OPTION_NOT_SUBSCRIBED_DENY_REASON = 17, /**<    Requested service option not subscribed. */
-    E_QSER_NW_CALL_CANNOT_BE_IDENTIFIED_DENY_REASON = 18, /**< Call    cannot be identified. */
-    E_QSER_NW_SEMANTICALLY_INCORRECT_MSG_DENY_REASON = 19, /**<    Semantically incorrect message. */
-    E_QSER_NW_INVALID_MANDATORY_INFO_DENY_REASON = 20, /**<    Invalid mandatory information. */
-    E_QSER_NW_MSG_TYPE_NON_EXISTENT_DENY_REASON = 21, /**<    Message type non-existent or not implemented. */
-    E_QSER_NW_INFO_ELEMENT_NON_EXISTENT_DENY_REASON = 22, /**<    Message type not compatible with the protocol state. */
-    E_QSER_NW_CONDITIONAL_IE_ERR_DENY_REASON = 23, /**<    Conditional IE error. */
-    E_QSER_NW_MSG_INCOMPATIBLE_PROTOCOL_STATE_DENY_REASON = 24, /**<    Message not compatible with the protocol state. */
-    E_QSER_NW_PROTOCOL_ERROR_DENY_REASON = 25, /**<    Unspecified protocol error. */
-} E_QSER_NW_DENY_REASON_TYPE_T;
-
-typedef enum
-{
-    E_QSER_NW_SERVICE_NONE = 0x0000, /**< Not registered or no data. */
-    E_QSER_NW_SERVICE_LIMITED = 0x0001, /**< Registered; emergency service only. */
-    E_QSER_NW_SERVICE_FULL = 0x0002, /**< Registered, full service. */
-}   E_QSER_NW_SERVICE_TYPE_T;
-
-typedef enum
-{
-    E_QSER_NW_RADIO_TECH_TD_SCDMA = 1,
-    E_QSER_NW_RADIO_TECH_GSM = 2, /**< GSM; only supports voice. */
-    E_QSER_NW_RADIO_TECH_HSPAP = 3, /**< HSPA+. */
-    E_QSER_NW_RADIO_TECH_LTE = 4, /**< LTE. */
-    E_QSER_NW_RADIO_TECH_EHRPD = 5, /**< EHRPD. */
-    E_QSER_NW_RADIO_TECH_EVDO_B = 6, /**< EVDO B. */
-    E_QSER_NW_RADIO_TECH_HSPA = 7, /**< HSPA. */
-    E_QSER_NW_RADIO_TECH_HSUPA = 8, /**< HSUPA. */
-    E_QSER_NW_RADIO_TECH_HSDPA = 9, /**< HSDPA. */
-    E_QSER_NW_RADIO_TECH_EVDO_A = 10, /**< EVDO A. */
-    E_QSER_NW_RADIO_TECH_EVDO_0 = 11, /**< EVDO 0. */
-    E_QSER_NW_RADIO_TECH_1xRTT = 12, /**< 1xRTT. */
-    E_QSER_NW_RADIO_TECH_IS95B = 13, /**< IS95B. */
-    E_QSER_NW_RADIO_TECH_IS95A = 14, /**< IS95A. */
-    E_QSER_NW_RADIO_TECH_UMTS = 15, /**< UMTS. */
-    E_QSER_NW_RADIO_TECH_EDGE = 16, /**< EDGE. */
-    E_QSER_NW_RADIO_TECH_GPRS = 17, /**< GPRS. */
-    E_QSER_NW_RADIO_TECH_NONE = 18 /**< No technology selected. */
-} E_QSER_NW_RADIO_TECH_TYPE_T;
-
-typedef struct
-{
-    E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to determine the structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
-    E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see #nw_radio_tech_t_v01.*/
-    E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
-    E_QSER_NW_DENY_REASON_TYPE_T deny_reason; /**< Set when registration    state is #nw_deny_reason_t_v01.*/
-    E_QSER_NW_SERVICE_TYPE_T registration_state; /**< Registration state.*/
-}QSER_NW_COMMON_REG_INFO_T;
-
-typedef struct
-{
-    E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to    determine the structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
-    E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see#nw_radio_tech_t_v01.*/
-    char mcc[3+1]; /**< Mobile country code.*/
-    char mnc[3+1]; /**< Mobile network code.*/
-    E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< 0 -- Off, 1 -- Roaming    (3GPP2 has extended values).*/
-    uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
-    uint32_t cid; /**< Cell ID for the registered 3GPP    system.*/
-    uint16_t lac; /**< Locatin area code for the    registered 3GPP system.*/
-    uint16_t psc; /**< Primary scrambling code    (WCDMA only); 0 -- None.*/
-    uint16_t tac; /**< Tracking area code information    for LTE.*/
-}QSER_NW_3GPP_REG_INFO_T;
-
-typedef struct
-{
-    E_QSER_NW_TECH_DOMAIN_TYPE_T tech_domain; /**< Technology, used to    determine structure type tech: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
-    E_QSER_NW_RADIO_TECH_TYPE_T radio_tech; /**< Radio technology; see#nw_radio_tech_t_v01.*/
-    char mcc[3+1]; /**< Mobile country code.*/
-    char mnc[3+1]; /**< Mobile network code.*/
-    E_QSER_NW_ROAM_STATE_TYPE_T roaming; /**< Roaming status; see#nw_roam_state_t_v01.*/
-    uint8_t forbidden; /**< Forbidden: 0 -- No, 1 -- Yes.*/
-    uint8_t inPRL; /**< 0 -- Not in PRL, 1 -- In PRL.*/
-    uint8_t css; /**< Concurrent services supported: 0    -- No, 1 -- Yes.*/
-    uint16_t sid; /**< CDMA system ID.*/
-    uint16_t nid; /**< CDMA network ID.*/
-    uint16_t bsid; /**< Base station ID. @newpagetable    */
-}QSER_NW_3GPP2_REG_INFO_T;
-
-/** Gets the status associated with the connection of \<id\>. */
-typedef struct
-{
-    uint8_t voice_registration_valid; /**< Must be set to    TRUE if voice_registration is being passed. */
-    QSER_NW_COMMON_REG_INFO_T voice_registration; /**<    Voice registration. */
-    uint8_t data_registration_valid; /**< Must be set to    TRUE if data_registration is being passed. */
-    QSER_NW_COMMON_REG_INFO_T data_registration; /**<    Data registration. */
-    uint8_t voice_registration_details_3gpp_valid; /**< Must be set to    TRUE if voice_registration_details_3gpp is being passed. */
-    QSER_NW_3GPP_REG_INFO_T voice_registration_details_3gpp; /**< Voice    registration details for 3GPP. */(Not Support Now)
-    uint8_t data_registration_details_3gpp_valid; /**< Must be set to    TRUE if data_registration_details_3gpp is being passed. */
-    QSER_NW_3GPP_REG_INFO_T data_registration_details_3gpp; /**< Data    registration details for 3GPP. */(Not Support Now)
-    uint8_t voice_registration_details_3gpp2_valid; /**< Must be set to    TRUE if voice_registration_details_3gpp2 is being passed. */
-    QSER_NW_3GPP2_REG_INFO_T voice_registration_details_3gpp2; /**< Voice    registration details for 3GPP2. */(Not Support Now)
-    uint8_t data_registration_details_3gpp2_valid; /**< Must be set to    TRUE if data_registration_details_3gpp2 is being passed. */
-    QSER_NW_3GPP2_REG_INFO_T data_registration_details_3gpp2; /**< Data    registration details for 3GPP2. */(Not Support Now)
-}QSER_NW_REG_STATUS_INFO_T;
-
-typedef struct
-{
-    int8_t rssi; /**< RSSI in dBm. Indicates received signal strength. A signed value;-125 or lower indicates no signal.*/
-}QSER_NW_GSM_SIGNAL_INFO_T;
-
-typedef struct
-{
-    int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
-    int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-}QSER_NW_WCDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
-    int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. a signed value; -125 or lower indicates no signal.*/
-    int8_t rscp; /**< RSCP in dBm.*/
-    int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-    int8_t sinr; /**< Measured SINR in dB. @newpagetable */
-}QSER_NW_TDSCDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
-    int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Ec. A signed value; -125 or lower indicates no signal.*/
-    int8_t rsrq; /**< RSRQ value in dB (signed integer value), as measured by L1.Range: -3 to -20 (-3 equals -3 dB, -20 equals -20 dB).*/
-    int16_t rsrp; /**< Current RSRP in dBm, as measured by L1. Range: -44 to -140 (-44 equals -44 dBm, -140 equals -140 dBm).*/
-    int16_t snr; /**< SNR level as a scaled integer in units of 0.1 dB; e.g., -16 dB has a value of -160 and 24.6 dB has a value of 246.*/
-}QSER_NW_LTE_SIGNAL_INFO_T;
-
-typedef struct
-{
-    int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
-    int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-}QSER_NW_CDMA_SIGNAL_INFO_T;
-
-typedef struct
-{
-    int8_t rssi; /**< RSSI in dBm. Indicates forward link pilot Power (AGC) + Ec/Io. A signed value; -125 or lower indicates no signal.*/
-    int16_t ecio; /**< Ec/Io value representing negative 0.5 dB increments, e.g., 2 equals -1 dbm.*/
-    int8_t sinr; /**< SINR level.*/
-    int32_t io; /**< Received IO in dBm. */
-}QSER_NW_HDR_SIGNAL_INFO_T;
-
-typedef struct
-{
-    int16_t ssRsrp; /* SS(Synchronization Signal) reference signal received power, multipled by -1. * Reference: 3GPP TS 38.215. * Range [44, 140], INT_MAX means invalid/unreported.*/
-    int16_t ssRsrq; /* SS reference signal received quality, multipled by -1. * Reference: 3GPP TS 38.215. * Range [3, 20], INT_MAX means invalid/unreported.*/
-    int16_t ssSinr; /* SS signal-to-noise and interference ratio. * Reference: 3GPP TS 38.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1. * Range [-23, 40], INT_MAX means invalid/unreported.*/
-    int16_t csiRsrp; /* CSI reference signal received power, multipled by -1. * Reference: 3GPP TS 38.215. * Range [44, 140], INT_MAX means invalid/unreported.*/
-    int16_t csiRsrq; /* CSI reference signal received quality, multipled by -1. * Reference: 3GPP TS 38.215. * Range [3, 20], INT_MAX means invalid/unreported.*/
-    int16_t csiSinr; /* CSI signal-to-noise and interference ratio. * Reference: 3GPP TS 138.215 section 5.1.*, 3GPP TS 38.133 section 10.1.16.1. * Range [-23, 40], INT_MAX means invalid/unreported.*/
-}QSER_NW_NR_SIGNAL_INFO_T;
-
-/** Gets signal strength information. */
-typedef struct
-{
-    uint8_t gsm_sig_info_valid; /**< Must be set to TRUE if    gsm_sig_info is being passed. */
-    QSER_NW_GSM_SIGNAL_INFO_T gsm_sig_info; /**< GSM signal    information. */
-    uint8_t wcdma_sig_info_valid; /**< Must be set to TRUE if    wcdma_sig_info is being passed. */
-    QSER_NW_WCDMA_SIGNAL_INFO_T wcdma_sig_info; /**< WCDMA    signal information. */
-    uint8_t tdscdma_sig_info_valid; /**< Must be set to TRUE if    tdscdma_sig_info is being passed. */
-    QSER_NW_TDSCDMA_SIGNAL_INFO_T tdscdma_sig_info; /**< TDSCDMA    signal information. */
-    uint8_t lte_sig_info_valid; /**< Must be set to TRUE if    lte_sig_info is being passed. */
-    QSER_NW_LTE_SIGNAL_INFO_T lte_sig_info; /**< LTE signal    information. */
-    uint8_t cdma_sig_info_valid; /**< Must be set to TRUE if    cdma_sig_info is being passed. */
-    QSER_NW_CDMA_SIGNAL_INFO_T cdma_sig_info; /**< CDMA signal    information. */
-    uint8_t hdr_sig_info_valid; /**< Must be set to TRUE if    hdr_sig_info is being passed. */
-    QSER_NW_HDR_SIGNAL_INFO_T hdr_sig_info; /**< HDR signal    information. */
-    uint8_t nr_sig_info_valid;
-    QSER_NW_NR_SIGNAL_INFO_T nr_sig_info;
-}QSER_NW_SIGNAL_STRENGTH_INFO_T;
-
-/* @bridef Callback function registered to QSER_NW_add_rx_msg_handler * map of ind_flag and ind_msg_buf as bellow : * NW_IND_VOICE_REG_EVENT_IND_FLAG : QSER_NW_VOICE_REG_EVENT_IND_T
-* NW_IND_DATA_REG_EVENT_IND_FLAG : QSER_NW_DATA_REG_EVENT_IND_T
-* NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG : QSER_NW_SINGNAL_EVENT_IND_T
-* */
-typedef void (*QSER_NW_RxMsgHandlerFunc_t)(
-    nw_client_handle_type h_nw,
-    uint32_t ind_flag,
-    void *ind_msg_buf,
-    uint32_t ind_msg_len,
-    void *contextPtr
-);
-
-typedef struct
-{
-    /* Configuration parameters for MCM network fast network scan when OOS (out of service)*/
-    char enable; /* 0 or 1*/
-    uint16_t time_interval; /*unit is second, value range: [1,65535], valid when enable equal 1*/
-}QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T;
-
-typedef struct
-{
-    /* Configuration parameters for MCM network full band network scan when OOS (out of
-    service)*/
-    /*t_min t_step t_num t_max unit is second, value range: all are zero OR all are between[1, 65535], if
-    t_min < t_max, time interval will be t_max*/
-    int t_min;
-    int t_step;
-    int t_num;
-    int t_max;
-}QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T;
-
-typedef struct
-{
-    char type; /**< QSER_NW_OOS_CFG_TYPE_xxxx.*/
-    union {
-        QSER_NW_OOS_CONFIG_FAST_SCAN_INFO_T fast_can_info;
-        QSER_NW_OOS_CONFIG_FULL_BAND_SCAN_INFO_T full_band_scan_info;
-    } u;
-}QSER_NW_OOS_CONFIG_INFO_T;
-
-int qser_nw_client_init(nw_client_handle_type *ph_nw);
-
-int qser_nw_client_deinit(nw_client_handle_type h_nw);
-
-int qser_nw_set_config(nw_client_handle_type h_nw,QSER_NW_CONFIG_INFO_T *pt_info);
-
-int qser_nw_get_operator_name(nw_client_handle_type h_nw, QSER_NW_OPERATOR_NAME_INFO_T *pt_info);
-
-int qser_nw_get_reg_status(nw_client_handle_type h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info);
-
-int qser_nw_get_signal_strength(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info);
-
-int qser_nw_add_rx_msg_handler (nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr);
-
-int qser_nw_set_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);
-
-int qser_nw_get_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info);
-
-#endif /* _QSER_NETWORK_H */
diff --git a/mbtk/include/qser/qser_sim.h b/mbtk/include/qser/qser_sim.h
deleted file mode 100755
index 8b13789..0000000
--- a/mbtk/include/qser/qser_sim.h
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/mbtk/include/qser/qser_sleep.h b/mbtk/include/qser/qser_sleep.h
deleted file mode 100755
index 820ccdb..0000000
--- a/mbtk/include/qser/qser_sleep.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-* qser_sleep.h
-*
-* QSER auto sleep API.
-*
-* Author : lb
-* Date   : 2023/11/23 13:18:26
-*/
-#ifndef _QSER_SLEEP_H
-#define _QSER_SLEEP_H
-#include "mbtk_type.h"
-
-int qser_autosuspend_enable(char enable);
-
-int qser_wakelock_create(const char* name , size_t len);
-
-int qser_wakelock_lock(int fd);
-
-int qser_wakelock_unlock(int fd);
-
-int qser_wakelock_destroy(int fd);
-
-#endif /* _QSER_SLEEP_H */
diff --git a/mbtk/include/qser/qser_time.h b/mbtk/include/qser/qser_time.h
deleted file mode 100755
index b0429e9..0000000
--- a/mbtk/include/qser/qser_time.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-* qser_time.h
-*
-* QSER time header file.
-*
-* Author : lb
-* Date   : 2023/11/23 13:26:11
-*/
-#ifndef _QSER_TIME_H
-#define _QSER_TIME_H
-#include "mbtk_type.h"
-
-typedef struct time_source_status
-{
-    int ntp;
-    int nitz;
-    int gnss;
-} time_src_status_s;
-
-int ntp_sync_time(int enable);
-
-int modem_time_enable(int enable);
-
-int gnss_time_enable(int enable);
-
-int user_set_time(char* date, char* time);
-
-int lynq_sync_time_from_rtc(void);
-
-int lynq_get_time_src_status (time_src_status_s * time_src);
-
-int lynq_set_rtc_time(void);
-
-int lynq_get_rtc_time(unsigned long *ulsec);
-
-#endif /* _QSER_TIME_H */