[Feature][API-1508] in NMEA-statement for ZK ,transfer BD to GB

Only Configure:No
Affected branch:MR3.0-Merge-v2.0-ZK
Affected module:GNSS
Is it affected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: No

Change-Id: I0252975d3cc7f16e0bdc559bef148d196305a004
diff --git a/IC_meta/mtk/2735/liblynq-gnss/liblynq-gnss.bb b/IC_meta/mtk/2735/liblynq-gnss/liblynq-gnss.bb
index 7a6ef90..e2e255f 100755
--- a/IC_meta/mtk/2735/liblynq-gnss/liblynq-gnss.bb
+++ b/IC_meta/mtk/2735/liblynq-gnss/liblynq-gnss.bb
@@ -26,7 +26,8 @@
 MOBILETEK_GNSS_CN_OUTPUT_SYSLOG ?= "no"

 EXTRA_OEMAKE += "'MOBILETEK_GNSS_CN_OUTPUT_SYSLOG = ${MOBILETEK_GNSS_CN_OUTPUT_SYSLOG}'"

 

-

+MOBILETEK_GNSS_BD_TRANSFORM_GB ?= "no"

+EXTRA_OEMAKE += "'MOBILETEK_GNSS_BD_TRANSFORM_GB = ${MOBILETEK_GNSS_BD_TRANSFORM_GB}'"

 

 FILES_${PN} = "${base_libdir}/*.so \

                ${base_bindir}\

diff --git a/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h b/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h
index fac71b0..ea02c2e 100755
--- a/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h
+++ b/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h
@@ -110,7 +110,9 @@
 int lynq_gnss_epo_switch(LYNQ_CONF_SWITCH switch_op);

 

 int lynq_gnss_output_frequency_set(int frequency);

-

+#ifdef GNSS_BD_TRANSFORM_GB

+int lynq_gnss_bd_transform_enable(int flag);

+#endif

 int lynq_agps_set_enabled(LYNQ_CONF_SWITCH agps_status);

 

 int lynq_agps_get_enabled_status(int *status);

diff --git a/IC_src/mtk/lib/liblynq-gnss/makefile b/IC_src/mtk/lib/liblynq-gnss/makefile
index 1d21aef..66084e0 100755
--- a/IC_src/mtk/lib/liblynq-gnss/makefile
+++ b/IC_src/mtk/lib/liblynq-gnss/makefile
@@ -50,6 +50,10 @@
     LOCAL_CFLAGS += -DGNSS_CN_OUTPUT_SYSLOG

 endif

 

+ifeq ($(strip $(MOBILETEK_GNSS_BD_TRANSFORM_GB)), yes)

+    LOCAL_CFLAGS += -DGNSS_BD_TRANSFORM_GB

+endif

+

 

 

 $(warning libs=$(LOCAL_LIBS))

diff --git a/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c b/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c
index 51dd989..e0102a3 100755
--- a/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c
+++ b/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c
@@ -25,7 +25,8 @@
 #define NMEA_GGA "GGA"

 #define NMEA_VTG "VTG"

 #define NMEA_GSV "GSV"

-

+#define NMEA_BD "BD"

+#define NMEA_GB "GB"

 time_t reopen_start;

 extern lynq_gnss_cb* lynq_callbacks;

 extern lynq_raw_gnss_cbs *lynq_meas_callbacks;

@@ -75,6 +76,9 @@
 int count = 0;

 int nmea_count = 0;

 #endif

+#ifdef GNSS_BD_TRANSFORM_GB

+extern int BD_transform_GB_flag;

+#endif

 

 static inline int update_systime_time(GpsUtcTime gpstime)

 {

@@ -135,6 +139,22 @@
     }

 }

 #endif

+#ifdef GNSS_BD_TRANSFORM_GB

+void BD_transform_GB(char *str)

+{

+    int i;

+    int result;

+

+    strncpy(str + 1, NMEA_GB,strlen(NMEA_GB));

+    result = str[1];

+    for(i = 2; str[i] != '*'; i++)

+    {

+        result ^= str[i];

+    }

+    sprintf(str+i+1,"%02X",result);

+    return;

+}

+#endif

 

 void lynq_gps_nmea_callback(GpsUtcTime timestamp, const char* nmea, int length)

 {

@@ -191,6 +211,15 @@
         }

     }

 #endif

+#ifdef GNSS_BD_TRANSFORM_GB

+    char str[128];

+    if(BD_transform_GB_flag == 1 && strncmp(nmea + 1, NMEA_BD,strlen(NMEA_BD)) == 0)

+    {

+        strncpy(str,nmea,strlen(nmea));

+        BD_transform_GB(str);

+        nmea = str;

+    }

+#endif

 #ifdef GNSS_ELT_OUTPUT_CFG

     if(Open_ELT)

     {

diff --git a/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c b/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c
index 053a2fd..c6ad803 100755
--- a/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c
+++ b/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c
@@ -398,6 +398,15 @@
     return 0;

 }

 

+#ifdef GNSS_BD_TRANSFORM_GB

+int BD_transform_GB_flag = 0;

+int lynq_gnss_bd_transform_enable(int flag)

+{

+    BD_transform_GB_flag = flag;

+    return 0;

+}

+#endif

+

 lynq_atsvc_outcb atsvc_gnss_outcb;

 void atsvc_incb_entity(const char *input,const int length);

 int lynq_at_cgps(int at_type,char *at_paramter);