Merge "[feature]at+cgmr/at+screen" into SZZT
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
index a6737de..58df14c 100755
--- a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
@@ -143,7 +143,7 @@
}
return 0;
}
-int lynqSetArgv(char **argv, char** Point,const char* value)
+void lynqSetArgv(char **argv, char** Point,const char* value)
{
*argv=*Point;
sprintf(*argv, "%s", value);
@@ -496,24 +496,53 @@
return 0;
}
+void * thread_test(void * arg)
+{
+ FILE *fp;
+ char buf[1024*3] = {0};
+ sprintf(buf, "echo 11 | emdlogger_ctrl 2>&1");
+ fp=popen(buf, "r");
+ if(!fp){
+ perror("popen:");
+ }
+ while(fgets(buf, 4072, fp) != NULL){}
+ pclose(fp);
+ return 0;
+}
+
int lynq_screen(int argc,char*argv[],char *rilReq, int uToken){
- system("echo 11 | emdlogger_ctrl");
- sleep(5);
+ char eBuf[64] = {0};
+ sprintf(eBuf,"\nOK\n\0");
+ int n = write(ttyGS3_fd,eBuf,strlen(eBuf));
+ if(n<0)
+ {
+ perror("lynq resp write:");
+ }
+ pthread_t thid;
+ int ret = pthread_create(&thid, NULL, thread_test, NULL);
+ if(ret != 0){
+ RLOGD("pthread_create error!!!");
+ return ret;
+ }
system("mdlogctl stop");
system("echo mem > /sys/power/autosleep");
system("echo 0 > /dev/wmtWifi");
system("echo 7 9 0 > /proc/driver/wmt_dbg");
- char *new_argv[10] = {};
+ char *new_argv[2] = {};
if(argc < 4)
{
RLOGD("parameter error!!!");
- return 1;
+ return -1;
}
new_argv[0] = (char *)rilReq;
new_argv[1] = argv[3];
android::lynqSendToRil(2,new_argv,uToken);
- sleep(1);
system("disown -a");
+ ret = pthread_join(thid,NULL);
+ if(ret != 0){
+ RLOGD("pthread_join error!!!");
+ return ret;
+ }
return 0;
}
diff --git a/src/lynq/framework/lynq-atsvc/src/ril.cpp b/src/lynq/framework/lynq-atsvc/src/ril.cpp
index 7c3c9e5..1b8d2ab 100755
--- a/src/lynq/framework/lynq-atsvc/src/ril.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/ril.cpp
@@ -3802,6 +3802,49 @@
#endif
+static void parse_version_buf(char *buf){
+ char *p = buf;
+ int flag = 0;
+ int recv = 0;
+ int tmp = -1;
+ while (*p != '\0')
+ {
+ recv++;
+ if(*p == '"'){
+ tmp = recv;
+ }
+ if(tmp >= 0){
+ buf[flag++] = buf[tmp++];
+ if(buf[flag-1] == '\"'){
+ buf[flag-1] = '\0';
+ }
+ }
+ *p++;
+ }
+ return;
+}
+
+static int lynq_get_version(){
+ FILE *fp;
+ char buf[128] = {0};
+ char cgmr[128] = {0};
+ sprintf(buf, "getprop ro.lynq_sw_version 2>&1");
+ fp=popen(buf, "r");
+ int n;
+ while(fgets(buf, sizeof(buf), fp) != NULL){
+
+ }
+ parse_version_buf(buf);
+ sprintf(cgmr, "%s %s", "+CGMR: ", buf);
+ n = write(ttyGS3_fd,cgmr,strlen(cgmr));
+ if(n<0)
+ {
+ perror("lynq resp write:");
+ }
+ pclose(fp);
+ return 0;
+}
+
extern "C" void
RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen) {
RequestInfo *pRI;
@@ -4028,12 +4071,15 @@
{
if(pRI->lynqEvent==1)
{
- int n = write(ttyGS3_fd,response,responselen);
- if(n<0)
- {
- perror("lynq resp write:");
- }
- printf("n = %d\n",n);
+ if(strstr((const char*)response,"+CGMR")){
+ lynq_get_version();
+ }
+ int n = write(ttyGS3_fd,response,responselen);
+ if(n<0)
+ {
+ perror("lynq resp write:");
+ }
+ printf("n = %d\n",n);
}
}
default: