Dave Allie 98a5aa1f89
[EInkDisplay] Add basic implementation for displayWindow (#9)
Adds a basic implementation of `displayWindow` which displays a subset
of the current frame buffer to the screen. It is significantly less
performant than a full screen reload, so it shouldn't be used unless the
underlying content is hard to get/rerender.

I've also spotted a little bit of ghosting, but it's not fully clear as
to why that is. My only thought it the LUT and grayscale mode isn't
fully disengaged or the RED RAM buffer isn't correctly setup (but afaict
it should be populated correctly).

Going to merge this to continue testing this feature out in the wild,
but consider it experimental.
2025-12-17 00:01:47 +11:00
2025-12-02 19:16:50 +11:00
2025-12-02 19:16:50 +11:00
2025-12-02 19:16:50 +11:00

OpenX4 E-Paper Community SDK

A community-maintained SDK for building firmware and tools for the Xteink X4 device. This repository is designed to be included as a Git submodule inside PlatformIO projects, providing a shared set of libraries, utilities, and development workflows that make working with the X4 simple and consistent.

What is this?

The OpenX4 E-Paper Community SDK provides:

  • Common PlatformIO-friendly components for the Xteink X4
  • Reusable libraries for display control, graphics, hardware helpers, utilities, etc.
  • Tools to support flashing, packaging, testing, and device workflows
  • A central place for community contributions, improvements, and shared knowledge

The SDK is intentionally modular - bring it into your project and use only what you need.

📁 Repository Structure

community-sdk/
├── libs/           # Reusable components for X4 firmware
│   ├── display/       # E-paper helpers & drivers
│   ├── graphics/      # Drawing, fonts, UI utilities
│   ├── hardware/      # GPIO, power, sensors, timings, etc.
│   └── ...            # Add new modules here!
│
└── tools/          # Dev tools for X4
    ├── flash/         # Flash helpers, scripts, workflows
    ├── assets/        # Conversion tools for images/fonts
    └── ...            # Community-contributed utilities

Each lib aims to be self-contained, documented, and PlatformIO-friendly. Libs should be categorized under libs/ based on functionality, and then contained within a directory under that root.

📦 Adding to Your PlatformIO Project

Add this repository as a submodule:

git submodule add https://github.com/open-x4-epaper/community-sdk.git open-x4-sdk

Then add each lib you need into your platformio.ini file as lib_deps:

lib_deps =
  BatteryMonitor=symlink://open-x4-sdk/libs/hardware/BatteryMonitor
  EpdScreenController=symlink://open-x4-sdk/libs/display/EpdScreenController

Then you can include the libraries in your project as usual:

#include <BatteryMonitor.h>
#include <EpdScreenController.h>

Or load tools from the tools/ directory as needed.

🤝 Contributing

This is a community-driven project - contributions are not only welcome but encouraged!

Ways you can help:

  • Improve or extend existing libraries
  • Add new modules to libs/
  • Build utilities for the tools/ directory
  • Report issues, propose features, or help refine the API
  • Improve documentation

Contribution guidelines (short version)

  1. Keep modules self-contained
  2. Prefer zero-dependency solutions where practical
  3. Document your additions
  4. Use clear naming and consistent structure
  5. Be friendly and constructive in PR conversations

A full contributing guide will be added as the project grows.

📝 License

This SDK is released under an open-source MIT license. To keep things simple, all contributions and code must also fall under this license.

💬 Community

Feel free to open GitHub issues for support, improvements, or discussion around the Xteink X4 ecosystem. Join the discord here: https://discord.gg/2cdKUbWRE8

Description
No description provided
Readme MIT 124 KiB
Languages
C++ 100%