xbee & spi ok, only ping is not working
[protos/xbee-avr.git] / main.c
diff --git a/main.c b/main.c
index 73a3409..1557c69 100644 (file)
--- a/main.c
+++ b/main.c
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+/* fuses:
+ * avrdude -p atmega1284p -P usb -c avrispmkii -U lfuse:w:0xff:m -U hfuse:w:0x99:m -U efuse:w:0xff:m
+ */
+
 #include <aversive.h>
 #include <aversive/queue.h>
 #include <aversive/endian.h>
@@ -517,7 +521,6 @@ void xbee_unload_timeout(struct xbee_ctx *ctx)
 
 void bootloader(void)
 {
-#ifndef USE_USB
 #define BOOTLOADER_ADDR 0x3f000
        if (pgm_read_byte_far(BOOTLOADER_ADDR) == 0xff) {
                printf_P(PSTR("Bootloader is not present\r\n"));
@@ -541,7 +544,6 @@ void bootloader(void)
        /* __asm__ __volatile__ ("ldi r31,0xf8\n"); */
        /* __asm__ __volatile__ ("ldi r30,0x00\n"); */
        /* __asm__ __volatile__ ("eijmp\n"); */
-#endif
 }
 
 void xbee_mainloop(void)
@@ -577,12 +579,6 @@ void xbee_mainloop(void)
                                cmdline_poll();
                        xbee_proto_rx(xbee_dev);
                }
-
-#ifdef USE_USB
-               CDC_Device_USBTask(&VirtualSerial1_CDC_Interface);
-               CDC_Device_USBTask(&VirtualSerial2_CDC_Interface);
-               USB_USBTask();
-#endif
        }
 }
 
@@ -592,30 +588,15 @@ static uint16_t get_time_ms(void)
        return global_ms;
 }
 
-static void do_led_blink(struct callout_manager *cm,
-                        struct callout *clt, void *dummy)
-{
-       static uint8_t a = 0;
-
-       (void)cm;
-       (void)clt;
-       (void)dummy;
-
-#ifdef USE_USB
-       if (a & 1)
-               LEDs_SetAllLEDs(0);
-       else
-               LEDs_SetAllLEDs(0xff);
-#else
-       /* XXX */
-#endif
-       a++;
-}
-
 static void increment_ms(void *dummy)
 {
        (void)dummy;
        global_ms++;
+
+       if (global_ms & 0x80)
+               LED1_ON();
+       else
+               LED1_OFF();
 }
 
 static void main_timer_interrupt(void)
@@ -632,19 +613,19 @@ static void main_timer_interrupt(void)
  */
 int main(void)
 {
-       struct callout t1;
+       //struct callout t1;
        FILE *xbee_file;
        int8_t err;
        struct xbee_dev dev;
 
-#ifdef USE_USB
-       SetupHardware();
+       DDRA = 0x07; /* LEDs */
+       LED2_ON();
+       wait_ms(1000);
+       LED3_ON();
+       wait_ms(1000);
 
-       LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-#else
        uart_init();
        uart_register_rx_event(CMDLINE_UART, emergency);
-#endif
 
        fdevopen(cmdline_dev_send, cmdline_dev_recv);
        xbee_file = fdevopen(xbee_dev_send, xbee_dev_recv);
@@ -657,13 +638,12 @@ int main(void)
                                                LED_PRIO);
        cmdline_init();
        spi_servo_init();
-#ifndef USE_USB
-       /* in usb mode, it's done in usb callback */
+
        printf_P(PSTR("\r\n"));
        rdline_newline(&xbeeboard.rdl, xbeeboard.prompt);
-#endif
+
        callout_manager_init(&cm, get_time_ms);
-       callout_reset(&cm, &t1, 500, PERIODICAL, do_led_blink, NULL);
+       //callout_reset(&cm, &t1, 500, PERIODICAL, do_led_blink, NULL);
 
        /* initialize libxbee */
        err = xbee_init();
@@ -684,6 +664,7 @@ int main(void)
        }
 
        sei();
+
        xbee_mainloop();
        return 0;
 }