Test Buttons

This commit is contained in:
Steven Tracey 2024-11-27 13:15:59 -05:00
parent 2afa64b642
commit 8181727de0
5 changed files with 148 additions and 326 deletions

View File

@ -30,6 +30,7 @@ sudo ./configure && sudo make && sudo make check && sudo make install
- python3
- python3-pip
- gpiod
- i2c-tools
- libgpiod-dev
- libpng-dev
- libncurses-dev
@ -39,6 +40,13 @@ sudo ./configure && sudo make && sudo make check && sudo make install
Executable will be in the "c" directory
If moving to an alternate directory, ensure the c/libs/libgo_p2fa.so is copied.<br><br>
To enable the i2c device, add the following to the bottom of /boot/firmware/config.txt<br>
```text
dtoverlay=i2c-rtc,ds3231
```
Reference [this walk through](https://pimylifeup.com/raspberry-pi-rtc/) for more info
### Configuration
To add a config, create a text file in the ~/.totp directory (if it doesn't exist then create it). The name of the file will be what is populated on the device.<br>
Ex: "google.txt" will be displayed as "google"<br><br>
File Format:<br>

View File

@ -35,20 +35,11 @@
#ifndef __DEBUG_H
#define __DEBUG_H
#include <ncurses.h>
#if DEBUG
#define Debug(__info, ...) do { \
mvprintw(30, 0, "Debug:" __info, ##__VA_ARGS__); \
refresh(); \
} while (0)
#define DebugLine(y, x, __info, ...) do { \
mvprintw((y), (x), "Debug: " __info, ##__VA_ARGS__); \
refresh(); \
} while (0)
#define Debug(__info, ...) printf("Debug:" __info, ##__VA_ARGS__)
#else
#define Debug(__info, ...)
#define DebugLine(y, x, __info, ...)
#endif
#endif

View File

@ -1,258 +0,0 @@
//
// Created by steven on 11/19/2024.
//
#include "images.h"
const unsigned char gImage_2in13_2[4006] = { /*0X00,0X01,0X7A,0X00,0XFA,0X00,*/
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X8F,0XFF,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XFF,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XFF,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0E,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X03,0XF0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X0F,0XF0,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X04,0X1E,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XF0,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XBF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X38,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XE0,0X1F,0XCF,0XFF,0XF8,0X00,0X00,0X3C,0X30,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X80,0X0F,0X9F,0XFF,0XF8,0X00,0X00,0X1E,0X31,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X80,0X07,0X9F,0XFF,0XF8,0X00,0X00,0X1F,0X33,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X87,0X87,0X1F,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X8F,0X86,0X1F,0XFF,0XF8,0X00,0X00,0X07,0XFF,0XC0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X86,0X1F,0XFF,0XF8,0X00,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X84,0X3F,0XFF,0XF8,0X00,0X00,0X00,0XFC,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X80,0X7F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X80,0XFF,0XFF,0XF8,0X00,0X00,0X00,0XFC,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X80,0XFF,0XFF,0XF8,0X00,0X00,0X07,0XFF,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X81,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XC0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X83,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X83,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XCF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X87,0XFF,0XFF,0XF8,0X00,0X00,0X3E,0X01,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X87,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X1C,0X00,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X0E,0X00,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XF0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XFF,0XE0,0X00,0X00,
0XFF,0XFF,0XFF,0XC0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XFF,0XE0,0X00,0X00,
0XFF,0XFF,0XFF,0XC0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XFF,0XE0,0X00,0X00,
0XFF,0XFF,0XFF,0X87,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XFF,0XE0,0X00,0X00,
0XFF,0XFF,0XFF,0X87,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X8F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X7F,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X07,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X3F,0XFF,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X8F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X70,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X87,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X70,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X83,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X70,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XC0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X70,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XE0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X38,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XF0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1C,0X3C,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X1E,0X3F,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X1E,0X1F,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X0C,0X0F,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X07,0X80,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X80,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X01,0XFF,0X80,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X03,0XFF,0XC0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X07,0XE7,0XE0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X07,0X81,0XE0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X07,0X80,0XE0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X07,0X00,0XE0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X07,0X00,0XE0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X07,0X00,0XE0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X07,0X00,0XE0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X3F,0XFF,0XFF,0XF8,0X00,0X07,0X00,0XE0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X80,0X00,0X1F,0XFF,0XF8,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XAF,0X80,0X7F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0E,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0E,0X1E,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0E,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X78,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X01,0XF0,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X8C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X07,0XF0,0X60,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X84,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X0F,0XF0,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X80,0X7F,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XF0,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XC0,0X7F,0X1F,0XFF,0XF8,0X00,0X00,0X3E,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X38,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X8F,0XFF,0X1F,0XFF,0XF8,0X00,0X00,0X38,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XFF,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X30,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XFF,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X30,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0X33,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XC0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X01,0XFE,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0C,0X3F,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X1F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3F,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X81,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XC0,0X7F,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XF0,0X1F,0XFF,0XFF,0XF8,0X00,0X00,0X1C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X07,0XFF,0XFF,0XF8,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0X01,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XC0,0X7F,0XFF,0XF8,0X00,0X1F,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XF0,0X1F,0XFF,0XF8,0X00,0X1F,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFC,0X0F,0XFF,0XF8,0X00,0X1F,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XF0,0X1F,0XFF,0XF8,0X00,0X1F,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XC0,0X7F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0X01,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X07,0XFF,0XFF,0XF8,0X00,0X00,0X08,0X00,0X60,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XF8,0X1F,0XFF,0XFF,0XF8,0X00,0X00,0X1C,0X00,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XE0,0X7F,0XFF,0XFF,0XF8,0X00,0X00,0X1E,0X00,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X81,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X07,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X3F,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XE0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1E,0X01,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XC0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0X83,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XC1,0X83,0X9F,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X87,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XC0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X87,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X00,0XFE,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X01,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X0F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X3F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X8F,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X3F,0X80,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X87,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X83,0XC3,0XFF,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XC0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XE0,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1C,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XF8,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X0E,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X80,0X00,0XFF,0XFF,0XF8,0X00,0X00,0X0F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X3F,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XF8,0X00,0X00,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X0E,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X1F,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X1F,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X1F,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X0E,0X1F,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X80,0X00,0X1F,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X00,0X70,0X3F,0X80,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X01,0XFC,0X7F,0XC0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X03,0XFE,0X7F,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X07,0XFF,0XE0,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X07,0X87,0XE0,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0X1F,0XFF,0XF8,0X00,0X0F,0X03,0XC0,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XF8,0X00,0X0F,0X03,0XC0,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFE,0X1F,0XFF,0XF8,0X00,0X0F,0X03,0XC0,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X1F,0XFF,0XF8,0X00,0X07,0X03,0XC0,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X3F,0XFF,0XF8,0X00,0X07,0X80,0X00,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X80,0X00,0X7F,0XFF,0XF8,0X00,0X07,0X80,0X00,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X03,0XC0,0X01,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X03,0X80,0X01,0XE0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0XC0,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFC,0X00,0X00,0X0F,0XF8,0X00,0X00,0X00,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XC0,0X00,0X00,0X07,0XF8,0X00,0X00,0X00,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0X00,0X00,0X00,0X07,0XF8,0X00,0X00,0X00,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFC,0X00,0X1C,0X00,0X07,0XF8,0X00,0X00,0X00,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XF8,0X00,0X7E,0X00,0X07,0XF8,0X00,0X00,0X00,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XE0,0X01,0XFF,0X80,0X07,0XF8,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XC0,0X07,0XFF,0XF8,0X07,0XF8,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0XC0,0X1F,0XFF,0XFC,0X07,0XF8,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0X80,0X3F,0XE1,0XFC,0X07,0XF8,0X00,0X07,0XFF,0XFF,0XF0,0X00,0X00,0X00,
0XFF,0XFF,0X00,0X3F,0XC0,0X7E,0X07,0XF8,0X00,0X03,0X80,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFE,0X00,0X3F,0XF0,0X7F,0X07,0XF8,0X00,0X03,0X80,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFE,0X00,0X1F,0XFC,0X00,0X07,0XF8,0X00,0X03,0X80,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFE,0X00,0X07,0XFF,0X00,0X07,0XF8,0X00,0X03,0X80,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFC,0X00,0X00,0XFF,0X80,0X07,0XF8,0X00,0X00,0X00,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFC,0X1F,0XE0,0X3F,0X80,0X07,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFC,0X0F,0XF0,0X3F,0X80,0X07,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XF8,0X07,0XFC,0XEF,0X80,0X07,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XF8,0X03,0XFF,0X98,0X00,0X07,0XF8,0X00,0X00,0X00,0X00,0XE0,0X00,0X00,0X00,
0XFF,0XF8,0X01,0XFF,0XF0,0X00,0X07,0XF8,0X00,0X00,0X00,0X01,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X9F,0XFC,0X00,0X07,0XF8,0X00,0X00,0X00,0X01,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X07,0XFF,0X00,0X07,0XF8,0X00,0X00,0X00,0X01,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X00,0XFF,0X80,0X07,0XF8,0X00,0X00,0X00,0X01,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X00,0XFF,0X80,0X07,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X07,0XFF,0X80,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X3F,0XFC,0X00,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X3F,0XF0,0X00,0X0F,0XF8,0X00,0X00,0X00,0X00,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X3F,0XC0,0X00,0X0F,0XF8,0X00,0X00,0XFE,0X00,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X3F,0XF8,0X00,0X1F,0XF8,0X00,0X03,0XFF,0X80,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X07,0XFE,0X00,0X1F,0XF8,0X00,0X03,0XFF,0XE0,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X00,0XFF,0X80,0X3F,0XF8,0X00,0X07,0XFF,0XF0,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X01,0XFF,0X80,0X3F,0XF8,0X00,0X07,0X81,0XF8,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X1F,0XFF,0X80,0X7F,0XF8,0X00,0X0F,0X00,0X7E,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X3F,0XFF,0X00,0XFF,0XF8,0X00,0X0F,0X00,0X3F,0X70,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X3F,0XF8,0X01,0XFF,0XF8,0X00,0X0F,0X00,0X1F,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X3F,0XC0,0X01,0XFF,0XF8,0X00,0X07,0X00,0X0F,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X3E,0X00,0X07,0XFF,0XF8,0X00,0X07,0X00,0X07,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X30,0X00,0X0F,0XFF,0XF8,0X00,0X07,0X80,0X03,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X00,0X00,0X3F,0XFF,0XF8,0X00,0X03,0XC0,0X01,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X00,0X00,0XFF,0XFF,0XF8,0X00,0X03,0XC0,0X00,0XF0,0X00,0X00,0X00,
0XFF,0XF8,0X00,0X00,0X07,0XFF,0XFF,0XF8,0X00,0X01,0X80,0X00,0X70,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
};

View File

@ -1,10 +0,0 @@
//
// Created by steven on 11/19/2024.
//
#ifndef IMAGES_H
#define IMAGES_H
extern const unsigned char gImage_2in13_2[];
#endif //IMAGES_H

View File

@ -5,7 +5,8 @@
#include <time.h>
#include <stdlib.h>
#include <signal.h>
#include <ncurses.h>
#include <gpiod.h>
#include <string.h>
#include "../libs/go_p2fa.h"
#include "../libs/e-Paper/EPD_2in13_V4.h"
@ -13,39 +14,114 @@
#include "../libs/GUI/GUI_BMPfile.h"
#include "../libs/Config/Debug.h"
#define GPIO_CHIP "/dev/gpiochip0"
#define DEBOUNCE_TIME_MS 50
// GPIO Pins
#define BUTTON_UP 13
#define BUTTON_DOWN 19
#define BUTTON_LEFT 12
#define BUTTON_RIGHT 16
#define BUTTON_SELECT 27
#define BUTTON_ALT 22
#define BUTTON_BACK 6
#define BUTTON_POWER 20
typedef struct {
int gpio_pin;
int key_code;
} ButtonMap;
ButtonMap button_map[] = {
{BUTTON_UP, 'u'},
{BUTTON_DOWN, 'd'},
{BUTTON_LEFT, 'l'},
{BUTTON_RIGHT, 'r'},
{BUTTON_SELECT, 's'},
{BUTTON_ALT, 'a'},
{BUTTON_BACK, 'b'},
{BUTTON_POWER, 'p'},
};
#define NUM_BUTTONS 8
struct gpiod_chip *chip;
struct gpiod_line_bulk lines;
struct gpiod_line *line_pointers[NUM_BUTTONS];
int last_button_state[NUM_BUTTONS] = {0};
struct timespec last_press_time[NUM_BUTTONS];
void closeP2FA() {
EPD_2in13_V4_Init();
EPD_2in13_V4_Clear();
EPD_2in13_V4_Sleep();
DEV_Delay_ms(2000);//important, at least 2s
DEV_Delay_ms(2000); // Important, at least 2s
DEV_Module_Exit();
for (int i = 0; i < NUM_BUTTONS; i++) {
gpiod_line_release(line_pointers[i]);
}
gpiod_chip_close(chip);
}
void Handler(int sigNum) {
DebugLine(28, 0, "Caught signal %d\n", sigNum);
Debug("Caught signal %d\n", sigNum);
closeP2FA();
endwin();
exit(0);
}
int computeWidth(char* text, sFONT *font) {
return (font->Width) * strlen(text);
return font->Width * strlen(text);
}
int readButtons() {
for (int i = 0; i < NUM_BUTTONS; i++) {
int value = gpiod_line_get_value(line_pointers[i]);
if (value < 0) {
perror("Failed to read GPIO value");
continue;
}
// Debounce logic
struct timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
long elapsed_ms = (now.tv_sec - last_press_time[i].tv_sec) * 1000 +
(now.tv_nsec - last_press_time[i].tv_nsec) / 1000000;
if (value == 1 && last_button_state[i] == 0 && elapsed_ms > DEBOUNCE_TIME_MS) {
last_button_state[i] = 1;
last_press_time[i] = now;
return button_map[i].key_code;
}
if (value == 0) {
last_button_state[i] = 0;
}
}
return -1; // No button press detected
}
int getBtn() {
while (1) {
int key = readButtons();
if (key != -1) {
return key;
}
// Add a short delay to reduce CPU usage
DEV_Delay_ms(10);
}
}
//TODO Put display to sleep after so many refreshes
void code(UWORD *blackImage, char* confName) {
int ch;
//int ch;
while(1) {
ch = getch();
if (ch != ERR) {
if (ch == 'q') break;
DebugLine(2, 0, "Key Pressed: %c\n", ch);
}
// ch = getch();
// if (ch != ERR) {
// if (ch == 'q') break;
// Debug("Key Pressed: %c\n", ch);
// }
Paint_NewImage(blackImage, EPD_2in13_V4_WIDTH, EPD_2in13_V4_HEIGHT, 90, WHITE);
EPD_2in13_V4_Init();
@ -77,10 +153,10 @@ void code(UWORD *blackImage, char* confName) {
int progBarEndIndex;
int lastI = 30 * 1000;
for (int i = getTimeRemainingMS(30);; i = getTimeRemainingMS(30)) {
ch = getch();
if (ch != ERR) {
if (ch == 'q') return;
}
//ch = getch();
//if (ch != ERR) {
// if (ch == 'q') return;
//}
if (i > lastI) break;
startTime = clock();
@ -112,7 +188,7 @@ void config(UWORD *blackImage, char* configName) {
int length = configLinesReturn.r1;
char** configLines = configLinesReturn.r0;
if (configLines == NULL || length == -1) {
DebugLine(10, 0, "Config not found\n");
Debug("Config not found\n");
return;
}
@ -127,10 +203,7 @@ void config(UWORD *blackImage, char* configName) {
EPD_2in13_V4_Display(blackImage);
int ch = getch();
if (ch == 'q') {
return;
}
//int ch = getch();
}
void drawTotpHome(UWORD *blackImage, char** configNames, int *length) {
@ -139,7 +212,7 @@ void drawTotpHome(UWORD *blackImage, char** configNames, int *length) {
Paint_Clear(WHITE);
for (int j = 0; j < *length; j++) {
if (configNames[j] == NULL) {
DebugLine(13, 0, "Null Config: %d\n", j);
Debug("Null Config: %d\n", j);
}
Paint_DrawString(5, 5 + j * 20, configNames[j], &Font12, WHITE, BLACK);
}
@ -154,7 +227,7 @@ void totpHome(UWORD *blackImage) {
char** configNames = configNamesReturn.r0;
if (configNames == NULL || length == 0) {
DebugLine(10, 0, "No configs found\n");
Debug("No configs found\n");
return;
}
@ -166,20 +239,19 @@ void totpHome(UWORD *blackImage) {
int ch;
while (1) {
timeout(-1);
ch = getch();
if (ch != ERR) {
//timeout(-1);
ch = 'q'; //getch();
if (!ch) {
switch(ch) {
case KEY_UP:
if (i > 0) i--;
Paint_ClearWindows(115, 5 + (i + 1) * 20, 122, 17 + (i + 1) * 20, WHITE);
break;
case KEY_DOWN:
if (i < length - 1) i++;
Paint_ClearWindows(115, 5 + (i - 1) * 20, 122, 17 + (i - 1) * 20, WHITE);
break;
// case KEY_UP:
// if (i > 0) i--;
// Paint_ClearWindows(115, 5 + (i + 1) * 20, 122, 17 + (i + 1) * 20, WHITE);
// break;
// case KEY_DOWN:
// if (i < length - 1) i++;
// Paint_ClearWindows(115, 5 + (i - 1) * 20, 122, 17 + (i - 1) * 20, WHITE);
// break;
case '\n':
timeout(0);
code(blackImage, configNames[i]);
drawTotpHome(blackImage, configNames, &length);
break;
@ -212,7 +284,7 @@ int drawLoop() {
UBYTE *blackImage;
UWORD ImageSize = ((EPD_2in13_V4_WIDTH % 8 == 0) ? (EPD_2in13_V4_WIDTH / 8) : (EPD_2in13_V4_WIDTH / 8 + 1)) * EPD_2in13_V4_HEIGHT;
if ((blackImage = (UBYTE *) malloc(ImageSize)) == NULL) {
DebugLine(8, 0, "Failed to apply for black memory...\n");
Debug("Failed to apply for black memory...\n");
return -1;
}
@ -225,17 +297,36 @@ int main() {
signal(SIGINT, Handler);
signal(SIGTERM, Handler);
initscr();
cbreak();
noecho();
nodelay(stdscr, TRUE);
keypad(stdscr, TRUE);
loadConfigs();
drawLoop();
// Begin Init GPIO
chip = gpiod_chip_open(GPIO_CHIP);
if (!chip) {
printf("Failed to open GPIO chip\n");
exit(EXIT_FAILURE);
}
for (int i = 0; i < NUM_BUTTONS; i++) {
line_pointers[i] = gpiod_chip_get_line(chip, button_map[i].gpio_pin);
if (!line_pointers[i]) {
printf("Failed to get GPIO line\n");
exit(EXIT_FAILURE);
}
if (gpiod_line_request_input(line_pointers[i], "gpio_button") < 0) {
printf("Failed to request input for GPIO line\n");
gpiod_chip_close(chip);
exit(EXIT_FAILURE);
}
gpiod_line_bulk_init(&lines, NUM_BUTTONS, line_pointers);
}
// End Init GPIO
printf("Monitoring buttons. Press Ctrl+C to exit.\n");
while (1) {
printf("Button: %c\n", (char)getBtn());
}
//drawLoop();
closeP2FA();
endwin();
return 0;
}