src/main.cpp

Wed, 07 Nov 2018 20:00:52 +0100

author
David Douard <david.douard@logilab.fr>
date
Wed, 07 Nov 2018 20:00:52 +0100
changeset 22
2f51221af82d
parent 21
9ffa9d727d80
child 23
daf26b083899
permissions
-rw-r--r--

more stuff

1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
1 #include "stdio.h"
4
219766126afb another attempt using a more complete support of the protocol and async serial stuff
David Douard <david.douard@logilab.fr>
parents: 3
diff changeset
2
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
3 #include <mbed.h>
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
4 #include <rtos.h>
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
5 #include <string>
4
219766126afb another attempt using a more complete support of the protocol and async serial stuff
David Douard <david.douard@logilab.fr>
parents: 3
diff changeset
6
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
7 #include "Terminal6x8.h"
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
8 #include "Mono19x27.h"
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
9 #include "Mono15x22.h"
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
10 #include "Arial12x12.h"
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
11
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
12 #include "SSD1322.h"
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
13 #include "hp34comm.h"
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
14
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
15 #include "QEI.h"
18
4fd621551d55 [full replacement] implement a state machine for Rx
David Douard <david.douard@logilab.fr>
parents: 17
diff changeset
16 #include "Keypad.h"
4fd621551d55 [full replacement] implement a state machine for Rx
David Douard <david.douard@logilab.fr>
parents: 17
diff changeset
17
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
18 /******************************************************/
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
19 /* L432KC */
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
20 /******************************************************/
17
162fe523c37d almost working... before killing the 87C51...
David Douard <david.douard@logilab.fr>
parents: 13
diff changeset
21 #if (defined STM32L432xx)
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
22 // display
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
23 #define DSP_MOSI PA_7 //A6
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
24 #define DSP_MISO PA_6 //A5
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
25 #define DSP_SCLK PA_5 //A4
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
26 #define DSP_CS PB_0 //D3
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
27 #define DSP_RST PB_5 //D11
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
28 #define DSP_DC PB_4 //D12
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
29
11
09ae4cac6649 HP_TX is now useless
David Douard <david.douard@logilab.fr>
parents: 10
diff changeset
30 // UART for RX (CPU->DP) and TX (DP->CPU) combined
18
4fd621551d55 [full replacement] implement a state machine for Rx
David Douard <david.douard@logilab.fr>
parents: 17
diff changeset
31 #define HP_TX PA_9 // serial1 TX
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
32 #define HP_RX PA_10 // serial1 RX
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
33
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
34 // RST pin (handle this by hand)
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
35 #define HP_RST PA_0
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
36
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
37 // misc
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
38 #define DBGPIN NC
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
39
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
40 // encoder
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
41 #define KP_ENC1 PA_8
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
42 #define KP_ENC2 PA_11
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
43
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
44 // keypad
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
45 #define KP_R0 PA_1
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
46 #define KP_R1 PA_3
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
47 #define KP_R2 PA_4
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
48 #define KP_R3 PA_12
17
162fe523c37d almost working... before killing the 87C51...
David Douard <david.douard@logilab.fr>
parents: 13
diff changeset
49
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
50 #define KP_C0 D4
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
51 #define KP_C1 D5
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
52 #define KP_C2 D6
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
53 #define KP_C3 D7
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
54 #define KP_C4 D8
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
55
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
56 /******************************************************/
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
57 /* F446RE */
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
58 /******************************************************/
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
59 #elif defined STM32F446xx
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
60 // UART
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
61 // USBTX PA_2
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
62 // USBRX PA_3
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
63 // display
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
64 #define DSP_MOSI PB_15 // blue
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
65 #define DSP_MISO NC
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
66 #define DSP_SCLK PB_13 // yellow
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
67 #define DSP_CS PB_12 // green
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
68 #define DSP_RST PB_5 // green
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
69 #define DSP_DC PB_4 // red
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
70
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
71 // UART for RX (CPU->DP)
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
72 #define HP_RX PC_11 // serial3 RX
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
73 #define HP_TX PC_10 // serial3 TX
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
74
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
75 // RST pin (handle this by hand)
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
76 #define HP_RST PC_12
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
77
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
78 // encoder
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
79 #define KP_ENC1 PC_4
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
80 #define KP_ENC2 PC_5
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
81
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
82 // keypad
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
83 #define KP_R0 PC_0 // I-6
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
84 #define KP_R1 PC_1 // II-5
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
85 #define KP_R2 PC_2 // I-5
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
86 #define KP_R3 PC_3 // II-4
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
87
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
88
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
89 #define KP_C0 PB_0 // I-4
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
90 #define KP_C1 PA_6 // I-2
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
91 #define KP_C2 PA_7 // I-3
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
92 #define KP_C3 PA_10 // I-1
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
93 #define KP_C4 PD_2 // II-1
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
94
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
95 // misc
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
96 #define DBGPIN PC_6
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
97
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
98 #endif
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
99
13
0fdeed7c083e make USB (debug) serial console depend only on HAVE_PC compile variable
David Douard <david.douard@logilab.fr>
parents: 12
diff changeset
100 #ifdef HAVE_PC
0fdeed7c083e make USB (debug) serial console depend only on HAVE_PC compile variable
David Douard <david.douard@logilab.fr>
parents: 12
diff changeset
101 Serial pc(USBTX, USBRX);
0fdeed7c083e make USB (debug) serial console depend only on HAVE_PC compile variable
David Douard <david.douard@logilab.fr>
parents: 12
diff changeset
102 #endif
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
103
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
104 SSD1322 *dsp;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
105 HPSerial *hp;
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
106 volatile uint8_t must_refresh;
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
107 Thread tdsp, tloop;
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
108 Ticker blinker;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
109 Timeout rst_delay;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
110 Timeout splashscreen_timer;
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
111 DigitalOut led(LED1);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
112 InterruptIn rst(HP_RST);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
113
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
114 QEI qenc(KP_ENC1, KP_ENC2, NC, 16);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
115 volatile uint8_t knob;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
116 volatile bool splashscreen;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
117
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
118
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
119 typedef enum {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
120 KEY_NONE=0,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
121 KEY_PRESSED,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
122 KEY_RELEASED
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
123 } key_event_t;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
124
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
125 typedef struct keycode {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
126 uint8_t row;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
127 uint8_t col;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
128 key_event_t keyevent;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
129 } keycode_t;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
130
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
131 volatile keycode_t cur_keycode;
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
132
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
133 PinName kp_rows[] = {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
134 KP_R0,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
135 KP_R1,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
136 KP_R2,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
137 KP_R3
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
138 };
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
139
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
140 PinName kp_colums[] = {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
141 KP_C0, KP_C1,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
142 KP_C2, KP_C3,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
143 KP_C4
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
144 };
18
4fd621551d55 [full replacement] implement a state machine for Rx
David Douard <david.douard@logilab.fr>
parents: 17
diff changeset
145
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
146 DigitalIn kp_in[] = {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
147 KP_R0,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
148 KP_R1,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
149 KP_R2,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
150 KP_R3
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
151 };
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
152
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
153 DigitalOut kp_out[] = {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
154 KP_C0, KP_C1,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
155 KP_C2, KP_C3,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
156 KP_C4
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
157 };
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
158
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
159 uint8_t kp_nrows = sizeof(kp_in)/sizeof(kp_in[0]);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
160 uint8_t kp_ncols = sizeof(kp_out)/sizeof(kp_out[0]);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
161
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
162 void kp_cb(uint8_t row, uint8_t col);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
163 void kr_cb(uint8_t row, uint8_t col);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
164
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
165 Keypad *kpad;
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
166 uint8_t curchar;
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
167 uint8_t cmd;
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
168 uint8_t nchars;
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
169 char buffer[MAX_BUFF+1];
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
170
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
171 void timeout_h() {
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
172 led = !led;
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
173 }
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
174
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
175 typedef struct _DSP
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
176 {
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
177 uint8_t cmd;
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
178 uint8_t color;
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
179 uint8_t bgcolor;
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
180 uint8_t x0;
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
181 uint8_t y0;
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
182 uint8_t fmt; // 0x01=>ascii, 0x02=>hex, 0x04=>bits, 0x08=>flags, 0x80=>ignore
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
183 uint8_t maxsize;
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
184 uint8_t width;
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
185 const unsigned char* font;
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
186 char buffer[MAX_BUFF+1];
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
187 } DSP;
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
188
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
189 static DSP table[] =
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
190 {
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
191 { 0x00, 0xF, 0x0, 0, 0, 0x01, MAX_BUFF, 245, Mono19x27}, // main display
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
192 { 0x0C, 0xF, 0x0,204, 38, 0x01, 3, 45, Mono15x22}, // channels display
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
193 // { 0x01, 0xF, 0x0, 0, 0, 0x80, MAX_BUFF, 0, Terminal6x8},
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
194 // { 0x02, 0xF, 0x0, 0, 0, 0x80, MAX_BUFF, 0, Terminal6x8},
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
195 { 0x0A, 0xF, 0x0, 0, 57, 0x08, 4, 0, Terminal6x8}, // flags + bits
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
196 // { 0xFF, 0xF, 0x0, 0, 0, 0x80, MAX_BUFF, 0, Terminal6x8},
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
197 };
2
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
198
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
199 // 9x10
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
200 const unsigned char icon_alarm[] __attribute__((aligned (2))) =
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
201 {
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
202 0x1c, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
203 0x3e, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
204 0x7f, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
205 0x7f, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
206 0x7f, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
207 0x7f, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
208 0x7f, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
209 0x7f, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
210 0xff, 0x80,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
211 0x10, 0x0
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
212 };
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
213
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
214 const unsigned char icon_curve[] __attribute__((aligned (2))) =
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
215 {
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
216 0x80, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
217 0x80, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
218 0x80, 0x80,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
219 0x81, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
220 0x9e, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
221 0xa0, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
222 0xc0, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
223 0x80, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
224 0x80, 0x0,
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
225 0xff, 0x80
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
226 };
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
227
2
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
228 typedef struct _FLAG
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
229 {
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
230 uint8_t flag;
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
231 uint16_t zone;
2
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
232 uint8_t x;
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
233 uint8_t y;
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
234 const char* msg;
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
235 const unsigned char* icon;
2
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
236 } FLAG;
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
237
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
238 typedef struct _FRAME
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
239 {
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
240 uint16_t flag;
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
241 uint8_t x0;
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
242 uint8_t y0;
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
243 uint8_t x1;
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
244 uint8_t y1;
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
245 } FRAME;
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
246
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
247 static const FLAG flags[] =
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
248 {
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
249 // flag, zone, x0, y0, msg, icon
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
250 // right-side icons area
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
251 { 0x00, 0x02, 0, 0, NULL, icon_alarm}, // F1.0
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
252 { 0x01, 0x02, 0, 11, NULL, icon_curve}, // F1.1
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
253 //{ 0x14, 0x02, 0, 0, "4W"}, // F2.4
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
254 //{ 0x15, 0x02, 0, 8, "OC"}, // F2.5
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
255
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
256 // F1.2 == Channel frame
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
257 { 0x03, 0x04, 1, 2, "Channel"}, // F1.3
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
258 // F1.7 == Alarm frame
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
259
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
260 // col 1
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
261 { 0x34, 0x10, 0, 0, "MON"}, // F4.4
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
262 { 0x33, 0x10, 0, 8, "VIEW"}, // F4.3
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
263 { 0x35, 0x10, 0, 16, "SCAN"}, // F4.5
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
264
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
265 //col 2
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
266 { 0x32, 0x20, 0, 0, "*"}, // F4.2
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
267 { 0x36, 0x20, 0, 8, "CONFIG"}, // F4.6
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
268 { 0x27, 0x20, 0, 16, "ERROR"}, // F3.7
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
269
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
270 // col 3
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
271 { 0x41, 0x040, 0, 0, "ADRS"}, // F4.1
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
272 { 0x40, 0x040, 0, 8, "RMT"}, // F4.0
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
273
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
274 // col 4
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
275 { 0x26, 0x080, 0, 0, "EXT"}, // F3.6
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
276 { 0x25, 0x080, 0, 8, "ONCE"}, // F3.5
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
277
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
278 { 0x23, 0x080, 0, 16, "MEM"}, // F3.3
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
279
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
280
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
281 // col 5
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
282 { 0x14, 0x100, 0, 0, "4W"}, // F2.4
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
283 { 0x15, 0x100, 0, 8, "OC"}, // F2.5
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
284 { 0x22, 0x100, 0, 16, "LAST"}, // F3.2
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
285 { 0x21, 0x100, 0, 16, "MIN"}, // F3.1
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
286 { 0x20, 0x100, 0, 16, "MAX"}, // F3.0
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
287 { 0x17, 0x100, 0, 16, "AVG"}, // F2.7
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
288
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
289 { 0x05, 0x08, 0, 0, "Alarm"}, // F1.5
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
290 { 0x06, 0x08, 0, 10, "H"}, // F1.6
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
291 { 0x13, 0x08, 6, 10, "1"}, // F2.3
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
292 { 0x10, 0x08, 12, 10, "2"}, // F2.0
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
293 { 0x12, 0x08, 18, 10, "3"}, // F2.2
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
294 { 0x11, 0x08, 24, 10, "4"}, // F2.1
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
295 { 0x04, 0x08, 30, 10, "L"}, // F1.4
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
296
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
297 };
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
298
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
299 static const FRAME zones[] =
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
300 { // flag, x0, y0, x1, y1
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
301 { 0x001, 0, 0, 245, 27}, // main display area
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
302 { 0x002, 246, 0, 255, 27}, // right notif area
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
303 { 0x004, 203, 28, 255, 54}, // channels display area
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
304 { 0x008, 160, 28, 202, 54}, // alarms area
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
305 { 0x010, 0, 28, 32, 54}, // flags col1
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
306 { 0x020, 33, 28, 70, 54}, // flags col2
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
307 { 0x040, 71, 28, 103, 54}, // flags col3
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
308 { 0x080, 104, 28, 128, 54}, // flags col4
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
309 { 0x100, 129, 28, 159, 54}, // flags col5
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
310
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
311 // { 0x8000, 0, 55, 255, 63}, // flags bits display area
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
312 };
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
313
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
314 static const FRAME frames[] =
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
315 {
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
316 { 0x02, 203, 35, 255, 54}, // F1.2 - channel frame
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
317 { 0x07, 160, 28, 202, 54}, // F1.7 - alarm frame
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
318 };
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
319
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
320
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
321 #ifdef DEBUG
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
322
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
323 DigitalOut dbgpin(DBGPIN);
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
324 inline void pulse(uint8_t count=1, bool stayup=false)
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
325 {
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
326 dbgpin = 0;
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
327 wait_us(2);
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
328 while (count--)
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
329 {
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
330 dbgpin = 1;
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
331 wait_us(2);
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
332 dbgpin = 0;
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
333 wait_us(2);
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
334 }
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
335 if (stayup)
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
336 dbgpin = 1;
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
337 }
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
338 #else
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
339 inline void pulse(uint8_t count=1, bool stayup=false)
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
340 {}
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
341 #endif
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
342
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
343 // callbacks & thread functions
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
344 void loop();
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
345 void copy_to_lcd(void);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
346 void test_dsp();
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
347 void reset(void);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
348 void reset_irq(void);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
349 void qei_cb(int dir);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
350 void end_splashscreen(void);
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
351 void show(uint8_t, const char*, uint8_t);
4
219766126afb another attempt using a more complete support of the protocol and async serial stuff
David Douard <david.douard@logilab.fr>
parents: 3
diff changeset
352
219766126afb another attempt using a more complete support of the protocol and async serial stuff
David Douard <david.douard@logilab.fr>
parents: 3
diff changeset
353
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
354
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
355 void setup() {
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
356 #ifdef HAVE_PC
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
357 pc.baud (115200);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
358 #endif
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
359
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
360 printf("\n\nSETUP\n");
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
361 printf(" System Core Clock = %.3f MHZ\r\n",
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
362 (float)SystemCoreClock/1000000);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
363
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
364 //printf("Attaching Led 1: %d\n", LED1);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
365 //blinker.attach(callback(timeout_h), 0.5f);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
366
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
367 hp = NULL;
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
368 printf("Serial communication pins\r\n");
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
369 printf(" USBRX=%d\r\n", USBRX);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
370 printf(" USBTX=%d\r\n", USBTX);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
371
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
372 printf("Setup HP communication pins\r\n");
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
373 printf(" HP_RX=%d\r\n", HP_RX);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
374 DigitalIn(HP_RX).mode(PullDown);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
375 printf(" HP_TX=%d\r\n", HP_TX);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
376 DigitalOut(HP_TX).write(1);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
377 printf(" HP_RST=%d\r\n", HP_RST);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
378 DigitalIn(HP_RST).mode(PullDown);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
379
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
380 printf(" setup QEI pins\r\n");
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
381 printf(" ENC1=%d\r\n", KP_ENC1);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
382 DigitalIn(KP_ENC1).mode(PullUp);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
383 printf(" ENC2=%d\r\n", KP_ENC2);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
384 DigitalIn(KP_ENC2).mode(PullUp);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
385 qenc.attach(&qei_cb);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
386
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
387 printf(" setup Keypad\r\n");
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
388 cur_keycode.keyevent = KEY_NONE;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
389 uint8_t nrows = sizeof(kp_rows)/sizeof(kp_rows[0]);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
390 uint8_t ncols = sizeof(kp_colums)/sizeof(kp_colums[0]);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
391
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
392 kpad = new Keypad(nrows, kp_in, ncols, kp_out);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
393 printf(" attach Keypad callbacks\r\n");
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
394 kpad->attach(&kp_cb, &kr_cb);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
395 printf(" start Keypad\r\n");
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
396 kpad->start();
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
397
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
398 printf("Setup OLED display\r\n");
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
399 // init the LCD
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
400 printf(" DSP_MOSI=%d\r\n", DSP_MOSI);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
401 printf(" DSP_MISO=%d\r\n", DSP_MISO);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
402 printf(" DSP_SCLK=%d\r\n", DSP_SCLK);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
403 printf(" DSP_CS=%d\r\n", DSP_CS);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
404 printf(" DSP_RST=%d\r\n", DSP_RST);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
405 printf(" DSP_DC=%d\r\n", DSP_DC);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
406 dsp = new SSD1322(20000000, DSP_MOSI, DSP_MISO, DSP_SCLK, DSP_CS,
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
407 DSP_RST, DSP_DC, "SSD1322");
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
408 //dsp.set_orientation(3);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
409 printf(" configure DSP\r\n");
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
410 // myLCD.set_font((unsigned char*) Terminal6x8);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
411 // myLCD.claim(stdout); // send stdout to the LCD display
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
412 // myLCD.claim(stderr); // send stderr to the LCD display
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
413 dsp->background(Black); // set background to black
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
414 dsp->foreground(0xF);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
415 dsp->cls();
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
416
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
417 cmd = 0xFF;
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
418 curchar = 0;
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
419 nchars = 0;
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
420
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
421 for (uint8_t i=0; i<sizeof(table)/sizeof(table[0]); ++i)
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
422 memset(table[i].buffer, 0, MAX_BUFF+1);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
423
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
424 printf(" display splash screen\r\n");
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
425 dsp->locate(30, 10);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
426 dsp->set_font((unsigned char*)Mono19x27);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
427 dsp->printf("HP34970A");
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
428 dsp->set_font((unsigned char*)Terminal6x8);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
429 dsp->locate(90, 40);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
430 dsp->printf("David Douard");
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
431 dsp->copy_to_lcd();
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
432
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
433 printf("Starting LCD thread\r\n");
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
434 tdsp.start(&copy_to_lcd);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
435
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
436 printf("Starting Event thread\r\n");
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
437 tloop.start(&loop);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
438
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
439 dsp->clrbuff();
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
440 show(0x00, "HH:MM:\tSS\t:mmmm", 15); // main dsp
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
441 show(0x0C, "888", 3); // channel dsp
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
442 show(0x0A, "\xFF\xFF\xFF\xFF", 4); // all flags
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
443
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
444 printf("Attaching timers\r\n");
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
445 splashscreen = true;
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
446 splashscreen_timer.attach(callback(&end_splashscreen), 2);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
447 rst.fall(&reset_irq);
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
448
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
449 printf("SETUP DONE\r\n");
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
450 }
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
451
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
452 void end_splashscreen(void)
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
453 {
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
454 printf("End of splash screen CB\r\n");
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
455 //dsp->cls();
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
456 splashscreen = false;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
457 }
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
458
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
459 void reset_irq(void)
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
460 {
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
461 rst_delay.attach(callback(&reset), 0.1);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
462 }
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
463
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
464 void reset(void)
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
465 {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
466 if (DigitalIn(HP_RST).read() == 0) {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
467 if (hp == NULL) {
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
468 printf("setup HP communication handler\r\n");
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
469 hp = new HPSerial(HP_TX, HP_RX);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
470 }
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
471
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
472 printf("!! RST !! (gstate=%d, state=%d)\r\n",
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
473 hp->gstate(), hp->state());
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
474 //printf("Value is ... %X\n", hp->search());
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
475 hp->startup();
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
476 }
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
477 }
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
478
4
219766126afb another attempt using a more complete support of the protocol and async serial stuff
David Douard <david.douard@logilab.fr>
parents: 3
diff changeset
479 void copy_to_lcd(void) {
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
480 //uint8_t mask=1;
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
481
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
482 while(1) {
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
483 pulse(0, true);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
484 if ((splashscreen == false) && (must_refresh)) {
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
485 must_refresh = 0;
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
486 //Thread::wait(20); // give a bit of time for some more cmds
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
487 dsp->copy_to_lcd();
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
488 }
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
489
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
490 /*
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
491 if (must_refresh & mask) {
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
492 for(uint8_t i=0; i<sizeof(zones)/sizeof(zones[0]); i++)
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
493 if (zones[i].flag == mask) {
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
494 dsp->copy_to_lcd(zones[i].x0/4, (zones[i].x1+3)/4,
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
495 zones[i].y0, zones[i].y1);
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
496 must_refresh &= ~mask;
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
497 break;
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
498 }
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
499 }
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
500 mask = mask << 1;
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
501 if (mask == 0) {
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
502 mask = 1;
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
503 }
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
504 */
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
505 pulse(0, false);
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
506 Thread::wait(30);
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
507 }
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
508 }
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
509
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
510 void show(uint8_t cmd, const char *intxt, uint8_t nchar=0) {
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
511 uint8_t i, len;
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
512 uint16_t bgcolor, fgcolor;
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
513 char *oldv;
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
514 char *txt, *txtp;
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
515
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
516
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
517 if (cmd == 0xFF) // cls
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
518 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
519 dsp->clrbuff();
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
520 }
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
521 else
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
522 {
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
523 txt = (char *)malloc(strlen(intxt)+1);
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
524 strcpy(txt, intxt);
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
525 txtp = txt;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
526
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
527 pulse(1, true);
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
528
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
529 len = MAX_BUFF;
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
530
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
531 for (i=0; i<sizeof(table)/sizeof(table[0]); ++i) {
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
532 if (table[i].cmd == cmd) {
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
533 bgcolor = table[i].bgcolor;
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
534 fgcolor = table[i].color;
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
535 dsp->background(bgcolor);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
536 dsp->foreground(fgcolor);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
537 dsp->set_font((unsigned char*) table[i].font);
2
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
538 oldv = table[i].buffer;
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
539
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
540 dsp->locate(table[i].x0, table[i].y0);
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
541
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
542 if (table[i].fmt & 0x01 )
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
543 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
544 if (strncmp(oldv, txt, table[i].maxsize) != 0)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
545 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
546 // ascii
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
547 if (table[i].width > 0)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
548 dsp->fillrect(table[i].x0,
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
549 table[i].y0,
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
550 table[i].x0 + table[i].width,
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
551 table[i].y0 + table[i].font[2],
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
552 bgcolor);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
553 for (uint8_t k=0; ;k++)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
554 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
555 if (txtp[k] == 0x00)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
556 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
557 dsp->printf(txtp);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
558 break;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
559 }
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
560 if (txtp[k] == 0x09)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
561 { // \t is a special char for 'unselected' display value
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
562 txtp[k] = 0x00;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
563 dsp->printf(txtp);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
564
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
565 if (fgcolor == table[i].color)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
566 fgcolor /= 2;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
567 else
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
568 fgcolor = table[i].color;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
569 dsp->foreground(fgcolor);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
570 txtp = &(txtp[k+1]);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
571 k = 0;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
572 }
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
573 }
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
574 if (cmd == 0x00) // main area
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
575 must_refresh |= 0x01;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
576 if (cmd == 0x0C) // channels area
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
577 must_refresh |= 0x04;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
578 }
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
579 }
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
580 /*
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
581 if (table[i].fmt & 0x02 ) {
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
582 // hex
2
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
583 for (uint8_t j=0;; j++) {
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
584 if (txt[j] == 0x00)
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
585 break;
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
586 dsp->printf("%02X ", txt[j]);
2
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
587 }
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
588 for (uint8_t j=3*strlen(txt); j<table[i].maxsize; j++)
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
589 dsp->printf(" ");
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
590 }
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
591 */
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
592 if (table[i].fmt & 0x08 )
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
593 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
594 // flags
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
595 for (uint8_t j=0; j<max(nchar, table[i].maxsize) ; j++)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
596 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
597 for (uint8_t k=0; k<8; k++)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
598 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
599 if (1)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
600 { //(txt[j] & (1 << k) ) != (oldv[j] & (1 << k))) {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
601 if (txtp[j] & (1 << k))
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
602 dsp->foreground(fgcolor);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
603 else
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
604 dsp->foreground(bgcolor);
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
605
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
606 /*
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
607 for (uint8_t l=0;
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
608 l<(sizeof(frames)/sizeof(frames[0])); ++l) {
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
609 if (frames[l].flag & ((j<<4) + k))
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
610 dsp->fillrect(frames[l].x0, frames[l].y0,
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
611 frames[l].x1, frames[l].y1,
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
612 fgcolor/8);
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
613 else
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
614 dsp->fillrect(frames[l].x0, frames[l].y0,
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
615 frames[l].x1, frames[l].y1,
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
616 bgcolor);
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
617
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
618 }
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
619 */
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
620
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
621 for (uint8_t l=0;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
622 l<(sizeof(flags)/sizeof(flags[0])); ++l)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
623 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
624 if (flags[l].flag == ((j<<4) + k)) {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
625 for (uint8_t m=0; m<(sizeof(zones)/sizeof(zones[0])); m++)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
626 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
627 if (flags[l].zone == zones[m].flag) {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
628 if (flags[l].msg != NULL)
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
629 { // a string
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
630 dsp->locate(flags[l].x + zones[m].x0,
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
631 flags[l].y + zones[m].y0);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
632 dsp->printf(flags[l].msg);}
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
633 else
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
634 { // an icon
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
635 Bitmap_s pic = {9, 10, 2, (char*) flags[l].icon};
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
636 dsp->Bitmap_BW(pic,
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
637 flags[l].x + zones[m].x0,
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
638 flags[l].y + zones[m].y0);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
639 }
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
640 must_refresh |= zones[m].flag;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
641 break;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
642 }
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
643 }
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
644 break;
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
645 }
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
646 }
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
647 }
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
648 }
2
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
649 }
d0826e4a1ff7 several improvements
David Douard <david.douard@logilab.fr>
parents: 1
diff changeset
650 }
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
651
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
652 for(uint8_t j=0; j<table[i].maxsize; j++)
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
653 oldv[j] = txt[j];
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
654 break;
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
655 }
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
656 }
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
657 free(txt);
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
658 //dsp->copy_to_lcd();
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
659 pulse(1, false);
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
660 }
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
661 }
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
662
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
663 void test_dsp()
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
664 {
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
665 const FRAME *z;
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
666 printf("TEST DSP\r\n");
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
667 dsp->cls();
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
668 printf("TEST DSP #2\r\n");
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
669 show(0x00, "8g8g8g8g8g8g8", 13); // main dsp
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
670 show(0x0C, "888", 3); // channel dsp
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
671 show(0x0A, "\xFF\xFF\xFF\xFF", 4); // all flags
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
672 dsp->copy_to_lcd();
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
673 wait(3);
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
674 dsp->cls();
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
675 printf("TEST DSP #3\r\n");
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
676
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
677 for (uint8_t i=0; i<(sizeof(zones)/sizeof(zones[0])); i++)
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
678 {
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
679 z = &zones[i];
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
680 dsp->fillrect(z->x0, z->y0, z->x1, z->y1, 4+i);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
681 dsp->locate(z->x0+1, z->y0+1);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
682 dsp->printf("%d", i);
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
683 }
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
684
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
685 /*
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
686 for (uint8_t i=0; i<(sizeof(zones)/sizeof(zones[0])); i++)
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
687 {
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
688 z = &zones[i];
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
689 printf("Zone %d [%x]: %d, %d, %d, %d\n", i, z->flag,
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
690 z->x0, z->y0, z->x1, z->y1);
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
691 must_refresh = z->flag;
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
692 wait(1);
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
693 }
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
694 printf("Done\n");
7
5cf4034ba4e0 attempt to update display by bloc
David Douard <david.douard@logilab.fr>
parents: 5
diff changeset
695 wait(2);
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
696 printf("Copy ALL\n");
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
697 dsp->copy_to_lcd();
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
698 */
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
699 wait(2);
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
700 dsp->cls();
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
701 printf("TEST DSP DONE\r\n");
3
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
702 }
a3233abe730e beginning of a working display using the 3.2 OLED module
David Douard <david.douard@logilab.fr>
parents: 2
diff changeset
703
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
704
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
705 void loop()
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
706 { // run over and over
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
707 unsigned int err[8];
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
708 for (uint8_t i=0; i<8; i++)
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
709 err[i] = 0;
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
710 int p, pp;
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
711 p = 0;
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
712 pp = 0;
8
55021f3f1929 pff so many stuff
David Douard <david.douard@logilab.fr>
parents: 7
diff changeset
713 while(1) {
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
714 if (knob != 0)
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
715 {
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
716 if (hp != NULL)
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
717 {
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
718 printf("Sending keycode %X\r\n", knob);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
719 hp->sendkey(knob);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
720 printf(" DONE\r\n");
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
721 }
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
722 knob = 0;
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
723 }
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
724
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
725 if (cur_keycode.keyevent != KEY_NONE)
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
726 {
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
727 printf("Keycode %dx%d: %s\r\n",
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
728 cur_keycode.row, cur_keycode.col,
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
729 cur_keycode.keyevent==KEY_PRESSED?"pressed":"released");
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
730 cur_keycode.keyevent = KEY_NONE;
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
731 }
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
732
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
733 p = qenc.getPulses();
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
734 if (p != pp)
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
735 {
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
736 printf("Pulses = %d\r\n", p);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
737 pp = p;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
738 }
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
739
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
740 if ((hp != NULL) && (hp->cmd_available()))
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
741 {
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
742 HPSerial::CMD cmd;
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
743 if (hp->pop(cmd))
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
744 {
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
745 led = 1;
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
746 for (uint8_t i=0; i<7; i++)
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
747 if (hp->nerrors(i) > err[i]) {
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
748 printf("ERR: %d/%d/%d/%d/%d/%d/%d\r\n",
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
749 hp->nerrors(0),
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
750 hp->nerrors(1),
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
751 hp->nerrors(2),
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
752 hp->nerrors(3),
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
753 hp->nerrors(4),
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
754 hp->nerrors(5),
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
755 hp->nerrors(6)
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
756 );
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
757 break;
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
758 }
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
759 for (uint8_t i=0; i<7; i++)
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
760 err[i] = hp->nerrors(i);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
761
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
762 printf("CMD[%d] %02X", (int)cmd.id, cmd.cmd);
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
763
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
764 if ((cmd.cmd == 0x00) || (cmd.cmd == 0x0C))
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
765 printf(": '%s'\r\n", cmd.value);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
766 else {
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
767 printf(":");
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
768 for (uint8_t i=0; i<cmd.size; i++)
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
769 printf("%02x ", cmd.value[i]);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
770 printf("\r\n");
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
771 }
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
772 show(cmd.cmd, cmd.value, cmd.size);
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
773 led = 0;
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
774 }
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
775 }
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
776 //else
17
162fe523c37d almost working... before killing the 87C51...
David Douard <david.douard@logilab.fr>
parents: 13
diff changeset
777 Thread::wait(1);
5
f1c85c2500f2 several improvements
David Douard <david.douard@logilab.fr>
parents: 4
diff changeset
778 }
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
779 }
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
780
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
781 void qei_cb(int dir)
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
782 {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
783 if(dir == 1) // turn right
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
784 knob = 0x80;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
785 else // turn left
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
786 knob = 0x83;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
787 }
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
788
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
789 void kp_cb(uint8_t row, uint8_t col)
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
790 {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
791 cur_keycode.row = row;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
792 cur_keycode.col = col;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
793 cur_keycode.keyevent = KEY_PRESSED;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
794 }
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
795
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
796 void kr_cb(uint8_t row, uint8_t col)
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
797 {
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
798 cur_keycode.row = row;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
799 cur_keycode.col = col;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
800 cur_keycode.keyevent = KEY_RELEASED;
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
801 }
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
802
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
803 int main()
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
804 {
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
805 setup();
21
David Douard <david.douard@logilab.fr>
parents: 19
diff changeset
806 printf("Main loop (noop)\r\n");
19
a52d60613cf7 Stuff...
David Douard <david.douard@logilab.fr>
parents: 18
diff changeset
807 while(1)
22
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
808 {
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
809 timeout_h();
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
810 wait(1);
2f51221af82d more stuff
David Douard <david.douard@logilab.fr>
parents: 21
diff changeset
811 }
1
3021fc79cc3b kinf of working prototype using a ILI9341 based TFT
David Douard <david.douard@logilab.fr>
parents:
diff changeset
812 }

mercurial