Fix mbtk from v1265 GSW

Change-Id: I5d8d395616f284bc74c8b9448cfa347164b5a668
diff --git a/mbtk/include/ql/DSI_ConnectManager.h b/mbtk/include/ql/DSI_ConnectManager.h
new file mode 100755
index 0000000..3a8029f
--- /dev/null
+++ b/mbtk/include/ql/DSI_ConnectManager.h
@@ -0,0 +1,259 @@
+/**  
+  @file
+  DSI_ConnectManager.h
+
+  @brief
+  This file provides the definitions for dsi, and declares the 
+  API functions.
+
+*/
+/*============================================================================
+  Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd.  All Rights Reserved.
+  Quectel Wireless Solution Proprietary and Confidential.
+ =============================================================================*/
+/*===========================================================================
+
+                        EDIT HISTORY FOR MODULE
+
+This section contains comments describing changes made to the module.
+Notice that changes are listed in reverse chronological order.
+
+
+WHEN        WHO            WHAT, WHERE, WHY
+----------  ------------   ----------------------------------------------------
+24/07/2019  Nebula.li      create
+=============================================================================*/
+
+#ifndef __DSI_CONNECTMANAGER_H__
+#define __DSI_CONNECTMANAGER_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define QL_WAN_SUCCESS                      (0)
+#define QL_WAN_ERROR                        (-1)
+#define QL_INTERFACE_NAME_LEN               16
+#define QL_IPV4_MAX_ADDR_LEN                32
+#define QL_IPV6_MAX_ADDR_LEN                128
+
+
+/**
+ * used to check network status, when timeout, start data call again.
+*/
+#define QL_WAN_NETWORK_STATUS_MAX_TIMEOUT   (60)
+
+
+/**
+ * DSI event define
+ */ 
+typedef enum
+{
+  CONNECT_DISCON = 0x00,
+  CONNECT_CONSUCCESS,
+  CONNECT_CONNING,
+  CONNECT_REDIAL,
+  CONNECT_DIAL_IMMEDIATELY,
+  CONNECT_ROAM,
+  CONNECT_WAIT_NWCHANGE,
+  CONNECT_GET_GLOBALIP_ERR,
+  CONNECT_DEACTIVATED,
+  CONNECT_WAIT_PS_ATTACH,
+
+  FAIL_BASE_INDEX=0x10,
+  SIM_NOT_READY=FAIL_BASE_INDEX+0x01,
+  NW_NOT_READY=FAIL_BASE_INDEX+0x02,
+  PDP_OPERATOR_BARRED =FAIL_BASE_INDEX+0x08,               /* no retry */
+  PDP_INSUFFICIENT_RESOURCES =FAIL_BASE_INDEX+0x1A,
+  PDP_MISSING_UKNOWN_APN = FAIL_BASE_INDEX+0x1B,            /* no retry */
+  PDP_UNKNOWN_PDP_ADDRESS_TYPE = FAIL_BASE_INDEX+0x1C,      /* no retry */
+  PDP_USER_AUTHENTICATION = FAIL_BASE_INDEX+0x1D,           /* no retry */
+  PDP_ACTIVATION_REJECT_GGSN = FAIL_BASE_INDEX+0x1E,        /* no retry */
+  PDP_ACTIVATION_REJECT_UNSPECIFIED = FAIL_BASE_INDEX+0x1F,
+  PDP_SERVICE_OPTION_NOT_SUPPORTED = FAIL_BASE_INDEX+0x20,  /* no retry */
+  PDP_SERVICE_OPTION_NOT_SUBSCRIBED = FAIL_BASE_INDEX+0x21, /* no retry */
+  PDP_SERVICE_OPTION_OUT_OF_ORDER = FAIL_BASE_INDEX+0x22,
+  PDP_NSAPI_IN_USE = FAIL_BASE_INDEX+0x23,                  /* no retry */
+  PDP_REGULAR_DEACTIVATION = FAIL_BASE_INDEX+0x24,          /* possibly restart radio,
+                                                    based on framework config */
+  PDP_ONLY_IPV4_ALLOWED = FAIL_BASE_INDEX+0x32,             /* no retry */
+  PDP_ONLY_IPV6_ALLOWED = FAIL_BASE_INDEX+0x33,             /* no retry */
+  PDP_ONLY_SINGLE_BEARER_ALLOWED = FAIL_BASE_INDEX+0x34,
+  PDP_PROTOCOL_ERRORS   = FAIL_BASE_INDEX+0x6F,             /* no retry */
+
+  /* Not mentioned in the specification */
+  PDP_VOICE_REGISTRATION_FAIL = -1,
+  PDP_DATA_REGISTRATION_FAIL = -2,
+
+  /* reasons for data call drop - network/modem disconnect */
+  PDP_SIGNAL_LOST = -3,
+  PDP_PREF_RADIO_TECH_CHANGED = -4,/* preferred technology has changed, should retry
+                                            with parameters appropriate for new technology */
+  PDP_RADIO_POWER_OFF = -5,        /* data call was disconnected because radio was resetting,
+                                            powered off - no retry */
+  PDP_TETHERED_CALL_ACTIVE = -6,   /* data call was disconnected by modem because tethered
+                                            mode was up on same APN/data profile - no retry until
+                                            tethered call is off */
+	PDP_CID_EXIST_FAIL = -7,		  /* cid is exist already*/
+
+  PDP_NO_CCINET=-10,
+  PDP_DHCP_SERVER_ERR_PIPE=-11,
+
+  PDP_ERROR_UNSPECIFIED = 0xffff,  /* retry silently */
+  QL_DSI_EVT_MAX
+} QL_DSI_NET_EVT_T;
+
+#define SIM_REMOVED SIM_NOT_READY
+
+typedef struct
+{
+	char ip[QL_IPV4_MAX_ADDR_LEN];
+	char pri_dns[QL_IPV4_MAX_ADDR_LEN];
+	char sec_dns[QL_IPV4_MAX_ADDR_LEN];
+  char name[QL_INTERFACE_NAME_LEN];
+  char gateway[QL_IPV4_MAX_ADDR_LEN];
+}v4_address_status;
+
+typedef struct
+{
+	int state; //dial status
+	v4_address_status addr; //IPv4 address information
+}v4_info;
+
+typedef struct
+{
+	char ip[QL_IPV6_MAX_ADDR_LEN];
+	char pri_dns[QL_IPV6_MAX_ADDR_LEN];
+	char sec_dns[QL_IPV6_MAX_ADDR_LEN];
+  char name[QL_INTERFACE_NAME_LEN];
+  char gateway[QL_IPV6_MAX_ADDR_LEN];
+}v6_address_status;
+
+typedef struct
+{
+	int state; //dial status
+	v6_address_status addr; //IPv6 address information
+}v6_info;
+
+typedef struct
+{
+	int profile_idx;
+	int ip_type;
+	v4_info v4;
+	v6_info v6;
+}ql_data_call_info;
+
+/**
+ * DSI auth pref define
+*/
+typedef enum
+{
+  QL_DSI_AUTH_PREF_NULL = 0,
+  QL_DSI_AUTH_PREF_ONLY_PAP,
+  QL_DSI_AUTH_PREF_ONLY_CHAP,
+  //QL_DSI_AUTH_PREF_BOTH_PAP_CHAP
+} QL_DSI_AUTH_PREF_T;
+
+/** 
+ * callback function used in  ql_wan_start, when data call status changed, 
+ * Use callback functions for notifications, see enum QL_DSI_NET_EVT_T
+*/
+typedef void (*nw_status_cb)(int status);
+
+
+typedef void (*ex_conn_status_cb)(int cid,int iptype,int status,int cause);
+
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief data call init function, must call first.
+  @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_wan_init();
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief data call release function, must call finally.
+  @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_wan_release();
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief data call auto connect set, include auto status and interval(seconds).
+  @param[in] auto_status  When it is 0, the network cannot be automatically reconnected 
+                                after disconnection; when it is 1, it can be automatically reconnected
+  @param[in] interval_sec data call status check interval
+                                the max value is QL_WAN_NETWORK_STATUS_MAX_TIMEOUT
+  @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_wan_set_autoconnect(int auto_status, int interval_sec);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief start data call, must call ql_wan_init first.
+  @param[in] nw_cb this is a callback function, when data call status changed, Use callback 
+                   functions for notifications
+  @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_wan_start(int profile_idx, int op, nw_status_cb nw_cb);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief start data call, must call ql_wan_init first.
+  @param[in] nw_cb this is a callback function, when data call status changed, Use callback 
+                   functions for notifications
+  @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_wan_start_ex(int profile_idx, int op, ex_conn_status_cb nw_cb);
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief data call stop function.
+  @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_wan_stop(int profile_idx);
+
+
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief function to set apn.
+  @param[in] apn        apn name want to set
+  @param[in] username   user name of apn
+  @param[in] password   password of apn
+  @param[in] auth       auth type of apn, see enum QL_DSI_AUTH_PREF_T
+  @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
+  */
+/*-----------------------------------------------------------------------------------------------*/
+int ql_wan_setapn(int profile_idx, int ip_type, const char *apn, const char *userName, const char *password, QL_DSI_AUTH_PREF_T auth);
+/*-----------------------------------------------------------------------------------------------*/
+/**
+  @brief function to get first apn infomation.
+  @param[out] apn       apn name to return
+  @param[in ] apnLen    apn name buffer size
+  @param[out] userName  username of apn to return
+  @param[in ] userLen   username buffer size
+  @param[out] password  password to return
+  @param[in ] pwdLen    password buffer size 
+  @return if success return QL_WAN_SUCCESS, else return QL_WAN_ERROR
+  */
+/*-----------------------------------------------------------------------------------------------*/
+
+#define ql_wan_getapn(profile_idx,ip_type,apn,apnLen,userName,userLen,password,pwdLen,...)   __ql_wan_getapn(profile_idx,ip_type,apn,apnLen,userName,userLen,password,pwdLen,(NULL,##__VA_ARGS__))
+
+int __ql_wan_getapn(int profile_idx, int *ip_type, char *apn, int apnLen, char *userName, int userLen, char *password, int pwdLen,int* auth);
+int ql_get_data_call_info(int profile_idx, ql_data_call_info *info);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif