优化adc部分的代码开放第3路添加宏控,优化apn部分对name和type重复校验,添加gpio应用层接口(暂时未处理pullsel)

Change-Id: I55574434131b1f73745044a0232e91e9c5f3abac
diff --git a/mbtk/liblynq_lib/src/lynq_adc.c b/mbtk/liblynq_lib/src/lynq_adc.c
index ae40db6..aae9373 100755
--- a/mbtk/liblynq_lib/src/lynq_adc.c
+++ b/mbtk/liblynq_lib/src/lynq_adc.c
@@ -15,6 +15,10 @@
         case ADC1:
             adc = MBTK_ADC1;
             break;
+#if defined(MBTK_PROJECT_T108) || defined(MBTK_PROJECT_L508_X6)
+        case ADC2:
+            adc = MBTK_ADC2;
+#endif
         default:
             LOGE("Unsupport adc : %d", qadc);
             return -1;
diff --git a/mbtk/liblynq_lib/src/lynq_data_call.c b/mbtk/liblynq_lib/src/lynq_data_call.c
index 095b41a..33fcefb 100755
--- a/mbtk/liblynq_lib/src/lynq_data_call.c
+++ b/mbtk/liblynq_lib/src/lynq_data_call.c
@@ -267,6 +267,23 @@
     return QSER_RESULT_SUCCESS;
 }
 
+/*Check parameter*/
+int qser_check_apn_name_type(qser_apn_info_s *apn)
+{
+    int pdp_type_tmp = 0;
+    for (;pdp_type_tmp < QSER_APN_NUM; pdp_type_tmp++)
+    {
+        if (strcmp(qser_apn_info[pdp_type_tmp].apn_name, apn->apn_name) == 0 || strcmp(qser_apn_info[pdp_type_tmp].apn_type, apn->apn_type) == 0)
+        {
+            LOGE("[qser_data_call] qser_check_apn_name_type error!");
+            return QSER_RESULT_FAIL;
+        }
+    }
+
+    return QSER_RESULT_SUCCESS;
+}
+
+
 void qser_wan_net_state_change_cb(const void* data, int data_len)
 {
     if(data == NULL || data_len == 0)
@@ -742,6 +759,12 @@
         LOGE("[qser_data_call] apn_name is NULL.");
         return QSER_RESULT_FAIL;
     }
+    /*add name and type verify*/
+    if (qser_check_apn_name_type(apn) < 0)
+    {
+        LOGE("[qser_data_call] check param error.");
+        return QSER_RESULT_FAIL;
+    }
 
 #if 0
     if(memcmp(apn->apn_type, "iot_default", strlen("iot_default")) == 0)
@@ -755,7 +778,7 @@
     char mbtk_auth[32]={0};
     char qser_apn_type[32] = {0};
     mbtk_ip_type_enum pdp_type = MBTK_IP_TYPE_IPV4V6;
