Fix 5311 gnss close.
Change-Id: Ie1b31548031a67dc0989dcdfd7992532dd77bcbc
diff --git a/mbtk/mbtk_gnssd/gnss_asr5311.c b/mbtk/mbtk_gnssd/gnss_asr5311.c
index bca402b..232e5f7 100755
--- a/mbtk/mbtk_gnssd/gnss_asr5311.c
+++ b/mbtk/mbtk_gnssd/gnss_asr5311.c
@@ -30,6 +30,10 @@
#define UART_BITRATE_NMEA_DEF_FW 115200 // Default bitrate.
#define GNSS_SET_TIMEOUT 3000 // 3s
+static char config_msg_pm5[] = "PMTEST,5";
+static char config_msg_pm4[] = "PMTEST,4";
+static char config_msg_boot[] = "START,1";
+
static pthread_cond_t read_cond;
static pthread_mutex_t read_mutex;
static bool setting_waitting = FALSE;
@@ -39,6 +43,21 @@
int gnss_write(int fd, const void *data, int data_len);
+static int gnss_send_cmd(int fd, const char *cmd, int cmd_len)
+{
+ unsigned char check_sum = 0;
+ unsigned int index;
+ int len = 0;
+ char cmd_buff[64] = {0};
+
+ for(index = 0; index < strlen( (char *)cmd); index++)
+ check_sum ^= cmd[index];
+
+ sprintf((char *)cmd_buff, "$%s*%02x\r\n", cmd, check_sum);
+ len = strlen((char *)cmd_buff)+1;
+ return gnss_write(fd, cmd_buff, len);
+}
+
static void gnss_set_timer_cb(int signo)
{
if(setting_busy) {
@@ -81,7 +100,7 @@
close(fd);
}
- if(ret)
+ if(!ret)
gnss_hal_gpioctrl("off");
return ret;
@@ -109,6 +128,9 @@
{
pthread_mutex_destroy(&read_mutex);
pthread_cond_destroy(&read_cond);
+
+ gnss_send_cmd(fd, config_msg_pm5, strlen(config_msg_pm5));
+
return gnss_port_close(fd);
}