All Projects → abhra0897 → LameUI

abhra0897 / LameUI

Licence: other
A very lame UI library for embedded systems.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to LameUI

lwprintf
Lightweight printf library optimized for embedded systems
Stars: ✭ 98 (+180%)
Mutual labels:  microcontroller, embedded-systems
U8g2
U8glib library for monochrome displays, version 2
Stars: ✭ 2,737 (+7720%)
Mutual labels:  microcontroller, embedded-systems
embeddedml
No description or website provided.
Stars: ✭ 103 (+194.29%)
Mutual labels:  microcontroller, embedded-systems
smartsilo
Hardware-integrated system composed by a desktop app and a Node.js server able to control an Arduino and manipulate the temperature of grains within storage silos
Stars: ✭ 33 (-5.71%)
Mutual labels:  microcontroller, embedded-systems
pigweed
pigweed.dev
Stars: ✭ 134 (+282.86%)
Mutual labels:  microcontroller, embedded-systems
Ferret
Ferret is a free software lisp implementation for real time embedded control systems.
Stars: ✭ 878 (+2408.57%)
Mutual labels:  microcontroller, embedded-systems
Emlearn
Machine Learning inference engine for Microcontrollers and Embedded devices
Stars: ✭ 154 (+340%)
Mutual labels:  microcontroller, embedded-systems
Open Electronics
📚 💻 Great Resources for Electronics Enthusiasts
Stars: ✭ 242 (+591.43%)
Mutual labels:  microcontroller, embedded-systems
libavrutil
Easy to use, lightweight and unified library for performing common microcontroller tasks
Stars: ✭ 21 (-40%)
Mutual labels:  microcontroller, embedded-systems
Real Time Cpp
Real-Time C++ Companion Code
Stars: ✭ 242 (+591.43%)
Mutual labels:  microcontroller, embedded-systems
open-electronics
📚 💻 Great Resources for Electronics Enthusiasts
Stars: ✭ 347 (+891.43%)
Mutual labels:  microcontroller, embedded-systems
Embedded UKF Library
A compact Unscented Kalman Filter (UKF) library for Teensy4/Arduino system (or any real time embedded system in general)
Stars: ✭ 31 (-11.43%)
Mutual labels:  microcontroller, embedded-systems
uDevkit-SDK
Embedded systems SDK for Uniswarm boards and others (dsPIC33, dsPIC30, PIC24 and PIC32 compatible)
Stars: ✭ 14 (-60%)
Mutual labels:  microcontroller, embedded-systems
TinyCog
Small Robot, Toy Robot platform
Stars: ✭ 29 (-17.14%)
Mutual labels:  embedded-systems
xForth
Experimental Forth cross compiler for tiny devices
Stars: ✭ 53 (+51.43%)
Mutual labels:  microcontroller
risc8
Mostly AVR compatible FPGA soft-core
Stars: ✭ 19 (-45.71%)
Mutual labels:  microcontroller
nsec-badge
Software from the NorthSec badge
Stars: ✭ 34 (-2.86%)
Mutual labels:  microcontroller
flutter-elinux
Flutter tools for embedded Linux (eLinux)
Stars: ✭ 139 (+297.14%)
Mutual labels:  embedded-systems
Firmware-Analysis-Papers
Recent security papers on firmware analysis
Stars: ✭ 53 (+51.43%)
Mutual labels:  embedded-systems
openncc
OpenNCC Kit
Stars: ✭ 23 (-34.29%)
Mutual labels:  embedded-systems

[Check the "Development" branch for latest changes. This (master) branch has less features and will be updated later.]

LameUI - a lame & lightweight(?) non-buffered UI library for embedded systems

This is a useless readme, I'll make a proper once later.

What?

LameUI is a super simple, platform independent UI library with lots and lots of limitations, designed for embedded systems with low resources. Though its under active development and I'm trying to remove those limitations. Even though I tried my best to keep it light weight, it became heavier than I wanted it to be.

Why?

Main reason - to challenge my skills and learn new things. I also happened to need a bare-minimum UI library for my own project which I abandoned as I started to make this one instead. It was started as a lockdown project and soon enough I abandoned it in an incomplete state as I lost interest. After 4 months I came back to it with a goal to at least make it work once. Future of this project is uncertain, but as long as it feels challenging, I'll keep adding/fixing stuffs.

Lame Demo:

This is a demo of LameUI running on a simulator I made with opengl so I can test it without needing to flash the microcontroller every time.

simulator: https://github.com/abhra0897/LameUI_simulation

Example gif

I currently don't have an lcd display in my stock, so, this emulator is the only way. :(

UI Elements

Following UI elements are implemented so far:

  • Button
  • Switch
  • Line chart
  • Label
  • Panel
  • List
  • Slider
  • Checkbox

Display Output

Drawing to display is done by call back functions provided by the user.

void lui_dispdrv_set_draw_pixels_area_cb(void (*draw_pixels_area_cb)(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color), lui_dispdrv_t *dispdrv);

LameUI has no buffer of its own. Because it's mainly targetted towards MCUs with low RAM. As a result, user need to manage buffering if they need to. Sometimes buffering, and then flush the entire buffer is faster than writing individual pixels each time

That's why LameUI calls void (*render_complete_cb)(); when rendering is complete, given that user provided the callback function. In that callback function, user should flush the buffer. For setting the callback function, this function is used:

void lui_dispdrv_set_render_complete_cb(void (*render_complete_cb)(), lui_dispdrv_t *dispdrv)

Note: Commonly available lcd displays that we use with microcontrollers have built-in GRAM, hence, the render_complete_cb() is not mandatory for them.

Read Inputs

LameUI now only supports touch input. Support for D-Pad / Rotary encoder is in my mind, but that's not the priority for now.

1. void lui_touch_inputdev_set_read_input_cb(void (*read_touch_input_cb)(tLuiTouchInputData *inputdata), tLuiTouchInputDev *inputdev);

Structure of LameUI

TBD

Simple Example

TBD

(for now, go to the Simulator repo and see the example there: https://github.com/abhra0897/LameUI_simulation/blob/experimental/src/main.c). That example has all the UI elements. Ignore the parts that are related to OpenGL.

API

Documentation is not prepared yet cause each day I'm changing the code. Also, probably no one else will use it. For now, read the header file for all the available functions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].