Merge commit '2e177267f1cc007efed09f12bfebfc520e25a969' into MR3.0-Merge-v2.0
Change-Id: I99a05c31c704005e1fcff8a6f32c074c416ecd8a
diff --git a/LYNQ_PUBLIC/IC_meta/mtk/2735/liblynq-gnss/liblynq-gnss.bb b/LYNQ_PUBLIC/IC_meta/mtk/2735/liblynq-gnss/liblynq-gnss.bb
index fbe7ce6..d9c78b8 100755
--- a/LYNQ_PUBLIC/IC_meta/mtk/2735/liblynq-gnss/liblynq-gnss.bb
+++ b/LYNQ_PUBLIC/IC_meta/mtk/2735/liblynq-gnss/liblynq-gnss.bb
@@ -17,6 +17,12 @@
'TARGET_PLATFORM = ${TARGET_PLATFORM}'"
+MOBILETEK_GNSS_ELT_OUTPUT_CFG ?= "no"
+EXTRA_OEMAKE += "'MOBILETEK_GNSS_ELT_OUTPUT_CFG = ${MOBILETEK_GNSS_ELT_OUTPUT_CFG}'"
+
+MOBILETEK_GNSS_SYNC_TIME_CFG ?= "no"
+EXTRA_OEMAKE += "'MOBILETEK_GNSS_SYNC_TIME_CFG = ${MOBILETEK_GNSS_SYNC_TIME_CFG}'"
+
FILES_${PN} = "${base_libdir}/*.so \
${base_bindir}\
${base_sbindir} \
@@ -62,4 +68,4 @@
addtask bachclean
do_bachclean () {
oe_runmake clean
-}
\ No newline at end of file
+}
diff --git a/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/files/autosuspend_wakeup_count.c b/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/files/autosuspend_wakeup_count.c
index 0ea28ce..dcb82a6 100755
--- a/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/files/autosuspend_wakeup_count.c
+++ b/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/files/autosuspend_wakeup_count.c
@@ -244,7 +244,7 @@
if(adb_debug_mode == 2)
{
- system("echo 11 | emdlogger_ctrl");
+ system("echo 11 | emdlogger_ctrl socket");
}
if (lynq_screen(0) != 0) //notify ril for screen off
@@ -324,7 +324,7 @@
{
if(adb_debug_mode == 2)
{
- system("echo 12 | emdlogger_ctrl");
+ system("echo 12 | emdlogger_ctrl socket");
}
usleep(200000);
@@ -339,7 +339,7 @@
if(adb_debug_mode == 2)
{
- system("echo 12 | emdlogger_ctrl");
+ system("echo 12 | emdlogger_ctrl socket");
}
diff --git a/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/files/makefile b/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/files/makefile
old mode 100644
new mode 100755
index 75e1102..e17db4e
--- a/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/files/makefile
+++ b/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/files/makefile
@@ -10,6 +10,9 @@
-D__LINUX_OS__ \
-DECALL_SUPPORT
+ifeq ($(strip $(MOBILETEK_SUSPEND_CFG)), GSW)
+ LOCAL_CFLAGS += -DGSW_SUSPEND_CFG
+endif
diff --git a/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/lynq-autosuspend.bb b/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/lynq-autosuspend.bb
old mode 100644
new mode 100755
index 97046eb..ccf4034
--- a/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/lynq-autosuspend.bb
+++ b/LYNQ_PUBLIC/IC_meta/mtk/2735/suspend-service/lynq-autosuspend.bb
@@ -23,6 +23,9 @@
OBJECTS = "$(SOURCES:.c=.o)"
+MOBILETEK_SUSPEND_CFG ?= ""
+EXTRA_OEMAKE += "'MOBILETEK_SUSPEND_CFG = ${MOBILETEK_SUSPEND_CFG}'"
+
EXECUTABLE = "autosuspend"
S = "${WORKDIR}"
TARGET_CC_ARCH += "${LDFLAGS}"
diff --git a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-codec/liblynq-codec/lynq_codec.c b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-codec/liblynq-codec/lynq_codec.c
index 9cd770d..f42ba33 100755
--- a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-codec/liblynq-codec/lynq_codec.c
+++ b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-codec/liblynq-codec/lynq_codec.c
@@ -1,5 +1,9 @@
#include <stdio.h>
#include <stdlib.h>
+#include <fcntl.h>
+#include <linux/i2c-dev.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
#include "lynq_codec.h"
#include <syslog.h>
#include <log/log.h>
@@ -293,7 +297,7 @@
void set_codec(media_src_t src, codec_op open_close)
{
- RLOGD("set_zk_3104_codec src=[%d] op=[%d]", src, open);
+ RLOGD("set_zk_3104_codec src=[%d] op=[%d]", src, open_close);
set_zk_3104_codec(open_close);
}
@@ -368,14 +372,14 @@
int customer_get_pa_volume(int* volume)
{
- int file;
+int file;
char *filename = "/dev/i2c-0";
int addr = 0x6c;
char buf[2];
- if (volume < 1 || volume > 4)
+ if(volume == NULL)
{
- RLOGE("Invalid volume specified\n");
+ RLOGE("lynq_get_pa_volume Invalid pointer to volume\n");
return -1;
}
@@ -392,44 +396,35 @@
return -1;
}
- switch (volume) {
- case 1:
- buf[0] = 0x03;
- buf[1] = 0x00; //Gain set to 20 dB
- break;
- case 2:
- buf[0] = 0x03;
- buf[1] = 0x78; //Gain set to 26 dB
- break;
- case 3:
- buf[0] = 0x03;
- buf[1] = 0x80; //Gain set to 32 dB
- break;
- case 4:
- buf[0] = 0x03;
- buf[1] = 0xc0; //Gain set to 36 dB
- break;
- }
+ buf[0] = 0x03;
- if (write(file, buf, 2) != 2)
+ if (write(file, buf, 1) != 1)
{
RLOGE("Failed to write to the i2c bus\n");
close(file);
return -1;
}
- RLOGE("Set the 0x%02x register value to 0x%02x\n", buf[0], buf[1]);
+ if (read(file, buf, 1) != 1)
+ {
+ RLOGE("Failed to read from the i2c bus\n");
+ close(file);
+ return -1;
+ }
close(file);
+ *volume = (buf[0] >> 6) + 1;
+
return 0;
+
}
#elif defined(GSW_CODEC_CFG)
void set_codec(media_src_t src, codec_op open_close)
{
- RLOGD("set_gsw_3104_codec src=[%d] op=[%d]", src, open);
+ RLOGD("set_gsw_3104_codec src=[%d] op=[%d]", src, open_close);
set_gsw_3104_codec(open_close);
}
diff --git a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h
index 362baaf..fac71b0 100755
--- a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h
+++ b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/include/lynq_gnss.h
@@ -7,7 +7,7 @@
#include "gpshal.h"
#include "hal2mnl_interface.h"
-
+#define DEV "/dev/ttyGS3"
typedef enum{
LYNQ_MODE_GPS_GLONASS = 0,
LYNQ_MODE_GPS_BEIDOU,
diff --git a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/makefile b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/makefile
index f1ca7fc..fcf6780 100755
--- a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/makefile
+++ b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/makefile
@@ -32,8 +32,19 @@
-lcutils \
-lgnsshal \
-lpthread \
+ -llynq-uci \
# -llynq-log \
+
+
+ifeq ($(strip $(MOBILETEK_GNSS_ELT_OUTPUT_CFG)), yes)
+ LOCAL_CFLAGS += -DGNSS_ELT_OUTPUT_CFG
+endif
+
+ifeq ($(strip $(MOBILETEK_GNSS_SYNC_TIME_CFG)), yes)
+ LOCAL_CFLAGS += -DGNSS_SYNC_TIME_CFG
+endif
+
$(warning libs=$(LOCAL_LIBS))
CXXSRC=\
diff --git a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c
index b8a402f..59a866a 100755
--- a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c
+++ b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/src/lynq_callback.c
@@ -3,11 +3,26 @@
#include<unistd.h>
#include<errno.h>
#include<string.h>
+#include <sys/time.h>
+#include <time.h>
+#include <log/log.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <time.h>
#include"lynq_gnsshal.h"
#include"mtk_lbs_utility.h"
#include"lynq_gnss.h"
+#define NMEA_ACC "ACCURACY"
+#define NMEA_GSA "GSA"
+#define NMEA_RMC "RMC"
+#define NMEA_GGA "GGA"
+#define NMEA_VTG "VTG"
+#define NMEA_GSV "GSV"
+
+time_t reopen_start;
extern lynq_gnss_cb* lynq_callbacks;
extern lynq_raw_gnss_cbs *lynq_meas_callbacks;
@@ -40,9 +55,89 @@
{
}
+#ifdef GNSS_SYNC_TIME_CFG
+extern int g_gnss_sync_enable_flag;
+extern int g_gnss_sync_done;
+#endif
+#ifdef GNSS_ELT_OUTPUT_CFG
+extern int g_ttyGS_fd;
+extern bool Open_ELT;
+#endif
+
+static inline int update_systime_time(GpsUtcTime gpstime)
+{
+ struct timeval tv;
+ int ret = gettimeofday(&tv, NULL);
+ if (ret == -1) {
+ perror("gettimeofday");
+ return -1;
+ }
+ if (tv.tv_sec == gpstime / 1000)
+ {
+ return 0;
+ }
+ printf("Now: %ld.%06ld\n", tv.tv_sec, tv.tv_usec);
+ tv.tv_sec = gpstime / 1000;
+ tv.tv_usec = (gpstime % 1000) * 1000;
+ ret = settimeofday(&tv, NULL);
+ if (ret == -1) {
+ perror("settimeofday");
+ return -1;
+ }
+
+ return 0;
+}
void lynq_gps_nmea_callback(GpsUtcTime timestamp, const char* nmea, int length)
{
+#ifdef GNSS_ELT_OUTPUT_CFG
+ int ret;
+ time_t reopen_end;
+#endif
+#ifdef GNSS_SYNC_TIME_CFG
+ if (g_gnss_sync_enable_flag == 1 && g_gnss_sync_done == 0)
+ {
+ if( strncmp(nmea+3,NMEA_RMC,strlen(NMEA_RMC)) == 0 && nmea[18] == 'A')
+ {
+ if (update_systime_time(timestamp) == 0)
+ {
+ g_gnss_sync_done = 1;
+ }
+ }
+ }
+#endif
+#ifdef GNSS_ELT_OUTPUT_CFG
+ if(Open_ELT)
+ {
+ if(g_ttyGS_fd >= 0)
+ {
+ ret = write(g_ttyGS_fd,nmea,length);
+ if(ret<0)
+ {
+ close(g_ttyGS_fd);
+ g_ttyGS_fd = -1;
+ reopen_start = time(NULL);
+ }
+ }
+
+ else
+ {
+ reopen_end = time(NULL);
+ if(difftime(reopen_end,reopen_start) > 3)
+ {
+ g_ttyGS_fd= open(DEV, O_RDWR | O_NOCTTY | O_NDELAY);
+ if(g_ttyGS_fd < 0)
+ {
+ reopen_start = time(NULL);
+ }
+ else
+ {
+ RLOGD("Open dev success\n");
+ }
+ }
+ }
+ }
+#endif
lynq_callbacks->lynq_nmea_cb(timestamp,nmea,length);
}
@@ -153,13 +248,6 @@
}
-#define NMEA_ACC "ACCURACY"
-#define NMEA_GSA "GSA"
-#define NMEA_RMC "RMC"
-#define NMEA_GGA "GGA"
-#define NMEA_VTG "VTG"
-#define NMEA_GSV "GSV"
-
void lynq_at_gps_nmea_callback(GpsUtcTime timestamp, const char* nmea, int length)
{
if (at_gpsnmea_status == 1)
diff --git a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c
index a812738..6c8ba42 100755
--- a/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c
+++ b/LYNQ_PUBLIC/IC_src/mtk/lib/liblynq-gnss/src/lynq_gnss.c
@@ -16,6 +16,9 @@
#include <pthread.h>
#include <log/log.h>
#include <stdlib.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/stat.h>
#include "lynq_gnss.h"
#include "gpshal.h"
@@ -24,6 +27,7 @@
#include "mtk_lbs_utility.h"
#include "lynq_prop.h"
#include "mnldinf_utility.h"
+#include "include/lynq_uci.h"
#define LOG_TAG "LYNQ_GNSS"
@@ -43,13 +47,22 @@
static int g_lynq_gnss_init_flag = 0;
static int g_lynq_gnss_calback_flag = 0;
-
+#ifdef GNSS_SYNC_TIME_CFG
+int g_gnss_sync_enable_flag = 0;
+int g_gnss_sync_done = 0;
+#endif
/**
* @brief mark gnss raw meas state
* 0: deinit state
* 1: init state
*/
static int g_lynq_gnss_raw_meas_flag = 0;
+int at_gps_status = 0;
+int at_gpsnmea_status = 0;
+#ifdef GNSS_ELT_OUTPUT_CFG
+int g_ttyGS_fd= -1;
+bool Open_ELT = true;
+#endif
int lynq_gnss_init(void)
{
@@ -67,6 +80,16 @@
gpshal_set_gps_state_intent(GPSHAL_STATE_INIT);
gpshal2mnl_gps_init();
g_gpshal_ctx.mnl_retry_timer = mnldinf_init_timer(gpshal_mnl_retry_routine);
+#ifdef GNSS_ELT_OUTPUT_CFG
+ if(Open_ELT)
+ {
+ g_ttyGS_fd= open(DEV, O_RDWR | O_NOCTTY | O_NDELAY);
+ if(g_ttyGS_fd < 0)
+ {
+ RLOGD("Open dev fail");
+ }
+ }
+#endif
return 0;
}
@@ -132,6 +155,13 @@
RLOGD("timer de init end");
g_lynq_gnss_calback_flag = 0;
g_lynq_gnss_init_flag = 0;
+#ifdef GNSS_ELT_OUTPUT_CFG
+ if(g_ttyGS_fd >= 0)
+ {
+ close(g_ttyGS_fd);
+ g_ttyGS_fd = -1;
+ }
+#endif
return 0;
}
@@ -142,6 +172,12 @@
RLOGD("start is not allowed");
return -1;
}
+#ifdef GNSS_SYNC_TIME_CFG
+ char gnss_sync_enable[24] = "";
+ lynq_get_value("lynq_uci", "lynq_sync_time", "lynq_gnss_sync_time_enable" , gnss_sync_enable);
+ g_gnss_sync_enable_flag = atoi(gnss_sync_enable);
+ g_gnss_sync_done = 0;
+#endif
//memset(&lynq_debug_data, 0, sizeof(DebugData));
gpshal_set_gps_state_intent(GPSHAL_STATE_START);
gpshal2mnl_gps_start();
@@ -353,8 +389,6 @@
int lynq_at_cgps(int at_type,char *at_paramter);
int lynq_at_cgpsnmea(int at_type,char *at_paramter);
-int at_gps_status = 0;
-int at_gpsnmea_status = 0;
int strUpper(char * str)
{
@@ -527,6 +561,9 @@
}
if (at_gps_status == 0)
{
+#ifdef GNSS_ELT_OUTPUT_CFG
+ Open_ELT = true;
+#endif
ret = lynq_gnss_stop();
if (ret != 0)
{
@@ -545,6 +582,9 @@
}
else if(at_gps_status == 1)
{
+#ifdef GNSS_ELT_OUTPUT_CFG
+ Open_ELT = false;
+#endif
lynq_at_callbacks = lynq_at_get__gnss_callbacks();
ret = lynq_gnss_callback_reg(lynq_at_callbacks);
if (ret != 0)