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__*/
+