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;
}