-    
+
     if(apn->pdp_type == QSER_APN_PDP_TYPE_IPV4)
     {
         pdp_type = MBTK_IP_TYPE_IP;
diff --git a/mbtk/liblynq_lib/src/lynq_gpio.c b/mbtk/liblynq_lib/src/lynq_gpio.c
index ef1c522..59f8d55 100755
--- a/mbtk/liblynq_lib/src/lynq_gpio.c
+++ b/mbtk/liblynq_lib/src/lynq_gpio.c
@@ -1,13 +1,226 @@
 #include "mbtk_type.h"
 #include "lynq-gpio.h"
+#include "unistd.h"
+#include "fcntl.h"
+#include "mbtk_log.h"
+
+static int gpio_export(int gpio)
+{
+    int index=0;
+    int file=-1;
+    int result =-1;
+    char pin_index_buffer[5]= {0};
+
+    char buffer[50];
+    memset(buffer,0,50);
+    sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
+    if(access(buffer , F_OK) == 0)
+    {
+        LOGD("%d has export.", gpio);
+        return 0;
+    }
+
+    file = open("/sys/class/gpio/export",O_WRONLY);
+    if(file == -1)
+    {
+        LOGE("Open gpio export file fail.");
+        return -1;
+    }
+
+    memset(pin_index_buffer,0,5);
+    sprintf(pin_index_buffer,"%d", gpio);
+    result = write(file,pin_index_buffer,strlen(pin_index_buffer));
+    if(result < 0)
+    {
+        LOGE("Gpio[%d] export fail.", gpio);
+        close(file);
+        return -1;
+    }
+    close(file);
+
+    return 0;
+}
+
+static int gpio_unexport(int gpio)
+{
+    int index=0;
+    int file=-1;
+    int result =-1;
+    char pin_index_buffer[5]= {0};
+    char buffer[50];
+    memset(buffer,0,50);
+    sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
+    if(access(buffer , F_OK) == -1)
+    {
+        LOGD("%d not export.", gpio);
+        return 0;
+    }
+
+    file = open("/sys/class/gpio/unexport",O_WRONLY);
+    if(file == -1)
+    {
+        LOGE("Open gpio unexport file fail.");
+        return -1;
+    }
+
+    memset(pin_index_buffer,0,5);
+    sprintf(pin_index_buffer,"%d", gpio);
+    result=write(file,pin_index_buffer,strlen(pin_index_buffer));
+    if(result < 0)
+    {
+        close(file);
+        LOGE("Gpio[%d] unexport fail.", gpio);
+        return -1;
+    }
+    close(file);
+
+    return 0;
+}
+
+static int gpio_direct_get(int gpio, char *value, int value_size)
+{
+    char buffer[50]= {0};
+    int file =-1;
+    int result =-1;
+
+    memset(buffer,0,50);
+    sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
+    file = open(buffer, O_RDONLY);
+    if(file == -1)
+    {
+        LOGE("Open gpio[%d] direct fail.", gpio);
+        return -1;
+    }
+
+    memset(value, 0x0, value_size);
+    result = read(file,value,value_size);
+    if(result <= 0)
+    {
+        LOGE("Get gpio[%d] direct fail.", gpio);
+        close(file);
+        return -1;
+    }
+    close(file);
+
+    return 0;
+}
+
+
+static int gpio_direct_set(int gpio, char *value)
+{
+    char buffer[50]= {0};
+    int file =-1;
+    int result =-1;
+
+    memset(buffer,0,50);
+    sprintf(buffer,"/sys/class/gpio/gpio%d/direction", gpio);
+    file = open(buffer, O_WRONLY);
+    if(file == -1)
+    {
+        LOGE("Open gpio[%d] direct fail.", gpio);
+        return -1;
+    }
+
+    result = write(file,value,strlen(value));
+    if(result != strlen(value))
+    {
+        LOGE("Set gpio[%d] direct fail.", gpio);
+        close(file);
+        return -1;
+    }
+    close(file);
+
+    return 0;
+}
+
+static int gpio_value_get(int gpio)
+{
+    char buffer[50];
+    char path[10];
+    int file =-1;
+    int result =-1;
+    int value;
+
+    memset(path,0,50);
+    memset(buffer,0,10);
+    sprintf(path,"/sys/class/gpio/gpio%d/value", gpio);
+    file = open(path,O_RDONLY);
+    if(file == -1)
+    {
+        LOGE("Open gpio[%d] fail.", gpio);
+        return -1;
+    }
+    result = read(file,buffer,5);
+    if(result <= 0)
+    {
+        LOGE("Get gpio[%d] value fail", gpio);
+        close(file);
+        return -1;
+    }
+    close(file);
+    value = atoi(buffer);
+    return value;
+}
+
+static int gpio_value_set(int gpio, int value)
+{
+    char buffer[50]= {0};
+    int file =-1;
+    int result =-1;
+
+    memset(buffer,0,50);
+    sprintf(buffer,"/sys/class/gpio/gpio%d/value", gpio);
+    file = open(buffer,O_WRONLY);
+    if(file == -1)
+    {
+        LOGE("Open gpio[%d] value fail.", gpio);
+        return -1;
+    }
+    if(value == 0) {
+        result = write(file,"0",1);
+    } else {
+        result = write(file,"1",1);
+    }
+    if(result != 1)
+    {
+        LOGE("Set gpio[%d] value fail.", gpio);
+        close(file);
+        return -1;
+    }
+    close(file);
+
+    return 0;
+}
+
 
 int lynq_gpio_init(int gpio, int direction, int value, int pullsel)
 {
-    UNUSED(gpio);
-    UNUSED(direction);
-    UNUSED(value);
+    //UNUSED(gpio);
+    //UNUSED(direction);
+    //UNUSED(value);
     UNUSED(pullsel);
 
+    if(gpio_export(gpio))
+    {
+        LOGE("[lynq_gpio_init]gpio_export() fail.");
+        return -1;
+    }
+
+    if(gpio_direct_set(gpio, direction == 0 ? "in" : "out"))
+    {
+        LOGE("[lynq_gpio_init]gpio_direct_set() fail.");
+        return -1;
+    }
+    
+    if(gpio_value_set(gpio, value))
+    {
+        LOGE("[lynq_gpio_init]gpio_value_set() fail.");
+        return -1;
+    }
+
+
+
+
     return 0;
 }
 
@@ -15,13 +228,25 @@
 {
     UNUSED(gpio);
 
+    if(gpio_unexport(gpio))
+    {
+        LOGE("[lynq_gpio_init]gpio_unexport() fail.");
+        return -1;
+    }
+
     return 0;
 }
 
 int lynq_gpio_direction_set(int gpio, int direction)
 {
-    UNUSED(gpio);
-    UNUSED(direction);
+    //UNUSED(gpio);
+    //UNUSED(direction);
+
+    if(gpio_direct_set(gpio, direction == 0 ? "in" : "out"))
+    {
+        LOGE("[lynq_gpio_init]gpio_direct_set() fail.");
+        return -1;
+    }
 
     return 0;
 }
@@ -29,17 +254,31 @@
 
 int lynq_gpio_value_set(int gpio, int value)
 {
-    UNUSED(gpio);
-    UNUSED(value);
+    //UNUSED(gpio);
+    //UNUSED(value);
+
+    if(gpio_value_set(gpio, value))
+    {
+        LOGE("[lynq_gpio_init]gpio_value_set() fail.");
+        return -1;
+    }
 
     return 0;
 }
 
 int lynq_gpio_value_get(int gpio)
 {
-    UNUSED(gpio);
+    //UNUSED(gpio);
+    int ret = -1;
 
-    return 0;
+    ret = gpio_value_get(gpio);
+    if (ret == -1)
+    {
+        LOGE("[lynq_gpio_init]gpio_value_set() fail.");
+        return -1;
+    }
+
+    return ret;
 }
 
 int lynq_gpio_pullsel_set(int gpio, int pullsel)