adc: add adc AT close command

Change-Id: Id2ce4cb0b0619b71ea3fa8ad7ca1bd7f0992d1d8
diff --git a/mbtk/include/mbtk/mbtk_adc.h b/mbtk/include/mbtk/mbtk_adc.h
index 9f22e8b..774cac8 100755
--- a/mbtk/include/mbtk/mbtk_adc.h
+++ b/mbtk/include/mbtk/mbtk_adc.h
@@ -36,7 +36,7 @@
 
 ===========================================================================*/
 int mbtk_adc_get(mbtk_adc_enum adc);
-void mbtk_adc_close(void);
+int mbtk_adc_close(void);
 
 
 #endif /* __MBTK_ADC_H__ */
diff --git a/mbtk/mbtk_lib/src/mbtk_adc.c b/mbtk/mbtk_lib/src/mbtk_adc.c
index ddacf39..18f323e 100755
--- a/mbtk/mbtk_lib/src/mbtk_adc.c
+++ b/mbtk/mbtk_lib/src/mbtk_adc.c
@@ -23,9 +23,35 @@
 #define ADC_DEVICE_802 "/sys/devices/soc.0/d4000000.apb/pxa2xx-i2c.2/i2c-2/2-0030/pm802-bat/adc"
 #define ADC_DEVICE_803 "/sys/kernel/debug/adc"
 
-void mbtk_adc_close(void)
+int mbtk_adc_close(void)
 {
-    system("echo 3 > /sys/kernel/debug/adc");
+    int ret = 0;
+    int fd = 0;
+    char adc = '3';
+    //system("echo 3 > /sys/kernel/debug/adc");
+    if(!access(ADC_DEVICE_803, R_OK))
+    {
+        LOGI("DEV:%s", ADC_DEVICE_803);
+        fd = open(ADC_DEVICE_803, O_RDWR|O_CREAT|O_TRUNC, 0644);
+    }
+    else
+    {
+        LOGE("No found ADC devices.");
+        return -1;
+    }
+
+    if(fd < 0) {
+        LOGE("[%s]  file open error\n", __FUNCTION__);
+        return -2;
+    }
+    ret = write(fd, &adc, 1);
+    if (ret < 0) {
+        LOGE("%s: error writing to file!\n", __FUNCTION__);
+        close(fd);
+        return -2;
+    }
+    close(fd);
+    return 0;
 }
 
 int mbtk_adc_get(mbtk_adc_enum channle)
diff --git a/mbtk/mbtk_lib/src/mbtk_basic_at_wrapper.c b/mbtk/mbtk_lib/src/mbtk_basic_at_wrapper.c
index 99d5f33..6b1c8c9 100755
--- a/mbtk/mbtk_lib/src/mbtk_basic_at_wrapper.c
+++ b/mbtk/mbtk_lib/src/mbtk_basic_at_wrapper.c
@@ -2,8 +2,13 @@
 
 int mbtk_at_adc(int value)
 {
-    if(0 != value && 1 != value){
+    if(0 != value && 1 != value && 2 != value){
         return -1;
     }
+
+    if(value == 2)
+    {
+        return mbtk_adc_close();
+    }
     return mbtk_adc_get((mbtk_adc_enum)value);
 }