Merge "[feature][SZZT-69][AT]At + LCSUS switching card commands support query [feature][SZZT-65][AT]Low power instruction for dual cards" into SZZT
diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/lynq-atsvc/lynq-atsvc.bb b/meta/meta-mediatek-mt2731/recipes-lynq/lynq-atsvc/lynq-atsvc.bb
index 43832dc..c3406f8 100755
--- a/meta/meta-mediatek-mt2731/recipes-lynq/lynq-atsvc/lynq-atsvc.bb
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/lynq-atsvc/lynq-atsvc.bb
@@ -3,7 +3,7 @@
 DESCRIPTION = "lynq ril service"

 LICENSE = "MediaTekProprietary"

 LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"

-DEPENDS += "platform-libs audio-mixer-ctrl libvendor-ril libpal gstreamer1.0 glib-2.0 dtmf libapn dbus liblynq-protcl liblynq-logdata-handle liblynq-log liblynq-fota nandapi bootctrl"

+DEPENDS += "platform-libs audio-mixer-ctrl libvendor-ril libpal gstreamer1.0 glib-2.0 dtmf libapn dbus liblynq-protcl liblynq-logdata-handle liblynq-log liblynq-fota nandapi bootctrl liblynq-thermal"

 inherit workonsrc

 WORKONSRC = "${TOPDIR}/../src/lynq/framework/lynq-atsvc/src"

 

diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/lynq-cv2x/lynq-cv2x.bb b/meta/meta-mediatek-mt2731/recipes-lynq/lynq-cv2x/lynq-cv2x.bb
index fa87ed0..4c084bf 100755
--- a/meta/meta-mediatek-mt2731/recipes-lynq/lynq-cv2x/lynq-cv2x.bb
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/lynq-cv2x/lynq-cv2x.bb
@@ -24,7 +24,8 @@
 

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

                ${bindir}\

-               /etc/cv2x "

+               /etc/cv2x \

+			   /usr/lib \"

 

 FILES_${PN}-dev = "/test \

                    ${includedir}"

@@ -58,6 +59,7 @@
 do_install () {

     if [ -d "${WORKONSRC}" ] ; then

 		install -d ${D}/etc/cv2x

+		install -d ${D}/usr/lib

 		install -d ${D}${bindir}/

         install -m 0755 ${S}lynq-cv2x ${D}${bindir}/

         install -m 0755 ${S}/release-es2/cv2x-example ${D}${bindir}/

@@ -80,7 +82,11 @@
 		install -m 0644 ${S}/release-es2/libcv2x.so                                   ${D}/etc/cv2x/libcv2x.so

 		install -m 0644 ${S}/release-es2/libsmx.so                                    ${D}/etc/cv2x/libsmx.so

 		install -m 0755 ${S}/release-es2/packet.sh                                    ${D}/etc/cv2x/packet.sh

-		

+		install -m 0644 ${S}/release-es2/libatlkremote_linux_u.so                     ${D}/usr/lib/libatlkremote_linux_u.so

+		install -m 0644 ${S}/release-es2/libcli.so                                    ${D}/usr/lib/libcli.so

+		install -m 0644 ${S}/release-es2/libcv2x.so                                   ${D}/usr/lib/libcv2x.so

+		install -m 0644 ${S}/release-es2/libsmx.so                                    ${D}/usr/lib/libsmx.so

+		install -m 0755 ${S}/release-es2/packet.sh                                    ${D}/usr/lib/packet.sh

     fi

 

 	install -d ${D}${systemd_unitdir}/system/

diff --git a/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb b/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb
index 2d0cdbc..e8f387c 100755
--- a/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb
+++ b/meta/meta-mediatek-mt2731/recipes-lynq/packagegroups/packagegroup-lync-mt2731.bb
@@ -26,4 +26,5 @@
     lynq-low-power \
     liblynq-logdata-handle \
     lynq-gnss-test \
+    liblynq-thermal \
 "
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_at_transfer_table.h b/src/lynq/framework/lynq-atsvc/src/lynq_at_transfer_table.h
index abf0aed..57607b4 100755
--- a/src/lynq/framework/lynq-atsvc/src/lynq_at_transfer_table.h
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_at_transfer_table.h
@@ -21,6 +21,8 @@
 {LYNQ_REQUEST_FACTORY,"LYNQFACTORY",7},

 {LYNQ_REQUEST_LINFO,"LINFO",7},

 {LYNQ_REQUEST_FOTA,"LYNQFOTA",7},

+{LYNQ_REQUEST_TEMP,"LYNQMTSM",1},

+

 /*lei add*/

 {LYNQ_REQUEST_CSCLK,"CSCLK",7},

 {LYNQ_REQUEST_MPWRSM,"MPWRSM",7},

diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
index 91e38f9..318adfe 100755
--- a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
@@ -124,6 +124,8 @@
             return LYNQ_GOTO_FACTORY;
         case LYNQ_REQUEST_FOTA:
             return LYNQ_GOTO_FOTA;
+        case LYNQ_REQUEST_TEMP:
+            return LYNQ_GOTO_TEMP;
         default:
             return -1;
     }
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_common.h b/src/lynq/framework/lynq-atsvc/src/lynq_common.h
index 7bc9be1..fd227a6 100755
--- a/src/lynq/framework/lynq-atsvc/src/lynq_common.h
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_common.h
@@ -35,6 +35,8 @@
 #define LYNQ_GOTO_FOTA 8
 /*PMS*/
 #define LYNQ_GOTO_PMS 9
