[feature] ded the uploading function of log AT command

Change-Id: Id6f161951d8e86e9c888871448b7e49be0f975eb
diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/lynq-ril-service/lynq-ril-service.bb b/meta/meta-mediatek-mt2735/recipes-lynq/lynq-ril-service/lynq-ril-service.bb
index c009b6d..92abde1 100755
--- a/meta/meta-mediatek-mt2735/recipes-lynq/lynq-ril-service/lynq-ril-service.bb
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/lynq-ril-service/lynq-ril-service.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-log"
+DEPENDS += "platform-libs audio-mixer-ctrl libvendor-ril  libpal gstreamer1.0 glib-2.0 dtmf libapn dbus liblynq-log liblynq-protcl liblynq-logdata-handle liblynq-fota nandapi"
 inherit workonsrc
 WORKONSRC = "${TOPDIR}/../src/lynq/framework/lynq-ril-service/src"
 
diff --git a/src/lynq/framework/lynq-ril-service/src/log/lynq_send_log_data.cpp b/src/lynq/framework/lynq-ril-service/src/log/lynq_send_log_data.cpp
new file mode 100755
index 0000000..7f3a8e8
--- /dev/null
+++ b/src/lynq/framework/lynq-ril-service/src/log/lynq_send_log_data.cpp
@@ -0,0 +1,337 @@
+/*============================================================================= 

+**     FileName: lynq_send_log_data

+**     Desc: send log data

+**     Author: victor

+**     Version: V1.0

+**     LastChange: 2021-12-23

+**     History: 

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

+

+#include "common.h"

+#include <stdio.h>

+#include <string.h>

+#include <stdlib.h>

+

+#ifdef __cplusplus
+extern "C" {
+#endif

+#include <log/log.h>

+#include "lynq_send_log_data.h"

+#include "lynq_logdata_handle.h"

+#include "lynq_deal_logrotate.h"

+#include "ftp/lynq_ftp.h"

+#include "mtk_device_wrap.h"

+#include "include/iot_rock.h"

+

+//extern int ttyGS3_fd;

+static lynq_ftp_socker_info ftp_logrotate_info;

+static lynq_ftp_socker_info ftp_atfota_info;

+

+#define UPDATA_ADDR "/tmp/fota.delta"

+#define READ_BLOCK_SIZE 0x40000

+

+int lynq_fota_md5_flag = -1;

+

+#define FLASH_DEV_DELTA       "/dev/disk/by-partlabel/delta"	

+

+void lynq_response_ttyGS3(char *log_buf)

+{

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

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

+}

+

+

+static int lynq_ftp_login_logmodule(char **lynq_logsend_buf) //lt add @2021.12.23 for ftp login 

+{

+    sprintf(ftp_logrotate_info.sevname,lynq_logsend_buf[1]);

+    ftp_logrotate_info.portnum = atoi(lynq_logsend_buf[2]);

+    sprintf(ftp_logrotate_info.username,lynq_logsend_buf[3]);

+    sprintf(ftp_logrotate_info.pw,lynq_logsend_buf[4]);

+

+    sprintf(ftp_logrotate_info.is_pasv_mode,lynq_logsend_buf[5]);

+    sprintf(ftp_logrotate_info.file_type,lynq_logsend_buf[6]);

+    sprintf(ftp_logrotate_info.put_opt,lynq_logsend_buf[7]);

+

+    sprintf(ftp_logrotate_info.putfilename_path,lynq_logsend_buf[8]);

+

+    return lynq_ftp_login(&ftp_logrotate_info);

+//   lynq_ftp_download(&ftp_logrotate_info);

+   

+}

+

+

+static int lynq_ftp_upload_logdata(int log_moudle) //lt add @2021.12.23 for deal with upload log data

+{

+    int ret = -1;

+    char lynq_log_file_path[64] = {0};

+    char log_file_name[64] = {0};

+    char log_buf[1024];

+

+    chdir("/var/log/");/*Ìø×ªµ½/var/log/¹¤×÷Ŀ¼ÏÂ*/

+    switch(log_moudle)

