gnss: add log save

Change-Id: I5bc9e30eba57c51f70db5b5e0cc7162b785286e8
diff --git a/mbtk/mbtk_gnssd/gnss_main.c b/mbtk/mbtk_gnssd/gnss_main.c
index c820489..3d48ea0 100755
--- a/mbtk/mbtk_gnssd/gnss_main.c
+++ b/mbtk/mbtk_gnssd/gnss_main.c
@@ -19,6 +19,7 @@
 #include "gnss_hd8122.h"
 #include "gnss_asr5311.h"
 #include "gnss_n50db.h"
+#include "gnss_log.h"
 
 #define GNSS_DEBUG 1
 #define GNSS_UBUS_ENABLE 1
@@ -64,8 +65,6 @@
 static int debug_fd_len = 0;
 #endif
 
-static bool mbtk_gnss_time_set_flag = 0;
-
 #if MBTK_GNSS_PTY_AUTO_INIT
 static bool gnss_pty_print_enable = FALSE;
 #endif
@@ -382,220 +381,6 @@
     return TRUE;
 }
 
-static int nmea_tokenizer_init(mbtk_nmeatokenizer* t, const char* head, const char* end, int param_num)
-{
-    int count = 0;
-    const char* p = head;
-    const char* q = end;
-    const char* tmp = NULL;
-    // the initial '$' is optional
-    if (p < q && p[0] == '$')
-    {
-        p += 1;
-    }
-    else
-    {
-        return -1;
-    }
-
-    //find '*',del '*25\r\n'
-    // get rid of checksum at the end of the sentecne
-    if (q >= p + 5 && q[-5] == '*')
-    {
-        q -= 5;
-    }
-    else
-    {
-        return -1;
-    }
-
-    while (p <= q)
-    {
-        tmp = memchr(p, ',', q-p);
-        if (tmp == NULL)
-        {
-            tmp = q;
-        }
-        // if (q > p) {
-        // q >= p include empty token: ,,
-        if (tmp >= p)
-        {
-            if (count < MAX_NMEA_TOKENS)
-            {
-                t->tokens[count].head = p;
-                t->tokens[count].end = tmp;
-                count += 1;
-            }
-        }
-
-        if (tmp <= q)
-        {
-            tmp += 1;
-        }
-
-        p = tmp;
-    }
-
-    if(count != param_num)
-    {
-        LOGD("count [%d], param_num [%d]", count, param_num);
-        return -1;
-    }
-
-    t->count = count;
-    return count;
-}
-
-static mbtk_token nmea_tokenizer_get(mbtk_nmeatokenizer* t, int  index)
-{
-    mbtk_token tok;
-    static const char*  dummy = "";
-
-    if (index < 0 || index >= t->count)
-    {
-        tok.head = tok.end = dummy;
-    }
-    else
-    {
-        tok = t->tokens[index];
-    }
-    return tok;
-}
-
-static int mbtk_time_type_gnss_read() {
-    int type = 0;
-    char time_type[] ={0};
-    property_get("persist.mbtk.time_type", time_type, "0");
-
-    type = atoi(time_type);
-//    LOGD("time_type :%d\n", type);
-    if(type != LYNQ_TIME_TYPE_GNSS)
-        mbtk_gnss_time_set_flag = 0;
-
-    return type;
-}
-
-static int strstr_n(const char *s1, const char *s2)
-{
-    int n;
-    int strlen = 0;
-
-    if(*s2)
-    {
-        while(*s1)
-        {
-            for(n = 0; *(s1+n) == *(s2 + n); n++)
-            {
-                if(!*(s2 + n + 1))
-                {
-                    strlen++;
-                    return strlen;
-                }
-            }
-            s1++;
-            strlen++;
-        }
-        return 0;
-    }
-
-    return 0;
-}
-static int nmea_update_date_time(mbtk_token date, mbtk_token time)
-{
-    char tmp_char[4] = {0};
-    struct tm tmp_time;
-    struct timeval tv;
-
-    memset(&tmp_time, 0x0, sizeof(struct tm));
-    if (date.head + 6 > date.end)
-    {
-        LOGD("date get fail");
-        return -1;
-    }
-
-    memcpy(tmp_char, date.head, 2);
-    tmp_time.tm_mday = atoi(tmp_char);
-    memcpy(tmp_char, date.head + 2, 2);
-    tmp_time.tm_mon = atoi(tmp_char) - 1;
-    memcpy(tmp_char, date.head + 4, 2);
-    tmp_time.tm_year = 100 + atoi(tmp_char);
-
-    if (time.head + 6 > time.end)
-    {
-        LOGD("time get fail");
-        return -1;
-    }
-
-    memcpy(tmp_char, time.head, 2);
-    tmp_time.tm_hour = atoi(tmp_char);
-    memcpy(tmp_char, time.head + 2, 2);
-    tmp_time.tm_min = atoi(tmp_char);
-    memcpy(tmp_char, time.head + 4, 2);
-    tmp_time.tm_sec = atoi(tmp_char);
-    tmp_time.tm_isdst = -1;
-
-
-    LOGD("data:%d-%d-%d %d:%d:%d", tmp_time.tm_year + 1900,
-                                    tmp_time.tm_mon,
-                                    tmp_time.tm_mday,
-                                    tmp_time.tm_hour,
-                                    tmp_time.tm_min,
-                                    tmp_time.tm_sec);
-
-
-    time_t _t = mktime(&tmp_time);//parse location tmp_time
-
-    tzset();   // auto set tz
-    _t = _t - timezone;
-
-    LOGD("timestamp:%ld,  %ld", _t,  timezone);
-
-    tv.tv_sec = _t;
-    if(settimeofday(&tv, NULL)) {
-        LOGD("%s: , Set time fail\n", __func__);
-        mbtk_gnss_time_set_flag = 0;
-    } else {
-        LOGD("%s: , Set time success \n", __func__);
-        system("hwclock -w rtc0");
-        mbtk_gnss_time_set_flag = 1;
-    }
-
-    return 0;
-}
-
-static int ind_nmea_parse(const char *data, int data_len)
-{
-    int ret;
-    mbtk_nmeatokenizer tzer = {0};
-    if(strstr_n(data + 3, "RMC"))
-    {
-        ret = nmea_tokenizer_init(&tzer, data, data + data_len, NMEA_RMC_PARAM_NUM);
-        if(ret < 0)
-        {
-            LOGD("nmea_tokenizer_init fail");
-            return -1;
-        }
-
-        mbtk_token  tok_time      = nmea_tokenizer_get(&tzer,1);
-        mbtk_token  tok_fixStatus = nmea_tokenizer_get(&tzer,2);
-        mbtk_token  tok_date      = nmea_tokenizer_get(&tzer,9);
-
-        if(tok_fixStatus.head[0] == 'A')
-        {
-            ret = nmea_update_date_time(tok_date, tok_time);
-            if(ret < 0)
-            {
-                LOGD("nmea_update_date_time fail");
-                return -1;
-            }
-
-        }
-    }
-
-    return 0;
-}
-
-
 static void gnss_nmea_process(const char *data, int data_len)
 {
 //     LOGD("gnss_nmea_process() : data_len - %d", data_len);
@@ -628,8 +413,9 @@
     log_save(nmea_log_fd, nmea, data_len);
 #endif
 
-    if( (mbtk_time_type_gnss_read() == LYNQ_TIME_TYPE_GNSS) && !mbtk_gnss_time_set_flag)
-        ind_nmea_parse(nmea, data_len);
+#if MBTK_GNSS_PARAM_PARSE
+        gnss_ind_nmea_parse(nmea, data_len);
+#endif
 
     nmea_print(nmea, data_len);
 }