+/*TEMP*/
+#define LYNQ_GOTO_TEMP 10
 
 #define LYNQ_APN_LEN_MAX 100
 #define LYNQ_APNTPYE_LEN_MAX 50
@@ -69,6 +71,7 @@
 #define LYNQ_REQUEST_CFSN (LYNQ_VERSION +23)
 #define LYNQ_REQUEST_RST (LYNQ_VERSION +25)
 /*lei add*/
+#define LYNQ_REQUEST_TEMP (LYNQ_VERSION +26)
 #define LYNQ_USER_REQUEST_GNSS (LYNQ_VERSION +100)
 #define LYNQ_USER_REQUEST_OTHRE (LYNQ_VERSION +101)
 
diff --git a/src/lynq/framework/lynq-atsvc/src/makefile b/src/lynq/framework/lynq-atsvc/src/makefile
index 4f685e7..00fe5de 100755
--- a/src/lynq/framework/lynq-atsvc/src/makefile
+++ b/src/lynq/framework/lynq-atsvc/src/makefile
@@ -68,8 +68,10 @@
   -I$(LOCAL_PATH)/rndis \
   -I$(LOCAL_PATH)/factory \
   -I$(LOCAL_PATH)/fota \
+  -I$(LOCAL_PATH)/temp \
   -I$(ROOT)$(includedir)/ \
   -I$(ROOT)$(includedir)/liblog \
+  -I$(ROOT)$(includedir)/liblynq-thermal \
   -I$(ROOT)$(includedir)/include  \
   -I$(ROOT)$(includedir)/ftp \
   -I$(ROOT)$(includedir)/logger \
@@ -110,6 +112,7 @@
     -llynq-log \
     -llynq-fota \
     -lnandapi  \
+    -llynq-thermal  \
 
 ifeq ($(strip $(TARGET_PLATFORM)), mt2735)
 LOCAL_LIBS += -luciwrapper
@@ -118,7 +121,7 @@
 endif
 
 
-SOURCES = $(wildcard util/*.cpp *.cpp ecall/*.cpp ecall/gost/*.cpp ecall/gost/utils/*.cpp ecall/gost/sslp/*.cpp ecall/gost/sslp/auth/*.cpp ecall/gost/sslp/firmware/*.cpp ecall/gost/sslp/commands/*.cpp ecall/gost/sslp/ecall/*.cpp ecall/gost/sslp/teledata/*.cpp data/*.cpp  em/rfdesense/*.cpp em/networkinfo/*.cpp em/*.cpp sms/*.cpp sms/gsm/*.cpp sms/cdma/*.cpp atci/*.cpp stateManager/*.cpp log/*.cpp rndis/*.cpp factory/*.cpp )
+SOURCES = $(wildcard util/*.cpp *.cpp ecall/*.cpp ecall/gost/*.cpp ecall/gost/utils/*.cpp ecall/gost/sslp/*.cpp ecall/gost/sslp/auth/*.cpp ecall/gost/sslp/firmware/*.cpp ecall/gost/sslp/commands/*.cpp ecall/gost/sslp/ecall/*.cpp ecall/gost/sslp/teledata/*.cpp data/*.cpp  em/rfdesense/*.cpp em/networkinfo/*.cpp em/*.cpp sms/*.cpp sms/gsm/*.cpp sms/cdma/*.cpp atci/*.cpp stateManager/*.cpp log/*.cpp rndis/*.cpp factory/*.cpp temp/*.cpp )
 
 EXECUTABLE = lynq-atsvc
 
diff --git a/src/lynq/framework/lynq-atsvc/src/ril.cpp b/src/lynq/framework/lynq-atsvc/src/ril.cpp
index 496bfc7..ae34c5a 100755
--- a/src/lynq/framework/lynq-atsvc/src/ril.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/ril.cpp
@@ -83,6 +83,7 @@
 #include "lynq_send_log_data.h"
 #include "lynq_rndis.h"
 #include "lynq_factory.h"
+#include "lynq_at_temp.h"
 /*Warren add for FAW platform 2021/9/28 end*/
 
 
@@ -6683,6 +6684,11 @@
                     break;
                 }
                 /*lei add*/
