not working again.
[mTask.git] / int / interface.c
1 #include <stdbool.h>
2 #include <stdint.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <stdarg.h>
6
7 #include "interface.h"
8 #include "ch.h"
9 #include "hal.h"
10
11 //Globals
12 bool input_available(void)
13 {
14 return iqGetFullI(&(&SD3)->iqueue)>0;
15 }
16
17 uint8_t read_byte(void)
18 {
19 return sdGet(&SD3);
20 }
21
22 void write_byte(uint8_t b)
23 {
24 sdPut(&SD3, b);
25 }
26
27 uint64_t dpins[] = {LINE_ARD_D0, LINE_ARD_D1, LINE_ARD_D2, LINE_ARD_D3,
28 LINE_ARD_D4, LINE_ARD_D5, LINE_ARD_D6, LINE_ARD_D7, LINE_ARD_D8,
29 LINE_ARD_D9, LINE_ARD_D10, LINE_ARD_D11, LINE_ARD_D12, LINE_ARD_D13,
30 LINE_ARD_D14, LINE_ARD_D15};
31 void write_dpin(uint8_t i, bool b)
32 {
33 if(i == 0){ palWriteLine(LINE_LED1, b ? PAL_HIGH : PAL_LOW);
34 } else if(i == 1){ palWriteLine(LINE_LED2, b ? PAL_HIGH : PAL_LOW);
35 } else if(i == 2){ palWriteLine(LINE_LED3, b ? PAL_HIGH : PAL_LOW);
36 }
37 palWriteLine(dpins[i], b ? PAL_HIGH : PAL_LOW);
38 }
39
40 bool read_dpin(uint8_t i)
41 {
42 if(i == 3){
43 return palReadLine(LINE_BUTTON) == PAL_HIGH;
44 }
45 return palReadLine(dpins[i]) == PAL_HIGH;
46 }
47
48 void write_apin(uint8_t i, uint8_t a)
49 {
50 (void) i;
51 (void) a;
52 }
53
54 uint8_t read_apin(uint8_t i)
55 {
56 return 0;
57 (void) i;
58 }
59
60 long millis(void){
61 return ST2MS(chVTGetSystemTime());
62 }
63
64 void delay(long ms)
65 {
66 chThdSleepMilliseconds(ms);
67 }
68
69 void setup(void)
70 {
71 halInit();
72 chSysInit();
73 sdStart(&SD3, NULL);
74 }
75
76 void debug(char *fmt, ...)
77 {
78 unsigned int i;
79 write_byte('m');
80 for(i = 0; i<strlen(fmt); i++){
81 write_byte((uint8_t)fmt[i]);
82 }
83 write_byte('\n');
84 #ifdef DEBUG
85 #endif
86 (void)fmt;
87 }
88
89 void debugi(int i)
90 {
91 char m[10];
92 debug(itoa(i, m, 10));
93 }
94
95 void pdie(char *s)
96 {
97 (void)s;
98 }
99
100 void die(char *fmt, ...)
101 {
102 palWriteLine(LINE_LED1, PAL_HIGH);
103 palWriteLine(LINE_LED2, PAL_HIGH);
104 palWriteLine(LINE_LED3, PAL_HIGH);
105 while(1){
106 delay(100);
107 }
108 (void)fmt;
109 }