gnss: add mbtk gnss AT command

Change-Id: I2db86f963e74726aea170a1b218bed7e1b013379
diff --git a/mbtk/mbtk_gnssd/gnss_info.h b/mbtk/mbtk_gnssd/gnss_info.h
index a6b64c9..78662a9 100755
--- a/mbtk/mbtk_gnssd/gnss_info.h
+++ b/mbtk/mbtk_gnssd/gnss_info.h
@@ -53,6 +53,17 @@
     GNSS_STATE_READY,       // GNSS is ready.
 } gnss_state_enum;
 
+typedef enum {
+    GNSS_RESULT_STATE_OPEN_SUCCESS,
+    GNSS_RESULT_STATE_OPEN_FAIL,
+    GNSS_RESULT_STATE_CLOSE_SUCCESS,
+    GNSS_RESULT_STATE_CLOSE_FAIL,
+    GNSS_RESULT_STATE_SET_SUCCESS,
+    GNSS_RESULT_STATE_SET_FAIL,
+    GNSS_RESULT_STATE_UNSUPPORT,
+    GNSS_RESULT_STATE_UNKNOWN_ERROR,
+} gnss_result_enum;
+
 typedef struct {
     gnss_id_enum gnss_id;
     char dev_name[32];
diff --git a/mbtk/mbtk_gnssd/gnss_ubus.c b/mbtk/mbtk_gnssd/gnss_ubus.c
index ff877a1..39b4140 100755
--- a/mbtk/mbtk_gnssd/gnss_ubus.c
+++ b/mbtk/mbtk_gnssd/gnss_ubus.c
@@ -73,6 +73,7 @@
     struct blob_attr *cur;
     int init_mode = 0, err = 0, ret = 0;
     int status = 0;
+    gnss_result_enum gnss_result = GNSS_RESULT_STATE_OPEN_SUCCESS;
 
     /*parsing blob to be accessed easily with tb array - parse "1" argument*/
     err = blobmsg_parse(gnss_init_policy, 1, tb, blob_data(msg), blob_len(msg));
@@ -91,16 +92,29 @@
     LOGD("init_mode=%d", init_mode);
     if(init_mode == 0) { // Close gnss.
         ret = gnss_deinit();
+        if(ret < 0)
+        {
+            gnss_result = GNSS_RESULT_STATE_CLOSE_FAIL;
+        }
+        else
+        {
+            gnss_result = GNSS_RESULT_STATE_CLOSE_SUCCESS;
+        }
     } else {
         if(((GNSS_PRINT_PORT_UART1 | GNSS_PRINT_PORT_USB_NMEA | GNSS_PRINT_PORT_USB_AT | GNSS_PRINT_PORT_TTY_AT) & init_mode) == init_mode) {
             ret = gnss_init(init_mode);
         } else { // ARG error, no print nmea.
             ret = gnss_init(0);
         }
+
+        if(ret < 0)
+        {
+            gnss_result = GNSS_RESULT_STATE_OPEN_FAIL;
+        }
     }
 
     LOGD("ubus_gnss_init() ret=%d", ret);
-    gps_ubus_send_reply(ctx, req, ret);
+    gps_ubus_send_reply(ctx, req, (int)gnss_result);
 
     return 0;
 }
@@ -116,10 +130,18 @@
     UNUSED(msg);
 
     int ret = 0;
-
+    gnss_result_enum gnss_result = GNSS_RESULT_STATE_OPEN_SUCCESS;
+    
     ret = gnss_deinit();
-
-    gps_ubus_send_reply(ctx, req, ret);
+    if(ret < 0)
+    {
+        gnss_result = GNSS_RESULT_STATE_CLOSE_FAIL;
+    }
+    else
+    {
+        gnss_result = GNSS_RESULT_STATE_CLOSE_SUCCESS;
+    }
+    gps_ubus_send_reply(ctx, req, (int)gnss_result);
 
     return 0;
 }
@@ -134,6 +156,7 @@
     struct blob_attr *cur;
     char *server_name = NULL;
     int err = 0, alm_flag = 0, ret = 0;
+    gnss_result_enum gnss_result = GNSS_RESULT_STATE_OPEN_SUCCESS;
 
     err = blobmsg_parse(get_agps_policy, ARRAY_SIZE(get_agps_policy), tb, blob_data(msg), blob_len(msg));
     if (err < 0)
@@ -161,7 +184,8 @@
         ret = 3;
     }
 
-    gps_ubus_send_reply(ctx, req, ret);
+    gnss_result = GNSS_RESULT_STATE_UNSUPPORT;
+    gps_ubus_send_reply(ctx, req, (int)gnss_result);
 
     return 0;
 }
@@ -177,10 +201,10 @@
     UNUSED(msg);
 
     int err = 0, ret = 0;
-
+    gnss_result_enum gnss_result = GNSS_RESULT_STATE_OPEN_SUCCESS;
     ret = 4;
 
-
+    gnss_result = GNSS_RESULT_STATE_UNSUPPORT;
     gps_ubus_send_reply(ctx, req, ret);
 
     return 0;
@@ -233,6 +257,7 @@
     int err = 0, ret = 0;
     char *gpsCfg = NULL;
     int status = 0;
+    gnss_result_enum gnss_result = GNSS_RESULT_STATE_OPEN_SUCCESS;
 
     /*parsing blob to be accessed easily with tb array - parse "1" argument*/
     err = blobmsg_parse(gnss_setting_policy, 1, tb, blob_data(msg), blob_len(msg));
@@ -254,7 +279,15 @@
     ret = gnss_set(gpsCfg, strlen(gpsCfg), rsp, 1024);
 
     LOGD("ret=%d", ret);
-    gps_ubus_send_reply(ctx, req, ret);
+    if(ret == 0)
+    {
+        gnss_result = GNSS_RESULT_STATE_SET_SUCCESS;
+    }
+    else
+    {
+        gnss_result = GNSS_RESULT_STATE_SET_FAIL;
+    }
+    gps_ubus_send_reply(ctx, req, (int)gnss_result);
 
     return 0;
 }