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