From a6f821263d5c576fad8b651bff3c3b840ee1468f Mon Sep 17 00:00:00 2001 From: Apaczer <94932128+Apaczer@users.noreply.github.com> Date: Mon, 1 Dec 2025 22:52:50 +0100 Subject: [PATCH 1/8] update macro defines --- main.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/main.c b/main.c index db93735..110c008 100644 --- a/main.c +++ b/main.c @@ -17,23 +17,44 @@ #define MIYOO_VIR_SET_MODE _IOWR(0x100, 0, unsigned long) #define MIYOO_VIR_SET_VER _IOWR(0x101, 0, unsigned long) #define MIYOO_SND_SET_VOLUME _IOWR(0x100, 0, unsigned long) +#define MIYOO_SND_GET_VOLUME _IOWR(0x101, 0, unsigned long) +#define MIYOO_SND_JACK_STATUS _IOWR(0x102, 0, unsigned long) +#define MIYOO_TV_JACK_STATUS _IOWR(0x103, 0, unsigned long) #define MIYOO_KBD_GET_HOTKEY _IOWR(0x100, 0, unsigned long) -#define MIYOO_KBD_SET_HOTKEY _IOWR(0x106, 0, unsigned long) #define MIYOO_KBD_SET_VER _IOWR(0x101, 0, unsigned long) +#define MIYOO_KBD_LOCK_KEY _IOWR(0x102, 0, unsigned long) //unused +#define MIYOO_LAY_SET_VER _IOWR(0x103, 0, unsigned long) +#define MIYOO_KBD_GET_VER _IOWR(0x104, 0, unsigned long) +#define MIYOO_LAY_GET_VER _IOWR(0x105, 0, unsigned long) +#define MIYOO_KBD_SET_HOTKEY _IOWR(0x106, 0, unsigned long) #define MIYOO_FB0_PUT_OSD _IOWR(0x100, 0, unsigned long) #define MIYOO_FB0_SET_MODE _IOWR(0x101, 0, unsigned long) #define MIYOO_FB0_GET_VER _IOWR(0x102, 0, unsigned long) +#define MIYOO_FB0_SET_FLIP _IOWR(0x103, 0, unsigned long) //unused #define MIYOO_FB0_SET_FPBP _IOWR(0x104, 0, unsigned long) #define MIYOO_FB0_GET_FPBP _IOWR(0x105, 0, unsigned long) +#define MIYOO_FB0_SET_TEFIX _IOWR(0x106, 0, unsigned long) +#define MIYOO_FB0_GET_TEFIX _IOWR(0x107, 0, unsigned long) +#define MIYOO_HOME_DIR "/mnt" +#define MIYOO_ROMS_DIR "/roms" #define MIYOO_FBP_FILE "/mnt/.fpbp.conf" #define MIYOO_LID_FILE "/mnt/.backlight.conf" #define MIYOO_VOL_FILE "/mnt/.volume.conf" -#define MIYOO_LID_CONF "/sys/devices/platform/backlight/backlight/backlight/brightness" #define MIYOO_BUTTON_FILE "/mnt/.buttons.conf" -#define MIYOO_BATTERY "/sys/class/power_supply/miyoo-battery/voltage_now" #define MIYOO_BATTERY_FILE "/mnt/.batterylow.conf" #define MIYOO_OPTIONS_FILE "/mnt/options.cfg" +#define MIYOO_TVMODE_FILE "/mnt/.tvmode" +#define MIYOO_LID_CONF "/sys/devices/platform/backlight/backlight/backlight/brightness" +#define MIYOO_BATTERY "/sys/devices/platform/soc/1c23400.battery/power_supply/miyoo-battery/voltage_now" +#define MIYOO_BATTERY_STATUS "/sys/class/power_supply/miyoo-battery/status" +#define MIYOO_USB_STATE "/sys/devices/platform/soc/1c13000.usb/musb-hdrc.1.auto/udc/musb-hdrc.1.auto/state" +#define MIYOO_USB_SUSPEND "/sys/devices/platform/soc/1c13000.usb/musb-hdrc.1.auto/gadget/suspended" +#define MIYOO_SND_FILE "/dev/miyoo_snd" +#define MIYOO_FB0_FILE "/dev/miyoo_fb0" +#define MIYOO_KBD_FILE "/dev/miyoo_kbd" +#define MIYOO_VIR_FILE "/dev/miyoo_vir" +#define MIYOO_SWAP_FILE "/dev/mmcblk0p3" #define BUTTON_COUNT 12 From 4b41cdb09fa7a83119cd73bf51f310e699cbbaa0 Mon Sep 17 00:00:00 2001 From: Apaczer <94932128+Apaczer@users.noreply.github.com> Date: Wed, 3 Dec 2025 22:35:43 +0100 Subject: [PATCH 2/8] update options.cfg location --- main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.c b/main.c index 110c008..6c05255 100644 --- a/main.c +++ b/main.c @@ -43,8 +43,8 @@ #define MIYOO_VOL_FILE "/mnt/.volume.conf" #define MIYOO_BUTTON_FILE "/mnt/.buttons.conf" #define MIYOO_BATTERY_FILE "/mnt/.batterylow.conf" -#define MIYOO_OPTIONS_FILE "/mnt/options.cfg" #define MIYOO_TVMODE_FILE "/mnt/.tvmode" +#define MIYOO_OPTIONS_FILE "/boot/options.cfg" #define MIYOO_LID_CONF "/sys/devices/platform/backlight/backlight/backlight/brightness" #define MIYOO_BATTERY "/sys/devices/platform/soc/1c23400.battery/power_supply/miyoo-battery/voltage_now" #define MIYOO_BATTERY_STATUS "/sys/class/power_supply/miyoo-battery/status" From b5296d8ae7deec32bad9c91fb9ed9d078f05b449 Mon Sep 17 00:00:00 2001 From: Apaczer <94932128+Apaczer@users.noreply.github.com> Date: Wed, 3 Dec 2025 20:05:55 +0100 Subject: [PATCH 3/8] Create date.c (C++) --- date.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 date.c diff --git a/date.c b/date.c new file mode 100644 index 0000000..8687979 --- /dev/null +++ b/date.c @@ -0,0 +1,49 @@ +#include +#include + +#include +#include +#include + +const char* nowtime = "2025-12-03 18:34"; + +const std::string get_date_time() { + char buf[80]; + time_t now = time(0); + struct tm tstruct = *localtime(&now); + strftime(buf, sizeof(buf), "%F %R", &tstruct); + return buf; +} + +void sync_date_time(time_t t) { + struct timeval tv = { t, 0 }; + settimeofday(&tv, NULL); +} + +void set_date_time(const char* timestamp) { + int imonth, iday, iyear, ihour, iminute; + + sscanf(timestamp, "%d-%d-%d %d:%d", &iyear, &imonth, &iday, &ihour, &iminute); + + struct tm datetime = { 0 }; + + datetime.tm_year = iyear - 1900; + datetime.tm_mon = imonth - 1; + datetime.tm_mday = iday; + datetime.tm_hour = ihour; + datetime.tm_min = iminute; + datetime.tm_sec = 0; + + if (datetime.tm_year < 0) datetime.tm_year = 0; + + time_t t = mktime(&datetime); + + sync_date_time(t); +} + +main() { + set_date_time(nowtime); + usleep(10000); + printf("current time set=%s\n", get_date_time().c_str()); + return 0; +} \ No newline at end of file From f14b821257c73d6d625d1743db74d3a43fa1b7fb Mon Sep 17 00:00:00 2001 From: Apaczer <94932128+Apaczer@users.noreply.github.com> Date: Wed, 3 Dec 2025 20:20:24 +0100 Subject: [PATCH 4/8] date: change to pure C --- date.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/date.c b/date.c index 8687979..caa6ae7 100644 --- a/date.c +++ b/date.c @@ -1,23 +1,33 @@ -#include -#include +#include #include +#include #include -#include const char* nowtime = "2025-12-03 18:34"; +char datebuf[80]; -const std::string get_date_time() { - char buf[80]; - time_t now = time(0); - struct tm tstruct = *localtime(&now); - strftime(buf, sizeof(buf), "%F %R", &tstruct); - return buf; +void get_date_time(char *out, size_t size) { + time_t now = time(NULL); + struct tm t; + localtime_r(&now, &t); + strftime(out, size, "%F %R", &t); } void sync_date_time(time_t t) { - struct timeval tv = { t, 0 }; - settimeofday(&tv, NULL); + struct tm tmv; + localtime_r(&t, &tmv); + + char cmd[128]; + snprintf(cmd, sizeof(cmd), + "date -s \"%04d-%02d-%02d %02d:%02d:00\"", + tmv.tm_year + 1900, + tmv.tm_mon + 1, + tmv.tm_mday, + tmv.tm_hour, + tmv.tm_min); + + system(cmd); } void set_date_time(const char* timestamp) { @@ -41,9 +51,10 @@ void set_date_time(const char* timestamp) { sync_date_time(t); } -main() { +int main() { set_date_time(nowtime); usleep(10000); - printf("current time set=%s\n", get_date_time().c_str()); + get_date_time(datebuf, sizeof(datebuf)); + printf("current time set=%s\n", datebuf); return 0; } \ No newline at end of file From f216fe2ab6ea1e0bf393fc588e6fa17939e74d3d Mon Sep 17 00:00:00 2001 From: Apaczer <94932128+Apaczer@users.noreply.github.com> Date: Wed, 3 Dec 2025 22:38:03 +0100 Subject: [PATCH 5/8] main: add get&write_date_time() in loop --- date.c | 60 ---------------------------------------------------------- main.c | 29 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 63 deletions(-) delete mode 100644 date.c diff --git a/date.c b/date.c deleted file mode 100644 index caa6ae7..0000000 --- a/date.c +++ /dev/null @@ -1,60 +0,0 @@ -#include - -#include -#include -#include - -const char* nowtime = "2025-12-03 18:34"; -char datebuf[80]; - -void get_date_time(char *out, size_t size) { - time_t now = time(NULL); - struct tm t; - localtime_r(&now, &t); - strftime(out, size, "%F %R", &t); -} - -void sync_date_time(time_t t) { - struct tm tmv; - localtime_r(&t, &tmv); - - char cmd[128]; - snprintf(cmd, sizeof(cmd), - "date -s \"%04d-%02d-%02d %02d:%02d:00\"", - tmv.tm_year + 1900, - tmv.tm_mon + 1, - tmv.tm_mday, - tmv.tm_hour, - tmv.tm_min); - - system(cmd); -} - -void set_date_time(const char* timestamp) { - int imonth, iday, iyear, ihour, iminute; - - sscanf(timestamp, "%d-%d-%d %d:%d", &iyear, &imonth, &iday, &ihour, &iminute); - - struct tm datetime = { 0 }; - - datetime.tm_year = iyear - 1900; - datetime.tm_mon = imonth - 1; - datetime.tm_mday = iday; - datetime.tm_hour = ihour; - datetime.tm_min = iminute; - datetime.tm_sec = 0; - - if (datetime.tm_year < 0) datetime.tm_year = 0; - - time_t t = mktime(&datetime); - - sync_date_time(t); -} - -int main() { - set_date_time(nowtime); - usleep(10000); - get_date_time(datebuf, sizeof(datebuf)); - printf("current time set=%s\n", datebuf); - return 0; -} \ No newline at end of file diff --git a/main.c b/main.c index 6c05255..fe0fa7c 100644 --- a/main.c +++ b/main.c @@ -13,6 +13,7 @@ #include #include #include +#include #define MIYOO_VIR_SET_MODE _IOWR(0x100, 0, unsigned long) #define MIYOO_VIR_SET_VER _IOWR(0x101, 0, unsigned long) @@ -43,6 +44,7 @@ #define MIYOO_VOL_FILE "/mnt/.volume.conf" #define MIYOO_BUTTON_FILE "/mnt/.buttons.conf" #define MIYOO_BATTERY_FILE "/mnt/.batterylow.conf" +#define MIYOO_DATE_FILE "/mnt/.date.conf" #define MIYOO_TVMODE_FILE "/mnt/.tvmode" #define MIYOO_OPTIONS_FILE "/boot/options.cfg" #define MIYOO_LID_CONF "/sys/devices/platform/backlight/backlight/backlight/brightness" @@ -242,6 +244,27 @@ void my_handler(int signum) } } +void get_date_time(char *out, size_t size) { + time_t now = time(NULL); + struct tm t; + localtime_r(&now, &t); + strftime(out, size, "%F %R", &t); +} + +void write_date_time(const char *file) +{ + int fd; + char buf[80]; + + get_date_time(buf, sizeof(buf)); + fd = open(file, O_WRONLY | O_CREAT | O_TRUNC); + + if(fd > 0){ + write(fd, buf, strlen(buf)); + close(fd); + } +} + int main(int argc, char** argv) { int lid=0, vol=0, fbp=0; @@ -307,7 +330,7 @@ int main(int argc, char** argv) } fclose(options_file); } else { - // printf("Could not open the OPTIONS file.\n"); + // printf("Could not open the OPTIONS file.\n"); } //check if button file exist for custom hotkeys to apply or either entry in options file to accept default hotkeys. @@ -317,7 +340,7 @@ int main(int argc, char** argv) } ioctl(kbd, MIYOO_KBD_SET_HOTKEY, hotkey_custom); close(fd); - + // info fb0 info_fb0(fb0, lid, vol, 0); @@ -340,7 +363,7 @@ int main(int argc, char** argv) unsigned int lid_sys = 0; while(1){ usleep(40000); - + write_date_time(MIYOO_DATE_FILE); if (battery_counter == 0){ battery_file = fopen(MIYOO_BATTERY, "r"); while ( (fgets(wstr,100,battery_file)) != NULL ) { From ba4b9d0903e6746158fdbf789b77b232ea6f305c Mon Sep 17 00:00:00 2001 From: Apaczer <94932128+Apaczer@users.noreply.github.com> Date: Thu, 4 Dec 2025 22:36:36 +0100 Subject: [PATCH 6/8] use write_conf instead of system("echo ") --- main.c | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/main.c b/main.c index fe0fa7c..8dd50e5 100644 --- a/main.c +++ b/main.c @@ -28,7 +28,7 @@ #define MIYOO_KBD_GET_VER _IOWR(0x104, 0, unsigned long) #define MIYOO_LAY_GET_VER _IOWR(0x105, 0, unsigned long) #define MIYOO_KBD_SET_HOTKEY _IOWR(0x106, 0, unsigned long) -#define MIYOO_FB0_PUT_OSD _IOWR(0x100, 0, unsigned long) +#define MIYOO_FB0_PUT_OSD _IOWR(0x100, 0, unsigned long) //to be implemented #define MIYOO_FB0_SET_MODE _IOWR(0x101, 0, unsigned long) #define MIYOO_FB0_GET_VER _IOWR(0x102, 0, unsigned long) #define MIYOO_FB0_SET_FLIP _IOWR(0x103, 0, unsigned long) //unused @@ -300,8 +300,7 @@ int main(int argc, char** argv) lid = 5; write_conf(MIYOO_LID_FILE, lid); } - sprintf(buf, "echo %d > %s", lid, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_CONF, lid); // volume vol = read_conf(MIYOO_VOL_FILE,5); @@ -394,8 +393,7 @@ int main(int argc, char** argv) } else if (battery_flash_counter > 210 && battery_flash_counter < 299) { //bright if (version < 3) { - sprintf(buf, "echo %d > %s", ((battery_flash_counter % 6) +4), MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_CONF, ((battery_flash_counter % 6) +4)); } else if (battery_flash_counter == 211) { vir = open("/dev/miyoo_vir", O_RDWR); if (vir > 0) { @@ -410,8 +408,7 @@ int main(int argc, char** argv) close(vir); } } else if (battery_flash_counter == 210 || battery_flash_counter == 299) { - sprintf(buf, "echo %d > %s", lid_sys, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_CONF, lid_sys); } ioctl(kbd, MIYOO_KBD_GET_HOTKEY, &ret); if (ret == 0 && lastret == 0) { @@ -441,8 +438,7 @@ int main(int argc, char** argv) if(lid < 10){ lid+= 1; write_conf(MIYOO_LID_FILE, lid); - sprintf(buf, "echo %d > %s", lid, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_CONF, lid); info_fb0(fb0, lid, vol, 1); } /**/ @@ -455,8 +451,7 @@ int main(int argc, char** argv) if(lid > 1){ lid-= 1; write_conf(MIYOO_LID_FILE, lid); - sprintf(buf, "echo %d > %s", lid, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_CONF, lid); info_fb0(fb0, lid, vol, 1); } break; @@ -537,14 +532,12 @@ int main(int argc, char** argv) if(lid < 10){ lid+= 1; write_conf(MIYOO_LID_FILE, lid); - sprintf(buf, "echo %d > %s", lid, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_CONF, lid); info_fb0(fb0, lid, vol, 1); } else { lid= 1; write_conf(MIYOO_LID_FILE, lid); - sprintf(buf, "echo %d > %s", lid, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_CONF, lid); info_fb0(fb0, lid, vol, 1); } break; @@ -554,15 +547,13 @@ int main(int argc, char** argv) sleep(0.1); if(lid == 1){ lid = 10; - write_conf(MIYOO_LID_FILE, lid); - sprintf(buf, "echo %d > %s", lid, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_FILE, lid); + write_conf(MIYOO_LID_CONF, lid); info_fb0(fb0, lid, vol, 1); } else { lid -= 1; - write_conf(MIYOO_LID_FILE, lid); - sprintf(buf, "echo %d > %s", lid, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_FILE, lid); + write_conf(MIYOO_LID_CONF, lid); info_fb0(fb0, lid, vol, 1); } break; @@ -572,15 +563,13 @@ int main(int argc, char** argv) sleep(0.1); if(lid != 10){ lid = 10; - write_conf(MIYOO_LID_FILE, lid); - sprintf(buf, "echo %d > %s", lid, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_FILE, lid); + write_conf(MIYOO_LID_CONF, lid); info_fb0(fb0, lid, vol, 1); } else { lid = 2; - write_conf(MIYOO_LID_FILE, lid); - sprintf(buf, "echo %d > %s", lid, MIYOO_LID_CONF); - system(buf); + write_conf(MIYOO_LID_FILE, lid); + write_conf(MIYOO_LID_CONF, lid); info_fb0(fb0, lid, vol, 1); } break ; From e2f8dcb44dcd71db50a88e854eefd4391e3bd5b4 Mon Sep 17 00:00:00 2001 From: Apaczer <94932128+Apaczer@users.noreply.github.com> Date: Thu, 4 Dec 2025 22:54:42 +0100 Subject: [PATCH 7/8] Create .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f76e8e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +daemon From 223f377101e0c72c68cab4d80479976e6c1247f8 Mon Sep 17 00:00:00 2001 From: Apaczer <94932128+Apaczer@users.noreply.github.com> Date: Thu, 4 Dec 2025 23:20:59 +0100 Subject: [PATCH 8/8] write_date_time() after 1min use extra counter --- main.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 8dd50e5..546fbb4 100644 --- a/main.c +++ b/main.c @@ -359,11 +359,13 @@ int main(int argc, char** argv) unsigned int actioned = 0; unsigned int battery_counter = 0; unsigned int battery_flash_counter = 0; + unsigned int datetime_counter = 0; + unsigned int datetime_write_counter = 0; unsigned int lid_sys = 0; while(1){ usleep(40000); - write_date_time(MIYOO_DATE_FILE); if (battery_counter == 0){ + write_date_time(MIYOO_DATE_FILE); battery_file = fopen(MIYOO_BATTERY, "r"); while ( (fgets(wstr,100,battery_file)) != NULL ) { battery_level = atoi(wstr) ; @@ -375,6 +377,13 @@ int main(int argc, char** argv) battery_counter++; battery_counter%=750; + if (datetime_counter == 0){ + write_date_time(MIYOO_DATE_FILE); + } + + datetime_counter++; + datetime_write_counter%=1500; + if(battery_level > 0 && battery_level < battery_low) { battery_flash_counter++; } else {