+    {

+        case MD_LOG:

+        memset(lynq_log_file_path,0,sizeof(lynq_log_file_path));

+        memset(log_file_name,0,sizeof(log_file_name));

+        ret = lynq_get_current_mtklog_path(lynq_log_file_path);

+        if(ret >= 0)

+        {

+            /*bzero(log_buf, 1024);

+            sprintf(log_buf,"log_file_path:%s\n",lynq_log_file_path);

+            lynq_response_ttyGS3(log_buf);*/

+            sscanf(lynq_log_file_path,"/var/log/%s",log_file_name);

+            sprintf(ftp_logrotate_info.putfilename,log_file_name);

+            /*bzero(log_buf, 1024);

+            sprintf(log_buf,"log_file_name:%s\n",log_file_name);

+            lynq_response_ttyGS3(log_buf);*/

+            return lynq_ftp_up(&ftp_logrotate_info);

+        }

+        else

+        {

+            bzero(log_buf, 1024);

+            sprintf(log_buf,"+CME: ERROR %d\n",LYNQ_E_GET_LOG_FAIL);

+            lynq_response_ttyGS3(log_buf);

+        }

+        break;

+        case AP_LOG:

+        memset(lynq_log_file_path,0,sizeof(lynq_log_file_path));

+        memset(log_file_name,0,sizeof(log_file_name));

+        ret = lynq_get_current_syslog_path(lynq_log_file_path);

+        if(ret >= 0)

+        {

+            /*bzero(log_buf, 1024);

+            sprintf(log_buf,"log_file_path:%s\n",lynq_log_file_path);

+            lynq_response_ttyGS3(log_buf);*/

+            sscanf(lynq_log_file_path,"/var/log/%s",log_file_name);

+            sprintf(ftp_logrotate_info.putfilename,log_file_name);

+            /*bzero(log_buf, 1024);

+            sprintf(log_buf,"log_file_name:%s\n",log_file_name);

+            lynq_response_ttyGS3(log_buf);*/

+            return lynq_ftp_up(&ftp_logrotate_info);

+        }	

+        else

+        {

+            bzero(log_buf, 1024);

+            sprintf(log_buf,"+CME: ERROR %d\n",LYNQ_E_GET_LOG_FAIL);

+            lynq_response_ttyGS3(log_buf);

+        }

+        break;

+    case MCU_LOG:

+        memset(lynq_log_file_path,0,sizeof(lynq_log_file_path));

+        memset(log_file_name,0,sizeof(log_file_name));

+        ret = lynq_get_current_mculog_path(lynq_log_file_path);

+        if(ret >= 0)

+        {

+            /*bzero(log_buf, 1024);

+            sprintf(log_buf,"log_file_path:%s\n",lynq_log_file_path);

+            lynq_response_ttyGS3(log_buf);*/

+            sscanf(lynq_log_file_path,"/var/log/%s",log_file_name);

+            sprintf(ftp_logrotate_info.putfilename,log_file_name);

+            /*bzero(log_buf, 1024);

+            sprintf(log_buf,"log_file_name:%s\n",log_file_name);

+            lynq_response_ttyGS3(log_buf);*/

+            return lynq_ftp_up(&ftp_logrotate_info);

+        }

+        else

+        {

+            bzero(log_buf, 1024);

+            sprintf(log_buf,"+CME: ERROR %d\n",LYNQ_E_GET_LOG_FAIL);

+            lynq_response_ttyGS3(log_buf);

+        }

+     break;

+    default:

+        bzero(log_buf, 1024);

+        sprintf(log_buf,"+CME: ERROR %d\n",LYNQ_E_GET_LOG_FAIL);

+        lynq_response_ttyGS3(log_buf);

+        return -1;

+    }

+    return -1;

+}

+

+int lynq_deal_with_log_at(char **lynq_argv)//lt add @2021.12.23 for deal with AT

+{

+

+/*	

+    for(int i = 0;i < 10; i++)

+    {

+        lynq_response_ttyGS3(lynq_argv[i]);

+        lynq_response_ttyGS3("\n");

+    }

+*/

+    char lynq_log_buf[1024];

+    if(0 == strcmp(lynq_argv[0], "ftp"))

+    {

+        if(1 == lynq_ftp_login_logmodule(lynq_argv))

+        {

+

+            int lynq_logsend_test_moudle = atoi(lynq_argv[9]);

+            if(lynq_ftp_upload_logdata(lynq_logsend_test_moudle) == 0)

+            {

+            bzero(lynq_log_buf, 1024);

+            sprintf(lynq_log_buf,"+LOGS\nOK\n");

+            lynq_response_ttyGS3(lynq_log_buf);

+            }

+            else

+            {

+                bzero(lynq_log_buf, 1024);

+                sprintf(lynq_log_buf,"+CME: ERROR %d\n",LYNQ_E_FTP_SEND_FAIL);

+                lynq_response_ttyGS3(lynq_log_buf);

+            }

+        }

+        else

+        {

+            bzero(lynq_log_buf, 1024);

+            sprintf(lynq_log_buf,"+CME: ERROR %d\n",LYNQ_E_FTP_LOGIN_FAIL);

+            lynq_response_ttyGS3(lynq_log_buf);

+        }

+    }

+    else if(!strcmp(lynq_argv[0], "usb"))

+    {

+        //lynq_response_ttyGS3("!strcmp(lynq_argv[0], usb)\n");

+        bzero(lynq_log_buf, 1024);

+        sprintf(lynq_log_buf,"+CME: ERROR %d\n",LYNQ_E_LOG_CMD_ERROR);

+        lynq_response_ttyGS3(lynq_log_buf);

+    }

+    else

+    {

+        //lynq_response_ttyGS3("parase fail\n");

+        bzero(lynq_log_buf, 1024);

+        sprintf(lynq_log_buf,"+CME: ERROR %d\n",LYNQ_E_LOG_CMD_ERROR);

+        lynq_response_ttyGS3(lynq_log_buf);

+    }

+    return 1;

+}

