[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit

Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/app/zte_amt/amt_func_test.c b/ap/app/zte_amt/amt_func_test.c
new file mode 100755
index 0000000..f4626e2
--- /dev/null
+++ b/ap/app/zte_amt/amt_func_test.c
@@ -0,0 +1,319 @@
+/**

+ * 

+ * @file      amt_func_test.c

+ * @brief     

+ *            This file is part of FTM.

+ *            AMT´úÀíÓ¦Óòã

+ *            

+ * @details   

+ * @author    Tools Team.

+ * @email     

+ * @copyright Copyright (C) 2013 Sanechips Technology Co., Ltd.

+ * @warning   

+ * @date      2020/11/25

+ * @version   1.1

+ * @pre       

+ * @post      

+ *            

+ * @par       

+ * Change History :

+ * ---------------------------------------------------------------------------

+ * date        version  author         description

+ * ---------------------------------------------------------------------------

+ * 2020/11/25  1.0      liu.xin       Create file

+ * ---------------------------------------------------------------------------

+ * 

+ * 

+ */

+

+

+#include <sys/msg.h>

+#include <stdarg.h>

+#include <stdlib.h>

+#include <stdio.h>

+#include <errno.h>

+#include <fcntl.h>

+#include <string.h>

+#include <sys/types.h> 

+#include <semaphore.h>

+#include <time.h>

+#include <sys/stat.h>

+#include "softap_api.h"

+#include "kwatch_msg.h"

+#include "amt.h"

+#include "amt_func_test.h"

+#include "port_com.h"

+

+

+

+

+

+static fd_set g_uart_fdsread;

+static int g_uart_fd_max = 0;

+static int g_fd_uart0 = -1;

+static int g_fd_uart1 = -1;

+static int g_fd_uart2 = -1;

+static int g_close_uart = 0;

+

+

+

+

+

+static void set_fd(int fd)

+{

+    FD_SET(fd, &g_uart_fdsread);

+    if (fd >= g_uart_fd_max)

+    {

+        g_uart_fd_max = fd + 1;

+    }

+}

+

+static void clr_fd(int fd)

+{

+    FD_CLR(fd, &g_uart_fdsread);

+}

+

+static int init_uart_device(char*uart_path)

+{

+   

+    int fd = open(uart_path, O_RDWR);

+

+    if (fd < 0)

+    {

+        AmtPrintf(AMT_ERROR "Failed to open \"%s\"!\n", uart_path);

+        return -1;

+    }

+

+    uart_set(fd);

+    return fd;

+}

+

+/**

+ * @brief ¶ÁÈ¡uart Êý¾ÝµÄÏ̺߳¯Êý

+ * @param[in] args Ï̺߳¯Êý²ÎÊý

+ * @return N/A

+ * @note

+ * @see 

+ */

+static void* ReadUartThread(void* args)

+{

+    int ret = -1;

+    int read_len = 0;

+    char *receive_buffer = malloc(MAX_UART_DATA_LENGTH);

+	UNUSED(args);

+    if (receive_buffer == NULL)

+    {

+        return NULL;

+    }

+    memset(receive_buffer,0,MAX_UART_DATA_LENGTH);

+            

+    while (!g_close_uart)

+	{

+	    ret = select(g_uart_fd_max, &g_uart_fdsread, NULL, NULL, NULL);

+		if (ret <= 0)

+	    {

+	        AmtPrintf(AMT_ERROR "select error: %s!\n", strerror(errno));

+		    continue;

+	    }

+			

+	    if (g_fd_uart0 >= 0 && FD_ISSET(g_fd_uart0, &g_uart_fdsread))

+	    {

+	        memset(receive_buffer,0,MAX_UART_DATA_LENGTH);

+			read_len = PortRecv(g_fd_uart0, (unsigned char *)receive_buffer, MAX_UART_DATA_LENGTH - 1, NO_WAIT);

+		    if(read_len > 0)

+			{

+			    receive_buffer[read_len] = '\0';

+				AmtPrintf(AMT_INFO "ttyS0 receive[%s]\n", receive_buffer);

+				if(!strcmp(receive_buffer,"amt uart test\r\n"))

+				{

+				    PortSend(g_fd_uart0, "ttyS0 test OK!", strlen("ttyS0 test OK!"), WAIT_ALL);

+				}

+				else

+				{

+                    AmtPrintf(AMT_ERROR "ttyS0 input error!\n");

+				}

+			    

+			}

+		}

+		if (g_fd_uart1 >= 0 && FD_ISSET(g_fd_uart1, &g_uart_fdsread))

+		{

+			memset(receive_buffer,0,MAX_UART_DATA_LENGTH);

+			read_len = PortRecv(g_fd_uart1, (unsigned char *)receive_buffer, MAX_UART_DATA_LENGTH - 1, NO_WAIT);

+			if(read_len > 0)

+			{

+			    receive_buffer[read_len] = '\0';

+				AmtPrintf(AMT_INFO "ttyS1 receive[%s]\n", receive_buffer);

+				if(!strcmp(receive_buffer,"amt uart test\r\n"))

+				{

+				    PortSend(g_fd_uart1, "ttyS1 test OK!", strlen("ttyS1 test OK!"), WAIT_ALL);

+				}

+				

+				else

+				{

+                    AmtPrintf(AMT_ERROR "ttyS1 input error!\n");

+				}

+			}

+		}

+		if (g_fd_uart2 >= 0 && FD_ISSET(g_fd_uart2, &g_uart_fdsread))

+		{

+			memset(receive_buffer,0,MAX_UART_DATA_LENGTH);

+			read_len = PortRecv(g_fd_uart2, (unsigned char *)receive_buffer, MAX_UART_DATA_LENGTH - 1, NO_WAIT);

+			if(read_len > 0)

+			{

+			    receive_buffer[read_len] = '\0';

+				AmtPrintf(AMT_INFO "ttyS2 receive[%s]\n", receive_buffer);

+				if(!strcmp(receive_buffer,"amt uart test\r\n"))

+				{

+				    PortSend(g_fd_uart2, "ttyS2 test OK!", strlen("ttyS2 test OK!"), WAIT_ALL);

+				}

+				else

+				{

+                    AmtPrintf(AMT_ERROR "ttyS2 input error!\n");

+				}

+			}

+		}

+	}

+

+    free(receive_buffer);

+	receive_buffer = NULL;

+    return NULL;

+}

+

+

+

+

+/**

+ * @brief AMTÍâÉè²âÊÔ³õʼ»¯

+ * @return ³É¹¦·µ»Ø0, ʧ°Ü·µ»Ø-1

+ * @note

+ * @see 

+ */

+int Amt_FuncTest_Init(void)

+{

+    return 0;

+}

+

+/**

+ * @brief AMTÍâÉèÏûÏ¢´¦Àíº¯Êý

+ * @param[in] msg_id FID

+ * @param[in] msg_buf ½ÓÊÕÊý¾Ýbuffer

+ * @param[in] msg_len ½ÓÊÕÊý¾Ýbuffer³¤¶È

+ * @return ³É¹¦·µ»Ø0, ʧ°Ü·µ»Ø-1

+ * @note

+ * @see 

+ */

+int Amt_FuncTest_ProcessMsg(unsigned int msg_id, unsigned char *msg_buf, unsigned int msg_len)

+{

+    unsigned char result = 1; 

+	

+    switch(msg_id)

+    {

+        case FID_OPEN_UART:

+		{

+            //´ò¿ª´®¿Ú

+             g_close_uart = 0;

+             FD_ZERO(&g_uart_fdsread);

+             g_fd_uart0 = init_uart_device(UART0_DEV);

+			 AmtPrintf(AMT_INFO "g_fd_uart0 = %d.\n", g_fd_uart0);

+			 if (g_fd_uart0 >= 0)

+             {

+                 set_fd(g_fd_uart0);

+			 }

+			 g_fd_uart1 = init_uart_device(UART1_DEV);

+			 AmtPrintf(AMT_INFO "g_fd_uart1 = %d.\n", g_fd_uart1);

+			 if (g_fd_uart1 >= 0)

+             {

+                 set_fd(g_fd_uart1);

+			 }

+			 g_fd_uart2 = init_uart_device(UART2_DEV);

+			 AmtPrintf(AMT_INFO "g_fd_uart2 = %d.\n", g_fd_uart2);

+			 if (g_fd_uart2 >= 0)

+             {

+                 set_fd(g_fd_uart2);

+			 }

+			 if((g_fd_uart0 == -1)&&(g_fd_uart1 == -1)&&(g_fd_uart2 == -1))

+			 {

+			     unsigned char ret = 1; 

+			     if (Amt_CreateResponse(msg_id, (unsigned char*)&ret, sizeof(unsigned char)) == -1)

+                 {

+                     AmtPrintf(AMT_ERROR "%s: Send data failure.\n", __FUNCTION__);

+                 }

+                 else

+                 {

+                     AmtPrintf(AMT_INFO "%s: Send data success.\n", __FUNCTION__);

+                 }

+			 }

+			 else

+			 {

+                 unsigned char ret = 0; 

+			     if (Amt_CreateResponse(msg_id, (unsigned char*)&ret, sizeof(unsigned char)) == -1)

+                 {

+                     AmtPrintf(AMT_ERROR "%s: Send data failure.\n", __FUNCTION__);

+                 }

+                 else

+                 {

+                     AmtPrintf(AMT_INFO "%s: Send data success.\n", __FUNCTION__);

+                 }

+				 //´´½¨Ï̼߳àÌý´®¿Ú

+

+				 pthread_t uart_read_thread;

+                 if (pthread_create(&uart_read_thread, NULL, ReadUartThread, NULL) != 0)

+                 {

+                     AmtPrintf(AMT_ERROR "Failed to create uart read thread!\n");

+                     return -1;

+                 }

+				 

+			}

+            

+            break;

+		}

+		case FID_CLOSE_UART:

+		{

+			AmtPrintf(AMT_INFO "receive FID_CLOSE_UART\n");

+			g_close_uart = 1;

+		    if (g_fd_uart0 >= 0)

+            {

+                close(g_fd_uart0);

+            }

+			if (g_fd_uart1 >= 0)

+            {

+                close(g_fd_uart1);

+            }

+			if (g_fd_uart2 >= 0)

+            {

+                close(g_fd_uart2);

+            }

+			if (Amt_CreateResponse(msg_id, NULL, 0) == -1)

+            {

+                AmtPrintf(AMT_ERROR "%s: Send data failure.\n", __FUNCTION__);

+            }

+            else

+            {

+                AmtPrintf(AMT_INFO "%s: Send data success.\n", __FUNCTION__);

+            }

+            break;

+		}

+		default:

+			break;

+

+	}

+   	

+    return 0;

+}

+

+/**

+ * @brief AMTÍâÉèÏûÏ¢·´À¡¸øPC

+ * @param[in] msg_id FID

+ * @param[in] result ״̬Âë

+ * @param[in] msg_buf ½ÓÊÕÊý¾Ýbuffer

+ * @param[in] msg_len ½ÓÊÕÊý¾Ýbuffer³¤¶È

+ * @return ³É¹¦·µ»Ø0, ʧ°Ü·µ»Ø-1

+ * @note

+ * @see 

+ */

+int Amt_FuncTest_SendMsg(unsigned int msg_id, int result, unsigned char *msg_buf, unsigned int msg_len)

+{

+    return 0;

+}

+

+