mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			Package: add proper logcat source (#1361)
							parent
							
								
									bfca38f1ef
								
							
						
					
					
						commit
						aaa7d1824d
					
				|  | @ -108,6 +108,7 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y | |||
| BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -108,6 +108,7 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y | |||
| BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -123,6 +123,7 @@ BR2_PACKAGE_ZEROTIER_ONE=y | |||
| # BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -108,6 +108,7 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y | |||
| BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -111,6 +111,7 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y | |||
| BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -108,6 +108,7 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y | |||
| BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -114,6 +114,7 @@ BR2_PACKAGE_WIFIBROADCAST=y | |||
| BR2_PACKAGE_MAVFWD=y | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -111,6 +111,7 @@ BR2_PACKAGE_WIREGUARD_TOOLS=y | |||
| # BR2_PACKAGE_ONVIF_SIMPLE_SERVER is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -129,6 +129,7 @@ BR2_PACKAGE_ZEROTIER_ONE=y | |||
| # BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -108,6 +108,7 @@ BR2_PACKAGE_WIREGUARD_LINUX_COMPAT=y | |||
| BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -120,6 +120,7 @@ BR2_PACKAGE_ZEROTIER_ONE=y | |||
| # BR2_PACKAGE_NABTO is not set | ||||
| 
 | ||||
| # DEBUG | ||||
| BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||
| # BR2_PACKAGE_HOST_GDB is not set | ||||
| # BR2_PACKAGE_GDB is not set | ||||
| 
 | ||||
|  |  | |||
|  | @ -46,13 +46,15 @@ show_help() { | |||
| } | ||||
| 
 | ||||
| show_gain() { | ||||
| 	while sleep 1; do wget -T1 -q -O - http://127.0.0.1/metrics/isp | grep ^isp_again; done | ||||
| 	while sleep 1; do wget -T1 -q -O - localhost/metrics/isp | grep ^isp_again; done | ||||
| } | ||||
| 
 | ||||
| show_gpio() { | ||||
| 	mount -t debugfs none /sys/kernel/debug | ||||
| 	cat /sys/kernel/debug/gpio | ||||
| 	umount /sys/kernel/debug | ||||
| 	if [ -e /sys/kernel/debug ]; then | ||||
| 		mount -t debugfs none /sys/kernel/debug | ||||
| 		cat /sys/kernel/debug/gpio | ||||
| 		umount /sys/kernel/debug | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| show_modules() { | ||||
|  |  | |||
|  | @ -56,6 +56,7 @@ source "$BR2_EXTERNAL_GENERAL_PATH/package/libsrtp-openipc/Config.in" | |||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/libwebsockets-openipc/Config.in" | ||||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/linux-firmware-openipc/Config.in" | ||||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/linux-patcher/Config.in" | ||||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/logcat-openipc/Config.in" | ||||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/majestic-fonts/Config.in" | ||||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/majestic-plugins/Config.in" | ||||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/majestic-webui/Config.in" | ||||
|  |  | |||
|  | @ -0,0 +1,4 @@ | |||
| config BR2_PACKAGE_LOGCAT_OPENIPC | ||||
| 	bool "logcat-openipc" | ||||
| 	help | ||||
| 	  Logcat tool for Ingenic | ||||
|  | @ -0,0 +1,18 @@ | |||
| ################################################################################
 | ||||
| #
 | ||||
| # logcat-openipc
 | ||||
| #
 | ||||
| ################################################################################
 | ||||
| 
 | ||||
| LOGCAT_OPENIPC_SITE_METHOD = local | ||||
| LOGCAT_OPENIPC_SITE = $(LOGCAT_OPENIPC_PKGDIR)/src | ||||
| 
 | ||||
| define LOGCAT_OPENIPC_BUILD_CMDS | ||||
| 	$(TARGET_CC) $(@D)/logcat.c -o $(@D)/logcat -s | ||||
| endef | ||||
| 
 | ||||
| define LOGCAT_OPENIPC_INSTALL_TARGET_CMDS | ||||
| 	$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/logcat | ||||
| endef | ||||
| 
 | ||||
| $(eval $(generic-package)) | ||||
|  | @ -0,0 +1,125 @@ | |||
| #include <errno.h> | ||||
| #include <fcntl.h> | ||||
| #include <stdint.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <sys/ioctl.h> | ||||
| #include <unistd.h> | ||||
| 
 | ||||
| #define LOGGER_ENTRY_MAX_LEN (4 * 1024) | ||||
| #define LOGGER_FLUSH_LOG _IO(__LOGGERIO, 4) | ||||
| #define __LOGGERIO 0xAE | ||||
| 
 | ||||
| struct logger_entry { | ||||
| 	uint16_t len; | ||||
| 	uint16_t __pad; | ||||
| 	int32_t pid; | ||||
| 	int32_t tid; | ||||
| 	int32_t sec; | ||||
| 	int32_t nsec; | ||||
| 	char msg[4096]; | ||||
| } entry; | ||||
| 
 | ||||
| enum android_LogPriority { | ||||
| 	ANDROID_LOG_UNKNOWN = 0, | ||||
| 	ANDROID_LOG_DEFAULT, | ||||
| 	ANDROID_LOG_VERBOSE, | ||||
| 	ANDROID_LOG_DEBUG, | ||||
| 	ANDROID_LOG_INFO, | ||||
| 	ANDROID_LOG_WARN, | ||||
| 	ANDROID_LOG_ERROR, | ||||
| 	ANDROID_LOG_FATAL, | ||||
| 	ANDROID_LOG_SILENT, | ||||
| }; | ||||
| 
 | ||||
| int main(int argc, char *argv[]) { | ||||
| 	int fd; | ||||
| 	int msize; | ||||
| 	int readsize; | ||||
| 	int numread; | ||||
| 
 | ||||
| 	if (argc > 1) { | ||||
| 		if (strcmp(argv[1], "-c") == 0) { | ||||
| 			fd = open("/dev/log_main", O_WRONLY); | ||||
| 			if (fd < 0) { | ||||
| 				perror("Error opening /dev/log_main\n"); | ||||
| 				return -1; | ||||
| 			} | ||||
| 			ioctl(fd, LOGGER_FLUSH_LOG); | ||||
| 			close(fd); | ||||
| 			return 0; | ||||
| 		} else { | ||||
| 			printf("Usage: %s [-c] [-h]\n", argv[0]); | ||||
| 			printf("Options:\n"); | ||||
| 			printf("	-c	Clear the log\n"); | ||||
| 			printf("	-h	Show this help\n"); | ||||
| 			return 0; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	fd = open("/dev/log_main", O_RDONLY); | ||||
| 	if (fd < 0) { | ||||
| 		perror("Error opening /dev/log_main\n"); | ||||
| 		return -1; | ||||
| 	} | ||||
| 
 | ||||
| 	int pos; | ||||
| 	while (1) { | ||||
| 		numread = read(fd, &entry, LOGGER_ENTRY_MAX_LEN); | ||||
| 		if (numread < 1) { | ||||
| 			perror("Error: "); | ||||
| 			strerror(errno); | ||||
| 			return -1; | ||||
| 		} | ||||
| 
 | ||||
| 		char *tag = entry.msg; | ||||
| 		char *prog = entry.msg + 1; | ||||
| 		char *msg = entry.msg + strlen(entry.msg) + 1; | ||||
| 		char tagbyte; | ||||
| 
 | ||||
| 		switch (*tag) { | ||||
| 			case ANDROID_LOG_UNKNOWN: | ||||
| 				tagbyte = 'U'; | ||||
| 				break; | ||||
| 
 | ||||
| 			case ANDROID_LOG_DEFAULT: | ||||
| 				tagbyte = '*'; | ||||
| 				break; | ||||
| 
 | ||||
| 			case ANDROID_LOG_VERBOSE: | ||||
| 				tagbyte = 'V'; | ||||
| 				break; | ||||
| 
 | ||||
| 			case ANDROID_LOG_DEBUG: | ||||
| 				tagbyte = 'D'; | ||||
| 				break; | ||||
| 
 | ||||
| 			case ANDROID_LOG_INFO: | ||||
| 				tagbyte = 'I'; | ||||
| 				break; | ||||
| 
 | ||||
| 			case ANDROID_LOG_WARN: | ||||
| 				tagbyte = 'W'; | ||||
| 				break; | ||||
| 
 | ||||
| 			case ANDROID_LOG_ERROR: | ||||
| 				tagbyte = 'E'; | ||||
| 				break; | ||||
| 
 | ||||
| 			case ANDROID_LOG_FATAL: | ||||
| 				tagbyte = 'F'; | ||||
| 				break; | ||||
| 
 | ||||
| 			case ANDROID_LOG_SILENT: | ||||
| 				tagbyte = 'S'; | ||||
| 				break; | ||||
| 
 | ||||
| 			default: | ||||
| 				tagbyte = '?'; | ||||
| 				break; | ||||
| 		} | ||||
| 
 | ||||
| 		printf("%c/%s(%5d): %s", tagbyte, prog, entry.pid, msg); | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in New Issue