Merge "[Bugfix][T108-yd][bug-view-2298][data] in data call demo, ql_data_call_config apn id 2, then start data call fail"
diff --git a/mbtk/mbtk_gnssd/gnss_hd8122.c b/mbtk/mbtk_gnssd/gnss_hd8122.c
index ea1ced8..34cda32 100755
--- a/mbtk/mbtk_gnssd/gnss_hd8122.c
+++ b/mbtk/mbtk_gnssd/gnss_hd8122.c
@@ -41,6 +41,7 @@
#define READ_LEN_MAX 1024 //BOOT_UPGRADE_BUFF_MAX_1
#define GNSS_FW_GQALS_PATH "/lib/firmware/gp_gl_ga_fw.bin"
#define GNSS_FW_GAQBS_PATH "/lib/firmware/gp_bd_ga_fw.bin"
+#define GNSS_FW_8040_PATH "/lib/firmware/gnss8040_fw.bin"
//#define AGNSS_TEST_URL "http://aclientt.allystar.com:80/ephemeris/HD_GPS_BDS.hdb"
#define AGNSS_URL "http://uagnss.allystar.com:80/ephemeris/%s?compid=yikecs1&token=Z38w5urAuawubTxi"
@@ -620,6 +621,10 @@
{
memcpy(fw_path, GNSS_FW_GAQBS_PATH, strlen(GNSS_FW_GAQBS_PATH));
}
+ else if(memcmp(fw_name, "gnss8040", 8) == 0)
+ {
+ memcpy(fw_path, GNSS_FW_8040_PATH, strlen(GNSS_FW_8040_PATH));
+ }
else if(fw_name != NULL)
{
memcpy(fw_path, fw_name, strlen(fw_name));
@@ -666,6 +671,10 @@
mbtk_system("echo 0 > /sys/class/gpio/gpio62/value");
usleep(100000);//100ms
mbtk_system("echo 1 > /sys/class/gpio/gpio63/value");//boot
+ usleep(100000);//100ms
+ mbtk_system("echo 0 > /sys/class/gpio/gpio63/value");
+ usleep(100000);//100ms
+ mbtk_system("echo in > /sys/class/gpio/gpio63/direction");
mbtk_system("echo 62 > /sys/class/gpio/unexport");
mbtk_system("echo 63 > /sys/class/gpio/unexport");
@@ -697,14 +706,69 @@
uart_close(uart_fd);
return GNSS_ERR_OK;
}
- // branch2: else
+ // branch2: gns_8040
+ else if (memcmp(fw_name, "gnss8040", 8) == 0)
+ {
+ if(gnss_8122_dev_open())
+ {
+ LOGE("open gnss device fail:%d", errno);
+ goto error;
+ }
+
+ mbtk_system("echo 63 > /sys/class/gpio/export");
+ mbtk_system("echo 62 > /sys/class/gpio/export");
+ mbtk_system("echo out > /sys/class/gpio/gpio63/direction");
+ mbtk_system("echo out > /sys/class/gpio/gpio62/direction");
+ mbtk_system("echo 0 > /sys/class/gpio/gpio63/value");
+ usleep(100000);//100ms
+ mbtk_system("echo 1 > /sys/class/gpio/gpio62/value");//reset
+ usleep(1000000);//1s
+ mbtk_system("echo 0 > /sys/class/gpio/gpio62/value");
+ usleep(100000);//100ms
+ mbtk_system("echo 1 > /sys/class/gpio/gpio63/value");//boot
+ usleep(100000);//100ms
+ mbtk_system("echo 0 > /sys/class/gpio/gpio63/value");
+ usleep(100000);//100ms
+ mbtk_system("echo in > /sys/class/gpio/gpio63/direction");
+ mbtk_system("echo 62 > /sys/class/gpio/unexport");
+ mbtk_system("echo 63 > /sys/class/gpio/unexport");
+
+ ret = fw_update_boot(uart_fd, g_bin_buff, len);
+ if (ret < 0)
+ {
+ LOGE("fw_update_boot() fail : %d", ret);
+ goto error;
+ }
+ if(gnss_8122_dev_close(0))
+ {
+ LOGE("close gnss device fail:%d", errno);
+ goto error;
+ }
+
+ if(ret == HDBD_UPG_SUCESS)
+ {
+ LOGD("upgrade sucess!");
+ }
+ else
+ {
+ LOGD("upgrade FAIL, fail style:%d", ret);
+ goto error;
+ }
+
+ free(g_bin_buff);
+ uart_close(uart_fd);
+ return GNSS_ERR_OK;
+ }
+ // branch3: else
else {
- mbtk_system("echo 0 > /sys/class/gpio/gpio41/value");//41 gnss_power_en
+ mbtk_system("echo 1 > /sys/class/gpio/gpio47/value");//47 reset
usleep(500000);//500ms
-
+
mbtk_system("echo 1 > /sys/class/gpio/gpio120/value");//120 boot
usleep(500000);//500ms
- mbtk_system("echo 1 > /sys/class/gpio/gpio41/value");//41 gnss_power_en
+ mbtk_system("echo 0 > /sys/class/gpio/gpio47/value");//47 reset
+ usleep(500000);//500ms
+ mbtk_system("echo 0 > /sys/class/gpio/gpio120/value");
usleep(500000);//500ms