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 | BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_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 | BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_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 | # BR2_PACKAGE_NABTO is not set | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_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 | BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_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 | BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_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 | BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_GDB is not set | # BR2_PACKAGE_GDB is not set | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -114,6 +114,7 @@ BR2_PACKAGE_WIFIBROADCAST=y | ||||||
| BR2_PACKAGE_MAVFWD=y | BR2_PACKAGE_MAVFWD=y | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_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 | # BR2_PACKAGE_ONVIF_SIMPLE_SERVER is not set | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_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 | # BR2_PACKAGE_NABTO is not set | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_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 | BR2_PACKAGE_WIREGUARD_TOOLS=y | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_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 | # BR2_PACKAGE_NABTO is not set | ||||||
| 
 | 
 | ||||||
| # DEBUG | # DEBUG | ||||||
|  | BR2_PACKAGE_LOGCAT_OPENIPC=y | ||||||
| # BR2_PACKAGE_HOST_GDB is not set | # BR2_PACKAGE_HOST_GDB is not set | ||||||
| # BR2_PACKAGE_GDB is not set | # BR2_PACKAGE_GDB is not set | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -46,13 +46,15 @@ show_help() { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| show_gain() { | 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() { | show_gpio() { | ||||||
| 	mount -t debugfs none /sys/kernel/debug | 	if [ -e /sys/kernel/debug ]; then | ||||||
| 	cat /sys/kernel/debug/gpio | 		mount -t debugfs none /sys/kernel/debug | ||||||
| 	umount /sys/kernel/debug | 		cat /sys/kernel/debug/gpio | ||||||
|  | 		umount /sys/kernel/debug | ||||||
|  | 	fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| show_modules() { | 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/libwebsockets-openipc/Config.in" | ||||||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/linux-firmware-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/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-fonts/Config.in" | ||||||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/majestic-plugins/Config.in" | source "$BR2_EXTERNAL_GENERAL_PATH/package/majestic-plugins/Config.in" | ||||||
| source "$BR2_EXTERNAL_GENERAL_PATH/package/majestic-webui/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