+                case LYNQ_GOTO_TEMP:
+                {
+                    lynq_at_get_temp(argc, argv);
+                    break;
+                 }
                 default:
                     break;
             }
diff --git a/src/lynq/framework/lynq-atsvc/src/temp/lynq_at_temp.cpp b/src/lynq/framework/lynq-atsvc/src/temp/lynq_at_temp.cpp
new file mode 100755
index 0000000..818dbdd
--- /dev/null
+++ b/src/lynq/framework/lynq-atsvc/src/temp/lynq_at_temp.cpp
@@ -0,0 +1,58 @@
+/*============================================================================= 

+**     FileName: lynq_at_temp

+**     Desc: lynq at temp

+**     Author: rita

+**     Version: V1.0

+**     LastChange: 2022-06-13

+**     History: 

+=============================================================================*/

+

+#include "common.h"

+#include <stdio.h>

+#include <string.h>

+#include <stdlib.h>

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+//#include <log/log.h>

+#include "liblynq-thermal/lynq_get_thermal.h"

+

+static void lynq_response_ttyGS3(char *log_buf)

+{

+//    sprintf(log_buf,"LYNQ_GOTO_LOGS_REQ\n");

+    write(ttyGS3_fd,log_buf,strlen(log_buf));

+    return;  

+}

+

+int lynq_at_get_temp(int argc, char *argv[])

+{

+    int temp = 0;

+    char buf[20] = "";

+

+    

+    if(NULL == argv[3] || argc<4){

+        lynq_response_ttyGS3("+CME ERROR: no such device,please reinput!!\n");

+        return -1;

+    }

+    

+    int ret = lynq_get_zone_tmp(ZONE_NUM(atoi(argv[3])), &temp);

+       

+    

+    if(ret!=0){

+        lynq_response_ttyGS3("+CME ERROR: no such device,please reinput!!\n");

+    }

+    else{

+       //lynq_response_ttyGS3("+temp:%d\n");

+       sprintf(buf,"+LYNQMTSM: %d\n", temp);

+       lynq_response_ttyGS3(buf);

+    }

+

+    return ret;

+}

+

+

+#ifdef __cplusplus

+}

+#endif

diff --git a/src/lynq/framework/lynq-atsvc/src/temp/lynq_at_temp.h b/src/lynq/framework/lynq-atsvc/src/temp/lynq_at_temp.h
new file mode 100755
index 0000000..d17d134
--- /dev/null
+++ b/src/lynq/framework/lynq-atsvc/src/temp/lynq_at_temp.h
@@ -0,0 +1,26 @@
+#ifndef __LYNQ_AT_TEMP_H__

+#define __LYNQ_AT_TEMP_H__

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+typedef enum {

+    mtktscpu=0,

+    mtktsaplt,

+    mtktsrf,

+    mtktsdram,

+    mtktspa4g,

+    mtktspmic,

+    tzts1,

+    tzts2,

+    tzts3,

+    tzts4=9,

+} ZONE_NUM;

+

+int lynq_at_get_temp(int argc, char *argv[]);

+

+#ifdef __cplusplus

+}

+#endif

+

+#endif //__LYNQ_AT_TEMP_H__

diff --git a/src/lynq/lib/liblynq-thermal/include/liblynq-thermal/lynq_get_thermal.h b/src/lynq/lib/liblynq-thermal/include/liblynq-thermal/lynq_get_thermal.h
new file mode 100755
index 0000000..b066e31
--- /dev/null
+++ b/src/lynq/lib/liblynq-thermal/include/liblynq-thermal/lynq_get_thermal.h
@@ -0,0 +1,35 @@
+#ifndef __LYNQ_GET_THERMAL_H__

+#define __LYNQ_GET_THERMAL_H__

+

+#define LYNQ_THM_PATH 256

+

+#define TYPE_PATH_PRE "/sys/class/thermal"

+

+#define LYNQ_THM_OK 0

+#define LYNQ_THM_OPEN_ERROR -1

+#define LYNQ_THM_READ_ERROR -2

