demo
[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 (uint8_t)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 palWriteLine(dpins[i], b ? PAL_HIGH : PAL_LOW);
34 }
35
36 bool read_dpin(uint8_t i)
37 {
38 if(i == 3){
39 return palReadLine(LINE_BUTTON) == PAL_HIGH;
40 }
41 return palReadLine(dpins[i]) == PAL_HIGH;
42 }
43
44 void write_apin(uint8_t i, uint8_t a)
45 {
46 (void) i;
47 (void) a;
48 }
49
50 uint8_t read_apin(uint8_t i)
51 {
52 return 0;
53 (void) i;
54 }
55
56 void led_on(uint8_t i)
57 {
58 if(i == 0){
59 palWriteLine(LINE_LED1, PAL_HIGH);
60 } else if(i == 1){
61 palWriteLine(LINE_LED2, PAL_HIGH);
62 } else if(i == 2){
63 palWriteLine(LINE_LED3, PAL_HIGH);
64 }
65 }
66
67 void led_off(uint8_t i)
68 {
69 if(i == 0){
70 palWriteLine(LINE_LED1, PAL_LOW);
71 } else if(i == 1){
72 palWriteLine(LINE_LED2, PAL_LOW);
73 } else if(i == 2){
74 palWriteLine(LINE_LED3, PAL_LOW);
75 }
76 }
77
78 long millis(void){
79 return ST2MS(chVTGetSystemTime());
80 }
81
82 void delay(long ms)
83 {
84 chThdSleepMilliseconds(ms);
85 }
86
87 void setup(void)
88 {
89 halInit();
90 chSysInit();
91 sdStart(&SD3, NULL);
92 }
93
94 void debug(char *fmt, ...)
95 {
96 // unsigned int i;
97 // write_byte((uint8_t)'m');
98 // for(i = 0; i<strlen(fmt); i++){
99 // write_byte((uint8_t)fmt[i]);
100 // }
101 // write_byte('\n');
102 (void)fmt;
103 }
104
105 void pdie(char *s)
106 {
107 (void)s;
108 }
109
110 void die(char *fmt, ...)
111 {
112 palWriteLine(LINE_LED1, PAL_HIGH);
113 palWriteLine(LINE_LED2, PAL_HIGH);
114 palWriteLine(LINE_LED3, PAL_HIGH);
115 while(1){
116 delay(100);
117 }
118 (void)fmt;
119 }