demo
[mTask.git] / int / interface.c
index 5c9b500..8106945 100644 (file)
@@ -2,22 +2,21 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdarg.h>
 
 #include "interface.h"
 #include "ch.h"
 #include "hal.h"
 
-//char buf[1024];
-
 //Globals
 bool input_available(void)
 {
-       return qSizeX(&(&SD3)->iqueue) > 0;
+       return iqGetFullI(&(&SD3)->iqueue)>0;
 }
 
 uint8_t read_byte(void)
 {
-       return sdGet(&SD3);
+       return (uint8_t)sdGet(&SD3);
 }
 
 void write_byte(uint8_t b)
@@ -25,22 +24,27 @@ void write_byte(uint8_t b)
        sdPut(&SD3, b);
 }
 
+uint64_t dpins[] = {LINE_ARD_D0, LINE_ARD_D1, LINE_ARD_D2, LINE_ARD_D3,
+       LINE_ARD_D4, LINE_ARD_D5, LINE_ARD_D6, LINE_ARD_D7, LINE_ARD_D8,
+       LINE_ARD_D9, LINE_ARD_D10, LINE_ARD_D11, LINE_ARD_D12, LINE_ARD_D13,
+       LINE_ARD_D14, LINE_ARD_D15};
 void write_dpin(uint8_t i, bool b)
 {
-       (void) i;
-       (void) b;
+       palWriteLine(dpins[i], b ? PAL_HIGH : PAL_LOW);
 }
 
 bool read_dpin(uint8_t i)
 {
-       return 0;
-       (void) i;
+       if(i == 3){
+               return palReadLine(LINE_BUTTON) == PAL_HIGH;
+       }
+       return palReadLine(dpins[i]) == PAL_HIGH;
 }
 
 void write_apin(uint8_t i, uint8_t a)
 {
-       (void)i;
-       (void)a;
+       (void) i;
+       (void) a;
 }
 
 uint8_t read_apin(uint8_t i)
@@ -49,6 +53,28 @@ uint8_t read_apin(uint8_t i)
        (void) i;
 }
 
+void led_on(uint8_t i)
+{
+       if(i == 0){
+               palWriteLine(LINE_LED1, PAL_HIGH);
+       } else if(i == 1){
+               palWriteLine(LINE_LED2, PAL_HIGH);
+       } else if(i == 2){
+               palWriteLine(LINE_LED3, PAL_HIGH);
+       }
+}
+
+void led_off(uint8_t i)
+{
+       if(i == 0){
+               palWriteLine(LINE_LED1, PAL_LOW);
+       } else if(i == 1){
+               palWriteLine(LINE_LED2, PAL_LOW);
+       } else if(i == 2){
+               palWriteLine(LINE_LED3, PAL_LOW);
+       }
+}
+
 long millis(void){
        return ST2MS(chVTGetSystemTime());
 }
@@ -65,6 +91,29 @@ void setup(void)
        sdStart(&SD3, NULL);
 }
 
-void test(void)
+void debug(char *fmt, ...)
+{
+//     unsigned int i;
+//     write_byte((uint8_t)'m');
+//     for(i = 0; i<strlen(fmt); i++){
+//             write_byte((uint8_t)fmt[i]);
+//     }
+//     write_byte('\n');
+       (void)fmt;
+}
+
+void pdie(char *s)
+{
+       (void)s;
+}
+
+void die(char *fmt, ...)
 {
+       palWriteLine(LINE_LED1, PAL_HIGH);
+       palWriteLine(LINE_LED2, PAL_HIGH);
+       palWriteLine(LINE_LED3, PAL_HIGH);
+       while(1){
+               delay(100);
+       }
+       (void)fmt;
 }