firmware for my Touchscreen E-Paper Input Module for Framework Laptop 16
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

rename to eepy

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