[Feature] add GA346 baseline version

Change-Id: Ic62933698569507dcf98240cdf5d9931ae34348f
diff --git a/lib/liblynq-system-own/include/lynq-system-own.h b/lib/liblynq-system-own/include/lynq-system-own.h
new file mode 100644
index 0000000..0e5ff80
--- /dev/null
+++ b/lib/liblynq-system-own/include/lynq-system-own.h
@@ -0,0 +1,17 @@
+#ifndef LYNQ_SYSTEM_OWN

+#define LYNQ_SYSTEM_OWN

+typedef void (*LYNQ_Lpm_Handler_T) ( int lpm_edge);

+int LYNQ_Lpm_Init(LYNQ_Lpm_Handler_T lynq_lpm_handler);

+int LYNQ_Lpm_Deinit();

+int LYNQ_Autosleep_Enable(int enable);

+int LYNQ_SLP_WakeLock_Lock(const char *name);

+int LYNQ_SLP_WakeLock_Unlock(const char *name);

+void LYNQ_Power_Mode(char *power_mode);

+void LYNQ_Power_Down(int mode);

+int LYNQ_Adc_Show(int adc_num);

+void lynq_lpm_handler(int lpm_edge);

+LYNQ_Lpm_Handler_T LYNQ_Lpm_Handler=NULL;

+int last_state=0;

+#endif

+

+

