[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/service/wlc/wlc_user_struct.h b/mcu/interface/service/wlc/wlc_user_struct.h
new file mode 100644
index 0000000..761cfac
--- /dev/null
+++ b/mcu/interface/service/wlc/wlc_user_struct.h
@@ -0,0 +1,312 @@
+/*****************************************************************************
+*  Copyright Statement:
+*  --------------------
+*  This software is protected by Copyright and the information contained
+*  herein is confidential. The software may not be copied and the information
+*  contained herein may not be used or disclosed except with the written
+*  permission of MediaTek Inc. (C) 2016
+*
+*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ * wlc_user_struct.h
+ *
+ * Project:
+ * --------
+ * UMOLYE
+ *
+ * Description:
+ * ------------
+ * Structs be used in Interfaces of WLC - USER.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+*****************************************************************************/
+
+
+#ifndef __WLC_USER_STRUCT_H__
+#define __WLC_USER_STRUCT_H__
+/****************************************************************************/
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+/****************************************************************************/
+
+#define WLC_MAX_ADDR_BUF_NUM   10  
+/****************************************************************************/
+
+typedef enum {
+    WLC_WIFI_INFO_BIT_SSID =           0,
+    WLC_WIFI_INFO_BIT_BSSID =          1,
+    WLC_WIFI_INFO_BIT_ASSOC =          2,
+    WLC_WIFI_INFO_BIT_PATH_READY =     3,
+    WLC_WIFI_INFO_BIT_MTU =            4,
+    WLC_WIFI_INFO_BIT_WIFI_TYPE =      5,
+    WLC_WIFI_INFO_BIT_UE_MAC =         6,
+    WLC_WIFI_INFO_BIT_DNS =            7,
+    WLC_WIFI_INFO_BIT_IP_ADDR =        8,
+    WLC_WIFI_INFO_BIT_WIFI_EN =        9,
+    WLC_WIFI_INFO_BIT_RSSI =           10,
+    WLC_WIFI_INFO_BIT_SNR =            11,
+    WLC_WIFI_INFO_BIT_BEACON_TIMEOUT = 12,
+    WLC_WIFI_INFO_BIT_IP_GATEWAY =     13,
+    WLC_WIFI_INFO_BIT_IP_SUBNET_MASK = 14,
+    WLC_WIFI_INFO_BIT_INTERFACE_ID   = 15,
+    WLC_WIFI_INFO_BIT_MAX,
+} wlc_wifi_reg_info_bit_enum;
+
+typedef enum {
+    WLC_WIFI_INFO_SSID =           (1 << WLC_WIFI_INFO_BIT_SSID),
+    WLC_WIFI_INFO_BSSID =          (1 << WLC_WIFI_INFO_BIT_BSSID),
+    WLC_WIFI_INFO_ASSOC =          (1 << WLC_WIFI_INFO_BIT_ASSOC),
+    WLC_WIFI_INFO_PATH_READY =     (1 << WLC_WIFI_INFO_BIT_PATH_READY),
+    WLC_WIFI_INFO_MTU =            (1 << WLC_WIFI_INFO_BIT_MTU),
+    WLC_WIFI_INFO_WIFI_TYPE =      (1 << WLC_WIFI_INFO_BIT_WIFI_TYPE),
+    WLC_WIFI_INFO_UE_MAC =         (1 << WLC_WIFI_INFO_BIT_UE_MAC),
+    WLC_WIFI_INFO_DNS =            (1 << WLC_WIFI_INFO_BIT_DNS),
+    WLC_WIFI_INFO_IP_ADDR =        (1 << WLC_WIFI_INFO_BIT_IP_ADDR),
+    WLC_WIFI_INFO_WIFI_EN =        (1 << WLC_WIFI_INFO_BIT_WIFI_EN),
+    WLC_WIFI_INFO_RSSI =           (1 << WLC_WIFI_INFO_BIT_RSSI),
+    WLC_WIFI_INFO_SNR =            (1 << WLC_WIFI_INFO_BIT_SNR),
+    WLC_WIFI_INFO_BEACON_TIMEOUT = (1 << WLC_WIFI_INFO_BIT_BEACON_TIMEOUT),
+    WLC_WIFI_INFO_IP_GATEWAY =     (1 << WLC_WIFI_INFO_BIT_IP_GATEWAY),
+    WLC_WIFI_INFO_IP_SUBNET_MASK = (1 << WLC_WIFI_INFO_BIT_IP_SUBNET_MASK),
+    WLC_WIFI_INFO_INTERFACE_ID   = (1 << WLC_WIFI_INFO_BIT_INTERFACE_ID),
+} wlc_wifi_reg_info_enum;
+
+typedef enum {
+    WLC_IP_ADDR_NONE = 0,
+    WLC_IP_ADDR_IPV4,
+    WLC_IP_ADDR_IPV6,
+} wlc_ip_addr_type_enum;
+
+typedef enum {
+    WLC_WIFI_DNS_ADDR_V4 = WLC_IP_ADDR_IPV4,
+    WLC_WIFI_DNS_ADDR_V6 = WLC_IP_ADDR_IPV6,
+} wlc_wifi_dns_addr_type_enum;
+
+typedef enum {
+    WLC_WIFI_NONE = 0,
+    WLC_WIFI_IPV4,
+    WLC_WIFI_IPV6,
+    WLC_WIFI_IPV4V6,
+    WLC_WIFI_STATUS_MAX
+} wlc_wifi_status_e;
+
+typedef enum {
+    WLC_WIFI_RAT_TYPE_NONE = 0,
+    WLC_WIFI_RAT_TYPE_802_11,
+    WLC_WIFI_RAT_TYPE_802_11a,
+    WLC_WIFI_RAT_TYPE_802_11b,
+    WLC_WIFI_RAT_TYPE_802_11g,
+    WLC_WIFI_RAT_TYPE_802_11n,
+    WLC_WIFI_RAT_TYPE_802_11ac,
+} wlc_wifi_rat_type_e;
+
+// MSG_ID_WLC_WIFI_INFO_QUERY_REQ
+// MSG_ID_WLC_WIFI_LOCK_ACQUIRE_REQ
+// MSG_ID_WLC_WIFI_LOCK_RELEASE_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_char       ifname[32];
+} wlc_wifi_info_query_req_struct;
+typedef wlc_wifi_info_query_req_struct wlc_wifi_lock_acquire_req_struct;
+typedef wlc_wifi_info_query_req_struct wlc_wifi_lock_release_req_struct;
+
+typedef struct {
+    wlc_wifi_dns_addr_type_enum         dns_addr_type;
+    kal_uint8                           dns_addr[16];    /* Binary */
+} wlc_wifi_info_dns_addr_struct ;
+
+// MSG_ID_WLC_WIFI_INFO_QUERY_CNF
+// MSG_ID_WLC_WIFI_INFO_UPDATE_IND
+typedef struct {
+    LOCAL_PARA_HDR
+	kal_uint32                      reg_info;
+    kal_int32                       interface_id;
+
+    kal_char                        ifname[32];          /* String */
+
+	// AT+EWIFIASC
+	kal_uint8                       ssid[32];            /* String */
+	kal_uint8                       bssid[6];            /* Binary */
+	kal_bool                        assoc;
+	wlc_wifi_status_e               path_ready;
+	kal_uint32                      mtu;
+    wlc_wifi_rat_type_e             wifi_type;
+	
+	// AT+EIMSGEO
+	kal_uint8                       ue_wifi_mac[6];      /* Binary */
+	
+	// AT+EWIFIADDR
+    kal_uint32                      dns_num;
+	wlc_wifi_info_dns_addr_struct   dns_addr[WLC_MAX_ADDR_BUF_NUM];
+	kal_uint8                       ipv4_addr[4];        /* Binary */
+	kal_uint8                       ipv6_addr[16];       /* Binary */
+    kal_uint8                       ipv4_subnet_mask;    /* e.g. 24 means 255.255.255.0 */
+    kal_uint8                       ipv6_prefix_length;
+    kal_uint8                       ipv4_gateway[4];     /* Binary */
+    kal_uint8                       ipv6_gateway[16];    /* Binary */
+	
+	// AT+EWIFIEN
+	kal_bool                        wifi_en;
+	
+	// AT+EWIFISIGLVL
+	kal_int32                       rssi;
+	kal_int32                       snr;
+	kal_bool                        beacon_timeout;
+} wlc_wifi_info_update_ind_struct,
+  wlc_wifi_info_query_cnf_struct;
+
+// MSG_ID_WLC_WIFI_RSSI_THR_CONFIG_IND
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_bool        en;
+    kal_uint32      thr_num;
+    kal_int8        thr_value[16];
+	kal_uint16 		polling_time;
+	kal_uint16 		measurement_time;
+} wlc_wifi_rssi_thr_config_ind_struct;
+	
+// MSG_ID_WLC_WIFI_RSSI_THR_CONFIG_REQ
+typedef struct {
+
+	LOCAL_PARA_HDR
+
+} wlc_wifi_rssi_thr_config_req_struct;
+
+// MSG_ID_WLC_WIFI_INFO_REGISTER_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32      reg_info; // wlc_wifi_reg_info_enum
+} wlc_wifi_info_register_req_struct;
+/****************************************************************************/
+
+// MSG_ID_WLC_IP_MAC_ADDRESS_LOOKUP_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint32            req_id;
+
+    kal_char              ifname[32];
+    wlc_ip_addr_type_enum ip_addr_type;
+    kal_uint8             ip_addr[16];
+} wlc_ip_mac_addr_lookup_req_struct;
+
+// MSG_ID_WLC_IP_MAC_ADDR_LOOKUP_CNF
+typedef struct {
+    LOCAL_PARA_HDR
+
+    kal_uint32            req_id;
+
+    kal_int32             error_code;
+    kal_uint8             mac_addr[6];
+} wlc_ip_mac_addr_lookup_cnf_struct;
+
+//MSG_ID_WLC_OFFLOAD_KEEP_ALIVE_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+
+	kal_bool enable;
+	kal_uint32 interval;
+	wlc_ip_addr_type_enum src_ip_addr_type;
+	kal_uint8 src_ip_addr[16];
+	kal_uint16 src_port;
+	wlc_ip_addr_type_enum dst_ip_addr_type;
+	kal_uint8 dst_ip_addr[16];
+	kal_uint16 dst_port;
+}wlc_offload_keep_alive_req_struct;
+
+//MSG_ID_WLC_OFFLOAD_KEEP_ALIVE_CNF
+typedef struct {
+    LOCAL_PARA_HDR
+
+	kal_bool enable;
+	kal_uint32 interval;
+	wlc_ip_addr_type_enum src_ip_addr_type;
+	kal_uint8 src_ip_addr[16];
+	kal_uint16 src_port;
+	wlc_ip_addr_type_enum dst_ip_addr_type;
+	kal_uint8 dst_ip_addr[16];
+	kal_uint16 dst_port;
+}wlc_offload_keep_alive_cnf_struct;
+
+// MSG_ID_WLC_UPDATE_PRIORITY_REQ
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint32    module_id;
+    kal_uint8     ps_id;        // Which module PS has high priority
+} wlc_update_priority_req_struct;
+
+#define WLC_EWIFIMAC_SUCC         0  /* Successfully */
+#define WLC_EWIFIMAC_ECINT   (-100)  /* Common Internal Error */
+#define WLC_EWIFIMAC_EAT     (-101)  /* AT command parsing Error */
+
+#define WLC_EWIFIMAC_EPERM        1  /* Operation not permitted */
+#define WLC_EWIFIMAC_ENOENT       2  /* No such file or directory */
+#define WLC_EWIFIMAC_ESRCH        3  /* No such process */
+#define WLC_EWIFIMAC_EINTR        4  /* Interrupted system call */
+#define WLC_EWIFIMAC_EIO          5  /* I/O error */
+#define WLC_EWIFIMAC_ENXIO        6  /* No such device or address */
+#define WLC_EWIFIMAC_E2BIG        7  /* Argument list too long */
+#define WLC_EWIFIMAC_ENOEXEC      8  /* Exec format error */
+#define WLC_EWIFIMAC_EBADF        9  /* Bad file number */
+#define WLC_EWIFIMAC_ECHILD      10  /* No child processes */
+#define WLC_EWIFIMAC_EAGAIN      11  /* Try again */
+#define WLC_EWIFIMAC_ENOMEM      12  /* Out of memory */
+#define WLC_EWIFIMAC_EACCES      13  /* Permission denied */
+#define WLC_EWIFIMAC_EFAULT      14  /* Bad address */
+#define WLC_EWIFIMAC_ENOTBLK     15  /* Block device required */
+#define WLC_EWIFIMAC_EBUSY       16  /* Device or resource busy */
+#define WLC_EWIFIMAC_EEXIST      17  /* File exists */
+#define WLC_EWIFIMAC_EXDEV       18  /* Cross-device link */
+#define WLC_EWIFIMAC_ENODEV      19  /* No such device */
+#define WLC_EWIFIMAC_ENOTDIR     20  /* Not a directory */
+#define WLC_EWIFIMAC_EISDIR      21  /* Is a directory */
+#define WLC_EWIFIMAC_EINVAL      22  /* Invalid argument */
+#define WLC_EWIFIMAC_ENFILE      23  /* File table overflow */
+#define WLC_EWIFIMAC_EMFILE      24  /* Too many open files */
+#define WLC_EWIFIMAC_ENOTTY      25  /* Not a typewriter */
+#define WLC_EWIFIMAC_ETXTBSY     26  /* Text file busy */
+#define WLC_EWIFIMAC_EFBIG       27  /* File too large */
+#define WLC_EWIFIMAC_ENOSPC      28  /* No space left on device */
+#define WLC_EWIFIMAC_ESPIPE      29  /* Illegal seek */
+#define WLC_EWIFIMAC_EROFS       30  /* Read-only file system */
+#define WLC_EWIFIMAC_EMLINK      31  /* Too many links */
+#define WLC_EWIFIMAC_EPIPE       32  /* Broken pipe */
+#define WLC_EWIFIMAC_EDOM        33  /* Math argument out of domain of func */
+#define WLC_EWIFIMAC_ERANGE      34  /* Math result not representable */
+
+#endif /* __WLC_USER_STRUCT_H__ */
+