X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fusbrelay-v0.1%2Fao_usbrelay.c;h=d908f4dbeebdee342ff9d17751e8599a5ab47950;hp=5f4bf9632467f47a1828b28bbd67409521001b4a;hb=1085ec5d57e0ed5d132f2bbdac1a0b6a32c0ab4a;hpb=acaad70e3db8f0b6ae45ca8309833db57bdf5ca2 diff --git a/src/usbrelay-v0.1/ao_usbrelay.c b/src/usbrelay-v0.1/ao_usbrelay.c index 5f4bf963..d908f4db 100644 --- a/src/usbrelay-v0.1/ao_usbrelay.c +++ b/src/usbrelay-v0.1/ao_usbrelay.c @@ -3,7 +3,8 @@ * * 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; version 2 of the License. + * 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 @@ -19,16 +20,25 @@ uint8_t relay_output; +void +ao_relay_init(void) +{ + lpc_scb.sysahbclkctrl |= (1 << LPC_SCB_SYSAHBCLKCTRL_GPIO); + lpc_gpio.dir[RELAY_PORT] |= RELAY_BIT; +} + // switch relay to selected output, turn correct LED on as a side effect static void ao_relay_control(uint8_t output) { switch (output) { case 1: + lpc_gpio.pin[RELAY_PORT] |= RELAY_BIT; ao_led_on(AO_LED_RED); ao_led_off(AO_LED_GREEN); break; default: + lpc_gpio.pin[RELAY_PORT] &= ~RELAY_BIT; ao_led_off(AO_LED_RED); ao_led_on(AO_LED_GREEN); } @@ -43,9 +53,10 @@ ao_relay_select(void) __reentrant if (ao_cmd_status != ao_cmd_success) return; output = ao_cmd_lex_i; - - printf ("Relay control not implemented yet, %u selected\n", output); - ao_relay_control(output); + if (output > 1) + printf ("Invalid relay position %u\n", output); + else + ao_relay_control(output); } static __code struct ao_cmds ao_relay_cmds[] = { @@ -66,6 +77,8 @@ main(void) ao_led_init(LEDS_AVAILABLE); + ao_relay_init(); + // initialize to default output relay_output = 0; ao_relay_control(relay_output);