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