@@ -727,7 +513,11 @@
 
 void* gnss_read_pthread(void* arg)
 {
+#if MBTK_GNSS_TEST_LOG
+    gnss_test_log("gnss_read_pthread enter.");
+#endif
     LOGD("gnss_read_pthread enter.");
+
     char buffer[GNSS_BUFF_SIZE];
     int len = 0;
     int ret = 0;
@@ -754,6 +544,9 @@
     }
 #endif
 
+#if MBTK_GNSS_TEST_LOG
+    gnss_test_log("uart_fd - %d, exit_fd - %d", gnss_info.fd, gnss_info.exit_fd[0]);
+#endif
     LOGD("uart_fd - %d, exit_fd - %d", gnss_info.fd, gnss_info.exit_fd[0]);
 
     while(gnss_info.state >= GNSS_STATE_OPEN) {
@@ -783,6 +576,9 @@
             {
                 continue;
             }
+#if MBTK_GNSS_TEST_LOG
+            gnss_test_log("select error, errno = %d (%s)", errno, strerror(errno));
+#endif
             LOGE("select error, errno = %d (%s)", errno, strerror(errno));
             break;
         }
@@ -833,6 +629,9 @@
         }
         else
         {
+#if MBTK_GNSS_TEST_LOG
+            gnss_test_log("Unknown select event.");
+#endif
             LOGW("Unknown select event.");
             continue;
         }