+

+

+

+int lynq_ftp_download_atfota_package(char *string[])

+{

+    int ret = 0;

+    sprintf(ftp_atfota_info.sevname,"%s",string[0]);

+

+    ftp_atfota_info.portnum = atoi(string[1]);

+

+    sprintf(ftp_atfota_info.username,"%s",string[2]);

+    sprintf(ftp_atfota_info.pw,"%s",string[3]);

+

+

+    sprintf(ftp_atfota_info.is_pasv_mode,"%s",string[4]);

+    sprintf(ftp_atfota_info.file_type,"%s",string[5]);

+    sprintf(ftp_atfota_info.put_opt,"%s",string[6]);

+

+    sprintf(ftp_atfota_info.getfilename_path,"%s",string[7]);

+    sprintf(ftp_atfota_info.getfilename,"%s",string[8]);

+    chdir("/tmp/");

+    if(1 == lynq_ftp_login(&ftp_atfota_info))

+    {

+        if(0 == lynq_ftp_download(&ftp_atfota_info))

+        {

+            lynq_response_ttyGS3("+LYNQFOTA:\nGET FOTA FILE OK\n");

+            ret = 0;

+        }

+        else

+        {

+            lynq_response_ttyGS3("+CME: GET FOTA FILE FAIL\n");

+            ret = 1;

+        }

+    }

+    else

+    {

+        lynq_response_ttyGS3("+CME: FOTA LOGIN FAIL\n");

+        ret = 1;

+    }

+    return ret;

+}

+

+int lynq_md5_atfota_package(char *string[])

+{

+    int ret = 0;

+    int fd_down,size,fd_target;

+    char delta_data[READ_BLOCK_SIZE];

+    char input_md5_data[64] = {0};

+

+    sprintf(input_md5_data,"%s",string[0]);

+    lynq_fota_md5_flag = lynq_md5_file_verfy(UPDATA_ADDR, input_md5_data);

+    if(lynq_fota_md5_flag == 0)

+    {

+        lynq_response_ttyGS3("+LYNQFOTA:\nMD5 OK\n");

+    }

+    else

+    {

+        lynq_response_ttyGS3("MD5 FAIL\n");

+        return 1;

+    }

+

+    fd_down = open(UPDATA_ADDR,O_RDONLY);

+    if (fd_down < 0) {

+        lynq_response_ttyGS3("open source  error\n");

+        return 1;

+    }

+

+    fd_target = mtk_device_wrap_open(FLASH_DEV_DELTA,O_RDWR);

+

+    if (fd_target < 0) {

+        close(fd_down);

+        lynq_response_ttyGS3("open target  error\n");

+        return 1;

+    } 

+

+    while(( size = read(fd_down,delta_data,READ_BLOCK_SIZE))>0) {

+        mtk_device_wrap_write(fd_target,delta_data,READ_BLOCK_SIZE);

+        memset(delta_data,0,READ_BLOCK_SIZE);

+    }

+

+//    lynq_response_ttyGS3("Store upgrade data to delta success\n");

+

+    mtk_device_wrap_close(fd_target);

+    close(fd_down);

+

+    return 0;

+}

+

+int lynq_atfota_func_test(void)

+{

+    int first_run = 1; 

+    if(lynq_fota_md5_flag == 0)

+    {

+        lynq_response_ttyGS3("Recive upgrade OK\n");

+        if(0 != lynq_rock_main(first_run))

+        {

+            lynq_response_ttyGS3("Upgrade Fail\n");

+        }

+    }

+    else

+    {

+        lynq_response_ttyGS3("MD5 verify fail\n");

+        return 1;

+    }

+    return 0;

+}

