Add basic change for v1453

Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/include/ql_v2/ql_nw.h b/mbtk/include/ql_v2/ql_nw.h
new file mode 100755
index 0000000..d0504e0
--- /dev/null
+++ b/mbtk/include/ql_v2/ql_nw.h
@@ -0,0 +1,885 @@
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @file ql_nw.h 
+  @brief network registration API
+*/
+/*-----------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+  Copyright (c) 2024 mobiletek Wireless Solution, Co., Ltd. All Rights Reserved.
+  mobiletek Wireless Solution Proprietary and Confidential.
+-------------------------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------------------------------------
+  EDIT HISTORY
+  This section contains comments describing changes made to the file.
+  Notice that changes are listed in reverse chronological order.
+  $Header: $
+  when       who          what, where, why
+  --------   ---------    -----------------------------------------------------------------
+  20241022    yq.wang      Created .
+-------------------------------------------------------------------------------------------------*/
+
+
+#ifndef __QL_NW_H__
+#define __QL_NW_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define QL_NW_MODE_NONE    0x00    /**<  No network. */
+#define QL_NW_MODE_GSM     0x01    /**<  Include GSM networks. */
+#define QL_NW_MODE_WCDMA   0x02    /**<  Include WCDMA networks. */
+#define QL_NW_MODE_CDMA    0x04    /**<  Include CDMA networks. */
+#define QL_NW_MODE_EVDO    0x08    /**<  Include EVDO networks. */
+#define QL_NW_MODE_LTE     0x10    /**<  Include LTE networks. */
+#define QL_NW_MODE_TDSCDMA 0x20    /**<  Include TDSCDMA networks. */
+#define QL_NW_MODE_NR5G    0x40    /**<  Include NR5G networks. */
+#define QL_NW_MODE_PRL     0x10000 /**<  Give preference according to the preferred roaming list. */
+
+#define QL_NW_NR5G_SO_NONE      0X00 /**<  No service option */
+#define QL_NW_NR5G_SO_TDD       0X01 /**<  Include service option TDD, Time Division Duplex */
+#define QL_NW_NR5G_SO_SUB6      0X02 /**<  Include service option SUB6, 5G frequency, SUB_6GHz */
+#define QL_NW_NR5G_SO_MMWAVE    0X04 /**<  Include service option MMWARE, 5G frequency, 30~300GHz */
+#define QL_NW_NR5G_SO_NSA       0X08 /**<  Include service option NSA, Non_Stand Alone, 5G base station and 4G core network */
+#define QL_NW_NR5G_SO_SA        0X10 /**<  Include service option SA, Stan Alone, 5G base station and 5G core network */
+
+#define QL_NW_LOWER_POWER_MASK_DISABLE  0x00
+#define QL_NW_LOWER_POWER_MASK_NORMAL   0x01
+#define QL_NW_LOWER_POWER_MASK_NETWORK  0x02
+#define QL_NW_LOWER_POWER_MASK_SIM      0x04
+#define QL_NW_LOWER_POWER_MASK_SMS      0x08
+#define QL_NW_LOWER_POWER_MASK_VOICE    0x10
+
+#define QL_NW_NITZ_BUF_LEN      30
+#define QL_NW_SCAN_MAX_LIST_NUM 40
+#define QL_NW_MAX_GSM_CELL_INFO_NUM     20
+#define QL_NW_MAX_UMTS_CELL_INFO_NUM    20
+#define QL_NW_MAX_LTE_CELL_INFO_NUM     20
+
+#define QL_NW_MAX_WEA_ALERT_LENGTH_V01  512
+#define QL_NW_MAX_ETWS_ALERT_LENGTH_V01 256
+
+typedef enum QL_NW_SIGNAL_STRENGTH_LEVEL_ENUM
+{
+    QL_NW_SIGNAL_STRENGTH_LEVEL_MIN             = -1,
+    QL_NW_SIGNAL_STRENGTH_LEVEL_NONE            = 0,  /**<  none or unknown signal strength level */
+    QL_NW_SIGNAL_STRENGTH_LEVEL_POOR            = 1,  /**<  poor     signal strength level */
+    QL_NW_SIGNAL_STRENGTH_LEVEL_MODERATE        = 2,  /**<  moderate signal strength level */
+    QL_NW_SIGNAL_STRENGTH_LEVEL_GOOD            = 3,  /**<  good     signal strength level */
+    QL_NW_SIGNAL_STRENGTH_LEVEL_GREAT           = 4,  /**<  great    signal strength level */
+    QL_NW_SIGNAL_STRENGTH_LEVEL_MAX
+}QL_NW_SIGNAL_STRENGTH_LEVEL_E;
+
+typedef enum QL_NW_ROAM_STATE_TYPE_ENUM
+{
+    QL_NW_ROAM_STATE_OFF  = 0,    /**<  None, or roaming indicator off. */
+    QL_NW_ROAM_STATE_ON   = 1     /**<  Roaming indicator on. */
+}QL_NW_ROAM_STATE_TYPE_E;
+
+typedef enum QL_NW_NETWORK_STATUS_TYPE_ENUM
+{
+    QL_NW_NETWORK_STATUS_NONE            = 0,    /**<  Network status not available. */
+    QL_NW_NETWORK_STATUS_CURRENT_SERVING = 1,    /**<  Current serving network. */
+    QL_NW_NETWORK_STATUS_PREFERRED       = 2,    /**<  Preferred network. */
+    QL_NW_NETWORK_STATUS_NOT_PREFERRED   = 3,    /**<  Not the preferred network. */
+    QL_NW_NETWORK_STATUS_AVAILABLE       = 4,    /**<  Service available. */
+    QL_NW_NETWORK_STATUS_FORBIDDEN       = 5     /**<  Forbidden service. */
+}QL_NW_NETWORK_STATUS_TYPE_E;
+
+typedef enum QL_NW_RADIO_TECH_TYPE_ENUM
+{
+    QL_NW_RADIO_TECH_TD_SCDMA = 1,
+    QL_NW_RADIO_TECH_GSM      = 2,    /**<  GSM; only supports voice. */
+    QL_NW_RADIO_TECH_HSPAP    = 3,    /**<  HSPA+. */
+    QL_NW_RADIO_TECH_LTE      = 4,    /**<  LTE. */
+    QL_NW_RADIO_TECH_EHRPD    = 5,    /**<  EHRPD. */
+    QL_NW_RADIO_TECH_EVDO_B   = 6,    /**<  EVDO B. */
+    QL_NW_RADIO_TECH_HSPA     = 7,    /**<  HSPA. */
+    QL_NW_RADIO_TECH_HSUPA    = 8,    /**<  HSUPA. */
+    QL_NW_RADIO_TECH_HSDPA    = 9,    /**<  HSDPA. */
+    QL_NW_RADIO_TECH_EVDO_A   = 10,   /**<  EVDO A. */
+    QL_NW_RADIO_TECH_EVDO_0   = 11,   /**<  EVDO 0. */
+    QL_NW_RADIO_TECH_1xRTT    = 12,   /**<  1xRTT. */
+    QL_NW_RADIO_TECH_IS95B    = 13,   /**<  IS95B. */
+    QL_NW_RADIO_TECH_IS95A    = 14,   /**<  IS95A. */
+    QL_NW_RADIO_TECH_UMTS     = 15,   /**<  UMTS. */
+    QL_NW_RADIO_TECH_EDGE     = 16,   /**<  EDGE. */
+    QL_NW_RADIO_TECH_GPRS     = 17,   /**<  GPRS. */
+    QL_NW_RADIO_TECH_NR5G     = 18,   /**<  NR5G. */
+    QL_NW_RADIO_TECH_NONE     = 19    /**<  No technology selected. */
+}QL_NW_RADIO_TECH_TYPE_E;
+
+typedef enum QL_NW_TECH_DOMAIN_TYPE_ENUM
+{
+    QL_NW_TECH_DOMAIN_NONE    = 0,    /**<  None. */
+    QL_NW_TECH_DOMAIN_3GPP    = 1,    /**<  3GPP. */
+    QL_NW_TECH_DOMAIN_3GPP2   = 2,    /**<  3GPP2. */
+}QL_NW_TECH_DOMAIN_TYPE_E;
+
+typedef enum QL_NW_DENY_REASON_TYPE_ENUM
+{
+    QL_NW_IMSI_UNKNOWN_IN_HSS_DENY_REASON                                  = 2, /**<  IMSI unknown in HSS */
+    QL_NW_ILLEGAL_UE_DENY_REASON                                           = 3, /**<  Illegal UE */
+    QL_NW_IMEI_NOT_ACCEPTED_DENY_REASON                                    = 5, /**<  IMEI not accepted */
+    QL_NW_ILLEGAL_ME_DENY_REASON                                           = 6, /**<  Illegal ME */
+    QL_NW_EPS_SERVICES_NOT_ALLOWED_DENY_REASON                             = 7, /**<  EPS services not allowed */
+    QL_NW_EPS_SERVICES_AND_NON_EPS_SERVICES_NOT_ALLOWED_DENY_REASON        = 8, /**<  EPS services and non-EPS services not allowed */
+    QL_NW_UE_ID_CANNOT_BE_DERIVED_BY_THE_NETWORK_DENY_REASON               = 9, /**<  UE identifity cannot be derived by the network */
+    QL_NW_IMPLICITY_DETACHED_DENY_REASON                                   = 10, /**<  Implicitly detached */
+    QL_NW_PLMN_NOT_ALLOWED_DENY_REASON                                     = 11, /**<  PLMN not allowed */
+    QL_NW_TRACKING_AREA_NOT_ALLOWED_DENY_REASON                            = 12, /**<  Tracking area not allowed */
+    QL_NW_ROAMING_NOT_ALLOWED_IN_THIS_TRACNING_AREA_DENY_REASON            = 13, /**<  Roaming not allowed in this tracking area */
+    QL_NW_EPS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN_DENY_REASON                = 14, /**<  EPS services not allowed in this PLMN */
+    QL_NW_NO_SUITALBE_CELLS_IN_TRACKING_AREA_DENY_REASON                   = 15, /**<  No suitable cells in tracking area */
+    QL_NW_MSC_TEMPORARILY_NOT_REACHABLE_DENY_REASON                        = 16, /**<  MSC temporarily not reachable */
+    QL_NW_NETWORK_FAILURE_DENY_REASON                                      = 17, /**<  Network failure */
+    QL_NW_CS_DOMAIN_NOT_AVAILABLE_DENY_REASON                              = 18, /**<  CS domain not available */
+    QL_NW_EMS_FAILURE_DENY_REASON                                          = 19, /**<  ESM failure */
+    QL_NW_MAC_FAILURE_DENY_REASON                                          = 20, /**<  MAC failure */
+    QL_NW_SYNC_FAILURE_DENY_REASON                                         = 21, /**<  Synch failure */
+    QL_NW_CONGESTION_DENY_REASON                                           = 22, /**<  Congestion */
+    QL_NW_UE_SECURITY_CAPABILITIES_MISMATCH_DENY_REASON                    = 23, /**<  UE security capabilities mismatch */
+    QL_NW_SECURITY_MODE_REJECTED_DENY_REASON                               = 24, /**<  Security mode rejected, unspecified */
+    QL_NW_NOT_AUTHORIZED_FOR_THIS_CSG_DENY_REASON                          = 25, /**<  Not authorized for this CSG */
+    QL_NW_NON_EPS_AUTHENTICATION_UNCACCEPTABLE_DENY_REASON                 = 26, /**<  Non-EPS authentication unacceptable */
+    QL_NW_REQUESTED_SERVICE_OPTION_NOT_AUTHORIZED_IN_THIS_PLMN_DENY_REASON = 35, /**<  Requested service option not authorized in this PLMN */
+    QL_NW_CS_SERVICE_TEMPORARILY_NOT_AVAILABLE_DENY_REASON                 = 39, /**<  CS service temporarily not available */
+    QL_NW_NO_ESP_BEARER_CONTEXT_ACTIVATED_DENY_REASON                      = 40, /**<  No EPS bearer context activated */
+    QL_NW_SEMAMTICALLY_INCORRECT_MESSAGE_DENY_REASON                       = 95, /**<  Semantically incorrect message. */
+    QL_NW_INVALID_MANDATORY_INFORMATION_DENY_REASON                        = 96, /**<  Invalid mandatory information. */
+    QL_NW_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED_DENY_REASON         = 97, /**<  Message type non-existent or not implemented. */
+    QL_NW_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCAL_STATE_DENY_REASON      = 98, /**<  Message type not compatible with protocol state. */
+    QL_NW_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED_DENY_REASON  = 99, /**<   Information element non-existent or not implemented. */
+    QL_NW_CONDITIONAL_IE_ERROR_DENY_REASON                                 = 100, /**<  Conditional IE error. */
+    QL_NW_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCAL_STATE_DENY_REASON           = 101, /**<  Message not compatible with protocol state. */
+}QL_NW_DENY_REASON_TYPE_E;
+
+typedef enum QL_NW_SERVICE_TYPE_ENUM
+{
+    QL_NW_SERVICE_NONE    = 0,  /**<  Not registered or no data. */
+    QL_NW_SERVICE_LIMITED = 1,  /**<  Registered; emergency service only. */
+    QL_NW_SERVICE_FULL    = 2,  /**<  Registered, full service. */
+}QL_NW_SERVICE_TYPE_E;
+
+typedef enum QL_NW_SELECTION_TYPE_ENUM
+{
+    QL_NW_SELECTION_AUTOMATIC = 0,     /**<  Automatic network selection. */
+    QL_NW_SELECTION_MANUAL    = 1,     /**<  Manual network selection. */
+}QL_NW_SELECTION_TYPE_E;
+
+typedef enum QL_NW_CELL_ACCESS_STATE_TYPE_ENUM
+{
+    QL_NW_CELL_ACCESS_NONE           = 0,             /**<  Unknown cell access state. */
+    QL_NW_CELL_ACCESS_NORMAL_ONLY    = 1,             /**<  Cell access is allowed for normal calls only. */
+    QL_NW_CELL_ACCESS_EMERGENCY_ONLY = 2,             /**<  Cell access is allowed for emergency calls only. */
+    QL_NW_CELL_ACCESS_NO_CALLS       = 3,             /**<  Cell access is not allowed for any call type. */
+    QL_NW_CELL_ACCESS_ALL_CALLS      = 4,             /**<  Cell access is allowed for all call types. */
+}QL_NW_CELL_ACCESS_STATE_TYPE_E;
+
+/** wea config items */
+typedef enum
+{
+    QL_NW_WEA_CONFIG_PRESIDENTIAL_ALERT     = (1 << 0),
+    QL_NW_WEA_CONFIG_EXTREME_ALERT          = (1 << 1),
+    QL_NW_WEA_CONFIG_SEVERE_ALERT           = (1 << 2),
+    QL_NW_WEA_CONFIG_AMBER_ALERT            = (1 << 3),
+    QL_NW_WEA_CONFIG_PUBLIC_SAFETY_ALERT    = (1 << 4),
+    QL_NW_WEA_CONFIG_STATE_LOCAL_TEST_ALERT = (1 << 5),
+    QL_NW_WEA_CONFIG_RMT_ALERT              = (1 << 6),
+    QL_NW_WEA_CONFIG_EXERCISE_ALERT         = (1 << 7),
+    QL_NW_WEA_CONFIG_CMSP_DEFINED_ALERT     = (1 << 8),  
+    QL_NW_WEA_CONFIG_SPANISH_ALERT          = (1 << 9), 
+} QL_NW_WEA_CONFIG_E;
+
+/** bind subscription */
+typedef enum QL_NW_BIND_SUB_TYPE_ENUM
+{
+  QL_NW_BIND_SUB_PRIMARY = 0, 
+  QL_NW_BIND_SUB_SECONDARY = 1, 
+}QL_NW_BIND_SUB_TYPE_E;
+
+typedef struct 
+{
+    uint64_t   preferred_nw_mode;               /**<   Preferred network mode for connections; a bitmask of QL_NW_MODE_xxxx.*/
+    QL_NW_ROAM_STATE_TYPE_E preferred_roaming;  /**<   Roaming preference. 0 -- None, or roaming indicator off, 1 -- roaming indicator on*/
+}ql_nw_pref_nwmode_roaming_info_t;
+
+typedef struct 
+{
+    char     nitz_time[QL_NW_NITZ_BUF_LEN + 1]; /**< format: YY/MM/DD,HH:MM:SS'+/-'TZ,daylight, Here TZ multiplied by 4*/
+    uint64_t abs_time;                          /**< 0 means invalid */
+    int8_t   leap_sec;                          /**< 0 means invalid */
+}ql_nw_nitz_time_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.*/
+}ql_nw_mobile_operator_name_info_t;
+
+typedef struct 
+{
+    ql_nw_mobile_operator_name_info_t operator_name;   /**<   Operator name.*/
+    QL_NW_NETWORK_STATUS_TYPE_E       network_status;  /**<   Network status.*/
+    QL_NW_RADIO_TECH_TYPE_E           rat;             /**<   Radio technology.*/
+}ql_nw_scan_entry_info_t;
+
+typedef struct 
+{
+    uint32_t                entry_len;                      /**< Must be set to the number of elements in entry. */
+    ql_nw_scan_entry_info_t entry[QL_NW_SCAN_MAX_LIST_NUM]; /**<   Scan entry.*/
+}ql_nw_scan_result_list_info_t;
+
+typedef struct
+{
+    QL_NW_TECH_DOMAIN_TYPE_E tech_domain;        /**<   Technology domain: 0 -- None, 1 -- 3GPP, 2 -- 3GPP2.*/
+    QL_NW_RADIO_TECH_TYPE_E  radio_tech;         /**<   Radio technology; see #QL_NW_RADIO_TECH_TYPE_E.*/
+    QL_NW_ROAM_STATE_TYPE_E  roaming;            /**<   0 -- Off, 1 -- Roaming (3GPP2 has extended values).*/
+    QL_NW_DENY_REASON_TYPE_E deny_reason;        /**<   Set when registration state is #QL_NW_DENY_REASON_TYPE_E, please refer to 3GPP 24301 SPEC ANNEX A chapter*/
+    QL_NW_SERVICE_TYPE_E     reg_state;          /**<   Registration state.*/
+    char                     mcc[3+1];           /**<   Mobile country code.*/
+    char                     mnc[3+1];           /**<   Mobile network code.*/
+    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.*/
+    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 */
+
+    uint16_t                 nr5g_svc_opt;       /**<   NR5G service option or type, defined by QL_NW_NR5G_SO_XXX */
+    uint16_t                 nr5g_pci;           /**<   NR5G physical Cell ID */
+    uint64_t                 nr5g_cid;           /**<   NR5G SA Cell ID */
+    uint32_t                 nr5g_tac;           /**<   NR5G tac info */
+
+    uint8_t                  endc_available;     /**<   EUTRA-NR Dual Connectivity */
+
+}ql_nw_reg_status_info_t;
+
+typedef struct 
+{
+    QL_NW_SELECTION_TYPE_E  nw_selection_type;    /**<   Network selection type. */
+    char                    mcc[3 + 1];           /**<   Mobile country code for a manual network selection.*/
+    char                    mnc[3 + 1];           /**<   Mobile network code for a manual network selection.*/
+    QL_NW_RADIO_TECH_TYPE_E rat;                  /**<   Radio technology.*/
+}ql_nw_pref_net_t;
+
+typedef struct 
+{
+    int8_t      rssi;       /**<   RSSI in dBm. Indicates received signal strength. A signed value; -125 or lower indicates no signal.*/
+}ql_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.*/
+}ql_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 */
+}ql_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.*/
+}ql_nw_lte_signal_info_t;
+
+typedef struct 
+{
+    int16_t     rsrq;       /**<   Current RSRQ in dBm, as measured by L1.*/
+    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.*/
+}ql_nw_nr5g_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.*/
+}ql_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. */
+}ql_nw_hdr_signal_info_t;
+
+typedef struct 
+{
+    uint8_t                     has_gsm;     /**<   Must be set to TRUE if gsm_sig_info is being passed. */
+    ql_nw_gsm_signal_info_t     gsm;         /**<   GSM signal information. */
+    uint8_t                     has_wcdma;   /**<   Must be set to TRUE if wcdma_sig_info is being passed. */
+    ql_nw_wcdma_signal_info_t   wcdma;       /**<   WCDMA signal information. */
+    uint8_t                     has_tdscdma; /**<   Must be set to TRUE if tdscdma_sig_info is being passed. */
+    ql_nw_tdscdma_signal_info_t tdscdma;     /**<   TDSCDMA signal information. */
+    uint8_t                     has_lte;     /**<   Must be set to TRUE if lte_sig_info is being passed. */
+    ql_nw_lte_signal_info_t     lte;         /**<   LTE signal information. */
+    uint8_t                     has_nr5g;    /**<   Must be set to TRUE if nr5g_sig_info is being passed. */
+    ql_nw_nr5g_signal_info_t    nr5g;        /**<   NR5G signal information. */
+    uint8_t                     has_cdma;    /**<   Must be set to TRUE if cdma_sig_info is being passed. */
+    ql_nw_cdma_signal_info_t    cdma;        /**<   CDMA signal information. */
+    uint8_t                     has_hdr;     /**<   Must be set to TRUE if hdr_sig_info is being passed. */
+    ql_nw_hdr_signal_info_t     hdr;         /**<   HDR signal information. */
+}ql_nw_signal_strength_info_t;
+
+typedef struct
+{
+    uint32_t    cid;        /**<   Cell ID, (0 indicates information is not represent).*/
+    char        plmn[3];    /**<   MCC/MNC inforamtion code.(This field should be ignored when cid is not present). */
+    uint16_t    lac;        /**<   Location area code.(This field should be ignord when cid is not present). */
+    uint16_t    arfcn;      /**<   Absolute RF channel number. */
+    uint8_t     bsic;       /**<   Base station identity code. (0 indicates information is not present). */
+    int16_t     rssi;       /**<   Received signal strength indicator in dBm.*/
+}ql_nw_gsm_info_t;;
+
+typedef struct
+{
+    uint32_t cid;           /**<   Cell ID (0 indicates information is not present). */
+    uint32_t lcid;          /**<   UTRAN Cell ID (0 indicates information is not present). */
+    char plmn[3];           /**<   MCC/MNC information code.(This field should be ignored when cid is not present). */
+    uint16_t lac;           /**<   Location area code. (This field should be ignored when cid is not present). */
+    uint16_t uarfcn;        /**<   UTRA absolute RF channel number. */
+    uint16_t psc;           /**<   Primary scrambling code. */
+    int16_t  rssi;          /**<   Received signal strength indicator in dBm.*/
+}ql_nw_umts_info_t;
+
+typedef struct
+{
+    uint32_t cid;           /**<   Global cell ID in the system information block (0 indicates information is not present). */
+    char plmn[3];           /**<   MCC/MNC information code.(This filed should be ignored when cid is not present). */
+    uint16_t tac;           /**<   Tracing area code (This field should be ignored when cid is not present). */
+    uint16_t pci;           /**<   Physical cell ID. Range: 0 to 503. */
+    uint32_t earfcn;        /**<   E-UTRA absolute radio frequency channel number of the cell. RANGE: 0 TO 65535. */
+    int16_t  rssi;          /**<   Received signal strength indicator in dBm.*/
+}ql_nw_lte_info_t;
+
+typedef struct {
+
+  uint64_t cid;             /**<   Global cell ID in the system information block (0 indicates information is not present). */
+  char plmn[3];             /**<   MCC/MNC information coded(This field should be ignored when cid is not present.) */
+  uint32_t tac;             /**<   Tracking area code (This field should be ignored when cid is not present). */
+  uint16_t pci;             /**<   Physical cell ID. Range: 0 to 503.*/
+  uint32_t arfcn;           /**<   UTRA absolute radio frequency channel number of the cell. Range: 0 to 65535.*/
+  int16_t rsrq;             /**<   Current RSRQ in units of 0.1 dB, as measured by L1.*/
+  int16_t rsrp;             /**<   Current RSRP in units of 0.1 dB, as measured by L1.*/
+  int16_t snr;              /**<   Current SNR  in dBm, as measured by L1.*/
+}ql_nw_nr5g_info_t;
+
+typedef struct 
+{
+   uint16_t sid;            /**<   System ID. */
+   uint16_t nid;            /**<   Network ID. */
+   uint16_t bid;            /**<   Base station ID. */
+   uint16_t refpn;          /**<   Reference PN. */
+   uint32_t base_lat;       /**<   Latitude of the current base station in units of 0.25 sec. */
+   uint32_t base_long;      /**<   Longitude of the current base station in units of 0.25 sec. */
+   int16_t  rssi;           /**<   Received signal strength indicator in dBm. */
+}ql_nw_cdma_info_t;
+
+typedef struct 
+{
+    QL_NW_RADIO_TECH_TYPE_E serving_rat;
+    uint8_t                 gsm_info_valid;                         /**<  Must be set to true if gsm_info is being passed */
+    uint8_t                 gsm_info_len;                           /**<  Must be set to the number of elements in entry*/
+    ql_nw_gsm_info_t        gsm_info[QL_NW_MAX_GSM_CELL_INFO_NUM];  /**<  GSM cell information (Serving and neighbor. */  
+    uint8_t                 umts_info_valid;                        /**<  Must be set to true if umts_info is being passed */
+    uint8_t                 umts_info_len;                          /**<  Must be set to the number of elements in entry*/
+    ql_nw_umts_info_t       umts_info[QL_NW_MAX_UMTS_CELL_INFO_NUM];/**<  UMTS cell information (Serving and neighbor). */
+    uint8_t                 lte_info_valid;                         /**<  Must be set to true if lte_info is being passed */
+    uint8_t                 lte_info_len;                           /**<  Must be set to the number of elements in entry*/
+    ql_nw_lte_info_t        lte_info[QL_NW_MAX_LTE_CELL_INFO_NUM];  /**<  LTE cell information (Serving and neighbor). */
+    uint8_t                 nr5g_info_valid;                        /**<  Must be set to true if nr5g_info is being passed */
+    ql_nw_nr5g_info_t       nr5g_info;                              /**<  NR5G cell information (Serving). */
+    uint8_t                 cdma_info_valid;                        /**<  Must be set to true if cdma_info is being passed */
+    ql_nw_cdma_info_t       cdma_info;                              /**<  CDMA cell information (Serving). */  
+}ql_nw_cell_info_t;
+
+typedef struct 
+{
+    uint8_t Presidential_alert;         /**<  Enable Presidential_alert: 0 -- Disable(can't Disable); 1 -- Enable */
+    uint8_t Extreme_alert;              /**<  Enable or disable Extreme_alert: 0 -- Disable; 1 -- Enable */
+    uint8_t Severe_alert;               /**<  Enable or disable Severe_alert: 0 -- Disable; 1 -- Enable */
+    uint8_t Amber_alert;                /**<  Enable or disable Amber_alert: 0 -- Disable; 1 -- Enable */
+    uint8_t PublicSafety_alert;         /**<  Enable or disable PublicSafety_alert: 0 -- Disable; 1 -- Enable */
+    uint8_t StateLocalTest_alert;       /**<  Enable or disable StateLocalTest_alert: 0 -- Disable; 1 -- Enable */
+    uint8_t RMT_alert;                  /**<  Enable or disable RMT_alert: 0 -- Disable; 1 -- Enable */
+    uint8_t Exercise_alert;             /**<  Enable or disable Exercise_alert: 0 -- Disable; 1 -- Enable */
+    uint8_t CMSPDefined_alert;          /**<  Enable or disable CMSPDefined_alert: 0 -- Disable; 1 -- Enable */
+    uint8_t Spanish_alert;              /**<  Enable or disable Spanish_alert: 0 -- Disable; 1 -- Enable */
+}ql_nw_wea_config_t;
+
+typedef struct 
+{
+    uint8_t wea_alert_info_valid; 
+    char wea_alert_info[QL_NW_MAX_WEA_ALERT_LENGTH_V01];
+}ql_nw_wea_alert_info_t;
+
+typedef struct 
+{
+    uint8_t etws_primary_info_valid;
+    char etws_primary_info[QL_NW_MAX_ETWS_ALERT_LENGTH_V01];
+    uint8_t etws_secondary_info_valid;
+    char etws_secondary_info[QL_NW_MAX_ETWS_ALERT_LENGTH_V01];
+}ql_nw_etws_alert_info_t;
+
+typedef void (*ql_nw_voice_reg_ind_cb)(ql_nw_reg_status_info_t *p_info);
+
+typedef void (*ql_nw_data_reg_ind_cb)(ql_nw_reg_status_info_t *p_info);
+
+typedef void (*ql_nw_signal_strength_ind_cb)(ql_nw_signal_strength_info_t *p_info, QL_NW_SIGNAL_STRENGTH_LEVEL_E level);
+
+typedef void (*ql_nw_cell_access_status_ind_cb)(QL_NW_CELL_ACCESS_STATE_TYPE_E status);
+
+typedef void (*ql_nw_nitz_time_update_ind_cb)(ql_nw_nitz_time_info_t *p_info);
+
+typedef void (*ql_nw_network_scan_async_cb)(int async_index, ql_nw_scan_result_list_info_t *p_info);
+
+typedef void (*ql_nw_wea_reg_ind_cb)(ql_nw_wea_alert_info_t *p_info);
+
+typedef void (*ql_nw_etws_reg_ind_cb)(ql_nw_etws_alert_info_t *p_info);
+
+typedef void (*ql_nw_service_error_cb_f)(int error);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief Initialize NW service.
+  @note You must call this function before other functions can be used in this module.
+  @return Whether the NW service was successfully intialized.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready, need to retry
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_init(void);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief  Deinitializes NW service.
+  @return Whether the NW service was deinitialized successfully.
+  @retval QL_ERR_OK successful.
+  @retval Other error code defined by ql_type.h.
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_deinit(void);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief scan network status.
+  @param[out] async_index The index of request msg
+  @param[in] async_cb The callback function of request msg
+  @return Whether to successfully trigger the network scan operation
+  @retval QL_ERR_OK  successful
+  @retval QL_ERR_NOT_INIT  uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY  service is not ready
+  @retval QL_ERR_INVALID_ARG  Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_network_scan(int *async_index, ql_nw_network_scan_async_cb async_cb);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief set power mode.
+  @param[in] lower_mode, defined by QL_NW_LOWER_POWER_MASK_XXX
+  @return Whether to successfully set the power mode
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_power_mode(uint8_t lower_mode);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief set perferred NW mode and roaming indicator.
+  @param[in] p_info Pointer that point to ql_nw_pref_nwmode_roaming_info_t
+  @return Whether to successfully set nwmode and roaming
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_pref_nwmode_roaming(ql_nw_pref_nwmode_roaming_info_t *p_info);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get perferred NW mode and roaming indicator.
+  @param[out] p_info Pointer that point to ql_nw_pref_nwmode_roaming_info_t 
+  @return Whether to successfully get nwmode and roaming
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_pref_nwmode_roaming(ql_nw_pref_nwmode_roaming_info_t *p_info);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get mobile operator name.
+  @param[out] p_info Pointer that point to ql_nw_mobile_operator_name_info_t
+  @return Whether to successfully get the mobile operator name
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_mobile_operator_name(ql_nw_mobile_operator_name_info_t *p_info);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get cell information.
+  @param[out] p_info Pointer that point to ql_nw_cell_info_t
+  @return Whether to successfully get the cell information
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_cell_info(ql_nw_cell_info_t *p_info);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get voice registration status.
+  @param[out] p_info Pointer that point to ql_nw_reg_status_info_t
+  @return Whether to successfully get the voice registration status
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_voice_reg_status(ql_nw_reg_status_info_t *p_info);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get data registration status.
+  @param[out] p_info Pointer that point to ql_nw_reg_status_info_t
+  @return Whether to successfully get the data registration status
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_data_reg_status(ql_nw_reg_status_info_t *p_info);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get current signal strength.
+  @param[out] p_info Pointer that point to ql_nw_signal_strength_info_t
+  @param[out] p_level: signal strength level
+  @return Whether to successfully get the signal strength
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_signal_strength(ql_nw_signal_strength_info_t *p_info, QL_NW_SIGNAL_STRENGTH_LEVEL_E* p_level);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get current cell acccess status.
+  @param[out] p_info Pointer that point to QL_NW_CELL_ACCESS_STATE_TYPE_E
+  @return Whether to successfully get the cell access status
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_cell_access_status(QL_NW_CELL_ACCESS_STATE_TYPE_E *p_info);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get network time.
+  @param[out] p_info Pointer that point to ql_nw_nitz_time_info_t 
+  @return Whether to successfully get the network time
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_nitz_time_info(ql_nw_nitz_time_info_t *p_info);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief register voice registration event.
+  @param[in] cb_func Voice registration indication callback function
+  @return Whether the voice registration event was successfully registered.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+ */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_voice_reg_ind_cb(ql_nw_voice_reg_ind_cb cb_func);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief register data registration event.
+  @param[in] cb_func Data registration indication callback function
+  @return Whether the data registration event was successfully registered.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_data_reg_ind_cb(ql_nw_data_reg_ind_cb cb_func);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief register signal strength event.
+  @param[in] cb_func Signal strength indication callback function
+  @return Whether the signal strength event was successfully registered
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_signal_strength_ind_cb(ql_nw_signal_strength_ind_cb cb_func);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief register cell access status event.
+  @param[in] cb_func Cell access status indication callback function
+  @return Whether the cell access status event was successfully registered
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_cell_access_status_ind_cb(ql_nw_cell_access_status_ind_cb cb_func);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief register network time event.
+  @param[in] cb_func nitz time update indication callback function
+  @return Whether the network time event was successfully registered
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_nitz_time_update_ind_cb(ql_nw_nitz_time_update_ind_cb cb_func);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief register wea alert event.
+  @param[in] cb_func wea alert indication callback function
+  @return Whether the network time event was successfully registered
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_wea_alert_ind_cb(ql_nw_wea_reg_ind_cb cb_func);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief register etws alert event.
+  @param[in] cb_func etws alert indication callback function
+  @return Whether the network time event was successfully registered
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_etws_alert_ind_cb(ql_nw_etws_reg_ind_cb cb_func);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief set wea alert config.
+  @param[in] item Items to set.
+  @param[in] p_info Pointer that point to ql_nw_wea_config_t.
+  @return Whether to successfully set the wea config.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_wea_config(int item, ql_nw_wea_config_t *p_info);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief  Gets wea config.
+  @param[out] p_config wea config.
+  @return Whether the wea config was successfully obtained.
+  @retval QL_ERR_OK successful.
+  @retval QL_ERR_INVALID_ARG invalid argument.
+  @retval QL_ERR_UNKNOWN unknown error, failed to connect to service.
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready, need to retry.
+  @retval Other error code defined by ql_type.h.
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_wea_config(ql_nw_wea_config_t *p_config);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief set etws alert config.
+  @param[in] etws config.
+  @return Whether to successfully set the etws config.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_etws_config(uint8_t enable_etws);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get etws alert config.
+  @param[out] p_enable_etws Pointer.
+  @return Whether to successfully set the etws config.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_etws_config(uint8_t* p_enable_etws);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief  bind subscription 
+  @param[in] sub_type subscription type 
+  @return Whether to successfully bind subscription.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_bind_subscription(QL_NW_BIND_SUB_TYPE_E sub_type);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief get high capability subscription.
+  @param[out] p_high_cap pointer that point to QL_NW_BIND_SUB_TYPE_E
+  @return Whether the high capability subscription was successfully obtained.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_get_high_cap_sub(QL_NW_BIND_SUB_TYPE_E *p_high_cap);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief set the SIM card index that can uniquely register to the 5G network. 
+  the main difference between high and non-high capability subscription is that high capability 
+  subscription can register to 5G network while non-high capability subscription can only 
+  register to LTE or GSM.
+  @param[in] high_cap high capability subscription 
+  @return Whether to successfully set the high capability subscription.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_high_cap_sub(QL_NW_BIND_SUB_TYPE_E high_cap);
+
+/*-----------------------------------------------------------------------------------------------*/
+/** 
+  @brief Disable NR5G, NR5G_SA and NR5G_NSA can be disabled individually or together.
+  @param[in] opt_mask Option mask value. Value:
+  0                 - Do not disable NR5G
+  QL_NW_NR5G_SO_SA  - Disable NR5G SA
+  QL_NW_NR5G_SO_NSA - Disable NR5G NSA 
+  @return Whether to successfully disable NR5G mode.
+  @retval QL_ERR_OK successful
+  @retval QL_ERR_NOT_INIT uninitialized
+  @retval QL_ERR_SERVICE_NOT_READY service is not ready
+  @retval QL_ERR_INVALID_ARG Invalid arguments
+  @retval Other error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_disable_nr5g(uint16_t opt_mask);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief  Registration server error callback. Currently, only if the server exits abnormally, 
+  the callback function will be executed, and the error code is QL_ERR_ABORTED;
+  @param[in] cb  Callback function 
+  @return
+  QL_ERR_OK - successful
+  Other - error code defined by ql_type.h
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_nw_set_service_error_cb(ql_nw_service_error_cb_f cb);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif