diff --git a/Makefile b/Makefile index c2202ce76..7af81c8ee 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ ENABLE_DTMF_CALLING ?= 1 ENABLE_FLASHLIGHT ?= 1 # ---- CUSTOM MODS ---- +ENABLE_WELCOME_IMAGE ?= 0 ENABLE_BIG_FREQ ?= 1 ENABLE_SMALL_BOLD ?= 1 ENABLE_CUSTOM_MENU_LAYOUT ?= 1 @@ -377,6 +378,9 @@ endif ifeq ($(ENABLE_CUSTOM_MENU_LAYOUT),1) CFLAGS += -DENABLE_CUSTOM_MENU_LAYOUT endif +ifeq ($(ENABLE_WELCOME_IMAGE),1) + CFLAGS += -DENABLE_WELCOME_IMAGE +endif LDFLAGS = LDFLAGS += -z noexecstack -mcpu=cortex-m0 -nostartfiles -Wl,-T,firmware.ld -Wl,--gc-sections diff --git a/README.md b/README.md index 05f5cae90..fe6f6b04e 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,16 @@ On the other hand, FM RX audio will/should be fine. But, they are nice toys for the price, fun to play with. +## Customize welcome image + +You can set welcome image instead text message or battery voltage something. + +1. Open welcome-image.html in web browser and process image to what you like +2. Copy the text in "Buffer" field +3. Replace the value of the variable "all" in ui/welcome.c where the line starts with "uint8_t all[8][128]" + + + ## User customization You can customize the firmware by enabling/disabling various compile options, this allows @@ -96,6 +106,7 @@ You'll find the options at the top of "Makefile" ('0' = disable, '1' = enable) . | ENABLE_DTMF_CALLING | DTMF calling fuctionality, sending calls, receiving calls, group calls, contacts list etc. | | ENABLE_FLASHLIGHT | enable top flashlight LED (on, blink, SOS) | |🧰 **CUSTOM MODS**|| +| ENABLE_WELCOME_IMAGE | Customize welcome image (will be blank screen if not build but still select the option) | | ENABLE_BIG_FREQ | big font frequencies (like original QS firmware) | | ENABLE_SMALL_BOLD | bold channel name/no. (when name + freq channel display mode) | | ENABLE_CUSTOM_MENU_LAYOUT | changes how the menu looks like | diff --git a/settings.h b/settings.h index 16b9ac01f..e09ee21cb 100644 --- a/settings.h +++ b/settings.h @@ -29,6 +29,7 @@ enum POWER_OnDisplayMode_t { POWER_ON_DISPLAY_MODE_FULL_SCREEN = 0, POWER_ON_DISPLAY_MODE_MESSAGE, POWER_ON_DISPLAY_MODE_VOLTAGE, + POWER_ON_DISPLAY_MODE_IMAGE, POWER_ON_DISPLAY_MODE_NONE }; typedef enum POWER_OnDisplayMode_t POWER_OnDisplayMode_t; diff --git a/ui/menu.c b/ui/menu.c index f5855e521..bea035864 100644 --- a/ui/menu.c +++ b/ui/menu.c @@ -258,6 +258,7 @@ const char gSubMenu_PONMSG[][8] = "FULL", "MESSAGE", "VOLTAGE", + "IMAGE", "NONE" }; diff --git a/ui/menu.h b/ui/menu.h index 16f5c1cd0..6d904a283 100644 --- a/ui/menu.h +++ b/ui/menu.h @@ -149,7 +149,7 @@ extern const char* const gSubMenu_MDF[4]; extern const char gSubMenu_D_RSP[4][11]; #endif extern const char* const gSubMenu_PTT_ID[5]; -extern const char gSubMenu_PONMSG[4][8]; +extern const char gSubMenu_PONMSG[5][8]; extern const char gSubMenu_ROGER[3][6]; extern const char gSubMenu_RESET[2][4]; extern const char* const gSubMenu_F_LOCK[F_LOCK_LEN]; diff --git a/ui/welcome.c b/ui/welcome.c index 71b309fbd..e59437b54 100644 --- a/ui/welcome.c +++ b/ui/welcome.c @@ -71,6 +71,18 @@ void UI_DisplayWelcome(void) UI_PrintString(WelcomeString1, 0, 127, 2, 10); UI_PrintStringSmallNormal(Version, 0, 128, 6); + if (gEeprom.POWER_ON_DISPLAY_MODE == POWER_ON_DISPLAY_MODE_IMAGE) + { +#ifdef ENABLE_WELCOME_IMAGE + uint8_t all[8][128] = {{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0xa8,0xcc,0x90,0x84,0x98,0xec,0x20,0xc,0x28,0xac,0x40,0xfc,0x10,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0xf0,0xf8,0xfc,0xfc,0xfe,0xfe,0xfe,0xfe,0xfe,0xfc,0xfc,0xf8,0xf0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0xaa,0x97,0xe5,0xb7,0xd5,0x9a,0x81,0xd8,0xcb,0x9b,0xd9,0x94,0xbf,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xff,0xff,0xff,0xf5,0xfb,0xff,0xff,0xff,0xfb,0xf1,0xfb,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x80,0xff,0xff,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf8,0xf8,0xf8,0xf8,0xfc,0xfc,0xfc,0xfc,0xe0,0xc0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x6,0xd,0x12,0x2d,0x5d,0xba,0x5d,0x2d,0x12,0xd,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x3f,0x7f,0xff,0xff,0xff,0xfe,0xf8,0xf0,0xe0,0xc0,0x80,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x80,0xc0,0xe0,0xe0,0xf0,0xf0,0xf0,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0x78,0x78,0x7c,0x7c,0x7e,0x3f,0x3f,0x1f,0xf,0x3,0x3,0x7,0xf,0x3f,0xff,0xff,0xff,0xff,0xff,0x6f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x7,0x0,0x0,0x0,0x0,0x80,0xc0,0xf1,0xf3,0xff,0xff,0xff,0x7f,0x3f,0x1f,0xe,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x3,0xf,0x3f,0x7f,0x7f,0x7f,0x3f,0x1f,0x8f,0x87,0x83,0x81,0xc0,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0xc0,0x40,0xc0,0x0,0x40,0xc0,0x40,0xb0,0x3f,0xbf,0xbf,0xff,0xff,0xdb,0xff,0xff,0x3f,0xff,0xff,0x3f,0xb8,0xb0,0x3c,0xbe,0xbe,0xff,0xff,0xff,0xff,0xff,0x3,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8e,0x4a,0x2a,0xff,0x2a,0x4a,0x8e,0x0,0x0,0x0,0x0,0xc0,0x3f,0xf2,0xf,0xfe,0xe9,0xaa,0x48,0x62,0x88,0xea,0xe8,0xff,0xff,0xff,0x66,0x98,0xde,0xa0,0x7e,0x0,0xff,0xe3,0x8,0xeb,0xe3,0xff,0xff,0xf7,0xc3,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0x0,0x38,0x44,0x0,0x38,0x44,0x38,0x0,0x7c,0x14,0x68,0x0,0x48,0x55,0x24,0x0,0x7c,0x55,0x0,0x4,0x7c,0x5,0xc0,0xfc,0xff,0x83,0xef,0x83,0xfe,0xbb,0x83,0xba,0xff,0x83,0xf2,0x83,0xff,0x83,0xab,0xff,0xbf,0xff,0xc7,0xbb,0xff,0xc6,0xba,0xc6,0xfe,0x82,0xf2,0x83,0xff,0xff,0xff,0xff,0x66,0xa6,0xcc,0xac,0x1c,0x46,0x46,0x1c,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}}; +#else + uint8_t all[8][128]; + memset(all, 0, sizeof(gStatusLine)); +#endif + memcpy(gStatusLine, all[0], 128); + memcpy(gFrameBuffer, all[1], 128 * 7); + } + ST7565_BlitStatusLine(); // blank status line ST7565_BlitFullScreen(); } diff --git a/welcome-image.html b/welcome-image.html new file mode 100644 index 000000000..ffcef602c --- /dev/null +++ b/welcome-image.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + +
PreviewBuffer
Threshold:
darkerlighter
+ + + + + + + + + + + + + + + + + +
PreviewBuffer
+ + + + \ No newline at end of file