+

+int lynq_atfota_test(char *argv[]) 

+{

+    if(!strcmp(argv[3], "download"))

+    {

+        if(!(strcmp(argv[4], "ftp")))

+        {

+            lynq_ftp_download_atfota_package(&argv[5]);

+        }

+    }

+    else if(!(strcmp(argv[3], "md5")))

+    {

+        lynq_md5_atfota_package(&argv[4]);

+    }

+    else if(!(strcmp(argv[3], "upgrade")))

+    {

+        lynq_atfota_func_test();

+    }

+    else

+    {

+        lynq_response_ttyGS3("fota api error!!!\n");

+    }

+    return 0;

+}

+

+#ifdef __cplusplus
+}
+#endif

diff --git a/src/lynq/framework/lynq-ril-service/src/log/lynq_send_log_data.h b/src/lynq/framework/lynq-ril-service/src/log/lynq_send_log_data.h
new file mode 100755
index 0000000..fa3bf6e
--- /dev/null
+++ b/src/lynq/framework/lynq-ril-service/src/log/lynq_send_log_data.h
@@ -0,0 +1,21 @@
+#ifndef __LYNQ_SEND_LOG_DATA_H__

+#define __LYNQ_SEND_LOG_DATA_H__

+#ifdef __cplusplus
+extern "C" {
+#endif

+

+#define MAX_LOG_LEN 101

+

+#define LYNQ_E_FTP_LOGIN_FAIL 9002 /*Ftp login fail*/

+#define LYNQ_E_FTP_SEND_FAIL 9003 /*Ftp send log fail*/

+#define LYNQ_E_GET_LOG_FAIL 9004 /*Get log fail*/

+#define LYNQ_E_LOG_CMD_ERROR 9005 /*cmd error*/

+

+int lynq_deal_with_log_at(char **lynq_argv);

+int lynq_atfota_test(char *argv[]);

+

+#ifdef __cplusplus
+}
+#endif
+

+#endif //__LYNQ_LOGSEND_TEST_H__

diff --git a/src/lynq/framework/lynq-ril-service/src/makefile b/src/lynq/framework/lynq-ril-service/src/makefile
index 39ae608..f407000 100755
--- a/src/lynq/framework/lynq-ril-service/src/makefile
+++ b/src/lynq/framework/lynq-ril-service/src/makefile
@@ -66,7 +66,7 @@
   -I$(LOCAL_PATH)/ecall/gost/sslp/teledata \
   -I$(LOCAL_PATH)/rndis \
   -I$(LOCAL_PATH)/factory \
-  -I$(LOCAL_PATH)/fota \
+  -I$(LOCAL_PATH)/log \
   -I$(ROOT)$(includedir)/logger \
   -I$(ROOT)$(includedir)/liblog \
   -I$(ROOT)$(includedir)/include  \
@@ -108,6 +108,9 @@
     -llynq-log \
     -lsqlite3 \
     -lnandapi  \
+    -llynq-protcl \
+    -llynq-fota \
+    -llynq-logdata-handle \
 
 ifeq ($(strip $(TARGET_PLATFORM)), mt2735)
 LOCAL_LIBS += -luciwrapper
@@ -116,7 +119,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 sms/lynqSmsManager/*.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 sms/lynqSmsManager/*.cpp  rndis/*.cpp factory/*.cpp log/*.cpp)
 
 EXECUTABLE = lynq-ril-service
 
diff --git a/src/lynq/framework/lynq-ril-service/src/ril.cpp b/src/lynq/framework/lynq-ril-service/src/ril.cpp
index 74de6c2..54d2185 100755
--- a/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -81,6 +81,8 @@
 #include "lynq_user.h"
 #include "lynq_rndis.h"
 #include "lynq_factory.h"
+/*victor add*/
+#include "lynq_send_log_data.h"
 /*lei add*/
 /*Warren add for t800 RIL service 2021_12_10 end*/
 
@@ -6401,11 +6403,11 @@
                         lynqInfo(argv);
                         break;
                     }
-                    // case LYNQ_GOTO_PLAT_REQ:
-                    // {
-                    //     lynq_deal_with_log_at(&argv[3]);
-                    //     break;
-                    // }
+                    case LYNQ_GOTO_PLAT_REQ:
+                    {
+                        lynq_deal_with_log_at(&argv[3]);
+                        break;
+                    }
                     case LYNQ_GOTO_RNDIS_REQ:
                     {
                         lynq_get_rndis_data(buffer);