From 9aa25cd1c45a6927488d1f897acefb57622be0fe Mon Sep 17 00:00:00 2001 From: Renze Nicolai Date: Sat, 16 Apr 2022 23:31:18 +0200 Subject: [PATCH] Buggy but working manual entry of wifi parameters --- main/include/pax_keyboard.h | 2 +- main/main.c | 72 +++++++++++++++++++++++++++++++++--- main/menu.c | 3 +- main/pax_keyboard.c | 16 ++++++-- partitions.ods | Bin 17217 -> 26571 bytes 5 files changed, 82 insertions(+), 11 deletions(-) diff --git a/main/include/pax_keyboard.h b/main/include/pax_keyboard.h index da431b4..debd962 100644 --- a/main/include/pax_keyboard.h +++ b/main/include/pax_keyboard.h @@ -127,7 +127,7 @@ typedef struct { } pkb_ctx_t; // Initialise the context with default settings. -void pkb_init (pax_buf_t *buf, pkb_ctx_t *ctx); +void pkb_init (pax_buf_t *buf, pkb_ctx_t *ctx, char* data); // Free any memory associated with the context. void pkb_destroy(pkb_ctx_t *ctx); diff --git a/main/main.c b/main/main.c index d78944c..0840920 100644 --- a/main/main.c +++ b/main/main.c @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include "hardware.h" #include "managed_i2c.h" #include "pax_gfx.h" @@ -198,9 +200,46 @@ void menu_wifi_settings(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341 menu_free(menu); } -void keyboard_test(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili9341, uint8_t* framebuffer) { +bool keyboard(xQueueHandle buttonQueue, pax_buf_t* aBuffer, ILI9341* ili9341, uint8_t* framebuffer, float aPosX, float aPosY, float aWidth, float aHeight, const char* aTitle, const char* aHint, char* aOutput, size_t aOutputSize) { + bool accepted = false; pkb_ctx_t kb_ctx; - pkb_init(pax_buffer, &kb_ctx); + pkb_init(aBuffer, &kb_ctx, aOutput); + + pax_col_t fgColor = 0xFF000000; + pax_col_t bgColor = 0xFFFFFFFF; + pax_col_t shadowColor = 0xFFC0C3C8; + pax_col_t borderColor = 0xFF0000AA; + pax_col_t titleBgColor = 0xFF080764; + pax_col_t titleColor = 0xFFFFFFFF; + pax_col_t selColor = 0xff007fff; + + kb_ctx.text_col = borderColor; + kb_ctx.sel_text_col = selColor; + kb_ctx.sel_col = selColor; + kb_ctx.bg_col = bgColor; + + kb_ctx.kb_font_size = 18; + + float titleHeight = 20; + float hintHeight = 14; + + pax_noclip(aBuffer); + pax_simple_rect(aBuffer, shadowColor, aPosX+5, aPosY+5, aWidth, aHeight); + pax_simple_rect(aBuffer, bgColor, aPosX, aPosY, aWidth, aHeight); + pax_outline_rect(aBuffer, borderColor, aPosX, aPosY, aWidth, aHeight); + pax_simple_rect(aBuffer, titleBgColor, aPosX, aPosY, aWidth, titleHeight); + pax_simple_line(aBuffer, titleColor, aPosX + 1, aPosY + titleHeight, aPosX + aWidth - 2, aPosY + titleHeight - 1); + pax_clip(aBuffer, aPosX + 1, aPosY + 1, aWidth - 2, titleHeight - 2); + pax_draw_text(aBuffer, titleColor, NULL, titleHeight - 2, aPosX + 1, aPosY + 1, aTitle); + pax_clip(aBuffer, aPosX + 1, aPosY + aHeight - hintHeight, aWidth - 2, hintHeight); + pax_draw_text(aBuffer, borderColor, NULL, hintHeight - 2, aPosX + 1, aPosY + aHeight - hintHeight, aHint); + pax_noclip(aBuffer); + + kb_ctx.x = aPosX + 1; + kb_ctx.y = aPosY + titleHeight + 1 ; + kb_ctx.width = aWidth - 2; + kb_ctx.height = aHeight - 3 - titleHeight - hintHeight; + bool running = true; while (running) { button_message_t buttonMessage = {0}; @@ -275,12 +314,18 @@ void keyboard_test(xQueueHandle buttonQueue, pax_buf_t* pax_buffer, ILI9341* ili } pkb_loop(&kb_ctx); if (kb_ctx.dirty) { - pkb_redraw(pax_buffer, &kb_ctx); + pkb_redraw(aBuffer, &kb_ctx); ili9341_write(ili9341, framebuffer); } - + if (kb_ctx.input_accepted) { + memset(aOutput, 0, aOutputSize); + strncpy(aOutput, kb_ctx.content, aOutputSize - 1); + running = false; + accepted = true; + } } pkb_destroy(&kb_ctx); + return accepted; } void app_main(void) { @@ -376,7 +421,24 @@ void app_main(void) { } else if (menu_action == ACTION_SETTINGS) { menu_wifi_settings(buttonQueue, pax_buffer, ili9341, framebuffer, &menu_action); if (menu_action == ACTION_WIFI_MANUAL) { - keyboard_test(buttonQueue, pax_buffer, ili9341, framebuffer); + nvs_handle_t handle; + nvs_open("system", NVS_READWRITE, &handle); + char ssid[33]; + char password[33]; + size_t requiredSize; + nvs_get_str(handle, "wifi.ssid", NULL, &requiredSize); + if (requiredSize < sizeof(ssid)) { + nvs_get_str(handle, "wifi.ssid", ssid, &requiredSize); + } + nvs_get_str(handle, "wifi.password", NULL, &requiredSize); + if (requiredSize < sizeof(password)) { + nvs_get_str(handle, "wifi.password", password, &requiredSize); + } + keyboard(buttonQueue, pax_buffer, ili9341, framebuffer, 30, 30, pax_buffer->width - 60, pax_buffer->height - 60, "WiFi SSID", "Press HOME to exit", ssid, sizeof(ssid)); + keyboard(buttonQueue, pax_buffer, ili9341, framebuffer, 30, 30, pax_buffer->width - 60, pax_buffer->height - 60, "WiFi password", "Press HOME to exit", password, sizeof(password)); + nvs_set_str(handle, "wifi.ssid", ssid); + nvs_set_str(handle, "wifi.password", password); + nvs_close(&handle); } } graphics_task(pax_buffer, ili9341, framebuffer, NULL, "Please wait..."); diff --git a/main/menu.c b/main/menu.c index 11ed627..cb57df2 100644 --- a/main/menu.c +++ b/main/menu.c @@ -215,13 +215,12 @@ void menu_render(pax_buf_t *aBuffer, menu_t* aMenu, float aPosX, float aPosY, fl printf("Render error: item is NULL at %u\n", index); break; } + pax_clip(aBuffer, aPosX, posY, aWidth, entry_height); if (index == aMenu->position) { - pax_clip(aBuffer, aPosX, posY, aWidth, entry_height); pax_simple_rect(aBuffer, fgColor, aPosX + 1, posY, aWidth - 2, entry_height); pax_clip(aBuffer, aPosX + 1, posY + 1, aWidth - 4, entry_height - 2); pax_draw_text(aBuffer, bgColor, NULL, entry_height - 2, aPosX + 1, posY + 1, item->label); } else { - pax_clip(aBuffer, aPosX, posY, aWidth, entry_height - 1); pax_simple_rect(aBuffer, bgColor, aPosX + 1, posY, aWidth - 2, entry_height); pax_clip(aBuffer, aPosX + 1, posY + 1, aWidth - 4, entry_height - 2); pax_draw_text(aBuffer, fgColor, NULL, entry_height - 2, aPosX + 1, posY + 1, item->label); diff --git a/main/pax_keyboard.c b/main/pax_keyboard.c index 38de147..54ebb55 100644 --- a/main/pax_keyboard.c +++ b/main/pax_keyboard.c @@ -30,10 +30,20 @@ /* ==== Miscellaneous ==== */ // Initialise the context with default settings. -void pkb_init(pax_buf_t *buf, pkb_ctx_t *ctx) { +void pkb_init(pax_buf_t *buf, pkb_ctx_t *ctx, char* data) { // Allocate a bufffer. - char *buffer = malloc(4); - memset(buffer, 0, 4); + char *buffer = NULL; + + if (data == NULL) { + buffer = malloc(4); + memset(buffer, 0, 4); + } else { + size_t length = strlen(data); + if (length < 4) length = 4; + buffer = malloc(length); + memset(buffer, 0, length); + strcpy(buffer, data); + } // Some defaults. *ctx = (pkb_ctx_t) { diff --git a/partitions.ods b/partitions.ods index d1ef882c6433aaa618f97b41b321b4ebda3338ec..740fc4356fb03a655c15d701a8ae81f3a01f6d03 100644 GIT binary patch delta 24702 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
yO_>7a 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 I_WslIf5jy@rvLx| delta 15216 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