.idea
eepy
eepy-example-app
eepy-gui
eepy-serial
eepy-sys
fw16-epd-example-app
···
8
8
<sourceFolder url="file://$MODULE_DIR$/fw16-epd-bsp/src" isTestSource="false" />
9
9
<sourceFolder url="file://$MODULE_DIR$/pervasive-spi/src" isTestSource="false" />
10
10
<sourceFolder url="file://$MODULE_DIR$/tp370pgh01/src" isTestSource="false" />
11
11
-
<sourceFolder url="file://$MODULE_DIR$/fw16-epd-main/src" isTestSource="false" />
12
12
-
<sourceFolder url="file://$MODULE_DIR$/fw16-epd-program-interface/src" isTestSource="false" />
13
13
-
<sourceFolder url="file://$MODULE_DIR$/fw16-epd-gui/src" isTestSource="false" />
14
14
-
<sourceFolder url="file://$MODULE_DIR$/fw16-epd-example-app/src" isTestSource="false" />
15
11
<sourceFolder url="file://$MODULE_DIR$/elf2epb/src" isTestSource="false" />
16
16
-
<sourceFolder url="file://$MODULE_DIR$/fw16-epd-serial-common/src" isTestSource="false" />
12
12
+
<sourceFolder url="file://$MODULE_DIR$/eepy-example-app/src" isTestSource="false" />
13
13
+
<sourceFolder url="file://$MODULE_DIR$/eepy-gui/src" isTestSource="false" />
14
14
+
<sourceFolder url="file://$MODULE_DIR$/eepy-serial/src" isTestSource="false" />
15
15
+
<sourceFolder url="file://$MODULE_DIR$/eepy-sys/src" isTestSource="false" />
16
16
+
<sourceFolder url="file://$MODULE_DIR$/eepy/src" isTestSource="false" />
17
17
<excludeFolder url="file://$MODULE_DIR$/fw16_epd_bsp/target" />
18
18
<excludeFolder url="file://$MODULE_DIR$/target" />
19
19
<excludeFolder url="file://$MODULE_DIR$/fw16-epd-bsp/target" />
···
1
1
[workspace]
2
2
resolver = "2"
3
3
4
4
-
members = [ "elf2epb",
5
5
-
"fw16-epd-bsp", "fw16-epd-example-app", "fw16-epd-gui",
6
6
-
"fw16-epd-main", "fw16-epd-program-interface", "fw16-epd-serial-common",
4
4
+
members = [
5
5
+
"fw16-epd-bsp",
6
6
+
"eepy",
7
7
+
"eepy-sys",
8
8
+
"eepy-serial",
9
9
+
"eepy-gui",
10
10
+
"eepy-example-app",
11
11
+
"elf2epb",
7
12
"pervasive-spi",
8
13
"tp370pgh01",
9
14
]
···
1
1
+
[package]
2
2
+
name = "eepy-example-app"
3
3
+
version = "0.1.0"
4
4
+
edition = "2021"
5
5
+
6
6
+
[dependencies]
7
7
+
eepy-sys = { path = "../eepy-sys" }
8
8
+
eepy-gui = { path = "../eepy-gui" }
9
9
+
embedded-graphics.workspace = true
10
10
+
heapless.workspace = true
11
11
+
panic-halt = "1.0"
···
1
1
+
#!/bin/sh
2
2
+
3
3
+
rm -r out
4
4
+
mkdir out
5
5
+
mkdir out/bins
6
6
+
7
7
+
for slot in `seq -f "%02g" 31`
8
8
+
do
9
9
+
EPD_PROG_SLOT=$slot cargo build --release
10
10
+
elf2epb -i ../target/thumbv6m-none-eabi/release/eepy-example-app -o "out/bins/fw16-epd-example-app.s$slot.epb"
11
11
+
done
12
12
+
13
13
+
(cd out/bins && tar --zstd -cf ../eepy-example-app.epa *)
···
1
1
-
[package]
2
2
-
name = "fw16-epd-example-app"
3
3
-
version = "0.1.0"
4
4
-
edition = "2021"
5
5
-
6
6
-
[dependencies]
7
7
-
fw16-epd-program-interface = { path = "../fw16-epd-program-interface" }
8
8
-
fw16-epd-gui = { path = "../fw16-epd-gui" }
9
9
-
embedded-graphics.workspace = true
10
10
-
heapless.workspace = true
11
11
-
panic-halt = "1.0"
···
1
1
-
#!/bin/sh
2
2
-
3
3
-
rm -r out
4
4
-
mkdir out
5
5
-
mkdir out/bins
6
6
-
7
7
-
for slot in `seq -f "%02g" 31`
8
8
-
do
9
9
-
EPD_PROG_SLOT=$slot cargo build --release
10
10
-
elf2epb -i ../target/thumbv6m-none-eabi/release/fw16-epd-example-app -o "out/bins/fw16-epd-example-app.s$slot.epb"
11
11
-
done
12
12
-
13
13
-
(cd out/bins && tar --zstd -cf ../fw16-epd-example-app.epa *)
···
10
10
use embedded_graphics::prelude::Point;
11
11
use embedded_graphics::text::Text;
12
12
use heapless::String;
13
13
-
use fw16_epd_gui::draw_target::EpdDrawTarget;
14
14
-
use fw16_epd_gui::element::button::Button;
15
15
-
use fw16_epd_gui::element::{Gui, DEFAULT_TEXT_STYLE};
16
16
-
use fw16_epd_program_interface::{ProgramFunctionTable, RefreshBlockMode, SafeOption};
17
17
-
use fw16_epd_program_interface::header::ProgramSlotHeader;
13
13
+
use eepy_gui::draw_target::EpdDrawTarget;
14
14
+
use eepy_gui::element::button::Button;
15
15
+
use eepy_gui::element::{Gui, DEFAULT_TEXT_STYLE};
16
16
+
use eepy_sys::{ProgramFunctionTable, RefreshBlockMode, SafeOption};
17
17
+
use eepy_sys::header::ProgramSlotHeader;
18
18
19
19
extern "C" {
20
20
static _end: *const u8;
···
1
1
[package]
2
2
-
name = "fw16-epd-gui"
2
2
+
name = "eepy-gui"
3
3
version = "0.1.0"
4
4
edition = "2021"
5
5
6
6
[dependencies]
7
7
-
fw16-epd-program-interface = { path = "../fw16-epd-program-interface", features = ["embedded-graphics"] }
7
7
+
eepy-sys = { path = "../eepy-sys", features = ["embedded-graphics"] }
8
8
tp370pgh01 = { path = "../tp370pgh01" }
9
9
embedded-graphics.workspace = true
10
10
defmt = { workspace = true, optional = true }
···
4
4
use embedded_graphics::Pixel;
5
5
use embedded_graphics::pixelcolor::BinaryColor;
6
6
use embedded_graphics::primitives::Rectangle;
7
7
-
use fw16_epd_program_interface::RefreshBlockMode;
7
7
+
use eepy_sys::RefreshBlockMode;
8
8
use tp370pgh01::{DIM_X, DIM_Y, IMAGE_BYTES};
9
9
10
10
pub struct EpdDrawTarget {
···
1
1
[package]
2
2
-
name = "fw16-epd-main"
2
2
+
name = "eepy"
3
3
version = "0.1.0-alpha"
4
4
edition = "2021"
5
5
6
6
[dependencies]
7
7
fw16-epd-bsp = { path = "../fw16-epd-bsp" }
8
8
-
fw16-epd-program-interface = { path = "../fw16-epd-program-interface", features = ["defmt"] }
9
9
-
fw16-epd-gui = { path = "../fw16-epd-gui", features = ["defmt-derive"] }
10
10
-
fw16-epd-serial-common = { path = "../fw16-epd-serial-common" }
8
8
+
eepy-sys = { path = "../eepy-sys", features = ["defmt"] }
9
9
+
eepy-gui = { path = "../eepy-gui", features = ["defmt-derive"] }
10
10
+
eepy-serial = { path = "../eepy-serial" }
11
11
tp370pgh01 = { path = "../tp370pgh01", features = ["rp2040", "defmt"] }
12
12
cortex-m.workspace = true
13
13
cortex-m-rt.workspace = true
···
3
3
use embedded_graphics::pixelcolor::BinaryColor;
4
4
use embedded_graphics::prelude::*;
5
5
use embedded_graphics::primitives::{Circle, Line, PrimitiveStyle, Rectangle};
6
6
-
use fw16_epd_gui::draw_target::EpdDrawTarget;
7
7
-
use fw16_epd_gui::element::button::Button;
8
8
-
use fw16_epd_gui::element::Gui;
9
9
-
use fw16_epd_gui::element::slider::Slider;
10
10
-
use fw16_epd_program_interface::{RefreshBlockMode, SafeOption, Event, TouchEventType};
6
6
+
use eepy_gui::draw_target::EpdDrawTarget;
7
7
+
use eepy_gui::element::button::Button;
8
8
+
use eepy_gui::element::Gui;
9
9
+
use eepy_gui::element::slider::Slider;
10
10
+
use eepy_sys::{RefreshBlockMode, SafeOption, Event, TouchEventType};
11
11
use crate::{next_event, set_touch_enabled};
12
12
13
13
enum Page {
···
36
36
use fw16_epd_bsp::hal::timer::{Alarm, Alarm0};
37
37
use fw16_epd_bsp::pac::I2C0;
38
38
use fw16_epd_bsp::pac::interrupt;
39
39
-
use fw16_epd_gui::draw_target::EpdDrawTarget;
40
40
-
use fw16_epd_program_interface::{Event, RefreshBlockMode, SafeOption, TouchEvent, TouchEventType};
39
39
+
use eepy_gui::draw_target::EpdDrawTarget;
40
40
+
use eepy_sys::{Event, RefreshBlockMode, SafeOption, TouchEvent, TouchEventType};
41
41
use tp370pgh01::rp2040::{Rp2040PervasiveSpiDelays, IoPin};
42
42
use tp370pgh01::{Tp370pgh01, IMAGE_BYTES};
43
43
use crate::ringbuffer::RingBuffer;
···
1
1
use core::marker::PhantomData;
2
2
-
use fw16_epd_program_interface::header::*;
2
2
+
use eepy_sys::header::*;
3
3
4
4
pub(crate) const unsafe fn slot<'a>(id: u8) -> &'a ProgramSlotHeader {
5
5
if id < 1 || id > 31 {
···
4
4
use usbd_serial::SerialPort;
5
5
use fw16_epd_bsp::hal::usb::UsbBus;
6
6
use fw16_epd_bsp::pac;
7
7
-
use fw16_epd_program_interface::header::ProgramSlotHeader;
8
8
-
use fw16_epd_program_interface::RefreshBlockMode;
9
9
-
use fw16_epd_serial_common::{Response, SerialCommand};
7
7
+
use eepy_sys::header::ProgramSlotHeader;
8
8
+
use eepy_sys::RefreshBlockMode;
9
9
+
use eepy_serial::{Response, SerialCommand};
10
10
use tp370pgh01::IMAGE_BYTES;
11
11
use crate::{refresh, write_image, GLOBAL_USB_DEVICE, GLOBAL_USB_SERIAL};
12
12
-
use crate::programs::Programs;
13
12
14
13
#[derive(Copy, Clone, Debug, defmt::Format)]
15
14
enum SerialState {
···
1
1
[package]
2
2
-
name = "fw16-epd-program-interface"
2
2
+
name = "eepy-sys"
3
3
version = "0.1.0"
4
4
edition = "2021"
5
5
···
1
1
[package]
2
2
-
name = "fw16-epd-serial-common"
2
2
+
name = "eepy-serial"
3
3
version = "0.1.0"
4
4
edition = "2021"
5
5