|
@@ -6,15 +6,29 @@
|
|
|
#include "config.h"
|
|
|
#include "settings.h"
|
|
|
#include "uart_bridge.h"
|
|
|
+#include "oled_common.h"
|
|
|
#include <string.h>
|
|
|
#include <stdio.h>
|
|
|
|
|
|
+extern "C" {
|
|
|
+#include "OLED_SSD1327.h"
|
|
|
+#include "GFX_SSD1327.h"
|
|
|
+#include "fonts.h"
|
|
|
+}
|
|
|
+
|
|
|
#define DBG if(1)
|
|
|
|
|
|
extern bool update_flag;
|
|
|
|
|
|
-#ifdef KEYBOARD_MENU
|
|
|
+#ifdef SCREEN_MENU
|
|
|
+#define SCREEN_BUF_LEN 30
|
|
|
+char screen_str_buf[SCREEN_BUF_LEN];
|
|
|
+
|
|
|
+static void screen_draw_main(uint8_t sel);
|
|
|
+static void screen_draw_settings(uint8_t sel);
|
|
|
+#endif
|
|
|
|
|
|
+#ifdef KEYBOARD_MENU
|
|
|
#define CLI_BUF_LEN 30
|
|
|
char cli_str_buf[CLI_BUF_LEN];
|
|
|
|
|
@@ -74,6 +88,10 @@ void draw_main(uint8_t sel)
|
|
|
{
|
|
|
update_flag = true;
|
|
|
|
|
|
+#ifdef SCREEN_MENU
|
|
|
+ screen_draw_main(sel);
|
|
|
+#endif
|
|
|
+
|
|
|
#ifdef KEYBOARD_MENU
|
|
|
cli_draw_main(sel);
|
|
|
#endif
|
|
@@ -84,6 +102,10 @@ void draw_settings(uint8_t sel)
|
|
|
{
|
|
|
update_flag = false;
|
|
|
|
|
|
+#ifdef SCREEN_MENU
|
|
|
+ screen_draw_settings(sel);
|
|
|
+#endif
|
|
|
+
|
|
|
#ifdef KEYBOARD_MENU
|
|
|
cli_draw_settings(sel);
|
|
|
#endif
|
|
@@ -131,6 +153,98 @@ void change_revers(bool dir)
|
|
|
settings.revers = true;
|
|
|
}
|
|
|
|
|
|
+// -------------------------------------------------------------------------- //
|
|
|
+// Экранное меню OLDED.
|
|
|
+
|
|
|
+#ifdef SCREEN_MENU
|
|
|
+
|
|
|
+// Отрисовка главного экрана
|
|
|
+static void screen_draw_main(uint8_t sel)
|
|
|
+{
|
|
|
+ uint32_t raw_forw_turns, raw_back_turns, dir;
|
|
|
+
|
|
|
+ get_raw_params(&raw_forw_turns, &raw_back_turns, &dir);
|
|
|
+
|
|
|
+ SSD1327_Clear(BLACK);
|
|
|
+
|
|
|
+ // Основнаая рамка
|
|
|
+ GFX_DrawRectangle(1, 1, 126, 125, 15);
|
|
|
+
|
|
|
+ GFX_SetFont(font_8x5);
|
|
|
+ GFX_SetFontSize(2);
|
|
|
+
|
|
|
+ memset(screen_str_buf, 0, SCREEN_BUF_LEN);
|
|
|
+ sprintf(screen_str_buf, "F: %u", raw_forw_turns);
|
|
|
+ GFX_DrawString(8, 20, (char*)screen_str_buf, 15, 0);
|
|
|
+
|
|
|
+ memset(screen_str_buf, 0, SCREEN_BUF_LEN);
|
|
|
+ sprintf(screen_str_buf, "B: %u", raw_back_turns);
|
|
|
+ GFX_DrawString(8, 40, (char*)screen_str_buf, 15, 0);
|
|
|
+
|
|
|
+ memset(screen_str_buf, 0, SCREEN_BUF_LEN);
|
|
|
+ sprintf(screen_str_buf, "T: %u", 0);
|
|
|
+ GFX_DrawString(8, 60, (char*)screen_str_buf, 15, 0);
|
|
|
+
|
|
|
+ memset(screen_str_buf, 0, SCREEN_BUF_LEN);
|
|
|
+ if (dir == 1)
|
|
|
+ sprintf(screen_str_buf, "Move fwd");
|
|
|
+ else
|
|
|
+ sprintf(screen_str_buf, "Move back");
|
|
|
+ GFX_DrawString(8, 80, (char*)screen_str_buf, 15, 0);
|
|
|
+
|
|
|
+ SSD1327_Display();
|
|
|
+}
|
|
|
+
|
|
|
+// Отрисовка экрана настроек
|
|
|
+static void screen_draw_settings(uint8_t sel)
|
|
|
+{
|
|
|
+ bool select;
|
|
|
+
|
|
|
+ SSD1327_Clear(BLACK);
|
|
|
+
|
|
|
+ //GFX_DrawRectangle(1, 1, 126, 125, 15);
|
|
|
+
|
|
|
+
|
|
|
+ //GFX_DrawRoundRectangle(1, 1, 126, 125, 3, 15);
|
|
|
+
|
|
|
+ select = sel == MCELL_K1 ? true : false;
|
|
|
+ //cli_print_int_param((char*)"F 1: ", settings.factor_1, select);
|
|
|
+ memset(screen_str_buf, 0, SCREEN_BUF_LEN);
|
|
|
+ sprintf(screen_str_buf, "F 1: %u", settings.factor_1);
|
|
|
+ //GFX_DrawString(8, 20, (char*)screen_str_buf, 15, 0);
|
|
|
+
|
|
|
+ if (select)
|
|
|
+ oled_draw_rec(3, 5, 123, 22, 15);
|
|
|
+
|
|
|
+ select = sel == MCELL_K2 ? true : false;
|
|
|
+ //cli_print_int_param((char*)"F 1: ", settings.factor_1, select);
|
|
|
+ memset(screen_str_buf, 0, SCREEN_BUF_LEN);
|
|
|
+ sprintf(screen_str_buf, "F 2: %u", settings.factor_2);
|
|
|
+ //GFX_DrawString(8, 40, (char*)screen_str_buf, 15, 0);
|
|
|
+
|
|
|
+
|
|
|
+ SSD1327_Display();
|
|
|
+/*
|
|
|
+ select = sel == MCELL_K1 ? true : false;
|
|
|
+ cli_print_int_param((char*)"Factor 1: ", settings.factor_1, select);
|
|
|
+
|
|
|
+ select = sel == MCELL_K2 ? true : false;
|
|
|
+ cli_print_int_param((char*)"Factor 2: ", settings.factor_2, select);
|
|
|
+
|
|
|
+ select = sel == MCELL_REV ? true : false;
|
|
|
+ if (settings.revers == true)
|
|
|
+ cli_print_str_param((char*)"Revers: ", (char*)"yes", select);
|
|
|
+ else
|
|
|
+ cli_print_str_param((char*)"Revers: ", (char*)"no", select);
|
|
|
+
|
|
|
+ select = sel == MCELL_RES ? true : false;
|
|
|
+ cli_print_str_param((char*)"Reset counters", (char*)"", select);
|
|
|
+
|
|
|
+ select = sel == MCELL_SAVE ? true : false;
|
|
|
+ cli_print_str_param((char*)"Save settings", (char*)"", select);
|
|
|
+*/
|
|
|
+}
|
|
|
+#endif
|
|
|
// -------------------------------------------------------------------------- //
|
|
|
// Консольное меню. Вспомогательные функции.
|
|
|
#ifdef KEYBOARD_MENU
|
|
@@ -158,9 +272,6 @@ static void cli_draw_settings(uint8_t sel)
|
|
|
DBG printf("\033c");
|
|
|
DBG printf("~~~ SETTINGS SCREEN ~~~\r\n\n");
|
|
|
|
|
|
- if (sel == MCELL_K1) {
|
|
|
- }
|
|
|
-
|
|
|
select = sel == MCELL_K1 ? true : false;
|
|
|
cli_print_int_param((char*)"Factor 1: ", settings.factor_1, select);
|
|
|
|