fuck meaningful commit messages
[bort-panel.git] / pins.c
CommitLineData
3bacb654
IS
1#include <stdlib.h>
2#include <fcntl.h>
3#include <signal.h>
4#include <unistd.h>
5#include <string.h>
6#include <stdio.h>
7#include <stdlib.h>
8#include <time.h>
9
10#include <sys/types.h>
11#include <sys/gpio.h>
12#include <sys/ioctl.h>
13
14#include "pins.h"
15
16#define UP(N) set_pin(N, 1)
17#define DOWN(N) set_pin(N, 0)
18
19#define HI(N) set(N, 1)
20#define LO(N) set(N, 0)
21
2b25fa21
IS
22void test_7seg();
23
a315fde8 24void kd2() {
2b25fa21 25 usleep(5000);
a315fde8
IS
26}
27
28void kdh() {
2b25fa21 29 usleep(2500);
a315fde8
IS
30}
31
32void kd1() {
33 usleep(1);
34}
35
2b25fa21
IS
36uint8_t sample(char *name) {
37 struct gpio_pin_op op;
38 struct pin2dev *p = pin(name);
39 int fd = num2fd(p->dev), t;
40
41 strlcpy(op.gp_name, name, GPIOPINMAXNAME);
42
43 t = ioctl(fd, GPIOPINREAD, &op);
44
45// printf("read %d, err: %d\n", op.gp_value, t);
46
47 return op.gp_value;
48}
49
a315fde8
IS
50void test_pins() {
51 for(;;) {
52 HI("clk");
53 HI("clkinh");
54 LO("shld");
55 HI("clr");
56 kd1();
57 LO("clk");
58 LO("clkinh");
59 LO("shld");
60 LO("clr");
61 kd1();
62 }
63}
64
65/* call when clk is hi */
66void tick(int n) {
67 int i = 0;
68
69 for(; i < n; i++) {
70 LO("clk");
71 kd2();
72 HI("clk");
73 kd2();
74 }
2b25fa21 75 sample("srq1");
a315fde8
IS
76}
77
78void clear() {
79 HI("clk");
80 LO("clkinh");
81 kdh();
82 LO("clr");
83 kdh();
84 LO("clk");
85 kdh();
86 HI("clr");
87 kdh();
88 HI("clk");
89 kd2();
90}
91
2b25fa21
IS
92uint8_t sample_byte(char *name) {
93 uint8_t ret = 0;
94 int i = 8;
95
96 for(; i > 0; i--) {
97 ret |= (sample(name) << i);
98 kd2();
99 LO("clk");
100 kd2();
101 HI("clk");
102 }
103
104 return ret;
105}
106
107void sample_bytes() {
108 uint8_t ret[6];
109 int i = 8, j = 0;
110 char *s;
111
112 s = calloc(10, 1);
113 memset(&ret[0], 0, 6);
114
115 for(; i > 0; i--) {
116 for(j = 0; j < 6; j++) {
117 sprintf(s, "srq%d", j + 1);
118 ret[j] |= sample(s);
119 }
120 kd2();
121 LO("clk");
122 kd2();
123 HI("clk");
124 }
125
126 for(i = 0; i < 6; i++)
127 printf("SRQ%d: %02x\n", i + 1, ret[i]);
128
129 printf("\n\n\n");
130}
131
3bacb654 132int main(int argc, char *argv[]) {
a315fde8 133
2b25fa21
IS
134 uint8_t b;
135
a315fde8
IS
136 signal(SIGINT, inth);
137
3bacb654 138 pins_init();
2b25fa21 139 config_pins();
3bacb654
IS
140 pincnt();
141
2b25fa21
IS
142 pcfg(1, 7, -1, INPUT | PULLDOWN, "srq1");
143 pcfg(1, 3, -1, INPUT | PULLDOWN, "srq2");
144 pcfg(1, 12, -1, INPUT | PULLDOWN, "srq3");
145 pcfg(0, 26, -1, INPUT | PULLDOWN, "srq4");
146 pcfg(1, 14, -1, INPUT | PULLDOWN, "srq5");
147 pcfg(2, 1, -1, INPUT | PULLDOWN, "srq6");
3bacb654
IS
148 pcfg(1, 13, 0, OUTPUT, "clk");
149 pcfg(1, 15, 0, OUTPUT, "shld");
150 pcfg(0, 27, 0, OUTPUT, "clr");
2b25fa21
IS
151 pcfg(2, 2, 0, OUTPUT, "clkinh");
152
153 /* 7 seg */
154 pcfg(2, 10, 0, OUTPUT, "ss-rst");
155 pcfg(2, 12, 0, OUTPUT, "ss-clk");
156// test_7seg();
157
158 start();
159 byte(0x8f);
160 stop();
3bacb654 161
a315fde8
IS
162 LO("clk");
163 HI("clkinh");
164 HI("clr");
6e5408c0 165 HI("shld");
a315fde8
IS
166
167 sleep(1);
168for(;;){
169 LO("clk");
170 HI("clkinh");
171 HI("clr");
6e5408c0 172 HI("shld");
a315fde8
IS
173 kd2();
174 kd2();
175 clear();
176
a315fde8
IS
177 LO("clk");
178 LO("shld");
179 kd2();
180 HI("clk");
181 kdh();
182 HI("clkinh");
183 kdh();
184 LO("clk");
185
6e5408c0 186 HI("shld");
a315fde8
IS
187 kdh();
188 kdh();
189 HI("clk");
190 kd2();
a315fde8
IS
191 LO("clk");
192 LO("clkinh");
193 kd2();
194 HI("clk");
2b25fa21
IS
195
196 b = sample_byte("srq1");
197 printf("TEST: 0x%02x\n", b);
198// sample_bytes();
199
a315fde8 200 kd2();
2b25fa21
IS
201// tick(16);
202// tick(7);
203}
a315fde8 204}
2b25fa21
IS
205
206void test_7seg() {
207
208 HI("ss-rst");
209 sleep(1);
210 LO("ss-rst");
211
212 for(;;) {
213 HI("ss-clk");
214 usleep(50000);
215 LO("ss-clk");
216 usleep(50000);
217 }
218
3bacb654 219}