···
11
11
use core::cell::{RefCell, RefMut};
12
12
use critical_section::Mutex;
13
13
use defmt::{debug, error, info, trace};
14
14
+
use embedded_graphics::mono_font::ascii::FONT_10X20;
15
15
+
use embedded_graphics::mono_font::MonoTextStyle;
14
16
use embedded_graphics::pixelcolor::BinaryColor;
15
17
use embedded_graphics::prelude::*;
16
18
use embedded_graphics::primitives::{Line, PrimitiveStyle, PrimitiveStyleBuilder};
19
19
+
use embedded_graphics::text::Text;
17
20
use embedded_hal::digital::PinState;
18
21
use embedded_hal::i2c::I2c;
19
22
use embedded_hal_bus::i2c::RefCellDevice;
···
158
161
let mut epd = Tp370pgh01::new(cs, IoPin::new(sda), sck, dc, busy, rst, timer, Rp2040PervasiveSpiDelays);
159
162
epd.hard_reset().unwrap();
160
163
161
161
-
let mut prev_image = [0u8; tp370pgh01::IMAGE_BYTES];
162
162
-
let mut image = [0u8; tp370pgh01::IMAGE_BYTES];
164
164
+
let mut prev_image = [0u8; IMAGE_BYTES];
165
165
+
let mut image = [0u8; IMAGE_BYTES];
163
166
164
167
loop {
165
168
cortex_m::asm::wfe();
···
180
183
}).unwrap();
181
184
182
185
186
186
+
let mut draw_target = EpdDrawTarget::new(ProgramFunctionTable {
187
187
+
write_image,
188
188
+
refresh,
189
189
+
refresh_fast,
190
190
+
});
191
191
+
192
192
+
Text::new("Hello, World!", Point::new(20, 20), MonoTextStyle::new(&FONT_10X20, BinaryColor::On))
193
193
+
.draw(&mut draw_target)
194
194
+
.unwrap();
195
195
+
draw_target.refresh();
196
196
+
183
197
let programs = Programs::new();
184
198
for _program in programs {
185
199
cortex_m::asm::delay(0);
···
221
235
222
236
#[interrupt]
223
237
fn IO_IRQ_BANK0() {
238
238
+
static mut FIRST_EVENT: bool = true;
224
239
static mut TOUCH_INT_PIN: Option<EpdTouchInt> = None;
225
240
static mut I2C: Option<I2C<I2C0, (I2CSda, I2CScl)>> = None;
226
241
static mut PREV_POS: Point = Point::new(0, 0);
···
252
267
};
253
268
TEMP.store(temp, Ordering::Relaxed);
254
269
255
255
-
if let Some(int) = TOUCH_INT_PIN {
270
270
+
if *FIRST_EVENT == true {
271
271
+
*FIRST_EVENT = false;
272
272
+
} else if let Some(int) = TOUCH_INT_PIN {
256
273
if int.interrupt_status(EdgeLow) {
257
274
let mut buf = [0u8; 9];
258
275
i2c.write_read(0x38u8, &[0x00], &mut buf).unwrap();