Tomato 1.28
[tomato.git] / release / src / router / rc / gpio.c
blob44b5989f2042a4bccb47d9f66965de4d3875ad15
1 /*
3 Tomato Firmware
4 Copyright (C) 2006-2009 Jonathan Zarate
6 */
7 #include "rc.h"
9 int gpio_main(int argc, char *argv[])
11 const char hex[] = "0123456789ABCDEF";
12 unsigned long v;
13 int bit;
14 int i;
15 char s[17];
17 if (argc == 3) {
18 bit = atoi(argv[2]);
19 if ((bit >= 0) && (bit <= 15)) {
20 bit = 1 << bit;
21 if ((strncmp(argv[1], "en", 2) == 0) || (strncmp(argv[1], "di", 2) == 0)) {
22 gpio_write(bit, argv[1][0] == 'e');
23 return 0;
27 else if (argc == 2) {
28 if (strncmp(argv[1], "po", 2) == 0) {
29 while ((v = gpio_read()) != ~0) {
30 for (i = 15; i >= 0; --i) {
31 s[i] = (v & (1 << i)) ? hex[i] : '.';
33 s[16] = 0;
34 printf("%08lX %s\n", v, s);
35 sleep(1);
37 return 0;
41 usage_exit(argv[0], "<enable|disable|poll> <pin>\n");