@@ -912,6 +711,10 @@
 
 int gnss_init(uint32 print_port)
 {
+#if MBTK_GNSS_TEST_LOG
+    gnss_test_log("[gnss_init] gnss state [%d]", gnss_info.state);
+#endif
+
     if(gnss_info.state != GNSS_STATE_CLOSE) {
         LOGW("GNSS not close:%d", gnss_info.state);
         if(gnss_info.state == GNSS_STATE_READY) {
@@ -1020,6 +823,10 @@
 
     LOGD("GNSS open success.");
 
+#if MBTK_GNSS_TEST_LOG
+        gnss_test_log("gnss open success.");
+#endif
+
     return gnss_ports_open(print_port);
 
 exit_with_thread_exit:
@@ -1047,6 +854,10 @@
 
 int gnss_deinit()
 {
+#if MBTK_GNSS_TEST_LOG
+    gnss_test_log("[gnss_deinit] gnss state [%d]", gnss_info.state);
+#endif
+
     if(gnss_info.state == GNSS_STATE_CLOSE) {
         LOGW("GNSS is closed.");
         return GNSS_ERR_OK;
@@ -1069,6 +880,10 @@
     }
 
     gnss_info.state = GNSS_STATE_CLOSING;
+
+#if MBTK_GNSS_TEST_LOG
+    gnss_test_log("wait gnss pthread exit...");
+#endif
     int ret = pthread_join(gnss_info.read_pid, NULL);
     if(ret){
         LOGE("pthrad_join fail(%d)",ret);
@@ -1085,6 +900,9 @@
         return GNSS_ERR_UNKNOWN;
     }
 
+#if MBTK_GNSS_TEST_LOG
+    gnss_test_log("gnss_ports_close() complete.");
+#endif
     LOGD("gnss_ports_close() complete.");
 
     gnss_info.fd = -1;
@@ -1097,7 +915,11 @@
         gnss_info.exit_fd[1] = -1;
     }
     gnss_info.state = GNSS_STATE_CLOSE;
+#if MBTK_GNSS_TEST_LOG
+    gnss_test_log("gnss close success.");
+#endif
     LOGD("GNSS close success.");
+
     return GNSS_ERR_OK;
 }
 
@@ -1336,6 +1158,9 @@
     }
 #endif
 
+#if MBTK_GNSS_TEST_LOG
+    gnss_test_log("gnss init success.");
+#endif
     // Init ubus and waitting IPC commands.
 #ifdef MBTK_GNSS_UBUS_ENABLE
     if(gnss_ubus_init()) {