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