Add basic change for v1453

Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/mbtk_at/inc/gpio-define.h b/mbtk/mbtk_at/inc/gpio-define.h
new file mode 100755
index 0000000..36c497e
--- /dev/null
+++ b/mbtk/mbtk_at/inc/gpio-define.h
@@ -0,0 +1,133 @@
+/**
+ *   \file gpio-define.h
+ *   \brief A Documented file.
+ *
+ *  Detailed description
+ *   \Author:  Sniper <js.wang@mobiletek.cn>
+ *   \Version: 1.0.0
+ *   \Date: 2022-04-26
+ */
+
+#ifndef __GPIO_DEFINE_H__
+#define __GPIO_DEFINE_H__
+
+/*
+4组GPIO共128个GPIO,分别从GPIO_0到GPIO_127
+GPIO22位于0xd4019000这一组的BIT22
+
+GPIO0_BASE 0xD4019000
+GPIO1_BASE 0xD4019004
+GPIO2_BASE 0xD4019008
+GPIO3_BASE 0xD4019100
+ */
+/*
+MMC_CMD	    GPIO_41
+MMC_DATA0	GPIO_40
+MMC_DATA1	GPIO_39
+MMC_DATA2	GPIO_38
+MMC_DATA3	GPIO_37
+
+SD_DET	GPIO_43
+WLAN_DAT3	GPIO_48
+
+
+*/
+#define  GPIO_FUNC_MMC1_DAT3	0xD401E094
+#define  GPIO_FUNC_MMC1_DAT2	0xD401E098
+#define  GPIO_FUNC_MMC1_DAT1	0xD401E09C
+#define  GPIO_FUNC_MMC1_DAT0	0xD401E0A0
+#define  GPIO_FUNC_MMC1_CMD	0xD401E0A4
+#define  GPIO_FUNC_MMC1_CLK	0xD401E0A8
+#define  GPIO_FUNC_MMC1_CD	0xD401E0AC
+#define  GPIO_FUNC_USB_ID	    0xD401E0B0
+#define  GPIO_FUNC_PRI_TDI	0xD401E0B4
+#define  GPIO_FUNC_PRI_TMS	0xD401E0B8
+#define  GPIO_FUNC_PRI_TCK	0xD401E0BC
+#define  GPIO_FUNC_PRI_TDO	0xD401E0C0
+#define  GPIO_FUNC_QSPI_VMODE_GPIO	0xD401E0C4
+#define  GPIO_FUNC_VBUS_DRV	0xD401E0C8
+#define  GPIO_FUNC_CLK_REQ	0xD401E0CC
+#define  GPIO_FUNC_VCXO_REQ	0xD401E0D4
+#define  GPIO_FUNC_VCXO_OUT	0xD401E0D8
+#define  GPIO_FUNC_GPIO_00	0xD401E0DC
+#define  GPIO_FUNC_GPIO_01	0xD401E0E0
+#define  GPIO_FUNC_GPIO_02	0xD401E0E4
+#define  GPIO_FUNC_GPIO_03	0xD401E0E8
+#define  GPIO_FUNC_GPIO_04	0xD401E0EC
+#define  GPIO_FUNC_GPIO_05	0xD401E0F0
+#define  GPIO_FUNC_GPIO_06	0xD401E0F4
+#define  GPIO_FUNC_GPIO_07	0xD401E0F8
+#define  GPIO_FUNC_GPIO_08	0xD401E0FC
+#define  GPIO_FUNC_GPIO_09	0xD401E100
+#define  GPIO_FUNC_GPIO_10	0xD401E104
+#define  GPIO_FUNC_GPIO_11	0xD401E108
+#define  GPIO_FUNC_GPIO_12	0xD401E10C
+#define  GPIO_FUNC_GPIO_13	0xD401E110
+#define  GPIO_FUNC_GPIO_14	0xD401E114
+#define  GPIO_FUNC_GPIO_15	0xD401E118
+#define  GPIO_FUNC_GPIO_16	0xD401E11C
+#define  GPIO_FUNC_GPIO_17	0xD401E120
+#define  GPIO_FUNC_GPIO_18	0xD401E124
+#define  GPIO_FUNC_GPIO_19	0xD401E128
+#define  GPIO_FUNC_GPIO_20	0xD401E12C
+#define  GPIO_FUNC_GPIO_21	0xD401E130
+#define  GPIO_FUNC_GPIO_22	0xD401E134
+#define  GPIO_FUNC_GPIO_23	0xD401E138
+#define  GPIO_FUNC_GPIO_24	0xD401E13C
+#define  GPIO_FUNC_GPIO_25	0xD401E140
+#define  GPIO_FUNC_GPIO_26	0xD401E144
+#define  GPIO_FUNC_GPIO_27	0xD401E148
+#define  GPIO_FUNC_GPIO_28	0xD401E14C
+#define  GPIO_FUNC_GPIO_29	0xD401E150
+#define  GPIO_FUNC_GPIO_30	0xD401E154
+#define  GPIO_FUNC_GPIO_31	0xD401E158
+#define  GPIO_FUNC_GPIO_32	0xD401E15C
+#define  GPIO_FUNC_GPIO_33	0xD401E160
+#define  GPIO_FUNC_GPIO_34	0xD401E164
+#define  GPIO_FUNC_GPIO_35	0xD401E168
+#define  GPIO_FUNC_GPIO_36	0xD401E16C
+#define  GPIO_FUNC_GPIO_49	0xD401E1A0
+#define  GPIO_FUNC_GPIO_50	0xD401E1A4
+#define  GPIO_FUNC_GPIO_51	0xD401E1A8
+#define  GPIO_FUNC_GPIO_52	0xD401E1AC
+#define  GPIO_FUNC_GPIO_53	0xD401E1B0
+#define  GPIO_FUNC_GPIO_54	0xD401E1B4
+#define  GPIO_FUNC_DVL_0      0xD401E2B4
+#define  GPIO_FUNC_DVL_1      0xD401E2B8
+#define  GPIO_FUNC_GPIO_69	0xD401E2BC
+#define  GPIO_FUNC_GPIO_70	0xD401E2C0
+#define  GPIO_FUNC_QSPI_DAT3	0xD401E2C4
+#define  GPIO_FUNC_QSPI_DAT2	0xD401E2C8
+#define  GPIO_FUNC_QSPI_DAT1	0xD401E2CC
+#define  GPIO_FUNC_QSPI_DAT0	0xD401E2D0
+#define  GPIO_FUNC_QSPI_CLK	0xD401E2D4
+#define  GPIO_FUNC_QSPI_CS1	0xD401E2D8
+#define  GPIO_FUNC_GPIO_77	0xD401E2DC
+#define  GPIO_FUNC_GPIO_78	0xD401E2E0
+#define  GPIO_FUNC_GPIO_79	0xD401E2E4
+#define  GPIO_FUNC_GPIO_80	0xD401E2E8
+#define  GPIO_FUNC_SDIO_DAT3	0xD401E2EC
+#define  GPIO_FUNC_SDIO_DAT2	0xD401E2F0
+#define  GPIO_FUNC_SDIO_DAT1	0xD401E2F4
+#define  GPIO_FUNC_SDIO_DAT0	0xD401E2F8
+#define  GPIO_FUNC_SDIO_CMD	0xD401E2FC
+#define  GPIO_FUNC_SDIO_CLK	0xD401E300
+#define  GPIO_FUNC_GPIO_60	0xD401E304
+#define  GPIO_FUNC_USIM_UCLK	0xD401E320
+#define  GPIO_FUNC_USIM_UIO	0xD401E324
+#define  GPIO_FUNC_USIM_URSTn	0xD401E328
+
+
+#define  GPIO0_BASE 0xD4019000
+#define  GPIO1_BASE 0xD4019004
+#define  GPIO2_BASE 0xD4019008
+#define  GPIO3_BASE 0xD4019100
+
+struct gpio_register_function
+{
+    int  reg;
+    int  func_gpio; // 第 [func_gpio] 功能为 GPIO
+};
+
+
+#endif /*__GPIO_DEFINE_H__*/
diff --git a/mbtk/mbtk_at/inc/mbtk_adc.h b/mbtk/mbtk_at/inc/mbtk_adc.h
new file mode 100755
index 0000000..29dfba4
--- /dev/null
+++ b/mbtk/mbtk_at/inc/mbtk_adc.h
@@ -0,0 +1,45 @@
+/*
+    MBTK ADC interface define.
+*/
+/******************************************************************************
+
+                   EDIT HISTORY FOR FILE
+
+  WHEN        WHO       WHAT,WHERE,WHY
+--------    --------    -------------------------------------------------------
+2023/4/3      b.liu    Initial version
+
+******************************************************************************/
+#ifndef __MBTK_ADC_H__
+#define __MBTK_ADC_H__
+/*
+* MBTK ADC define.
+*/
+typedef enum {
+    MBTK_ADC0 = 0,  /* ADC 0 */
+    MBTK_ADC1,       /* ADC 1 */
+    MBTK_ADC2       /* ADC 2 */
+} mbtk_adc_enum;
+
+
+/*===========================================================================
+FUNCTION mbtk_adc_get
+
+DESCRIPTION:
+  Get ADC's value.
+
+PARAMETERS:
+  adc_dev : Refer to : ADC_DEVICE_802/ADC_DEVICE_803/ADC_DEVICE_PMIC802/ADC_DEVICE_AUX
+  adc [IN]: ADC path, refer to mbtk_adc_enum.
+
+RETURN VALUE:
+  int : ADC value.
+
+===========================================================================*/
+int mbtk_adc_get(mbtk_adc_enum adc);
+int mbtk_adc_close(void);
+int mbtk_at_adc(int value);
+
+#endif /* __MBTK_ADC_H__ */
+
+
diff --git a/mbtk/mbtk_at/inc/mbtk_at.h b/mbtk/mbtk_at/inc/mbtk_at.h
new file mode 100755
index 0000000..11f027c
--- /dev/null
+++ b/mbtk/mbtk_at/inc/mbtk_at.h
@@ -0,0 +1,156 @@
+/*
+* MBTK AT Header.
+*
+* Author : lb
+* Date   : 2021/11/5 10:41:24
+*
+*/
+#ifndef MBTK_AT_H
+#define MBTK_AT_H
+#include "ml_utils.h"
+#include "teldef.h"
+#include "telutl.h"
+#include "utlTypes.h"
+#include "utlAtParser.h"
+
+#include "mbtk/mbtk_type.h"
+
+void mbtk_log(int level, const char *format, ...);
+
+#define LOG_DEBUG_LEVEL 5
+#define LOG(fmt, args...) mbtk_log(LOG_DEBUG_LEVEL, fmt, ##args)
+
+#define MBTK_AT_RESP_LEN_MAX 2048
+#define MBTK_AT_FTP_NAME_LEN_MAX 21
+#define MBTK_AT_FTP_PASS_LEN_MAX 21
+#define MBTK_AT_FTP_ADDR_LEN_MAX 64
+#define MBTK_AT_FTP_DIR_LEN_MAX 90
+
+#ifdef MBTK_DATA_MODE_SUPPORT
+typedef void (*mbtk_data_mode_callback_func)(const char *data, int data_len);
+#endif
+
+typedef enum {
+    MBTK_AT_FUNC_TYPE_BASIC = 0,    // No change , refer to lib_list
+    MBTK_AT_FUNC_TYPE_FACTORY,
+    MBTK_AT_FUNC_TYPE_AUDIO,
+    MBTK_AT_FUNC_TYPE_GNSS,
+    MBTK_AT_FUNC_TYPE_ECALL,
+    MBTK_AT_FUNC_TYPE_SOCKET,
+    MBTK_AT_FUNC_TYPE_TCPIP,
+    MBTK_AT_FUNC_TYPE_HTTP,
+    MBTK_AT_FUNC_TYPE_FTP,
+
+    /* Arrry number. */
+    MBTK_AT_FUNC_TYPE_NUM
+} mbtk_at_func_type_enum;
+
+typedef struct mbtk_at_func{
+    mbtk_at_func_type_enum type;
+    char name[50];
+    void *func;
+
+    struct mbtk_at_func *next;
+} mbtk_at_func_t;
+
+typedef enum
+{
+    MBTK_PORT_TYPE_UART1,   // /dev/ttyS1
+    MBTK_PORT_TYPE_USB1,    // /dev/ttyGS0
+    MBTK_PORT_TYPE_USB2     // /dev/ttymodem0
+} mbtk_port_type_enum;
+
+typedef enum
+{
+    MBTK_PORT_MODE_AT,      // AT mode(default)
+    MBTK_PORT_MODE_ADB,     // mbtk_adb mode
+    MBTK_PORT_MODE_CUSTOM   // Custom mode
+} mbtk_port_mode_enum;
+
+//void func_add(char *name);
+mbtk_at_func_t *func_get(char *name);
+
+
+//#define mbtk_cmd_line_ex_f (bool (*)(const char*, void (*)(char*int)))
+
+#define MBTK_FUNC_TYPEDEF
+#include "mbtk_at_func.h"
+#undef MBTK_FUNC_TYPEDEF
+
+
+#define MBTK_FUNC(name) (*((name)(func_get(#name)->func)))
+/*#define MBTK_FUNC(name) \
+    do{ \
+        if(name) \
+            (*((name)(func_get(#name)->func))); \
+    } while(0)
+    */
+//#define MBTK_FUNC(name) (name?(*((name)(func_get(#name)->func))):-1)
+#define MBTK_FUNC_ADD(type, name) func_add(type, #name)
+
+//typedef void (*mbtk_cmd_cb_func)(char *buf,int buf_size);
+//typedef bool (*mbtk_cmd_line_ex_f)(const char *cmd, void (*cb)(char *buf,int buf_size));
+//extern void* mbtk_cmd_line_ex;
+
+#if 0
+typedef int (*mbtk_audio_exec_f)(const char *args);
+extern mbtk_audio_exec_f mbtk_at_play;
+extern mbtk_audio_exec_f mbtk_at_rec;
+#endif
+
+#if 0
+typedef enum {
+    MBTK_AT_PARAM_TYPE_INT,
+    MBTK_AT_PARAM_TYPE_STR
+} mbtk_at_param_type_enum;
+
+typedef struct {
+    int min;
+    int max;
+    int int_def;
+} mbtk_at_param_int_range_t;
+
+typedef struct {
+    int max_len;
+    char *str_def;
+} mbtk_at_param_str_range_t;
+
+typedef struct {
+    mbtk_at_param_type_enum type;
+    union {
+        mbtk_at_param_int_range_t param_int;
+        mbtk_at_param_str_range_t param_str;
+    } param;
+} mbtk_at_param_range_t;
+#endif
+
+BOOL getExtValue( const utlAtParameterValue_P2c param_value_p,
+                  int index,
+                  int *value_p,
+                  int minValue,
+                  int maxValue,
+                  int DefaultValue);
+
+BOOL getExtUValue(const utlAtParameterValue_P2c param_value_p,
+                  int index,
+                  unsigned int *value_p,
+                  unsigned int minValue,
+                  unsigned int maxValue,
+                  unsigned int DefaultValue);
+
+BOOL getExtString( const utlAtParameterValue_P2c param_value_p,
+                    int index,
+                    CHAR *outString,
+                    INT16 maxStringLength,
+                    INT16 *outStringLength,
+                    CHAR *defaultString);
+char *op2str(utlAtParameterOp_T op);
+
+#ifdef MBTK_DATA_MODE_SUPPORT
+utlReturnCode_T mbtk_data_mode_enter(TelAtParserID atp_index, mbtk_data_mode_callback_func cb);
+#endif
+#if 1//MBTK_RGMII_TEST
+int mbtk_rgmii_loopback(void);
+int mbtk_mdio(char* net_name,int mode, uint16_t reg_addr, uint16_t value);
+#endif
+#endif /* MBTK_AT_H */
diff --git a/mbtk/mbtk_at/inc/mbtk_at_func.h b/mbtk/mbtk_at/inc/mbtk_at_func.h
new file mode 100755
index 0000000..b696b1d
--- /dev/null
+++ b/mbtk/mbtk_at/inc/mbtk_at_func.h
@@ -0,0 +1,139 @@
+#ifdef MBTK_FUNC_TYPEDEF
+// Add function define start.
+typedef bool (*mbtk_cmd_line_ex)(const char*, void (*)(char*, int));
+//typedef int (*mbtk_at_play)(const char*);
+//typedef int (*mbtk_at_rec)(const char*);
+//typedef int (*mbtk_at_loopback)(int type); // 1 : Start  0 : Stop
+//typedef int (*mbtk_at_adc)(int);
+//typedef int (*mbtk_at_gnss)(int, void*);
+//typedef int (*mbtk_mgpsc_set)(int);
+//typedef int (*mbtk_at_gnss_reset)(int);
+//typedef int (*mbtk_at_gpio)(bool, void*);
+//typedef int (*mbtk_at_gnss_start_ttff)(int, int, int);
+
+typedef int (*mbtk_audio_loopback_start)(int);
+typedef int (*mbtk_audio_loopback_stop)();
+typedef int (*mbtk_audio_mode_set)(int);
+typedef int (*mbtk_audio_ubus_init)();
+typedef int (*mbtk_audio_ubus_deinit)();
+typedef int (*mbtk_audio_wav_init)();
+typedef int (*mbtk_audio_wav_play_start)(const void *);
+typedef int (*mbtk_audio_wav_deinit)();
+typedef int (*mbtk_audio_wav_recorder_start)(const void *, int);
+
+typedef void (*mbtk_log_init)(char*, char*);
+typedef void (*log_hex)(const char *tag, const void *data, int data_len);
+typedef int (*mbtk_at_ftp)(int, int, char*, char*, char*, int, bool, bool);
+typedef int (*mbtk_at_get_ftp_info)(int ,int *,char *, char *, char *,int * ,int *, int *);
+typedef int (*mbtk_at_ftp_mkrmdel)(int ,char *);
+typedef int (*mbtk_at_ftp_upload)(char *,char *, int, int);
+typedef int (*mbtk_at_ftp_download)(void *, void *, int , int , int );
+typedef int (*mbtk_at_ftp_list)(char *);
+typedef int (*mbtk_at_get_ftp_data_info)(char *, char *, int *, int *, int *);
+typedef int (*mbtk_at_msgid)(int *);
+//typedef int (*mbtk_system_sleep)(void);
+
+
+//typedef int (*mbtk_http_handle_get)(int, void(*)(int, int, void*, int));
+typedef int (*mbtk_http_handle_get)(int, void*);
+typedef int (*mbtk_http_handle_free)(int);
+typedef int (*mbtk_http_session_url_set)(int,int,void *);
+typedef int (*mbtk_http_session_create)(int,int,int);
+typedef int (*mbtk_http_session_option_reset)(int,int,int);
+typedef int (*mbtk_http_session_ingnore_cert_set)(int,int,bool);
+typedef int (*mbtk_http_session_start)(int,int);
+typedef int (*mbtk_http_session_head_add)(int,int,char *, char *);
+typedef int (*mbtk_http_session_content_set)(int,int,char *, int);
+typedef int (*mbtk_http_session_get)(int,int);
+
+
+#include "mbtk_at_tcpip.h"
+
+typedef int (*mbtk_task_queue_start)(void * ,void *(*)(void *) );
+typedef void (*mbtk_task_queue_stop)(void * );
+typedef int (*mbtk_signal_send)(void * ,mbtk_signal_info* );
+typedef mbtk_signal_info* (*mbtk_signal_get)(void * );
+
+typedef mbtk_tcpip_err_enum (*mbtk_tcpip_net_open)(void (*)(int ,const char * ), void (*)(int , int ));
+typedef mbtk_tcpip_err_enum (*mbtk_tcpip_net_close)();
+
+typedef mbtk_tcpip_err_enum (*mbtk_tcpip_sock_open)(const mbtk_tcpip_info_t *);
+typedef mbtk_tcpip_err_enum (*mbtk_tcpip_sock_close)(int );
+typedef int (*mbtk_tcpip_send)(int , const char* , int , const char* , int );
+typedef int (*mbtk_tcpip_read)(int , char* , int );
+typedef int (*mbtk_tcpip_info_get)(int , mbtk_tcpip_tcp_state_info_s *);
+typedef void (*mbtk_tcpip_set_read_cb)(int , mbtk_tcpip_read_callback_func );
+typedef int (*mbtk_tcpip_data_traffic_get)(int );
+typedef mbtk_tcpip_err_enum (*mbtk_tcpip_data_traffic_reset)(int );
+typedef int (*mbtk_tcpip_link_state_get)(int );
+// Add function define end.
+#endif
+
+
+#ifdef MBTK_FUNC_INIT
+// Add function start.
+// libmbtk_lib.so
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_cmd_line_ex);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_log_init);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, log_hex);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_task_queue_start);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_task_queue_stop);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_signal_send);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_signal_get);
+
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_audio_loopback_start);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_audio_loopback_stop);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_audio_mode_set);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_audio_ubus_init);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_audio_ubus_deinit);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_audio_wav_init);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_audio_wav_deinit);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_audio_wav_play_start);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_audio_wav_recorder_start);
+
+// libmbtk_factory.so
+//MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_FACTORY, mbtk_at_adc);
+//MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_FACTORY, mbtk_at_gpio);
+//MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_FACTORY, mbtk_at_play);
+//MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_FACTORY, mbtk_at_rec);
+//MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_FACTORY, mbtk_at_loopback);
+//MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_FACTORY, mbtk_system_sleep);
+//MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_FACTORY, mbtk_mgpsc_set);
+
+// libmbtk_ftp.so
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_at_ftp);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_at_get_ftp_info);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_at_ftp_mkrmdel);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_at_ftp_upload);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_at_ftp_download);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_at_ftp_list);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_at_get_ftp_data_info);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_at_msgid);
+
+// libmbtk_http.so
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_handle_get);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_handle_free);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_session_url_set);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_session_create);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_session_option_reset);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_session_ingnore_cert_set);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_session_start);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_session_head_add);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_session_content_set);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_http_session_get);
+
+// libmbtk_tcpip.so
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_net_open);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_net_close);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_sock_open);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_sock_close);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_send);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_read);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_info_get);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_set_read_cb);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_data_traffic_get);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_data_traffic_reset);
+MBTK_FUNC_ADD(MBTK_AT_FUNC_TYPE_BASIC, mbtk_tcpip_link_state_get);
+
+// Add function end.
+#endif
diff --git a/mbtk/mbtk_at/inc/mbtk_at_tables.h b/mbtk/mbtk_at/inc/mbtk_at_tables.h
new file mode 100755
index 0000000..707f6a9
--- /dev/null
+++ b/mbtk/mbtk_at/inc/mbtk_at_tables.h
@@ -0,0 +1,610 @@
+/*
+*
+* Author : lb
+* Date   : 2021/11/4 14:08:32
+*
+*/
+#ifndef MBTK_AT_TABLES_H
+#define MBTK_AT_TABLES_H
+#define MBTK_PARAM_OPTIONAL utlAT_PARAMETER_PRESENCE_OPTIONAL
+#define MBTK_PARAM_REQUIRED utlAT_PARAMETER_PRESENCE_REQUIRED
+#define MBTK_PARAM_DECIMAL(optional) utlDEFINE_DECIMAL_AT_PARAMETER(utlAT_PARAMETER_ACCESS_READ_WRITE, optional)
+#define MBTK_PARAM_STRING(optional) utlDEFINE_STRING_AT_PARAMETER(utlAT_PARAMETER_ACCESS_READ_WRITE, optional)
+#define MBTK_PARAM_QSTRING(optional) utlDEFINE_QSTRING_AT_PARAMETER(utlAT_PARAMETER_ACCESS_READ_WRITE, optional)
+#define MBTK_AT_DEFINE(name, param_optional, syntax, at_process) \
+    utlDEFINE_EXTENDED_MBTK_AT_COMMAND(name, param_optional, syntax, at_process, at_process),
+#define MBTK_AT_DEFINE_VSYNTAX(name, param_optional, at_process) \
+    utlDEFINE_EXTENDED_VSYNTAX_MBTK_AT_COMMAND(name, param_optional, at_process, at_process, at_process),
+#endif /* MBTK_AT_TABLES_H */
+
+
+////////////////////////////////////Parameter Definition Start///////////////////////////////////////////////
+#ifdef MBTK_AT_COMMAND_PARAM
+static utlAtParameter_T atMTEST_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atSYSTIME_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atMTESTF_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atMSHELL_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atREVTEST_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atADC_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atGPIO_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atNETLED_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atGNSS_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atGNSSRESET_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atSYSSLEEP_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atMPORTCFG_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atURCECHO_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atMGPSTEST_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atMGPSC_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+
+
+static utlAtParameter_T atCFTPPORT_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atCFTPUN_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atCFTPPW_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atCFTPTLS_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T atCFTPSERV_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atCFTPTYPE_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atCFTPMKD_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atCFTPRMD_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atCFTPDEL_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atCFTPPUTFILE_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED),MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T atCFTPPUT_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T atCFTPGETFILE_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED),MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T atCFTPGET_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T atCFTPLIST_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+
+#if 1//def MBTK_TCP_SUPPORT
+static utlAtParameter_T cipopen_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED),MBTK_PARAM_STRING(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T cipclose_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T cipsend_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_STRING(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_STRING(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T ciprxget_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T mcipcfgpl_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T mcipcfg_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T cipopquery_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+
+#endif
+
+static utlAtParameter_T atCGDRT_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T atCGSETV_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_OPTIONAL)};
+static utlAtParameter_T atMDUMP_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+
+static utlAtParameter_T atHTTPRQH_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED),  MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atHTTPPARA_params[] = { MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED), MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)\
+												,MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED),MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atHTTPACTION_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atHTTPTYPE_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atHTTPREAD_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED)};
+static utlAtParameter_T atHTTPDATAEX_params[] = { MBTK_PARAM_DECIMAL(MBTK_PARAM_REQUIRED), MBTK_PARAM_STRING(MBTK_PARAM_REQUIRED)};
+
+#endif
+////////////////////////////////////Parameter Definition End/////////////////////////////////////////////////
+
+
+////////////////////////////////////Function Definition Start////////////////////////////////////////////////
+#ifdef MBTK_AT_COMMAND_FUNCTION
+utlReturnCode_T MBTK_AT_MTEST_PROCESS(const utlAtParameterOp_T op,
+                    const char *command_name_p,
+                    const utlAtParameterValue_P2c parameter_values_p,
+                    const size_t num_parameters,
+                    const char *info_text_p,
+                    unsigned int *xid_p,
+                    void *arg_p);
+utlReturnCode_T MBTK_AT_MINFO_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_SYSTIME_PROCESS(const utlAtParameterOp_T op,
+                    const char *command_name_p,
+                    const utlAtParameterValue_P2c parameter_values_p,
+                    const size_t num_parameters,
+                    const char *info_text_p,
+                    unsigned int *xid_p,
+                    void *arg_p);
+
+utlReturnCode_T MBTK_AT_MTESTF_PROCESS(const utlAtParameterOp_T op,
+                    const char *command_name_p,
+                    const utlAtParameterValue_P2c parameter_values_p,
+                    const size_t num_parameters,
+                    const char *info_text_p,
+                    unsigned int *xid_p,
+                    void *arg_p);
+
+utlReturnCode_T MBTK_AT_MSHELL_PROCESS(const utlAtParameterOp_T op,
+                    const char *command_name_p,
+                    const utlAtParameterValue_P2c parameter_values_p,
+                    const size_t num_parameters,
+                    const char *info_text_p,
+                    unsigned int *xid_p,
+                    void *arg_p);
+utlReturnCode_T MBTK_AT_ISLKVRSCAN_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+utlReturnCode_T MBTK_AT_SDTEST_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+utlReturnCode_T MBTK_AT_SPKTEST_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+utlReturnCode_T MBTK_AT_MICTEST_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+utlReturnCode_T MBTK_AT_REVTEST_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+utlReturnCode_T MBTK_AT_GPIOTEST_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+utlReturnCode_T MBTK_AT_ADCGETV_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_RGMIITEST_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+
+
+
+utlReturnCode_T MBTK_AT_CGNETLED_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+utlReturnCode_T MBTK_AT_SYSSLEEP_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_MGPSC_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_MPORTCFG_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_MURCECHO_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+RETURNCODE_T  MBTK_AT_READVER_PROCESS(       const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+
+utlReturnCode_T MBTK_AT_CFTPPORT_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPUN_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPPW_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPTLS_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPSERV_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPTYPE_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPMKD_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPRMD_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPDEL_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPPUTFILE_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPPUT_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPGETFILE_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPGET_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CFTPLIST_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+#if 1//def MBTK_TCP_SUPPORT
+utlReturnCode_T  MBTK_AT_NETOPEN_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+utlReturnCode_T  MBTK_AT_NETCLOSE_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+
+utlReturnCode_T  MBTK_AT_CIPOPEN_PROCESS(       const utlAtParameterOp_T        op,
+                                    		const char                      *command_name_p,
+                                    		const utlAtParameterValue_P2c   parameter_values_p,
+                                    		const size_t                    num_parameters,
+                                    		const char                      *info_text_p,
+                                    		unsigned int                    *xid_p,
+                                    		void                            *arg_p);
+
+utlReturnCode_T  MBTK_AT_CIPCLOSE_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+
+utlReturnCode_T  MBTK_AT_CIPSEND_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+utlReturnCode_T  MBTK_AT_CIPRXGET_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+utlReturnCode_T  MBTK_AT_MCIPCFGPL_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+utlReturnCode_T  MBTK_AT_MCIPCFG_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+utlReturnCode_T  MBTK_AT_USEDDATA_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+utlReturnCode_T  MBTK_AT_CLEARDATA_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+utlReturnCode_T  MBTK_AT_CIPOPQUERY_PROCESS(       const utlAtParameterOp_T        op,
+                                            const char                      *command_name_p,
+                                            const utlAtParameterValue_P2c   parameter_values_p,
+                                            const size_t                    num_parameters,
+                                            const char                      *info_text_p,
+                                            unsigned int                    *xid_p,
+                                            void                            *arg_p);
+
+#endif
+utlReturnCode_T MBTK_AT_CGDRT_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_CGSETV_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+utlReturnCode_T MBTK_AT_MDUMP_PROCESS(const utlAtParameterOp_T op,
+                                        const char *command_name_p,
+                                        const utlAtParameterValue_P2c parameter_values_p,
+                                        const size_t num_parameters,
+                                        const char *info_text_p,
+                                        unsigned int *xid_p,
+                                        void *arg_p);
+
+//MBTK_AT_HTTP_H
+utlReturnCode_T MBTK_AT_HTTPOPEN_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_HTTPCLOSE_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_HTTPSEND_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_HTTPRQH_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_HTTPACTION_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_HTTPTYPE_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_HTTPREAD_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_HTTPDATAEX_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+utlReturnCode_T MBTK_AT_HTTPPARA_PROCESS(const utlAtParameterOp_T op,
+        const char *command_name_p,
+        const utlAtParameterValue_P2c parameter_values_p,
+        const size_t num_parameters,
+        const char *info_text_p,
+        unsigned int *xid_p,
+        void *arg_p);
+
+
+#endif
+////////////////////////////////////Function Definition End//////////////////////////////////////////////////
+
+
+////////////////////////////////////AT Definition Start/////////////////////////////////////////////////////
+#ifdef MBTK_AT_COMMAND_SHELL
+MBTK_AT_DEFINE("+MTEST", atMTEST_params, "+MTEST=(0-1),\"\"", MBTK_AT_MTEST_PROCESS)
+MBTK_AT_DEFINE("+MINFO", NULL, NULL, MBTK_AT_MINFO_PROCESS)
+MBTK_AT_DEFINE("+SYSTIME", atSYSTIME_params, "+SYSTIME=(0-2),\"\"", MBTK_AT_SYSTIME_PROCESS)
+MBTK_AT_DEFINE_VSYNTAX("+MTESTF", atMTESTF_params, MBTK_AT_MTESTF_PROCESS)
+
+MBTK_AT_DEFINE("+MSHELL", atMSHELL_params, "+MSHELL=\"\"", MBTK_AT_MSHELL_PROCESS)
+MBTK_AT_DEFINE("+ISLKVRSCAN", NULL, NULL, MBTK_AT_ISLKVRSCAN_PROCESS)
+MBTK_AT_DEFINE("+SDTEST", NULL, NULL, MBTK_AT_SDTEST_PROCESS)
+MBTK_AT_DEFINE("+SPKTEST", NULL, NULL, MBTK_AT_SPKTEST_PROCESS)
+MBTK_AT_DEFINE("+MICTEST", NULL, NULL, MBTK_AT_MICTEST_PROCESS)
+MBTK_AT_DEFINE("+REVTEST", atREVTEST_params, "+MTEST=(0-1),\"\"", MBTK_AT_REVTEST_PROCESS)
+MBTK_AT_DEFINE("+GPIOTEST", atGPIO_params, "+GPIOTEST=(0-1)", MBTK_AT_GPIOTEST_PROCESS)
+MBTK_AT_DEFINE("+ADCGETV", atADC_params, "+ADCGETV=(0-1)", MBTK_AT_ADCGETV_PROCESS)
+MBTK_AT_DEFINE("+RGMIITEST", NULL, NULL, MBTK_AT_RGMIITEST_PROCESS)
+
+MBTK_AT_DEFINE("+CGNETLED", atNETLED_params, "+CGNETLED=(0-1)", MBTK_AT_CGNETLED_PROCESS)
+MBTK_AT_DEFINE("*SYSSLEEP", NULL, NULL, MBTK_AT_SYSSLEEP_PROCESS)
+MBTK_AT_DEFINE("+SYSSLEEP", atSYSSLEEP_params, "+SYSSLEEP=(0-2)", MBTK_AT_SYSSLEEP_PROCESS)
+MBTK_AT_DEFINE("+MPORTCFG", atMPORTCFG_params, "+MPORTCFG=(0-2),(0-2)", MBTK_AT_MPORTCFG_PROCESS)
+MBTK_AT_DEFINE("+MURCECHO", atURCECHO_params, "+MURCECHO=(0-1)", MBTK_AT_MURCECHO_PROCESS)
+//MBTK_AT_DEFINE("+MGPSTEST", atMGPSTEST_params, "+MGPSTEST=(0-2),(0-180),(0-100)", MBTK_AT_MGPSTEST_PROCESS)
+MBTK_AT_DEFINE("*READVER", NULL, NULL, MBTK_AT_READVER_PROCESS)
+MBTK_AT_DEFINE("+MGPSC", atMGPSC_params, "+MGPSC=(0,1,5)", MBTK_AT_MGPSC_PROCESS)
+
+
+MBTK_AT_DEFINE("+CFTPPORT", atCFTPPORT_params, "+CFTPPORT: (list of supported <port>s) ", MBTK_AT_CFTPPORT_PROCESS)
+MBTK_AT_DEFINE("+CFTPUN", atCFTPUN_params, NULL, MBTK_AT_CFTPUN_PROCESS)
+MBTK_AT_DEFINE("+CFTPPW", atCFTPPW_params, NULL, MBTK_AT_CFTPPW_PROCESS)
+MBTK_AT_DEFINE("+CFTPTLS", atCFTPTLS_params, "+CFTPTLS: (0-2),(0-1)", MBTK_AT_CFTPTLS_PROCESS)
+MBTK_AT_DEFINE("+CFTPSERV", atCFTPSERV_params, NULL, MBTK_AT_CFTPSERV_PROCESS)
+MBTK_AT_DEFINE("+CFTPTYPE", atCFTPTYPE_params, "+CFTPTYPE: (\"I\",\"A\")", MBTK_AT_CFTPTYPE_PROCESS)
+MBTK_AT_DEFINE("+CFTPMKD", atCFTPMKD_params, NULL, MBTK_AT_CFTPMKD_PROCESS)
+MBTK_AT_DEFINE("+CFTPRMD", atCFTPRMD_params, NULL, MBTK_AT_CFTPRMD_PROCESS)
+MBTK_AT_DEFINE("+CFTPDELE", atCFTPDEL_params, NULL, MBTK_AT_CFTPDEL_PROCESS)
+MBTK_AT_DEFINE("+CFTPPUTFILE", atCFTPPUTFILE_params, "+CFTPPUTFILE: ,,(0-2147483647)", MBTK_AT_CFTPPUTFILE_PROCESS)
+MBTK_AT_DEFINE("+CFTPPUT", atCFTPPUT_params, "+CFTPPUT: ,(0-2147483647),(1-1500)", MBTK_AT_CFTPPUT_PROCESS)
+MBTK_AT_DEFINE("+CFTPGETFILE", atCFTPGETFILE_params, "+CFTPGETFILE: ,,(0-2147483647), (0-524288)", MBTK_AT_CFTPGETFILE_PROCESS)
+MBTK_AT_DEFINE("+CFTPGET", atCFTPGET_params, "+CFTPGET: ,(0-2147483647),(0-524288)", MBTK_AT_CFTPGET_PROCESS)
+MBTK_AT_DEFINE("+CFTPLIST", atCFTPLIST_params, NULL, MBTK_AT_CFTPLIST_PROCESS)
+
+#if 1//def MBTK_TCP_SUPPORT
+MBTK_AT_DEFINE_VSYNTAX("+NETOPEN", NULL, MBTK_AT_NETOPEN_PROCESS)
+MBTK_AT_DEFINE_VSYNTAX("+NETCLOSE", NULL, MBTK_AT_NETCLOSE_PROCESS)
+MBTK_AT_DEFINE("+CIPOPEN", cipopen_params, "+CIPOPEN: (list of supported <link_num>s), (list of supported<type>s)", MBTK_AT_CIPOPEN_PROCESS)
+MBTK_AT_DEFINE("+CIPCLOSE", cipclose_params, "+CIPOPEN: (list of supported <link_num>s)", MBTK_AT_CIPCLOSE_PROCESS)
+MBTK_AT_DEFINE("+CIPSEND", cipsend_params, "+CIPSEND: (list of supported <link_num>s), (list of supported <length>s)", MBTK_AT_CIPSEND_PROCESS)
+MBTK_AT_DEFINE("+CIPRXGET", ciprxget_params, "+CIPRXGET: (list of supported <mode>s), (list of supported<cid>s), (list of supported<len>s)", MBTK_AT_CIPRXGET_PROCESS)
+MBTK_AT_DEFINE("+MCIPCFGPL", mcipcfgpl_params, "+MCIPCFGPL:(list of supported <link_num>s), (list of supported <hex_support>s),(list of supported <ack_support>s), (list of supported <ssl_support>s, (list of supported <ignore_cert>s)", MBTK_AT_MCIPCFGPL_PROCESS)
+MBTK_AT_DEFINE("+MCIPCFG", mcipcfg_params, "+MCIPCFG: (list of supported <heartbeat_time>s), (list of supported <delay_time>ms)", MBTK_AT_MCIPCFG_PROCESS)
+MBTK_AT_DEFINE_VSYNTAX("+USEDDATA", NULL, MBTK_AT_USEDDATA_PROCESS)
+MBTK_AT_DEFINE_VSYNTAX("+CLEARDATA", NULL, MBTK_AT_CLEARDATA_PROCESS)
+MBTK_AT_DEFINE("+CIPOPQUERY", cipopquery_params, "+CIPOPQUERY: (0-3),(0-3),(0-3),(0-3)", MBTK_AT_CIPOPQUERY_PROCESS)
+#endif
+
+MBTK_AT_DEFINE("+CGDRT", atCGDRT_params, "+CGDRT: (0-139),(0-1)", MBTK_AT_CGDRT_PROCESS)
+MBTK_AT_DEFINE("+CGSETV", atCGSETV_params, "+CGSETV: (0-139),(0-1)", MBTK_AT_CGSETV_PROCESS)
+
+MBTK_AT_DEFINE("+MDUMP", atMDUMP_params, "+MDUMP=(0-1)", MBTK_AT_MDUMP_PROCESS)
+
+MBTK_AT_DEFINE("$HTTPOPEN", NULL, NULL, MBTK_AT_HTTPOPEN_PROCESS)
+MBTK_AT_DEFINE("$HTTPCLOSE", NULL, NULL, MBTK_AT_HTTPCLOSE_PROCESS)
+MBTK_AT_DEFINE("$HTTPSEND", NULL, NULL, MBTK_AT_HTTPSEND_PROCESS)
+MBTK_AT_DEFINE("$HTTPACTION", atHTTPACTION_params, "$HTTPACTION=(0-3)", MBTK_AT_HTTPACTION_PROCESS)
+MBTK_AT_DEFINE("$HTTPTYPE", atHTTPTYPE_params, "$HTTPTYPE=(0-1)", MBTK_AT_HTTPTYPE_PROCESS)
+MBTK_AT_DEFINE("$HTTPREAD", atHTTPREAD_params, "$HTTPREAD=(0-1),(0-512000)", MBTK_AT_HTTPREAD_PROCESS)
+MBTK_AT_DEFINE("$HTTPDATAEX", atHTTPDATAEX_params, "$HTTPDATAEX=(0-500),\"\"", MBTK_AT_HTTPDATAEX_PROCESS)
+MBTK_AT_DEFINE("$HTTPPARA", atHTTPPARA_params, "$HTTPPARA=\"\",(0-65535),(0-1), (0-1)", MBTK_AT_HTTPPARA_PROCESS)
+MBTK_AT_DEFINE("$HTTPRQH", atHTTPRQH_params, "$HTTPRQH=\"\", \"\"", MBTK_AT_HTTPRQH_PROCESS)
+
+
+#endif
+////////////////////////////////////AT Definition End///////////////////////////////////////////////////////
diff --git a/mbtk/mbtk_at/inc/mbtk_at_tcpip.h b/mbtk/mbtk_at/inc/mbtk_at_tcpip.h
new file mode 100755
index 0000000..375f4b6
--- /dev/null
+++ b/mbtk/mbtk_at/inc/mbtk_at_tcpip.h
@@ -0,0 +1,90 @@
+#ifndef __MBTK_AT_TCPIP_H__
+#define __MBTK_AT_TCPIP_H__
+
+#include <pthread.h>
+/*******************DEFINE**********************/
+#define task_mutex pthread_mutex_t
+/*******************DEFINE**********************/
+
+/*******************TYPEDEF**********************/
+typedef void (*mbtk_tcpip_read_callback_func)(int link_id, const char* data, int data_len);
+/*******************TYPEDEF**********************/
+
+/*******************ENUM**********************/
+typedef enum {
+    MBTK_TCPIP_ERR_SUCCESS,
+    MBTK_TCPIP_ERR_NET_UNAVAILABLE,     /* Network unavailable. */
+    MBTK_TCPIP_ERR_NET_HANDLE,     /* Network handle error. */
+    MBTK_TCPIP_ERR_ARG,     /* Parameter error. */
+    MBTK_TCPIP_ERR_LINK_UNAVAILABLE,     /* Link unavailable. */
+    MBTK_TCPIP_ERR_LINK_NOT_CONNECT,     /* Link not connect. */
+    MBTK_TCPIP_ERR_UNKNOWN
+} mbtk_tcpip_err_enum;
+
+typedef enum
+{
+    MBTK_SOCK_TCP = 0,
+    MBTK_SOCK_UDP
+} mbtk_sock_type;
+
+typedef enum {
+    MBTK_TCPIP_TYPE_CLIENT,
+    MBTK_TCPIP_TYPE_SERVER
+} mbtk_tcpip_type_enum;
+/*******************ENUM**********************/
+
+/*******************STRUCT**********************/
+typedef struct
+{
+    unsigned int sig;
+    void* payload;
+} mbtk_signal_info;
+
+
+typedef struct{
+    task_mutex crit_sect; //User-defined data type
+} mbtk_mutex;
+
+typedef struct node
+{
+    void *payload;
+    int count;          //only used to count for internal
+    mbtk_mutex mutex;   //only used to count for internal
+    struct node *front;
+    struct node *rear;
+} mbtk_queue_node_t;
+
+typedef struct {
+    pthread_t thread_id;
+    pthread_cond_t cond;
+    mbtk_mutex mutex;
+    mbtk_queue_node_t queue;
+} mbtk_task_queue_info;
+
+typedef struct {
+    int link_id;
+    char ser_addr[256];
+    int ser_port;
+    mbtk_sock_type prot_type; // TCP/UDP
+    mbtk_tcpip_type_enum tcpip_type; // Only support client.
+    int local_port;
+    bool ack_support;
+    bool ssl_support;
+    bool ignore_cert;
+    uint32 heartbeat_time;
+    uint32 delay_time;
+
+    mbtk_tcpip_read_callback_func read_cb;
+} mbtk_tcpip_info_t;
+
+typedef struct {
+    int link_id;
+    int sock_fd;
+    int state;
+    int recv_data_len;
+} mbtk_tcpip_tcp_state_info_s;
+/*******************STRUCT**********************/
+
+
+
+#endif
\ No newline at end of file
diff --git a/mbtk/mbtk_at/inc/mbtk_gpio_def.h b/mbtk/mbtk_at/inc/mbtk_gpio_def.h
new file mode 100755
index 0000000..4234f86
--- /dev/null
+++ b/mbtk/mbtk_at/inc/mbtk_gpio_def.h
@@ -0,0 +1,173 @@
+/**
+ *   \file gpio-define.h
+ *   \brief A Documented file.
+ *
+ *  Detailed description
+ *   \Author:  Sniper <js.wang@mobiletek.cn>
+ *   \Version: 1.0.0
+ *   \Date: 2022-04-26
+ */
+
+#ifndef __GPIO_DEFINE_H__
+#define __GPIO_DEFINE_H__
+
+typedef unsigned int uint32; /* Unsigned 32 bit value */
+typedef unsigned short uint16; /* Unsigned 16 bit value */
+typedef unsigned char uint8; /* Unsigned 8  bit value */
+
+
+/*
+4组GPIO共128个GPIO,分别从GPIO_0到GPIO_127
+GPIO22位于0xd4019000这一组的BIT22
+
+GPIO0_BASE 0xD4019000
+GPIO1_BASE 0xD4019004
+GPIO2_BASE 0xD4019008
+GPIO3_BASE 0xD4019100
+ */
+
+#define  GPIO_FUNC_MMC1_DAT3	0xD401E094
+#define  GPIO_FUNC_MMC1_DAT2	0xD401E098
+#define  GPIO_FUNC_MMC1_DAT1	0xD401E09C
+#define  GPIO_FUNC_MMC1_DAT0	0xD401E0A0
+#define  GPIO_FUNC_MMC1_CMD	    0xD401E0A4
+#define  GPIO_FUNC_MMC1_CLK	    0xD401E0A8
+#define  GPIO_FUNC_MMC1_CD	    0xD401E0AC
+#define  GPIO_FUNC_USB_ID	    0xD401E0B0
+#define  GPIO_FUNC_PRI_TDI	0xD401E0B4
+#define  GPIO_FUNC_PRI_TMS	0xD401E0B8
+#define  GPIO_FUNC_PRI_TCK	0xD401E0BC
+#define  GPIO_FUNC_PRI_TDO	0xD401E0C0
+#define  GPIO_FUNC_QSPI_VMODE_GPIO	0xD401E0C4
+#define  GPIO_FUNC_VBUS_DRV	0xD401E0C8
+#define  GPIO_FUNC_CLK_REQ	0xD401E0CC
+#define  GPIO_FUNC_VCXO_REQ	0xD401E0D4
+#define  GPIO_FUNC_VCXO_OUT	0xD401E0D8
+
+#define  GPIO_FUNC_GPIO_00	0xD401E0DC
+#define  GPIO_FUNC_GPIO_01	0xD401E0E0
+#define  GPIO_FUNC_GPIO_02	0xD401E0E4
+#define  GPIO_FUNC_GPIO_03	0xD401E0E8
+#define  GPIO_FUNC_GPIO_04	0xD401E0EC
+#define  GPIO_FUNC_GPIO_05	0xD401E0F0
+#define  GPIO_FUNC_GPIO_06	0xD401E0F4
+#define  GPIO_FUNC_GPIO_07	0xD401E0F8
+#define  GPIO_FUNC_GPIO_08	0xD401E0FC
+#define  GPIO_FUNC_GPIO_09	0xD401E100
+#define  GPIO_FUNC_GPIO_10	0xD401E104
+
+#define  GPIO_FUNC_GPIO_11	0xD401E108
+#define  GPIO_FUNC_GPIO_12	0xD401E10C
+#define  GPIO_FUNC_GPIO_13	0xD401E110
+#define  GPIO_FUNC_GPIO_14	0xD401E114
+#define  GPIO_FUNC_GPIO_15	0xD401E118
+#define  GPIO_FUNC_GPIO_16	0xD401E11C
+#define  GPIO_FUNC_GPIO_17	0xD401E120
+#define  GPIO_FUNC_GPIO_18	0xD401E124
+#define  GPIO_FUNC_GPIO_19	0xD401E128
+#define  GPIO_FUNC_GPIO_20	0xD401E12C
+
+#define  GPIO_FUNC_GPIO_21	0xD401E130
+#define  GPIO_FUNC_GPIO_22	0xD401E134
+#define  GPIO_FUNC_GPIO_23	0xD401E138
+#define  GPIO_FUNC_GPIO_24	0xD401E13C
+#define  GPIO_FUNC_GPIO_25	0xD401E140
+#define  GPIO_FUNC_GPIO_26	0xD401E144
+#define  GPIO_FUNC_GPIO_27	0xD401E148
+#define  GPIO_FUNC_GPIO_28	0xD401E14C
+#define  GPIO_FUNC_GPIO_29	0xD401E150
+#define  GPIO_FUNC_GPIO_30	0xD401E154
+
+#define  GPIO_FUNC_GPIO_31	0xD401E158
+#define  GPIO_FUNC_GPIO_32	0xD401E15C
+#define  GPIO_FUNC_GPIO_33	0xD401E160
+#define  GPIO_FUNC_GPIO_34	0xD401E164
+#define  GPIO_FUNC_GPIO_35	0xD401E168
+#define  GPIO_FUNC_GPIO_36	0xD401E16C
+#define  GPIO_FUNC_GPIO_37	0xD401E170
+#define  GPIO_FUNC_GPIO_38	0xD401E174
+#define  GPIO_FUNC_GPIO_39	0xD401E178
+#define  GPIO_FUNC_GPIO_40	0xD401E17C
+
+#define  GPIO_FUNC_GPIO_41	0xD401E180
+#define  GPIO_FUNC_GPIO_42	0xD401E184
+#define  GPIO_FUNC_GPIO_43	0xD401E188
+#define  GPIO_FUNC_GPIO_44	0xD401E18C
+#define  GPIO_FUNC_GPIO_45	0xD401E190
+#define  GPIO_FUNC_GPIO_46	0xD401E194
+#define  GPIO_FUNC_GPIO_47	0xD401E198
+#define  GPIO_FUNC_GPIO_48	0xD401E19C
+#define  GPIO_FUNC_GPIO_49	0xD401E1A0
+#define  GPIO_FUNC_GPIO_50	0xD401E1A4
+
+#define  GPIO_FUNC_GPIO_51	0xD401E1A8
+#define  GPIO_FUNC_GPIO_52	0xD401E1AC
+#define  GPIO_FUNC_GPIO_53	0xD401E1B0
+#define  GPIO_FUNC_GPIO_54	0xD401E1B4
+#define  GPIO_FUNC_DVL_0      0xD401E2B4
+#define  GPIO_FUNC_DVL_1      0xD401E2B8
+#define  GPIO_FUNC_GPIO_69	0xD401E2BC
+#define  GPIO_FUNC_GPIO_70	0xD401E2C0
+
+#define  GPIO_FUNC_QSPI_DAT3	0xD401E2C4
+#define  GPIO_FUNC_QSPI_DAT2	0xD401E2C8
+#define  GPIO_FUNC_QSPI_DAT1	0xD401E2CC
+#define  GPIO_FUNC_QSPI_DAT0	0xD401E2D0
+#define  GPIO_FUNC_QSPI_CLK	0xD401E2D4
+#define  GPIO_FUNC_QSPI_CS1	0xD401E2D8
+#define  GPIO_FUNC_GPIO_77	0xD401E2DC
+#define  GPIO_FUNC_GPIO_78	0xD401E2E0
+#define  GPIO_FUNC_GPIO_79	0xD401E2E4
+#define  GPIO_FUNC_GPIO_80	0xD401E2E8
+
+#define  GPIO_FUNC_SDIO_DAT3	0xD401E2EC
+#define  GPIO_FUNC_SDIO_DAT2	0xD401E2F0
+#define  GPIO_FUNC_SDIO_DAT1	0xD401E2F4
+#define  GPIO_FUNC_SDIO_DAT0	0xD401E2F8
+#define  GPIO_FUNC_SDIO_CMD	0xD401E2FC
+#define  GPIO_FUNC_SDIO_CLK	0xD401E300
+#define  GPIO_FUNC_GPIO_60	0xD401E304
+#define  GPIO_FUNC_USIM_UCLK	0xD401E320
+#define  GPIO_FUNC_USIM_UIO	0xD401E324
+#define  GPIO_FUNC_USIM_URSTn	0xD401E328
+
+#define  MMC1_DAT3  0x
+
+
+
+#define  GPIO0_BASE 0xD4019000
+#define  GPIO1_BASE 0xD4019004
+#define  GPIO2_BASE 0xD4019008
+#define  GPIO3_BASE 0xD4019100
+
+struct gpio_register_function
+{
+    int  reg;
+    int  func_gpio; // 第 [func_gpio] 功能为 GPIO
+};
+
+typedef struct
+{
+  uint16 output_pin;
+  uint16 input_pin;
+  uint8 mbtk_gpio_test_result; // 0 is pass, 1 is low failed, 2 is high failed
+}mbtk_gpio_test_pin_paired;
+
+
+typedef struct 
+{
+	uint16 output_pin;
+	uint16 output_gpio;
+	uint16 input_gpio;
+	uint16 input_pin;
+	uint8 mbtk_gpio_test_result; // 0 is pass, 1 is low failed, 2 is high failed
+}mbtk_gpio_paired_info_struct;
+
+typedef struct
+{
+  uint16 gpio_num;
+  uint16 pin_num;   //moudle pin num
+}mbtk_gpio_test_pin_and_gpio;
+
+#endif /*__GPIO_DEFINE_H__*/
+