+#define LYNQ_THM_ACCESS_ERROR -3

+#define LYNQ_THM_ZONE_ERROR -4

+#define LYNQ_THM_TEMP_ERROR -5

+

+#define LYNQ_THM_ZONE_KEY "thermal_zone"

+#define LYNQ_THM_COOLER_KEY "cooling_device"

+

+typedef enum {

+    mtktscpu=0,

+    mtktsaplt,

+    mtktsrf,

+    mtktsdram,

+    mtktspa4g,

+    mtktspmic,

+    tzts1,

+    tzts2,

+    tzts3,

+    tzts4=9,

+} ZONE_NUM;

+

+char* lynq_read_version();

+int read_sys_info(char *sys_path, char *out_buf, int out_buf_len);

+int lynq_get_zone_tmp(ZONE_NUM num, int *temp);

+

+#endif  //__LYNQ_GET_THERMAL_H__
\ No newline at end of file
diff --git a/src/lynq/lib/liblynq-thermal/makefile b/src/lynq/lib/liblynq-thermal/makefile
new file mode 100755
index 0000000..6c9c610
--- /dev/null
+++ b/src/lynq/lib/liblynq-thermal/makefile
@@ -0,0 +1,86 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+                -std=gnu++14 \
+                -g -Os \
+                -flto \
+                -fPIC \
+                -fpermissive \
+
+$(warning ################# C2K support: $(RAT_CONFIG_C2K_SUPPORT))
+ifeq ($(strip $(RAT_CONFIG_C2K_SUPPORT)), yes)
+    LOCAL_CFLAGS += -DC2K_SUPPORT
+
+endif
+
+ifeq ($(strip $(MTK_MULTI_SIM_SUPPORT)), dsds)
+    LOCAL_CFLAGS += -DANDROID_SIM_COUNT_2 \
+                     -DANDROID_MULTI_SIM \
+                     -DMODE_DSDS
+endif
+
+ifeq ($(strip $(MTK_MULTI_SIM_SUPPORT)), dsss)
+    LOCAL_CFLAGS += -DMODE_DSSS
+endif
+
+$(warning ################# TARGET_PLATFORM: $(TARGET_PLATFORM))
+ifeq ($(strip $(TARGET_PLATFORM)), mt2731)
+$(warning ################# TARGET_PLATFORM_MT2731)
+    LOCAL_CFLAGS += -DTARGET_PLATFORM_MT2731 \
+                    -DMD_93_SUPPORT
+else ifeq ($(strip $(TARGET_PLATFORM)), mt2635)
+$(warning ################# TARGET_PLATFORM_MT2635)
+    LOCAL_CFLAGS += -DTARGET_PLATFORM_MT2635 \
+                    -DMD_90_SUPPORT
+endif
+
+$(warning ################# RITA ROOT: $(ROOT),includedir:$(includedir))
+LOCAL_PATH   = .
+
+LOCAL_C_INCLUDES = \
+  -I. \
+  -I$(LOCAL_PATH)/include \
+
+
+LOCAL_LIBS := \
+    -L. \
+    -ldl \
+    -lpthread \
+
+
+SOURCES = $(wildcard *.c wildcard *.h src/*.c)
+
+EXECUTABLE = liblynq-thermal.so
+
+OBJECTS=$(SOURCES:.c=.o)
+
+
+.PHONY: build clean install pack_rootfs 
+
+all: build
+$(EXECUTABLE): $(OBJECTS)
+	$(CXX) -shared -Wl,--no-undefined $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.c
+	$(CC) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $< 
+
+build:  $(EXECUTABLE)
+	$(warning ########## build $(EXECUTABLE)  ##########)
+
+install:
+	mkdir -p $(ROOT)$(base_libdir)/
+	install $(EXECUTABLE) $(ROOT)$(base_libdir)/
+	mkdir -p $(ROOT)$(includedir)/$(NAME)/sdk
+
+pack_rootfs:
+	mkdir -p $(PACK_INITRAMFS_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_INITRAMFS_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_INITRAMFS_TO)$(base_libdir)/$(EXECUTABLE)
+	mkdir -p $(PACK_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_TO)$(base_libdir)/$(EXECUTABLE)
+
+.PHONY: clean
+clean:
+	$(RM) $(OBJECTS) $(EXECUTABLE)
diff --git a/src/lynq/lib/liblynq-thermal/src/lynq_get_thermal.c b/src/lynq/lib/liblynq-thermal/src/lynq_get_thermal.c
new file mode 100755
index 0000000..d1d38a1
--- /dev/null
+++ b/src/lynq/lib/liblynq-thermal/src/lynq_get_thermal.c
@@ -0,0 +1,76 @@
+#include <sys/types.h>

+#include <dirent.h>

+#include <unistd.h>

+#include <stdio.h>

+#include <string.h>

+#include <fcntl.h>

+#include <stdlib.h>

+#include <unistd.h>

+#include "liblynq-thermal/lynq_get_thermal.h"

+

+//merge from t800 start

+char* lynq_read_version()

+{

+    return "THERMAL-V1.0";

+}

+

+int read_sys_info(char *sys_path, char *out_buf, int out_buf_len)

+{

+    int fd, ret;

+    char buf[LYNQ_THM_PATH] = "";

+

+    if (NULL == out_buf)

+        return LYNQ_THM_ZONE_ERROR;

+

+    if ((access(sys_path, F_OK)) == -1)

+        return LYNQ_THM_ACCESS_ERROR;

+

+    fd = open(sys_path, O_RDONLY);

+

+    if (fd < 0)

+    {

+        //printf("[%s-%d] open error!!!\n", __FUNCTION__, __LINE__);

+        return LYNQ_THM_OPEN_ERROR;

+    }

+

+    ret = read(fd, buf, sizeof(buf));

+

+

+    if(ret<0)

+    {

+        close(fd);

+        //printf("[%s-%d] read error!!!\n", __FUNCTION__, __LINE__);

+        return LYNQ_THM_READ_ERROR;

+    }

+

+    memcpy(out_buf, buf, out_buf_len);

+    close(fd);

+

+    return LYNQ_THM_OK;

+}

+

+int lynq_get_zone_tmp(ZONE_NUM num, int *temp)

+{

+    char tz_path[LYNQ_THM_PATH] = "";

+    char buf[LYNQ_THM_PATH] = "";

+       

+    if(num < 0 || num > 9)

+    {

+        return  LYNQ_THM_ZONE_ERROR;

+    }

+    

+    if(NULL == temp)

+        return LYNQ_THM_ZONE_ERROR;

+

+    sprintf(tz_path, "%s/%s%d/temp", TYPE_PATH_PRE, LYNQ_THM_ZONE_KEY, num);

+

+    int ret = read_sys_info(tz_path, buf, LYNQ_THM_PATH);

+    if(!ret)

+    {

+        if(strlen(buf))

+            *temp = atoi(buf);

+    }

+    

+    return ret;

+}

+//merge from t800 end
\ No newline at end of file
diff --git a/src/lynq/packages/apps/lynq-cv2x/lynq_cv2x.service b/src/lynq/packages/apps/lynq-cv2x/lynq_cv2x.service
index e5ed56d..f475114 100755
--- a/src/lynq/packages/apps/lynq-cv2x/lynq_cv2x.service
+++ b/src/lynq/packages/apps/lynq-cv2x/lynq_cv2x.service
@@ -3,7 +3,7 @@
 After=wmtd.service
 
 [Service]
-StandardOutput =syslog+console
+StandardOutput=syslog+console
 Type=oneshot
 RemainAfterExit=no
 ExecStart=/usr/bin/lynq-cv2x
diff --git a/src/lynq/packages/apps/lynq-cv2x/src/cv2x-example.c b/src/lynq/packages/apps/lynq-cv2x/src/cv2x-example.c
index 9841a1c..7602db2 100755
--- a/src/lynq/packages/apps/lynq-cv2x/src/cv2x-example.c
+++ b/src/lynq/packages/apps/lynq-cv2x/src/cv2x-example.c
@@ -1,20 +1,24 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <unistd.h>
 #include <log/log.h>
 
 #define LOG_TAG "CV2X"
 
 int main(int argc, const char *argv[])
 {
-    /*cv2x need gnss*/
+    system("echo out 19 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio");//just for clt
     system("echo mode 93 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio");
     system("echo mode 94 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio");
     system("echo mode 95 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio");
     system("echo mode 96 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio");
     system("stty -F /dev/ttyS6 115200");
+    char pwd[32] = {0};
+    chdir("/etc/cv2x");
+    getcwd(pwd, 32);
+    RLOGD("jenkins pwd %s\n", pwd);
     system("/etc/cv2x/atk_flasher --baudrate 115200 -b serial /dev/ttyS6 /etc/cv2x/SECTON.packed_bin.rom.injected");
     RLOGD("jenkins download already\n");
-    system("export LD_LIBRARY_PATH=/etc/cv2x");
     system("/etc/cv2x/cv2x-example /dev/spidev2.0 2");
     return 0;
 }
\ No newline at end of file