add userspace tool for gpio_dev
SVN-Revision: 10267
This commit is contained in:
		
							
								
								
									
										43
									
								
								package/gpioctl/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								package/gpioctl/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | # | ||||||
|  | # Copyright (C) 2008 OpenWrt.org | ||||||
|  | # | ||||||
|  | # This is free software, licensed under the GNU General Public License v2. | ||||||
|  | # See /LICENSE for more information. | ||||||
|  | # | ||||||
|  | # $Id$ | ||||||
|  |  | ||||||
|  | include $(TOPDIR)/rules.mk | ||||||
|  | include $(INCLUDE_DIR)/kernel.mk | ||||||
|  |  | ||||||
|  | PKG_NAME:=gpioctl | ||||||
|  | PKG_RELEASE:=1 | ||||||
|  | PKG_VERSION:=1.0 | ||||||
|  |  | ||||||
|  | include $(INCLUDE_DIR)/package.mk | ||||||
|  |  | ||||||
|  | define Package/gpioctl | ||||||
|  |   SECTION:=utils | ||||||
|  |   CATEGORY:=Utilities | ||||||
|  |   TITLE:=Tool for controlling gpio pins | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Package/gpioctl/description | ||||||
|  | 	Tool for controlling gpio pins | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Build/Prepare | ||||||
|  | 	mkdir -p $(PKG_BUILD_DIR) | ||||||
|  | 	$(CP) ./src/* $(PKG_BUILD_DIR)/ | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Build/Compile | ||||||
|  | 	$(MAKE) -C $(PKG_BUILD_DIR) \ | ||||||
|  | 		$(TARGET_CONFIGURE_OPTS) CFLAGS="$(TARGET_CFLAGS) -I$(LINUX_DIR)/include"  | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Package/gpioctl/install | ||||||
|  | 	$(INSTALL_DIR) $(1)/usr/bin | ||||||
|  | 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/gpioctl $(1)/usr/bin/ | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | $(eval $(call BuildPackage,gpioctl)) | ||||||
							
								
								
									
										24
									
								
								package/gpioctl/src/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								package/gpioctl/src/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | PROGS     = gpioctl | ||||||
|  |  | ||||||
|  | INSTDIR   = $(prefix)/usr/bin | ||||||
|  | INSTMODE  = 0755 | ||||||
|  | INSTOWNER = root | ||||||
|  | INSTGROUP = root | ||||||
|  |  | ||||||
|  | OBJS = main.o | ||||||
|  |  | ||||||
|  | all: $(PROGS) | ||||||
|  | $(PROGS): $(OBJS) | ||||||
|  | 	$(CC) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@ | ||||||
|  | 	$(STRIP) $@ | ||||||
|  |  | ||||||
|  | %.o: %.c | ||||||
|  | 	$(CC) -c $(CFLAGS) $^ -o $@ | ||||||
|  |  | ||||||
|  | install: $(PROGS) | ||||||
|  | 	$(INSTALL) -d $(INSTDIR) | ||||||
|  | 	$(INSTALL) -m $(INSTMODE) -o $(INSTOWNER) -g $(INSTGROUP) $(PROGS) $(INSTDIR) | ||||||
|  |  | ||||||
|  | clean: | ||||||
|  | 	rm -f $(PROGS) *.o core | ||||||
|  |  | ||||||
							
								
								
									
										76
									
								
								package/gpioctl/src/main.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								package/gpioctl/src/main.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,76 @@ | |||||||
|  | /* | ||||||
|  | * 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., 59 Temple Place, Suite 330, Boston, MA02111-1307USA | ||||||
|  | * | ||||||
|  | * Feedback, Bugs...  blogic@openwrt.org  | ||||||
|  | * | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <sys/types.h> | ||||||
|  | #include <sys/stat.h> | ||||||
|  | #include <fcntl.h> | ||||||
|  | #include <linux/gpio_dev.h> | ||||||
|  | #include <linux/ioctl.h> | ||||||
|  |  | ||||||
|  | void | ||||||
|  | print_usage() | ||||||
|  | { | ||||||
|  | 	printf("gpioctl dirin|dirout|get|set|clear gpio\n"); | ||||||
|  | 	exit(0); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int | ||||||
|  | main(int argc, char **argv) | ||||||
|  | { | ||||||
|  | 	int gpio_pin; | ||||||
|  | 	int fd; | ||||||
|  | 	int result = 0; | ||||||
|  |  | ||||||
|  | 	if (argc != 3) | ||||||
|  | 	{ | ||||||
|  | 		print_usage(); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if ((fd = open("/dev/gpio", O_RDWR)) < 0) | ||||||
|  | 	{ | ||||||
|  |         printf("Error whilst opening /dev/gpio\n"); | ||||||
|  |         return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	gpio_pin = atoi(argv[2]); | ||||||
|  |  | ||||||
|  | 	printf("using gpio pin %d\n", gpio_pin); | ||||||
|  |  | ||||||
|  | 	if (!strcmp(argv[1], "dirin")) | ||||||
|  | 	{ | ||||||
|  | 		ioctl(fd, GPIO_DIR_IN, gpio_pin); | ||||||
|  | 	} else if (!strcmp(argv[1], "dirout")) | ||||||
|  | 	{ | ||||||
|  | 		ioctl(fd, GPIO_DIR_OUT, gpio_pin); | ||||||
|  | 	} else if (!strcmp(argv[1], "get")) | ||||||
|  | 	{ | ||||||
|  | 		result = ioctl(fd, GPIO_GET, gpio_pin); | ||||||
|  | 		printf("Pin %d is %s\n", (result ? "HIGH" : "LOW")); | ||||||
|  | 	} else if (!strcmp(argv[1], "set")) | ||||||
|  | 	{ | ||||||
|  | 		ioctl(fd, GPIO_SET, gpio_pin); | ||||||
|  | 	} else if (!strcmp(argv[1], "clear")) | ||||||
|  | 	{ | ||||||
|  | 		ioctl(fd, GPIO_CLEAR, gpio_pin); | ||||||
|  | 	} else print_usage(); | ||||||
|  |  | ||||||
|  | 	return result; | ||||||
|  | } | ||||||
| @@ -44,7 +44,7 @@ gpio_ioctl(struct inode * inode, struct file * file, unsigned int cmd, unsigned | |||||||
| { | { | ||||||
| 	int retval = 0; | 	int retval = 0; | ||||||
|  |  | ||||||
| 	if ((arg & gpio_access_mask) != arg) | 	if (((1 << arg) & gpio_access_mask) != (1 << arg)) | ||||||
| 	{ | 	{ | ||||||
| 		retval = -EINVAL; | 		retval = -EINVAL; | ||||||
| 		goto out; | 		goto out; | ||||||
| @@ -57,7 +57,7 @@ gpio_ioctl(struct inode * inode, struct file * file, unsigned int cmd, unsigned | |||||||
| 		break; | 		break; | ||||||
|  |  | ||||||
| 	case GPIO_SET: | 	case GPIO_SET: | ||||||
| 		gpio_set_value(arg, 0); | 		gpio_set_value(arg, 1); | ||||||
| 		break; | 		break; | ||||||
|  |  | ||||||
| 	case GPIO_CLEAR: | 	case GPIO_CLEAR: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin