| /* | 
 |  * | 
 |  * * Copyright 2023 | 
 |  * | 
 |  * This program is free software; you can redistribute it and/or modify | 
 |  * it under the terms of the GNU General Public License as published by | 
 |  * the Free Software Foundation; either version 2 of the License, or | 
 |  * (at your option) any later version. | 
 |  * | 
 |  * This program is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 |  * GNU General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU General Public License | 
 |  * along with this program; if not, write to the Free Software | 
 |  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
 |  * | 
 |  */ | 
 | #include "zlog_com.h" | 
 |  | 
 | /** | 
 |  * ºê¶¨Òå | 
 |  */ | 
 |  | 
 | /** | 
 |  * Íⲿ±äÁ¿ÒýÓà | 
 |  */ | 
 | extern int 	port; | 
 | extern int 	debug; | 
 | extern char	*machinename; | 
 | extern char	*sttyparms; | 
 | extern char	*linkname; | 
 | extern int	isdaemon; | 
 | extern int	curConnects; | 
 | extern int	writeonly; | 
 | extern char	*sdevname; | 
 | extern int	maxConnects; | 
 | extern T_COMM_FS_PARAM gFsSaveParam; | 
 |  | 
 | /** | 
 |  * Íⲿº¯ÊýÉùÃ÷ | 
 |  */ | 
 | extern int zLogAgt_Savefs_Main(int fd_devfile); | 
 | extern int zLogAgt_NetSerial_Main(int fd_usb); | 
 |  | 
 | /** | 
 |  * È«¾Ö±äÁ¿¶¨Òå | 
 |  */ | 
 |  | 
 | /** | 
 | * ¾Ö²¿º¯ÊýÉùÃ÷ | 
 |  */ | 
 | static void pusage(char *progname);  | 
 |  | 
 | /** | 
 |  * ¾Ö²¿º¯Êý¶¨Òå | 
 |  */ | 
 | int zLogAgt_argv_proc(int argc, char *argv[]) | 
 | { | 
 |     int opt; | 
 |     extern char *optarg; | 
 |      | 
 |     while ((opt=getopt(argc,argv,"ed:f:t:m:p:r:s:l:wx:")) != EOF) | 
 |         switch (opt) { | 
 |         case 'd': | 
 |             sdevname = optarg; | 
 |             break; | 
 |         case 'f': | 
 |             gFsSaveParam.localFsPath = optarg; | 
 |             break; | 
 |         case 't': | 
 |             gFsSaveParam.tMaxLogsize = atoi(optarg); | 
 |             break; | 
 |         case 'e': | 
 |             isdaemon = 1; | 
 |             break; | 
 |         case 'm': | 
 |             maxConnects = atoi(optarg); | 
 |             break; | 
 |         case 'p': | 
 |             port = atoi(optarg); | 
 |             break; | 
 |         case 'r': | 
 |             machinename = optarg; | 
 |             break; | 
 |         case 's': | 
 |             sttyparms = optarg; | 
 |             break; | 
 |         case 'l': | 
 |             linkname = optarg; | 
 |             break; | 
 |         case 'x': | 
 |             debug = atoi(optarg); | 
 |             break; | 
 |         case 'w': | 
 |             writeonly = 1; | 
 |             break;     | 
 |         default: | 
 |             pusage(argv[0]); | 
 |             break; | 
 |         } | 
 | } | 
 |  | 
 | static void pusage(char *progname)  | 
 | { | 
 |     printf("log trace serial version 1.3.  Usage:\n"); | 
 |     printf("local save:[-d devicepath] [-f \"log save path\"][-s \"stty params\"]  \n\n"); | 
 |     printf("net serial:[-d devicepath] [-r machinename] [-p netport] [-s \"stty params\"] [-m maxconnect] \n\n"); | 
 |     printf("-d devpath    I/O device, either serial port or pseudo-tty master: (for example: ttyUSB0)\n");     | 
 |     printf("-f local fs path    Specifiy log save path: (for example: /tmp/logfile)\n");     | 
 |     printf("-t total log size    Specifiy the total log size can be saved /\n"); | 
 |     printf("-r machinename    The remote machine name to connect to.  If not\n"); | 
 |     printf("            specified, then this is the server side.\n"); | 
 |     printf("-p netport    Specifiy IP port# (default 23000)\n"); | 
 |     printf("-s     \"stty params\"    If serial port, specify stty parameters, see man stty\n"); | 
 |     printf("-m max-connections    Maximum number of simultaneous client connections to allow\n"); | 
 |     printf("-e                Run as a daemon program\n"); | 
 |     printf("-x debuglevel    Set debug level, 0 is default, 1,2 give more info\n"); | 
 |     printf("-l linkname        If the device name is a pseudo-tty, create a link to the slave\n"); | 
 |     printf("-w              Only write to the device, no reading\n"); | 
 | } | 
 |  | 
 | /** | 
 |  * main º¯Êý¶¨Òå | 
 |  */ | 
 | int main(int argc, char *argv[]) | 
 | { | 
 |     int devfd = 0; | 
 |      | 
 |     zLogAgt_argv_proc(argc, argv); | 
 |      | 
 |     if (sdevname == NULL) { | 
 |         printf("devpath is not config\n"); | 
 |         exit(1); | 
 |     }     | 
 |      | 
 |     devfd = open(sdevname, O_RDWR, 0755); | 
 |     if (devfd < 0) { | 
 |         printf("Open of %s failed: %m\n", sdevname); | 
 |         exit(2); | 
 |     } | 
 |  | 
 |     if (sttyparms)  | 
 |         set_tty(devfd, sttyparms); | 
 |     else | 
 |         set_tty(devfd, ZLOG_DEFAULT_TTYBAUD); | 
 |          | 
 |     /*Èç¹û±£´æµ½´ó°å±¾µØÎļþϵͳ*/ | 
 |     if(gFsSaveParam.localFsPath)      | 
 |         zLogAgt_Savefs_Main(devfd); | 
 |     else  | 
 |         zLogAgt_NetSerial_Main(devfd); | 
 | } | 
 |  |