[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/meta/meta-mediatek-ivt/recipes-telephony/libmodem-afe-ctrl-service/files/libmodem-afe-ctrl-server.c b/meta/meta-mediatek-ivt/recipes-telephony/libmodem-afe-ctrl-service/files/libmodem-afe-ctrl-server.c
new file mode 100755
index 0000000..fa36756
--- /dev/null
+++ b/meta/meta-mediatek-ivt/recipes-telephony/libmodem-afe-ctrl-service/files/libmodem-afe-ctrl-server.c
@@ -0,0 +1,140 @@
+#include <string.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <pthread.h>
+
+#include "modem_afe_ctrl.h"
+static char *server_rcv = "/tmp/libmodem-afe-ctrl/server_rcv";
+static char *server_send = "/tmp/libmodem-afe-ctrl/server_send";
+
+int rcv_handler;
+int send_handler;
+
+static pthread_t g_pthread_rcv;
+static pthread_t g_pthread_dummy;
+
+/* read message, exec func and return result*/
+static void *func_operator(void *arg);
+
+/* a dummy operator to hold server_rcv pipe*/
+static void *dummy_operator(void *arg);
+
+static void *func_operator(void *arg)
+{
+	char buf[256];
+	char string_out[256];
+	int size = 0, function_type = 0, first_param = 0;
+	int str_output_size = 0;
+	int func_result;
+	char *first_param_str;
+	char buf_response[256];
+
+	rcv_handler = open(server_rcv, O_RDONLY);
+	send_handler = open(server_send, O_WRONLY);
+
+	while(1){
+		size = read(rcv_handler, buf, 256);
+		if(!size) {
+			printf("reset fifo! \n");
+			system("echo reset_pipe");
+			close(rcv_handler);
+			rcv_handler = open(server_rcv, O_RDONLY);
+			continue;
+		}
+		/* finish string */
+		buf[size] = '\0';
+
+		/* parse string */
+		strtok_r(buf, ",", &first_param_str);
+		function_type = atoi(buf);
+		switch(function_type) {
+		case FUNC_ENABLE_PHONE_CALL_AFE_PATH:
+			first_param = atoi(first_param_str);
+			func_result = enable_phone_call_AFE_path_for_service(first_param);
+			str_output_size = sprintf(buf_response, "%d", func_result);
+			break;
+		case FUNC_DISABLE_PHONE_CALL_AFE_PATH:
+			func_result = disable_phone_call_AFE_path_for_service();
+			str_output_size = sprintf(buf_response, "%d", func_result);
+			break;
+		case FUNC_GET_DEFAULT_VALUE:
+			func_result = get_default_device_for_service();
+			str_output_size = sprintf(buf_response, "%d", func_result);
+			break;
+		case FUNC_SET_UL_ANALOG_GAIN:
+			first_param = atoi(first_param_str);
+			func_result = set_UL_analog_gain_for_service(first_param);
+			str_output_size = sprintf(buf_response, "%d", func_result);
+			break;
+		case FUNC_SET_DL_ANALOG_GAIN:
+			first_param = atoi(first_param_str);
+			func_result = set_DL_analog_gain_for_service(first_param);
+			str_output_size = sprintf(buf_response, "%d", func_result);
+			break;
+		case FUNC_DYNAMIC_SWITCH_PHONE_CALL_PATH:
+			first_param = atoi(first_param_str);
+			func_result = dynamic_switch_phone_call_path_for_service(first_param);
+			str_output_size = sprintf(buf_response, "%d", func_result);
+			break;
+		case FUNC_SET_BT_WB:
+			first_param = atoi(first_param_str);
+			func_result = set_BT_wb(first_param);
+			str_output_size = sprintf(buf_response, "%d", func_result);
+			break;
+		case FUNC_SET_PHONE_CALL_SAMPLERATE:
+			first_param = atoi(first_param_str);
+			func_result = set_phonecall_rate_for_service(first_param);
+			str_output_size = sprintf(buf_response, "%d", func_result);
+			break;
+		default:
+			break;
+		}
+
+		/*send result*/
+		write(send_handler, buf_response, str_output_size);
+
+	}
+	close(send_handler);
+	close(rcv_handler);
+}
+
+static void *dummy_operator(void *arg)
+{
+	int dummy_handler = 0;
+	dummy_handler = open(server_rcv, O_WRONLY);
+	while(1) {
+		sleep(1000000);
+	}
+	close(dummy_handler);
+}
+
+
+int main()
+{
+
+	struct stat st = {0};
+
+	if (stat("/tmp/libmodem-afe-ctrl", &st) == -1) {
+		mkdir("/tmp/libmodem-afe-ctrl", 0700);
+	}
+
+	mkfifo(server_rcv, 0600);
+	mkfifo(server_send, 0600);
+
+	pthread_create(&g_pthread_rcv, NULL, func_operator, NULL);
+	/* make a client to prevent rcv pipe exit*/
+	pthread_create(&g_pthread_dummy, NULL, dummy_operator, NULL);
+
+	while(1){
+		sleep(1000000);
+	}
+
+	unlink(server_rcv);
+	unlink(server_send);
+
+	return 0;
+}