src/hello.c
changeset 4 d0f29c45fe52
parent 3 87dd3b72b024
child 5 5c86d54080c1
--- a/src/hello.c	Thu Sep 25 00:56:54 2014 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-#include <avr/interrupt.h>
-#include <avr/io.h>
-
-#include "stdlib.h"
-
-#define DEBUG_DDR DDRB
-#define DEBUG_PIN 5
-#define DEBUG_PORT PORTB
-
-/* Relay outputs */
-#define RELAY_DDR DDRC
-#define RELAY_PORT PORTC
-#define RELAY_PIN PINC
-#define RELAY_PINS 4
-
-#define RELAY_DOWN1 0
-#define RELAY_DOWN2 1
-#define RELAY_LEFT  2
-#define RELAY_RIGHT 3
-
-/* Switch inputs */
-static ioport_t *const SWITCH_DDR = &DDRD;
-static ioport_t *const SWITCH_PORT = &PORTD;
-static ioport_t *const SWITCH_PIN = &PIND;
-static ioport_t *const SWITCH_PCMSK = &PCMSK2;
-static const byte SWITCH_PCIE = PCIE2;
-static const byte SWITCH_PCIF = PCIF2;
-
-enum switch_bits {
-    SWITCH_LEFT         = 0b00000100,
-    SWITCH_RIGHT        = 0b00001000,
-    SWITCH_HORN1        = 0b00010000,
-    SWITCH_HORN2        = 0b00100000,
-
-    SWITCH_MASK         = 0b00111100,
-};
-
-#include "debug.h"
-#include "relay.h"
-#include "serial.h"
-#include "switch.h"
-#include "timer.h"
-
-int main (void)
-{
-    debug_init();
-    relay_init(RELAY_PINS);
-    serial_init(SERIAL_BAUD_9600, SERIAL_PARITY_N, SERIAL_STOPBITS_1);
-    switch_init();
-    timer_init();
-
-    // init
-    char c = '.';
-    byte s;
-    unsigned short timeout = 8000;
-
-    debug_set();
-    sei();
-
-    // start
-    while (true) {
-        c = s = 0;
-
-        if (timer_sleep(timeout)) {
-            c = '.';
-        } else if ((c = serial_read())) {
-            switch (c) {
-                case 'L':       relay_open(RELAY_LEFT); break;
-                case 'R':       relay_open(RELAY_RIGHT); break;
-                case 'B':
-                                relay_open(RELAY_DOWN1);
-                                relay_open(RELAY_DOWN2);
-                                break;
-
-                case 'l':       relay_toggle(RELAY_LEFT); break;
-                case 'r':       relay_toggle(RELAY_RIGHT); break;
-                case 'b':
-                                relay_close(RELAY_DOWN1);
-                                relay_close(RELAY_DOWN2);
-                                break;
-
-                default:
-                    c = '!';
-                    break;
-            }
-        } else if (switch_read(&s)) {
-            c = '*';
-
-            if (s & SWITCH_LEFT)
-                c = 'l';
-
-            if (s & SWITCH_RIGHT)
-                c = 'r';
-
-            if (s & SWITCH_HORN1)
-                c = 'h';
-
-            if (s & SWITCH_HORN2)
-                c = 'h';
-
-        } else {
-            // XXX: for some reason this occasionally gets stuck in an interrupt loop here after some switch events..
-            c = '?';
-        }
-
-        // out
-        debug_toggle();
-
-        serial_write(c);
-    }
-}