问题:冷启动指令无效果

原因:8122 gnss保存了星历数据

解决方案:打开gnss时关闭星历保存

影响:影响gnss功能模块

Change-Id: If869301152e9cdf076351a1e17a1404e79af0059
diff --git a/mbtk/mbtk_gnssd/gnss_hd8122.c b/mbtk/mbtk_gnssd/gnss_hd8122.c
index e61bfe6..de0a5fa 100755
--- a/mbtk/mbtk_gnssd/gnss_hd8122.c
+++ b/mbtk/mbtk_gnssd/gnss_hd8122.c
@@ -573,6 +573,23 @@
     return GNSS_ERR_OK;
 }
 
+static gnss_err_enum gnss_8122_ephsave(int fd, uint8 status)
+{
+    uint8 buff[GNSS_PACK_BUFF_SIZE];
+    LOGD("EPHSAVE");
+    int len = pack_create(HD8122_ID_TYPE_CFG, HD8122_ID_CFG_EPHSAVE, 1, (uint8*)(&status), buff, sizeof(buff));
+    if(len <= 0)
+    {
+        LOGE("pack_create() fail.");
+        return GNSS_ERR_ARG;
+    }
+    log_hex("PACK", buff, len);
+    gnss_write(fd, buff, len);
+    msg_insert(HD8122_ID_TYPE_CFG, HD8122_ID_CFG_EPHSAVE);
+    return GNSS_ERR_OK;
+}
+
+
 int gnss_8122_dev_open()
 {
     //return mbtk_gpio_value_set(GNSS_POWER_GPIO, MBTK_GPIO_DIRECT_OUT, 1);
@@ -601,6 +618,14 @@
     return gnss_port_close(fd);
 }
 
+int gnss_8122_init_set(int fd)
+{
+    sleep(1); //wait 8122 ready...
+    gnss_8122_ephsave(fd, (uint8)HD8122_EPHSAVE_STATUS_DISABLE);
+    gnss_8122_cfg_save(fd);
+    return GNSS_ERR_OK;
+}
+
 int gnss_8122_fw_dl(int fd, const char *fw_name, const char *dev)
 {
     int uart_fd = OpenUart(dev);//PORT_NAME234
diff --git a/mbtk/mbtk_gnssd/gnss_hd8122.h b/mbtk/mbtk_gnssd/gnss_hd8122.h
index 1917ff1..da51d20 100755
--- a/mbtk/mbtk_gnssd/gnss_hd8122.h
+++ b/mbtk/mbtk_gnssd/gnss_hd8122.h
@@ -94,6 +94,10 @@
     HD8122_ID_AID_PALM_QZSS = 0x26
 } hd8122_id_aid_enum;
 
+typedef enum {
+    HD8122_EPHSAVE_STATUS_DISABLE = 0x0,
+    HD8122_EPHSAVE_STATUS_ENABLE = 0x1
+} hd8122_ephsave_status_enum;
 typedef struct {
     bool enable;
     uint8 gid;  // Groud ID
@@ -117,6 +121,8 @@
 
 int gnss_8122_close();
 
+int gnss_8122_init_set(int fd);
+
 int gnss_8122_fw_dl(int fd, const char *fw_name, const char *dev);
 
 gnss_err_enum gnss_8122_agnss_get_eph(const char *param);
diff --git a/mbtk/mbtk_gnssd/gnss_info.h b/mbtk/mbtk_gnssd/gnss_info.h
index 6b2c255..7d1b3e3 100755
--- a/mbtk/mbtk_gnssd/gnss_info.h
+++ b/mbtk/mbtk_gnssd/gnss_info.h
@@ -76,6 +76,7 @@
 typedef int (*gnss_dev_close_func)(int fd);
 typedef int (*gnss_open_func)(const char *dev);
 typedef int (*gnss_close_func)(int fd);
+typedef int (*gnss_init_set_func)(int fd);
 typedef int (*gnss_fw_dl_func)(int fd, const char *fw_name, const char *dev);
 typedef void (*gnss_dl_read_cb_func)(const void *data, int data_len);
 typedef gnss_err_enum (*gnss_set_func)(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len);
@@ -137,6 +138,7 @@
     gnss_dev_close_func gnss_dev_close;
     gnss_open_func gnss_open;
     gnss_close_func gnss_close;
+    gnss_init_set_func gnss_init_set;
     gnss_fw_dl_func gnss_fw_dl;
     gnss_dl_read_cb_func gnss_dl_read_cb;
     gnss_set_func gnss_set;
diff --git a/mbtk/mbtk_gnssd/gnss_main.c b/mbtk/mbtk_gnssd/gnss_main.c
index a495f4f..0fc37d0 100755
--- a/mbtk/mbtk_gnssd/gnss_main.c
+++ b/mbtk/mbtk_gnssd/gnss_main.c
@@ -832,6 +832,10 @@
 
     LOGD("GNSS open success.");
 
+    if(NULL != gnss_info.gnss_init_set)
+    {
+        gnss_info.gnss_init_set(gnss_info.fd);
+    }
 #if MBTK_GNSS_TEST_LOG
         gnss_test_log("gnss open success.");
 #endif
@@ -1131,6 +1135,7 @@
         gnss_info.gnss_dev_close = gnss_6228_dev_close;
         gnss_info.gnss_open = gnss_6228_open;
         gnss_info.gnss_close = gnss_6228_close;
+        gnss_info.gnss_init_set = NULL;
         gnss_info.gnss_fw_dl = gnss_6228_fw_dl;
         gnss_info.gnss_dl_read_cb = gnss_6228_dl_read_cb;
         gnss_info.gnss_set = gnss_6228_set;
@@ -1146,6 +1151,7 @@
         gnss_info.gnss_dev_close = gnss_8122_dev_close;
         gnss_info.gnss_open = gnss_8122_open;
         gnss_info.gnss_close = gnss_8122_close;
+        gnss_info.gnss_init_set = gnss_8122_init_set;
         gnss_info.gnss_fw_dl = gnss_8122_fw_dl;
         gnss_info.gnss_dl_read_cb = NULL;
         gnss_info.gnss_set = gnss_8122_set;
@@ -1161,6 +1167,7 @@
         gnss_info.gnss_dev_close = gnss_5311_dev_close;
         gnss_info.gnss_open = gnss_5311_open;
         gnss_info.gnss_close = gnss_5311_close;
+        gnss_info.gnss_init_set = NULL;
         gnss_info.gnss_fw_dl = gnss_5311_fw_dl;
         gnss_info.gnss_dl_read_cb = NULL;
         gnss_info.gnss_set = gnss_5311_set;
@@ -1176,6 +1183,7 @@
         gnss_info.gnss_dev_close = gnss_n50db_dev_close;
         gnss_info.gnss_open = gnss_n50db_open;
         gnss_info.gnss_close = gnss_n50db_close;
+        gnss_info.gnss_init_set = NULL;
         gnss_info.gnss_fw_dl = gnss_n50db_fw_dl;
         gnss_info.gnss_dl_read_cb = NULL;
         gnss_info.gnss_set = gnss_n50db_set;