diff --git a/lib/liblynq-system-own/makefile b/lib/liblynq-system-own/makefile
new file mode 100644
index 0000000..97a234e
--- /dev/null
+++ b/lib/liblynq-system-own/makefile
@@ -0,0 +1,57 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+                -std=gnu++14 \
+                -g -Os \
+                -flto \
+                -fPIC \
+                -fpermissive \
+
+$(warning ################# RITA ROOT: $(ROOT),includedir:$(includedir))
+LOCAL_PATH   = .
+
+LOCAL_C_INCLUDES = \
+  -I. \
+  -I$(LOCAL_PATH)/include \
+
+LOCAL_LIBS := \
+	-L. \
+  	-ldl \
+
+
+SOURCES = $(wildcard *.c wildcard *.h src/*.c)
+
+EXECUTABLE = liblynq-system-own.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/lib/liblynq-system-own/power_mode_own.sh b/lib/liblynq-system-own/power_mode_own.sh
new file mode 100644
index 0000000..188cc03
--- /dev/null
+++ b/lib/liblynq-system-own/power_mode_own.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+case "$1" in
+	"flight")
+		echo "Sys flight mode" >/dev/console
+		killall -9 lynq-function-test
+        echo 11 | emdlogger_ctrl  ##set log status
+		sleep 1	                 
+        mdlogctlstop              ##stop modem log
+        echo mem > /sys/power/autosleep  ##set autosleep modem
+        /usr/bin/telephony &				##initialize Ril function.
+        sleep 5
+        sh/usr/bin/demoscript/DSDS/set_default_sim_all_except_data.sh 0			##switch sim card 0
+        echo "RIL_REQUEST_RADIO_POWER 0" > dev/udp/127.0.0.1/8000					##turn off radio off sim card 0
+        sh/usr/bin/demoscript/DSDS/set_default_sim_all_except_data.sh 1				##switch sim card 1
+        echo "RIL_REQUEST_RADIO_POWER 0" >/dev/udp/127.0.0.1/8000				##turn off radio off sim card 1
+	;;
+
+	"standby")
+		echo "Sys standby mode" >/dev/console
+		killall -9 lynq-function-test
+		echo 7 | emdlogger_ctrl
+		/usr/bin/telephony &
+		sleep 5
+		sh /usr/bin/demoscript/Network_API/SetPrefferredNetworkType.sh 11
+		sh /usr/bin/demoscript/DSDS/set_default_sim_all_except_data.sh 1
+		echo "RIL_REQUEST_SCREEN_STATE 0" > /dev/udp/127.0.0.1/8000
+		sh /usr/bin/demoscript/DSDS/set_default_sim_all_except_data.sh 0
+		echo "RIL_REQUEST_SCREEN_STATE 0" > /dev/udp/127.0.0.1/8000
+		echo mem > /sys/power/autosleep
+	;;
+
+	"talking")
+		echo "Sys standby mode" >/dev/console
+		killall -9 lynq-function-test
+		echo 7 | emdlogger_ctrl
+		/usr/bin/telephony &
+		sleep 5
+		sh /usr/bin/demoscript/Network_API/SetPrefferredNetworkType.sh 2
+		sh /usr/bin/demoscript/DSDS/set_default_sim_all_except_data.sh 1
+		echo "RIL_REQUEST_SCREEN_STATE 0" > /dev/udp/127.0.0.1/8000
+		sh /usr/bin/demoscript/DSDS/set_default_sim_all_except_data.sh 0
+		echo "RIL_REQUEST_SCREEN_STATE 0" > /dev/udp/127.0.0.1/8000
+		sh /usr/bin/demoscript/CC_API/dialACall.sh <number>
+		echo mem > /sys/power/autosleep
+	;;
+
+	*)
+		echo $0 'power          - start system'
+		;;
+esac
\ No newline at end of file
diff --git a/lib/liblynq-system-own/src/lynq-system-own.c b/lib/liblynq-system-own/src/lynq-system-own.c
new file mode 100644
index 0000000..0c5334a
--- /dev/null
+++ b/lib/liblynq-system-own/src/lynq-system-own.c
@@ -0,0 +1,114 @@
+#include <stdio.h>

+#include <string.h>

+#include <stdlib.h>

+#include <stdbool.h>

+#include <unistd.h>

+#include <time.h>

+#include <lynq-system-own.h>

+

+void lynq_lpm_handler(int lpm_edge)

+{

+	FILE * fp = NULL;

+	char buft[32] = {0};

+	char * cmd="cat /sys/devices/platform/10005000.pinctrl/mt_gpio | grep 000: | cut -b 8";

+	//printf("[%s][%d]cmd=[%s]\n",__FUNCTION__,__LINE__,cmd);	

+

+	fp = popen (cmd, "r");

+	if (fp) {

+		if (fgets(buft, sizeof(buft), fp) != NULL) {		

+			//printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,buft);					

+			strtok(buft, "\n");

+			

+		}

+		pclose(fp);

+	}

+	//printf("[%s][%d]last_state %d\n",__FUNCTION__,__LINE__,last_state);

+	if(atoi(buft)!=last_state){

+		last_state=atoi(buft);

+		lpm_edge=atoi(buft);

+		printf("[%s][%d]lpm_edge=%d\n",__FUNCTION__,__LINE__,lpm_edge);

+	}

+}

+

+int LYNQ_Lpm_Init (LYNQ_Lpm_Handler_T lynq_lpm_handler)

+{

+	LYNQ_Lpm_Handler=lynq_lpm_handler;

+	return 0;

+}

+int LYNQ_Lpm_Deinit (void)

+{

+	LYNQ_Lpm_Handler=NULL;

+	return 0;

+}

+

+void suspendOperatingSystem()

+{

+	system("killall -9 lynq-function-test");

+	system("echo 7 | emdlogger_ctrl");

+	system("/usr/bin/telephony &");

+	system("sleep 5");

+	system("sh /usr/bin/demoscript/DSDS/set_default_sim_all_except_data.sh 0");

+	system("sh /usr/bin/demoscript/Network_API/RadioOn.sh 0");

+	system("sh /usr/bin/demoscript/DSDS/set_default_sim_all_except_data.sh 1");

+	system("sh /usr/bin/demoscript/Network_API/RadioOn.sh 0");

+	system("echo mem > /sys/power/autosleep");

+}

+

+int LYNQ_Autosleep_Enable(int enable)

+{

+	if(enable){

+		suspendOperatingSystem();

+	}

+	return 0;

+}

+

+int LYNQ_SLP_WakeLock_Lock(const char *name)

+{

+    char gyCmd[64] = {0};

+	sprintf(gyCmd,"echo %s > /sys/power/wake_lock",name);

+	system(gyCmd);

+}

+

+int LYNQ_SLP_WakeLock_Unlock(const char *name)

+{

+    char gyCmd[64] = {0};

+	sprintf(gyCmd,"echo %s > /sys/power/wake_unlock",name);

+	system(gyCmd);	

+}

+

+void LYNQ_Power_Mode(char *power_mode)

+{

+    char gyCmd[64] = {0};

+	sprintf(gyCmd,"sh /etc/powerscript/power_mode_own %s",power_mode);

+	system(gyCmd);

+}

+

+void LYNQ_Power_Down(int mode)

+{

+	if(mode){

+		system("reboot");

+	}else{

+		system("init 0");

+	}

+}

+

+int LYNQ_Adc_Show(int adc_num)

+{

+	FILE * fp = NULL;

+	char buft[32] = {0};

+	char * cmd="cat /sys/bus/iio/devices/iio:device0/in_voltage0_BATADC_input";

+	//printf("[%s][%d]cmd=[%s]\n",__FUNCTION__,__LINE__,cmd);	

+

+	fp = popen (cmd, "r");

+	if (fp) {

+		if (fgets(buft, sizeof(buft), fp) != NULL) {		

+			//printf("[%s][%d]%s\n",__FUNCTION__,__LINE__,buft);					

+			strtok(buft, "\n");

+			

+		}

+		pclose(fp);

+	}

+	return atoi(buft);

+}

+

+