diff --git a/.idea/epd_firmware.iml b/.idea/epd_firmware.iml
index f164665..7a925a2 100644
--- a/.idea/epd_firmware.iml
+++ b/.idea/epd_firmware.iml
@@ -8,12 +8,12 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/Cargo.toml b/Cargo.toml
index 2d34619..aabe5dc 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,9 +1,14 @@
[workspace]
resolver = "2"
-members = [ "elf2epb",
- "fw16-epd-bsp", "fw16-epd-example-app", "fw16-epd-gui",
- "fw16-epd-main", "fw16-epd-program-interface", "fw16-epd-serial-common",
+members = [
+ "fw16-epd-bsp",
+ "eepy",
+ "eepy-sys",
+ "eepy-serial",
+ "eepy-gui",
+ "eepy-example-app",
+ "elf2epb",
"pervasive-spi",
"tp370pgh01",
]
diff --git a/fw16-epd-example-app/.cargo/config.toml b/eepy-example-app/.cargo/config.toml
similarity index 100%
rename from fw16-epd-example-app/.cargo/config.toml
rename to eepy-example-app/.cargo/config.toml
diff --git a/fw16-epd-example-app/.gitignore b/eepy-example-app/.gitignore
similarity index 100%
rename from fw16-epd-example-app/.gitignore
rename to eepy-example-app/.gitignore
diff --git a/eepy-example-app/Cargo.toml b/eepy-example-app/Cargo.toml
new file mode 100644
index 0000000..ddd088d
--- /dev/null
+++ b/eepy-example-app/Cargo.toml
@@ -0,0 +1,11 @@
+[package]
+name = "eepy-example-app"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+eepy-sys = { path = "../eepy-sys" }
+eepy-gui = { path = "../eepy-gui" }
+embedded-graphics.workspace = true
+heapless.workspace = true
+panic-halt = "1.0"
diff --git a/fw16-epd-example-app/build.rs b/eepy-example-app/build.rs
similarity index 100%
rename from fw16-epd-example-app/build.rs
rename to eepy-example-app/build.rs
diff --git a/eepy-example-app/build.sh b/eepy-example-app/build.sh
new file mode 100755
index 0000000..b4cbe8a
--- /dev/null
+++ b/eepy-example-app/build.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+rm -r out
+mkdir out
+mkdir out/bins
+
+for slot in `seq -f "%02g" 31`
+do
+ EPD_PROG_SLOT=$slot cargo build --release
+ elf2epb -i ../target/thumbv6m-none-eabi/release/eepy-example-app -o "out/bins/fw16-epd-example-app.s$slot.epb"
+done
+
+(cd out/bins && tar --zstd -cf ../eepy-example-app.epa *)
\ No newline at end of file
diff --git a/fw16-epd-example-app/program.x b/eepy-example-app/program.x
similarity index 100%
rename from fw16-epd-example-app/program.x
rename to eepy-example-app/program.x
diff --git a/fw16-epd-example-app/src/main.rs b/eepy-example-app/src/main.rs
similarity index 86%
rename from fw16-epd-example-app/src/main.rs
rename to eepy-example-app/src/main.rs
index ab088c1..d32d7ae 100644
--- a/fw16-epd-example-app/src/main.rs
+++ b/eepy-example-app/src/main.rs
@@ -10,11 +10,11 @@ use embedded_graphics::pixelcolor::BinaryColor;
use embedded_graphics::prelude::Point;
use embedded_graphics::text::Text;
use heapless::String;
-use fw16_epd_gui::draw_target::EpdDrawTarget;
-use fw16_epd_gui::element::button::Button;
-use fw16_epd_gui::element::{Gui, DEFAULT_TEXT_STYLE};
-use fw16_epd_program_interface::{ProgramFunctionTable, RefreshBlockMode, SafeOption};
-use fw16_epd_program_interface::header::ProgramSlotHeader;
+use eepy_gui::draw_target::EpdDrawTarget;
+use eepy_gui::element::button::Button;
+use eepy_gui::element::{Gui, DEFAULT_TEXT_STYLE};
+use eepy_sys::{ProgramFunctionTable, RefreshBlockMode, SafeOption};
+use eepy_sys::header::ProgramSlotHeader;
extern "C" {
static _end: *const u8;
diff --git a/fw16-epd-gui/Cargo.toml b/eepy-gui/Cargo.toml
similarity index 67%
rename from fw16-epd-gui/Cargo.toml
rename to eepy-gui/Cargo.toml
index 51de272..0061771 100644
--- a/fw16-epd-gui/Cargo.toml
+++ b/eepy-gui/Cargo.toml
@@ -1,10 +1,10 @@
[package]
-name = "fw16-epd-gui"
+name = "eepy-gui"
version = "0.1.0"
edition = "2021"
[dependencies]
-fw16-epd-program-interface = { path = "../fw16-epd-program-interface", features = ["embedded-graphics"] }
+eepy-sys = { path = "../eepy-sys", features = ["embedded-graphics"] }
tp370pgh01 = { path = "../tp370pgh01" }
embedded-graphics.workspace = true
defmt = { workspace = true, optional = true }
diff --git a/fw16-epd-gui/src/draw_target.rs b/eepy-gui/src/draw_target.rs
similarity index 97%
rename from fw16-epd-gui/src/draw_target.rs
rename to eepy-gui/src/draw_target.rs
index f2a5b15..2ccad23 100644
--- a/fw16-epd-gui/src/draw_target.rs
+++ b/eepy-gui/src/draw_target.rs
@@ -4,7 +4,7 @@ use embedded_graphics::geometry::Dimensions;
use embedded_graphics::Pixel;
use embedded_graphics::pixelcolor::BinaryColor;
use embedded_graphics::primitives::Rectangle;
-use fw16_epd_program_interface::RefreshBlockMode;
+use eepy_sys::RefreshBlockMode;
use tp370pgh01::{DIM_X, DIM_Y, IMAGE_BYTES};
pub struct EpdDrawTarget {
diff --git a/fw16-epd-gui/src/lib.rs b/eepy-gui/src/lib.rs
similarity index 100%
rename from fw16-epd-gui/src/lib.rs
rename to eepy-gui/src/lib.rs
diff --git a/fw16-epd-serial-common/Cargo.toml b/eepy-serial/Cargo.toml
similarity index 65%
rename from fw16-epd-serial-common/Cargo.toml
rename to eepy-serial/Cargo.toml
index 01caff1..1c19ab2 100644
--- a/fw16-epd-serial-common/Cargo.toml
+++ b/eepy-serial/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "fw16-epd-serial-common"
+name = "eepy-serial"
version = "0.1.0"
edition = "2021"
diff --git a/fw16-epd-serial-common/src/lib.rs b/eepy-serial/src/lib.rs
similarity index 100%
rename from fw16-epd-serial-common/src/lib.rs
rename to eepy-serial/src/lib.rs
diff --git a/fw16-epd-program-interface/Cargo.toml b/eepy-sys/Cargo.toml
similarity index 87%
rename from fw16-epd-program-interface/Cargo.toml
rename to eepy-sys/Cargo.toml
index e71d061..cadb964 100644
--- a/fw16-epd-program-interface/Cargo.toml
+++ b/eepy-sys/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "fw16-epd-program-interface"
+name = "eepy-sys"
version = "0.1.0"
edition = "2021"
diff --git a/fw16-epd-program-interface/src/header.rs b/eepy-sys/src/header.rs
similarity index 100%
rename from fw16-epd-program-interface/src/header.rs
rename to eepy-sys/src/header.rs
diff --git a/fw16-epd-program-interface/src/lib.rs b/eepy-sys/src/lib.rs
similarity index 100%
rename from fw16-epd-program-interface/src/lib.rs
rename to eepy-sys/src/lib.rs
diff --git a/fw16-epd-main/.cargo/config.toml b/eepy/.cargo/config.toml
similarity index 100%
rename from fw16-epd-main/.cargo/config.toml
rename to eepy/.cargo/config.toml
diff --git a/fw16-epd-main/.gdbinit b/eepy/.gdbinit
similarity index 100%
rename from fw16-epd-main/.gdbinit
rename to eepy/.gdbinit
diff --git a/fw16-epd-main/Cargo.toml b/eepy/Cargo.toml
similarity index 72%
rename from fw16-epd-main/Cargo.toml
rename to eepy/Cargo.toml
index 5c13510..2bf98dc 100644
--- a/fw16-epd-main/Cargo.toml
+++ b/eepy/Cargo.toml
@@ -1,13 +1,13 @@
[package]
-name = "fw16-epd-main"
+name = "eepy"
version = "0.1.0-alpha"
edition = "2021"
[dependencies]
fw16-epd-bsp = { path = "../fw16-epd-bsp" }
-fw16-epd-program-interface = { path = "../fw16-epd-program-interface", features = ["defmt"] }
-fw16-epd-gui = { path = "../fw16-epd-gui", features = ["defmt-derive"] }
-fw16-epd-serial-common = { path = "../fw16-epd-serial-common" }
+eepy-sys = { path = "../eepy-sys", features = ["defmt"] }
+eepy-gui = { path = "../eepy-gui", features = ["defmt-derive"] }
+eepy-serial = { path = "../eepy-serial" }
tp370pgh01 = { path = "../tp370pgh01", features = ["rp2040", "defmt"] }
cortex-m.workspace = true
cortex-m-rt.workspace = true
diff --git a/fw16-epd-main/src/gui.rs b/eepy/src/gui.rs
similarity index 97%
rename from fw16-epd-main/src/gui.rs
rename to eepy/src/gui.rs
index b0f09f4..23c5e27 100644
--- a/fw16-epd-main/src/gui.rs
+++ b/eepy/src/gui.rs
@@ -3,11 +3,11 @@ use embedded_graphics::geometry::AnchorPoint;
use embedded_graphics::pixelcolor::BinaryColor;
use embedded_graphics::prelude::*;
use embedded_graphics::primitives::{Circle, Line, PrimitiveStyle, Rectangle};
-use fw16_epd_gui::draw_target::EpdDrawTarget;
-use fw16_epd_gui::element::button::Button;
-use fw16_epd_gui::element::Gui;
-use fw16_epd_gui::element::slider::Slider;
-use fw16_epd_program_interface::{RefreshBlockMode, SafeOption, Event, TouchEventType};
+use eepy_gui::draw_target::EpdDrawTarget;
+use eepy_gui::element::button::Button;
+use eepy_gui::element::Gui;
+use eepy_gui::element::slider::Slider;
+use eepy_sys::{RefreshBlockMode, SafeOption, Event, TouchEventType};
use crate::{next_event, set_touch_enabled};
enum Page {
diff --git a/fw16-epd-main/src/main.rs b/eepy/src/main.rs
similarity index 99%
rename from fw16-epd-main/src/main.rs
rename to eepy/src/main.rs
index 55453d7..1e5c510 100644
--- a/fw16-epd-main/src/main.rs
+++ b/eepy/src/main.rs
@@ -36,8 +36,8 @@ use fw16_epd_bsp::hal::multicore::{Multicore, Stack};
use fw16_epd_bsp::hal::timer::{Alarm, Alarm0};
use fw16_epd_bsp::pac::I2C0;
use fw16_epd_bsp::pac::interrupt;
-use fw16_epd_gui::draw_target::EpdDrawTarget;
-use fw16_epd_program_interface::{Event, RefreshBlockMode, SafeOption, TouchEvent, TouchEventType};
+use eepy_gui::draw_target::EpdDrawTarget;
+use eepy_sys::{Event, RefreshBlockMode, SafeOption, TouchEvent, TouchEventType};
use tp370pgh01::rp2040::{Rp2040PervasiveSpiDelays, IoPin};
use tp370pgh01::{Tp370pgh01, IMAGE_BYTES};
use crate::ringbuffer::RingBuffer;
diff --git a/fw16-epd-main/src/programs.rs b/eepy/src/programs.rs
similarity index 96%
rename from fw16-epd-main/src/programs.rs
rename to eepy/src/programs.rs
index 6f773cc..c1419d5 100644
--- a/fw16-epd-main/src/programs.rs
+++ b/eepy/src/programs.rs
@@ -1,5 +1,5 @@
use core::marker::PhantomData;
-use fw16_epd_program_interface::header::*;
+use eepy_sys::header::*;
pub(crate) const unsafe fn slot<'a>(id: u8) -> &'a ProgramSlotHeader {
if id < 1 || id > 31 {
diff --git a/fw16-epd-main/src/ringbuffer.rs b/eepy/src/ringbuffer.rs
similarity index 100%
rename from fw16-epd-main/src/ringbuffer.rs
rename to eepy/src/ringbuffer.rs
diff --git a/fw16-epd-main/src/serial.rs b/eepy/src/serial.rs
similarity index 97%
rename from fw16-epd-main/src/serial.rs
rename to eepy/src/serial.rs
index 5de50c5..60dda89 100644
--- a/fw16-epd-main/src/serial.rs
+++ b/eepy/src/serial.rs
@@ -4,12 +4,11 @@ use defmt::{debug, trace};
use usbd_serial::SerialPort;
use fw16_epd_bsp::hal::usb::UsbBus;
use fw16_epd_bsp::pac;
-use fw16_epd_program_interface::header::ProgramSlotHeader;
-use fw16_epd_program_interface::RefreshBlockMode;
-use fw16_epd_serial_common::{Response, SerialCommand};
+use eepy_sys::header::ProgramSlotHeader;
+use eepy_sys::RefreshBlockMode;
+use eepy_serial::{Response, SerialCommand};
use tp370pgh01::IMAGE_BYTES;
use crate::{refresh, write_image, GLOBAL_USB_DEVICE, GLOBAL_USB_SERIAL};
-use crate::programs::Programs;
#[derive(Copy, Clone, Debug, defmt::Format)]
enum SerialState {
diff --git a/fw16-epd-example-app/Cargo.toml b/fw16-epd-example-app/Cargo.toml
deleted file mode 100644
index f591d62..0000000
--- a/fw16-epd-example-app/Cargo.toml
+++ /dev/null
@@ -1,11 +0,0 @@
-[package]
-name = "fw16-epd-example-app"
-version = "0.1.0"
-edition = "2021"
-
-[dependencies]
-fw16-epd-program-interface = { path = "../fw16-epd-program-interface" }
-fw16-epd-gui = { path = "../fw16-epd-gui" }
-embedded-graphics.workspace = true
-heapless.workspace = true
-panic-halt = "1.0"
diff --git a/fw16-epd-example-app/build.sh b/fw16-epd-example-app/build.sh
deleted file mode 100755
index be35f22..0000000
--- a/fw16-epd-example-app/build.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-rm -r out
-mkdir out
-mkdir out/bins
-
-for slot in `seq -f "%02g" 31`
-do
- EPD_PROG_SLOT=$slot cargo build --release
- elf2epb -i ../target/thumbv6m-none-eabi/release/fw16-epd-example-app -o "out/bins/fw16-epd-example-app.s$slot.epb"
-done
-
-(cd out/bins && tar --zstd -cf ../fw16-epd-example-app.epa *)
\ No newline at end of file