--- embedtools/src/pceng_run.c 2011/07/29 12:12:40 1.1.2.5 +++ embedtools/src/pceng_run.c 2011/10/24 20:24:16 1.1.2.7 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ - * $Id: pceng_run.c,v 1.1.2.5 2011/07/29 12:12:40 misho Exp $ + * $Id: pceng_run.c,v 1.1.2.7 2011/10/24 20:24:16 misho Exp $ * ************************************************************************* The ELWIX and AITNET software is distributed under the following @@ -116,6 +116,7 @@ LED(u_char ledno, u_char state) switch (type) { case wrap: n = inl(led_base[type - 1][ledno]); + /* read */ if (state == (u_char) -1) return (n &= (1 << led_bit[type - 1][ledno])); @@ -125,6 +126,7 @@ LED(u_char ledno, u_char state) n &= ~(1 << led_bit[type - 1][ledno]); break; case alix: + /* read */ if (state == (u_char) -1) { n = inl(led_base[type - 1][ledno]); return !(n &= (1 << led_bit[type - 1][ledno])); @@ -135,12 +137,12 @@ LED(u_char ledno, u_char state) else n = (1 << led_bit[type - 1][ledno]); break; - default: + default: /* unknown */ return -1; } outl(led_base[type - 1][ledno], n); - return 0; + return (int) state; } static int @@ -167,7 +169,7 @@ RunCmd(u_char pin, u_int state) else snprintf(szArg, sizeof szArg, "%d", state); - switch (vfork()) { + switch (fork()) { case -1: syslog(LOG_ERR, "Error:: RunCmd #%d - %s\n", errno, strerror(errno)); return -1; @@ -192,7 +194,7 @@ Run() if ((ret = gpioRead(i)) == -1) return 126; else - states |= (1 << i); + states |= ret ? (1 << i) : 0; /* state machine */ while (!Kill) { @@ -208,7 +210,7 @@ Run() return 127; if (ret != ((states >> i) & 0x1)) { - if (!i) { + if (!i) { /* button */ t = 0; do { t++; @@ -216,7 +218,7 @@ Run() if (gpioRead(i) != ret) break; } while (!Kill); - } else { + } else { /* leds */ t = ret; if (ret) states |= (1 << i); @@ -226,6 +228,8 @@ Run() RunCmd(i, t); } + + usleep(slice); } }