update
[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 "interface.h"
8 #include "ch.h"
9 #include "hal.h"
10
11 //Globals
12 bool input_available(void)
13 {
14 //return iqGetFullI(&(&SD6)->iqueue)>0;
15 return iqGetFullI(&(&SD3)->iqueue)>0;
16 }
17
18 uint8_t read_byte(void)
19 {
20 return (uint8_t)sdGet(&SD3);
21 //return (uint8_t)sdGet(&SD6);
22 }
23
24 void write_byte(uint8_t b)
25 {
26 sdPut(&SD3, b);
27 //sdPut(&SD6, b);
28 }
29
30 uint64_t dpins[] = {LINE_ARD_D0, LINE_ARD_D1, LINE_ARD_D2, LINE_ARD_D3,
31 LINE_ARD_D4, LINE_ARD_D5, LINE_ARD_D6, LINE_ARD_D7, LINE_ARD_D8,
32 LINE_ARD_D9, LINE_ARD_D10, LINE_ARD_D11, LINE_ARD_D12, LINE_ARD_D13,
33 LINE_ARD_D14, LINE_ARD_D15};
34 void write_dpin(uint8_t i, bool b)
35 {
36 palWriteLine(dpins[i], b ? PAL_HIGH : PAL_LOW);
37 }
38
39 bool read_dpin(uint8_t i)
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 palSetPadMode(GPIOG, 9, PAL_MODE_ALTERNATE(8)); // USART6 TX
90 palSetPadMode(GPIOG, 14, PAL_MODE_ALTERNATE(8)); // USART6 RX
91
92 halInit();
93 chSysInit();
94 sdStart(&SD3, NULL);
95 // sdStart(&SD6, NULL);
96
97 // while(1){
98 // sdPut(&SD3, sdGet(&SD6));
99 // delay(50);
100 // }
101 }
102
103 void debug(char *fmt, ...)
104 {
105 (void)fmt;
106 }
107
108 void pdie(char *s)
109 {
110 (void)s;
111 }
112
113 void die(char *fmt, ...)
114 {
115 palWriteLine(LINE_LED1, PAL_HIGH);
116 palWriteLine(LINE_LED2, PAL_HIGH);
117 palWriteLine(LINE_LED3, PAL_HIGH);
118 while(1){
119 delay(100);
120 }
121 (void)fmt;
122 }