mirror of
https://github.com/Lurkars/esp-ena.git
synced 2026-05-08 20:10:37 +02:00
componeent structure, preparation for component branch
This commit is contained in:
@@ -12,7 +12,9 @@ idf_component_register(
|
||||
INCLUDE_DIRS "."
|
||||
PRIV_REQUIRES
|
||||
ena
|
||||
ssd1306
|
||||
ds3231
|
||||
display
|
||||
display-ssd1306
|
||||
rtc
|
||||
rtc-ds3231
|
||||
wifi-controller
|
||||
)
|
||||
@@ -19,8 +19,8 @@
|
||||
#include "esp_log.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#include "ssd1306.h"
|
||||
#include "ssd1306-gfx.h"
|
||||
#include "display.h"
|
||||
#include "display-gfx.h"
|
||||
|
||||
#include "ena-storage.h"
|
||||
|
||||
@@ -49,9 +49,9 @@ void interface_data_set(void)
|
||||
else
|
||||
{
|
||||
confirm_current = false;
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 2, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 4, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 6, false);
|
||||
display_clear_line( 2, false);
|
||||
display_clear_line( 4, false);
|
||||
display_clear_line( 6, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,9 +83,9 @@ void interface_data_rst(void)
|
||||
}
|
||||
|
||||
confirm_current = false;
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 2, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 4, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 6, false);
|
||||
display_clear_line( 2, false);
|
||||
display_clear_line( 4, false);
|
||||
display_clear_line( 6, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,9 +103,9 @@ void interface_data_mid(void)
|
||||
{
|
||||
if (!confirm_current)
|
||||
{
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 2, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 4, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 6, false);
|
||||
display_clear_line( 2, false);
|
||||
display_clear_line( 4, false);
|
||||
display_clear_line( 6, false);
|
||||
confirm_current = true;
|
||||
}
|
||||
}
|
||||
@@ -124,9 +124,9 @@ void interface_data_up(void)
|
||||
current_data_index--;
|
||||
}
|
||||
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 2, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 4, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 6, false);
|
||||
display_clear_line( 2, false);
|
||||
display_clear_line( 4, false);
|
||||
display_clear_line( 6, false);
|
||||
}
|
||||
|
||||
void interface_data_dwn(void)
|
||||
@@ -142,26 +142,26 @@ void interface_data_dwn(void)
|
||||
current_data_index++;
|
||||
}
|
||||
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 2, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 4, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 6, false);
|
||||
display_clear_line( 2, false);
|
||||
display_clear_line( 4, false);
|
||||
display_clear_line( 6, false);
|
||||
}
|
||||
|
||||
void interface_data_display(void)
|
||||
{
|
||||
ssd1306_menu_headline(SSD1306_ADDRESS, interface_get_label_text(&interface_text_headline_data), true, 0);
|
||||
display_menu_headline( interface_get_label_text(&interface_text_headline_data), true, 0);
|
||||
if (confirm_current)
|
||||
{
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, interface_get_label_text(&interface_text_data_del[current_interface_data_state]), 2, 2, false);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, "?", 2, strlen(interface_get_label_text(&interface_text_data_del[current_interface_data_state])) + 2, false);
|
||||
display_text_line_column( interface_get_label_text(&interface_text_data_del[current_interface_data_state]), 2, 2, false);
|
||||
display_text_line_column( "?", 2, strlen(interface_get_label_text(&interface_text_data_del[current_interface_data_state])) + 2, false);
|
||||
|
||||
ssd1306_set_button(SSD1306_ADDRESS, interface_get_label_text(&interface_text_button_cancel), true, false);
|
||||
ssd1306_set_button(SSD1306_ADDRESS, interface_get_label_text(&interface_text_button_ok), false, true);
|
||||
display_set_button( interface_get_label_text(&interface_text_button_cancel), true, false);
|
||||
display_set_button( interface_get_label_text(&interface_text_button_ok), false, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 5, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 7, false);
|
||||
display_clear_line( 5, false);
|
||||
display_clear_line( 7, false);
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int index = i + current_data_index;
|
||||
@@ -169,10 +169,10 @@ void interface_data_display(void)
|
||||
{
|
||||
if (index == current_interface_data_state)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_right, 8, i * 2 + 2, 8, false);
|
||||
display_data( display_gfx_arrow_right, 8, i * 2 + 2, 8, false);
|
||||
}
|
||||
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, interface_get_label_text(&interface_text_data_del[index]), i * 2 + 2, 2, false);
|
||||
display_text_line_column( interface_get_label_text(&interface_text_data_del[index]), i * 2 + 2, 2, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -182,13 +182,13 @@ void interface_data_start(void)
|
||||
{
|
||||
current_interface_data_state = INTERFACE_DATA_DEL_TEK;
|
||||
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RST, &interface_data_rst);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_SET, &interface_data_set);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_LFT, &interface_data_lft);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RHT, &interface_data_rht);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_MID, &interface_data_mid);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_UP, &interface_data_up);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_DWN, &interface_data_dwn);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RST, &interface_data_rst);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_SET, &interface_data_set);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_LFT, &interface_data_lft);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RHT, &interface_data_rht);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_MID, &interface_data_mid);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_UP, &interface_data_up);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_DWN, &interface_data_dwn);
|
||||
interface_set_display_function(&interface_data_display);
|
||||
|
||||
ESP_LOGD(INTERFACE_LOG, "start delete data interface");
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
#include "esp_log.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#include "ds3231.h"
|
||||
#include "ssd1306.h"
|
||||
#include "ssd1306-gfx.h"
|
||||
#include "rtc.h"
|
||||
#include "display.h"
|
||||
#include "display-gfx.h"
|
||||
|
||||
#include "interface.h"
|
||||
|
||||
@@ -74,7 +74,7 @@ void interface_datetime_up(void)
|
||||
struct timeval tv = {0};
|
||||
tv.tv_sec = curtime;
|
||||
settimeofday(&tv, NULL);
|
||||
ds3231_set_time(gmtime(&curtime));
|
||||
rtc_set_time(gmtime(&curtime));
|
||||
ESP_LOGD(INTERFACE_LOG, "increment %d about %u %s", current_interface_datetime_state, interface_datetime_steps[current_interface_datetime_state], ctime(&curtime));
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ void interface_datetime_dwn(void)
|
||||
struct timeval tv = {0};
|
||||
tv.tv_sec = curtime;
|
||||
settimeofday(&tv, NULL);
|
||||
ds3231_set_time(gmtime(&curtime));
|
||||
rtc_set_time(gmtime(&curtime));
|
||||
ESP_LOGD(INTERFACE_LOG, "decrement %d about %u %s", current_interface_datetime_state, interface_datetime_steps[current_interface_datetime_state], ctime(&curtime));
|
||||
}
|
||||
|
||||
@@ -96,26 +96,26 @@ void interface_datetime_display(void)
|
||||
static char time_buffer[9];
|
||||
static char date_buffer[32];
|
||||
|
||||
ssd1306_menu_headline(SSD1306_ADDRESS, interface_get_label_text(&interface_text_headline_time), true, 0);
|
||||
display_menu_headline( interface_get_label_text(&interface_text_headline_time), true, 0);
|
||||
static char edit_char[3];
|
||||
static int edit_line = 3;
|
||||
int edit_length = 2;
|
||||
int edit_offset = 0;
|
||||
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, edit_line - 1, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, edit_line + 1, false);
|
||||
display_clear_line( edit_line - 1, false);
|
||||
display_clear_line( edit_line + 1, false);
|
||||
|
||||
time(¤t_timstamp);
|
||||
current_tm = localtime(¤t_timstamp);
|
||||
|
||||
strftime(time_buffer, 16, INTERFACE_FORMAT_TIME, current_tm);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, time_buffer, 3, 4, false);
|
||||
display_text_line_column( time_buffer, 3, 4, false);
|
||||
|
||||
sprintf(date_buffer, "%02d %s %02d",
|
||||
current_tm->tm_mday,
|
||||
interface_get_label_text(&interface_texts_month[current_tm->tm_mon]),
|
||||
current_tm->tm_year - 100);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, date_buffer, 6, 4, false);
|
||||
display_text_line_column( date_buffer, 6, 4, false);
|
||||
|
||||
switch (interface_datetime_state())
|
||||
{
|
||||
@@ -153,21 +153,21 @@ void interface_datetime_display(void)
|
||||
break;
|
||||
}
|
||||
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_up, 8, edit_line - 1, edit_offset * 8 + 4, false);
|
||||
ssd1306_chars(SSD1306_ADDRESS, edit_char, edit_length, edit_line, edit_offset, true);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_down, 8, edit_line + 1, edit_offset * 8 + 4, false);
|
||||
display_data( display_gfx_arrow_up, 8, edit_line - 1, edit_offset * 8 + 4, false);
|
||||
display_chars( edit_char, edit_length, edit_line, edit_offset, true);
|
||||
display_data( display_gfx_arrow_down, 8, edit_line + 1, edit_offset * 8 + 4, false);
|
||||
}
|
||||
|
||||
void interface_datetime_start(void)
|
||||
{
|
||||
current_interface_datetime_state = INTERFACE_DATETIME_STATE_HOUR;
|
||||
interface_register_button_callback(INTERFACE_BUTTON_LFT, &interface_datetime_lft);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RHT, &interface_datetime_rht);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_MID, &interface_datetime_mid);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_UP, &interface_datetime_up);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_DWN, &interface_datetime_dwn);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_SET, &interface_datetime_set);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RST, NULL);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_LFT, &interface_datetime_lft);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RHT, &interface_datetime_rht);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_MID, &interface_datetime_mid);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_UP, &interface_datetime_up);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_DWN, &interface_datetime_dwn);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_SET, &interface_datetime_set);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RST, NULL);
|
||||
interface_set_display_function(&interface_datetime_display);
|
||||
ESP_LOGD(INTERFACE_LOG, "start datetime interface");
|
||||
}
|
||||
@@ -19,13 +19,13 @@
|
||||
#include "esp_log.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#include "ssd1306.h"
|
||||
#include "ssd1306-gfx.h"
|
||||
#include "display.h"
|
||||
#include "display-gfx.h"
|
||||
|
||||
#include "interface.h"
|
||||
|
||||
static interface_input_callback current_input_callback_rst;
|
||||
static interface_input_callback current_input_callback_set;
|
||||
static interface_text_callback current_input_callback_rst;
|
||||
static interface_text_callback current_input_callback_set;
|
||||
static char current_text[255];
|
||||
static uint8_t current_cursor;
|
||||
static char current_char_set[32];
|
||||
@@ -186,8 +186,8 @@ void interface_input_display(void)
|
||||
{
|
||||
|
||||
// buttons
|
||||
ssd1306_set_button(SSD1306_ADDRESS, interface_get_label_text(&interface_text_button_cancel), true, false);
|
||||
ssd1306_set_button(SSD1306_ADDRESS, interface_get_label_text(&interface_text_button_ok), false, true);
|
||||
display_set_button( interface_get_label_text(&interface_text_button_cancel), true, false);
|
||||
display_set_button( interface_get_label_text(&interface_text_button_ok), false, true);
|
||||
|
||||
size_t start = 0;
|
||||
uint8_t display_cursor = current_cursor + 1;
|
||||
@@ -200,22 +200,22 @@ void interface_input_display(void)
|
||||
// arrow
|
||||
if (current_cursor > 0)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_left, 8, 2, 0, false);
|
||||
display_data( display_gfx_arrow_left, 8, 2, 0, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_clear, 8, 2, 0, false);
|
||||
display_data( display_gfx_clear, 8, 2, 0, false);
|
||||
}
|
||||
// bounday
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, "______________", 2, 1, false);
|
||||
display_text_line_column( "______________", 2, 1, false);
|
||||
// arrow
|
||||
if (current_cursor < current_limit)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_right, 8, 2, 15 * 8, false);
|
||||
display_data( display_gfx_arrow_right, 8, 2, 15 * 8, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_clear, 8, 2, 15 * 8, false);
|
||||
display_data( display_gfx_clear, 8, 2, 15 * 8, false);
|
||||
}
|
||||
// text
|
||||
size_t text_length = strlen(current_text);
|
||||
@@ -227,17 +227,17 @@ void interface_input_display(void)
|
||||
uint8_t *textdata = calloc(length, sizeof(uint8_t));
|
||||
for (uint8_t i = 0; i < text_length; i++)
|
||||
{
|
||||
memcpy(&textdata[i * 8], ssd1306_gfx_font[(uint8_t)current_text[i + start] - 32], 8);
|
||||
memcpy(&textdata[i * 8], display_gfx_font[(uint8_t)current_text[i + start] - 32], 8);
|
||||
}
|
||||
|
||||
ssd1306_data(SSD1306_ADDRESS, textdata, length, 2, 8, true);
|
||||
display_data( textdata, length, 2, 8, true);
|
||||
free(textdata);
|
||||
|
||||
// clear
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 0, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 1, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 3, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 4, false);
|
||||
display_clear_line( 0, false);
|
||||
display_clear_line( 1, false);
|
||||
display_clear_line( 3, false);
|
||||
display_clear_line( 4, false);
|
||||
|
||||
uint8_t current_char = (uint8_t)current_char_set[current_char_index] - 32;
|
||||
uint8_t prev_char = (uint8_t)current_char_set[current_char_index - 1] - 32;
|
||||
@@ -254,38 +254,38 @@ void interface_input_display(void)
|
||||
}
|
||||
|
||||
// arrow
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_up, 8, 0, display_cursor * 8, false);
|
||||
display_data( display_gfx_arrow_up, 8, 0, display_cursor * 8, false);
|
||||
// upper char
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_font[prev_char], 8, 1, display_cursor * 8, false);
|
||||
display_data( display_gfx_font[prev_char], 8, 1, display_cursor * 8, false);
|
||||
// sel char
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_font[current_char], 8, 2, display_cursor * 8, false);
|
||||
display_data( display_gfx_font[current_char], 8, 2, display_cursor * 8, false);
|
||||
// lower char
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_font[next_char], 8, 3, display_cursor * 8, false);
|
||||
display_data( display_gfx_font[next_char], 8, 3, display_cursor * 8, false);
|
||||
// arrow
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_down, 8, 4, display_cursor * 8, false);
|
||||
display_data( display_gfx_arrow_down, 8, 4, display_cursor * 8, false);
|
||||
}
|
||||
|
||||
void interface_input_set_text(char *text)
|
||||
{
|
||||
ssd1306_utf8_to_ascii(text, current_text);
|
||||
display_utf8_to_ascii(text, current_text);
|
||||
current_cursor = strlen(current_text) - 1;
|
||||
current_max_index = current_cursor;
|
||||
interface_input_set_char_set();
|
||||
}
|
||||
|
||||
void interface_input(interface_input_callback callback_rst, interface_input_callback callback_set, uint8_t limit)
|
||||
void interface_input(interface_text_callback callback_rst, interface_text_callback callback_set, uint8_t limit)
|
||||
{
|
||||
current_input_callback_rst = callback_rst;
|
||||
current_input_callback_set = callback_set;
|
||||
current_cursor = 0;
|
||||
current_limit = limit - 1;
|
||||
|
||||
ssd1306_utf8_to_ascii("ABCDEFGHIJKLMNOPQRSTUVWXYZ", char_set_uppercase);
|
||||
ssd1306_utf8_to_ascii("abcdefghijklmnopqrstuvwxyz", char_set_lowercase);
|
||||
ssd1306_utf8_to_ascii(" !\"#$%&'()*+,-,&:;<=>@[\\]^_´`{}", char_set_special1);
|
||||
ssd1306_utf8_to_ascii("0123456789", char_set_numeric);
|
||||
ssd1306_utf8_to_ascii("ÄÖÜ", char_set_special_uppercasecase);
|
||||
ssd1306_utf8_to_ascii("äöü", char_set_special_lowercase);
|
||||
display_utf8_to_ascii("ABCDEFGHIJKLMNOPQRSTUVWXYZ", char_set_uppercase);
|
||||
display_utf8_to_ascii("abcdefghijklmnopqrstuvwxyz", char_set_lowercase);
|
||||
display_utf8_to_ascii(" !\"#$%&'()*+,-,&:;<=>@[\\]^_´`{}", char_set_special1);
|
||||
display_utf8_to_ascii("0123456789", char_set_numeric);
|
||||
display_utf8_to_ascii("ÄÖÜ", char_set_special_uppercasecase);
|
||||
display_utf8_to_ascii("äöü", char_set_special_lowercase);
|
||||
|
||||
strcpy(current_char_set, char_set_uppercase);
|
||||
|
||||
@@ -305,13 +305,13 @@ void interface_input(interface_input_callback callback_rst, interface_input_call
|
||||
|
||||
current_text[current_cursor] = current_char_set[current_char_index];
|
||||
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RST, &interface_input_rst);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_SET, &interface_input_set);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_LFT, &interface_input_lft);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RHT, &interface_input_rht);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_MID, &interface_input_mid);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_UP, &interface_input_up);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_DWN, &interface_input_dwn);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RST, &interface_input_rst);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_SET, &interface_input_set);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_LFT, &interface_input_lft);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RHT, &interface_input_rht);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_MID, &interface_input_mid);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_UP, &interface_input_up);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_DWN, &interface_input_dwn);
|
||||
|
||||
interface_set_display_function(&interface_input_display);
|
||||
ESP_LOGD(INTERFACE_LOG, "start input interface");
|
||||
|
||||
@@ -17,9 +17,8 @@
|
||||
#include "esp_log.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#include "ds3231.h"
|
||||
#include "ssd1306.h"
|
||||
#include "ssd1306-gfx.h"
|
||||
#include "display.h"
|
||||
#include "display-gfx.h"
|
||||
|
||||
#include "wifi-controller.h"
|
||||
#include "ena-storage.h"
|
||||
@@ -47,11 +46,11 @@ void interface_main_display(void)
|
||||
{
|
||||
if (wifi_connected)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_wifi, 8, 0, 0, false);
|
||||
display_data( display_gfx_wifi, 8, 0, 0, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_cross, 8, 0, 0, false);
|
||||
display_data( display_gfx_cross, 8, 0, 0, false);
|
||||
}
|
||||
|
||||
time(¤t_timstamp);
|
||||
@@ -62,23 +61,23 @@ void interface_main_display(void)
|
||||
interface_get_label_text(&interface_texts_weekday[current_tm->tm_wday]),
|
||||
interface_get_label_text(&interface_texts_month[current_tm->tm_mon]),
|
||||
current_tm->tm_mday);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, text_buffer, 0, 16 - strlen(text_buffer), false);
|
||||
display_text_line_column( text_buffer, 0, 16 - strlen(text_buffer), false);
|
||||
|
||||
// current time
|
||||
strftime(time_buffer, 16, INTERFACE_FORMAT_TIME, current_tm);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, time_buffer, 1, 16 - strlen(time_buffer), false);
|
||||
display_text_line_column( time_buffer, 1, 16 - strlen(time_buffer), false);
|
||||
}
|
||||
|
||||
void interface_main_start(void)
|
||||
{
|
||||
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RST, &interface_main_rst);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_SET, &interface_main_set);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_LFT, NULL);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RHT, NULL);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_MID, NULL);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_UP, NULL);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_DWN, NULL);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RST, &interface_main_rst);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_SET, &interface_main_set);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_LFT, NULL);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RHT, NULL);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_MID, NULL);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_UP, NULL);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_DWN, NULL);
|
||||
|
||||
if (wifi_controller_connection() != NULL)
|
||||
{
|
||||
@@ -99,27 +98,27 @@ void interface_main_start(void)
|
||||
// status unknown if no update or last update older than two days
|
||||
if (last_update == 0 || ((current_timstamp - last_update) / (60 * 60 * 24)) > 2)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_question[0], 24, 0, 12, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_question[1], 24, 1, 12, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_question[2], 24, 2, 12, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_question[3], 24, 3, 12, false);
|
||||
display_data( display_gfx_question[0], 24, 0, 12, false);
|
||||
display_data( display_gfx_question[1], 24, 1, 12, false);
|
||||
display_data( display_gfx_question[2], 24, 2, 12, false);
|
||||
display_data( display_gfx_question[3], 24, 3, 12, false);
|
||||
}
|
||||
else if (current_exposure_summary->max_risk_score < 100)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_smile[0], 24, 0, 12, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_smile[1], 24, 1, 12, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_smile[2], 24, 2, 12, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_smile[3], 24, 3, 12, false);
|
||||
display_data( display_gfx_smile[0], 24, 0, 12, false);
|
||||
display_data( display_gfx_smile[1], 24, 1, 12, false);
|
||||
display_data( display_gfx_smile[2], 24, 2, 12, false);
|
||||
display_data( display_gfx_smile[3], 24, 3, 12, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_sad[0], 24, 0, 12, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_sad[1], 24, 1, 12, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_sad[2], 24, 2, 12, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_sad[3], 24, 3, 12, false);
|
||||
display_data( display_gfx_sad[0], 24, 0, 12, false);
|
||||
display_data( display_gfx_sad[1], 24, 1, 12, false);
|
||||
display_data( display_gfx_sad[2], 24, 2, 12, false);
|
||||
display_data( display_gfx_sad[3], 24, 3, 12, false);
|
||||
}
|
||||
// clock icon
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_clock, 8, 4, 8, false);
|
||||
display_data( display_gfx_clock, 8, 4, 8, false);
|
||||
|
||||
// last update
|
||||
struct tm *last_update_tm = localtime((time_t*) &last_update);
|
||||
@@ -132,12 +131,12 @@ void interface_main_start(void)
|
||||
|
||||
if (last_update != 0)
|
||||
{
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, time_buffer, 4, 3, false);
|
||||
display_text_line_column( time_buffer, 4, 3, false);
|
||||
}
|
||||
|
||||
// buttons
|
||||
ssd1306_set_button(SSD1306_ADDRESS, interface_get_label_text(&interface_text_button_menu), true, false);
|
||||
ssd1306_set_button(SSD1306_ADDRESS, interface_get_label_text(&interface_text_button_report), false, true);
|
||||
display_set_button( interface_get_label_text(&interface_text_button_menu), true, false);
|
||||
display_set_button( interface_get_label_text(&interface_text_button_report), false, true);
|
||||
|
||||
ESP_LOGD(INTERFACE_LOG, "start main interface");
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#include "esp_log.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#include "ssd1306.h"
|
||||
#include "ssd1306-gfx.h"
|
||||
#include "display.h"
|
||||
#include "display-gfx.h"
|
||||
|
||||
#include "wifi-controller.h"
|
||||
|
||||
@@ -83,30 +83,30 @@ void interface_report_dwn(void)
|
||||
|
||||
void interface_report_display(void)
|
||||
{
|
||||
ssd1306_menu_headline(SSD1306_ADDRESS, interface_get_label_text(&interface_text_headline_tan), false, 0);
|
||||
display_menu_headline( interface_get_label_text(&interface_text_headline_tan), false, 0);
|
||||
|
||||
// buttons
|
||||
ssd1306_set_button(SSD1306_ADDRESS, interface_get_label_text(&interface_text_button_cancel), true, false);
|
||||
ssd1306_set_button(SSD1306_ADDRESS, interface_get_label_text(&interface_text_button_ok), false, true);
|
||||
display_set_button( interface_get_label_text(&interface_text_button_cancel), true, false);
|
||||
display_set_button( interface_get_label_text(&interface_text_button_ok), false, true);
|
||||
|
||||
static char tan_buffer[10] = {0};
|
||||
|
||||
if (interface_report_tan_index > 0)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_left, 8, 3, 8, false);
|
||||
display_data( display_gfx_arrow_left, 8, 3, 8, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_clear, 8, 3, 8, false);
|
||||
display_data( display_gfx_clear, 8, 3, 8, false);
|
||||
}
|
||||
|
||||
if (interface_report_tan_index < 9)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_right, 8, 3, 112, false);
|
||||
display_data( display_gfx_arrow_right, 8, 3, 112, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_clear, 8, 3, 112, false);
|
||||
display_data( display_gfx_clear, 8, 3, 112, false);
|
||||
}
|
||||
|
||||
for (int i = 0; i < interface_report_tan_index + 1; i++)
|
||||
@@ -114,21 +114,21 @@ void interface_report_display(void)
|
||||
sprintf(&tan_buffer[i], "%d", interface_report_tan[i]);
|
||||
}
|
||||
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 2, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 4, false);
|
||||
display_clear_line( 2, false);
|
||||
display_clear_line( 4, false);
|
||||
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, "-", 3, 5, false);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, "-", 3, 9, false);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, "___", 3, 2, false);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, "___", 3, 6, false);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, "____", 3, 10, false);
|
||||
display_text_line_column( "-", 3, 5, false);
|
||||
display_text_line_column( "-", 3, 9, false);
|
||||
display_text_line_column( "___", 3, 2, false);
|
||||
display_text_line_column( "___", 3, 6, false);
|
||||
display_text_line_column( "____", 3, 10, false);
|
||||
|
||||
int offset = 2;
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
if (i < interface_report_tan_index)
|
||||
{
|
||||
ssd1306_chars(SSD1306_ADDRESS, &tan_buffer[i], 1, 3, i + offset, true);
|
||||
display_chars( &tan_buffer[i], 1, 3, i + offset, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ void interface_report_display(void)
|
||||
{
|
||||
if (i < interface_report_tan_index)
|
||||
{
|
||||
ssd1306_chars(SSD1306_ADDRESS, &tan_buffer[i], 1, 3, i + offset, true);
|
||||
display_chars( &tan_buffer[i], 1, 3, i + offset, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -151,26 +151,26 @@ void interface_report_display(void)
|
||||
{
|
||||
if (i < interface_report_tan_index)
|
||||
{
|
||||
ssd1306_chars(SSD1306_ADDRESS, &tan_buffer[i], 1, 3, i + offset, true);
|
||||
display_chars( &tan_buffer[i], 1, 3, i + offset, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_up, 8, 2, interface_report_tan_index * 8 + offset * 8, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_down, 8, 4, interface_report_tan_index * 8 + offset * 8, false);
|
||||
display_data( display_gfx_arrow_up, 8, 2, interface_report_tan_index * 8 + offset * 8, false);
|
||||
display_data( display_gfx_arrow_down, 8, 4, interface_report_tan_index * 8 + offset * 8, false);
|
||||
|
||||
ssd1306_chars(SSD1306_ADDRESS, &tan_buffer[interface_report_tan_index], 1, 3, interface_report_tan_index + offset, false);
|
||||
display_chars( &tan_buffer[interface_report_tan_index], 1, 3, interface_report_tan_index + offset, false);
|
||||
}
|
||||
|
||||
void interface_report_start(void)
|
||||
{
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RST, &interface_report_rst);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_SET, &interface_report_set);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_LFT, &interface_report_lft);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RHT, &interface_report_rht);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_UP, &interface_report_up);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_DWN, &interface_report_dwn);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_MID, NULL);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RST, &interface_report_rst);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_SET, &interface_report_set);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_LFT, &interface_report_lft);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RHT, &interface_report_rht);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_UP, &interface_report_up);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_DWN, &interface_report_dwn);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_MID, NULL);
|
||||
interface_set_display_function(&interface_report_display);
|
||||
|
||||
ESP_LOGD(INTERFACE_LOG, "start report interface");
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#include "esp_log.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#include "ssd1306.h"
|
||||
#include "ssd1306-gfx.h"
|
||||
#include "display.h"
|
||||
#include "display-gfx.h"
|
||||
|
||||
#include "ena-storage.h"
|
||||
|
||||
@@ -62,12 +62,12 @@ void interface_settings_mid(void)
|
||||
current_interface_settings_state = INTERFACE_SETTINGS_LOCALE;
|
||||
}
|
||||
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 2, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 3, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 4, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 5, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 6, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 7, false);
|
||||
display_clear_line( 2, false);
|
||||
display_clear_line( 3, false);
|
||||
display_clear_line( 4, false);
|
||||
display_clear_line( 5, false);
|
||||
display_clear_line( 6, false);
|
||||
display_clear_line( 7, false);
|
||||
}
|
||||
|
||||
void interface_settings_up(void)
|
||||
@@ -103,30 +103,30 @@ void interface_settings_dwn(void)
|
||||
|
||||
void interface_settings_display(void)
|
||||
{
|
||||
ssd1306_menu_headline(SSD1306_ADDRESS, interface_get_label_text(&interface_text_headline_settings), true, 0);
|
||||
display_menu_headline( interface_get_label_text(&interface_text_headline_settings), true, 0);
|
||||
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, interface_get_label_text(&interface_text_settings_locale), 3, 1, false);
|
||||
display_text_line_column( interface_get_label_text(&interface_text_settings_locale), 3, 1, false);
|
||||
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, interface_get_label_text(&interface_text_settings_timezone), 6, 1, false);
|
||||
display_text_line_column( interface_get_label_text(&interface_text_settings_timezone), 6, 1, false);
|
||||
|
||||
if (current_interface_settings_state == INTERFACE_SETTINGS_LOCALE)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_up, 8, 2, 12 * 8 + 4, false);
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS,
|
||||
display_data( display_gfx_arrow_up, 8, 2, 12 * 8 + 4, false);
|
||||
display_text_line_column(
|
||||
interface_get_label_text(&interface_text_settings_locales[interface_get_locale()]), 3, 12, true);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_down, 8, 4, 12 * 8 + 4, false);
|
||||
display_data( display_gfx_arrow_down, 8, 4, 12 * 8 + 4, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS,
|
||||
display_text_line_column(
|
||||
interface_get_label_text(&interface_text_settings_locales[interface_get_locale()]), 3, 12, true);
|
||||
}
|
||||
|
||||
if (current_interface_settings_state == INTERFACE_SETTINGS_TIMEZONE)
|
||||
{
|
||||
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_up, 8, 5, 12 * 8 + 4, false);
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_down, 8, 7, 12 * 8 + 4, false);
|
||||
display_data( display_gfx_arrow_up, 8, 5, 12 * 8 + 4, false);
|
||||
display_data( display_gfx_arrow_down, 8, 7, 12 * 8 + 4, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,13 +134,13 @@ void interface_settings_start(void)
|
||||
{
|
||||
current_interface_settings_state = INTERFACE_SETTINGS_LOCALE;
|
||||
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RST, &interface_settings_rst);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_SET, &interface_settings_set);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_LFT, &interface_settings_lft);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RHT, &interface_settings_rht);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_MID, &interface_settings_mid);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_UP, &interface_settings_up);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_DWN, &interface_settings_dwn);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RST, &interface_settings_rst);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_SET, &interface_settings_set);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_LFT, &interface_settings_lft);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RHT, &interface_settings_rht);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_MID, &interface_settings_mid);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_UP, &interface_settings_up);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_DWN, &interface_settings_dwn);
|
||||
interface_set_display_function(&interface_settings_display);
|
||||
|
||||
ESP_LOGD(INTERFACE_LOG, "start settings interface");
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
#include "esp_log.h"
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#include "ssd1306.h"
|
||||
#include "ssd1306-gfx.h"
|
||||
#include "display.h"
|
||||
#include "display-gfx.h"
|
||||
#include "wifi-controller.h"
|
||||
|
||||
#include "interface.h"
|
||||
@@ -113,13 +113,13 @@ void interface_wifi_dwn(void)
|
||||
|
||||
void interface_wifi_display(void)
|
||||
{
|
||||
ssd1306_menu_headline(SSD1306_ADDRESS, interface_get_label_text(&interface_text_headline_wifi), true, 0);
|
||||
display_menu_headline( interface_get_label_text(&interface_text_headline_wifi), true, 0);
|
||||
|
||||
if (ap_count > 0)
|
||||
{
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 2, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 4, false);
|
||||
ssd1306_clear_line(SSD1306_ADDRESS, 6, false);
|
||||
display_clear_line( 2, false);
|
||||
display_clear_line( 4, false);
|
||||
display_clear_line( 6, false);
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
int index = i + ap_index;
|
||||
@@ -127,48 +127,48 @@ void interface_wifi_display(void)
|
||||
{
|
||||
if (index == ap_selected)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_arrow_right, 8, i * 2 + 2, 8, false);
|
||||
display_data( display_gfx_arrow_right, 8, i * 2 + 2, 8, false);
|
||||
}
|
||||
|
||||
if (sizeof(ap_info[i].ssid) > 0)
|
||||
{
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, (char *)ap_info[index].ssid, i * 2 + 2, 2, false);
|
||||
display_text_line_column( (char *)ap_info[index].ssid, i * 2 + 2, 2, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, " / ", i * 2 + 2, 2, false);
|
||||
display_text_line_column( " / ", i * 2 + 2, 2, false);
|
||||
}
|
||||
|
||||
if (ap_info[index].rssi >= -67)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_wifi, 8, i * 2 + 2, 112, false);
|
||||
display_data( display_gfx_wifi, 8, i * 2 + 2, 112, false);
|
||||
}
|
||||
else if (ap_info[index].rssi >= -80)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_wifi_low, 8, i * 2 + 2, 112, false);
|
||||
display_data( display_gfx_wifi_low, 8, i * 2 + 2, 112, false);
|
||||
}
|
||||
else if (ap_info[index].rssi >= -90)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_wifi_lowest, 8, i * 2 + 2, 112, false);
|
||||
display_data( display_gfx_wifi_lowest, 8, i * 2 + 2, 112, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ssd1306_text_line_column(SSD1306_ADDRESS, interface_get_label_text(&interface_text_wifi_scanning), 4, 1, false);
|
||||
display_text_line_column( interface_get_label_text(&interface_text_wifi_scanning), 4, 1, false);
|
||||
}
|
||||
}
|
||||
|
||||
void interface_wifi_start(void)
|
||||
{
|
||||
interface_register_button_callback(INTERFACE_BUTTON_SET, &interface_wifi_set);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_LFT, &interface_wifi_lft);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RHT, &interface_wifi_rht);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_MID, &interface_wifi_mid);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_UP, &interface_wifi_up);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_DWN, &interface_wifi_dwn);
|
||||
interface_register_button_callback(INTERFACE_BUTTON_RST, NULL);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_SET, &interface_wifi_set);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_LFT, &interface_wifi_lft);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RHT, &interface_wifi_rht);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_MID, &interface_wifi_mid);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_UP, &interface_wifi_up);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_DWN, &interface_wifi_dwn);
|
||||
interface_register_command_callback(INTERFACE_COMMAND_RST, NULL);
|
||||
|
||||
interface_set_display_function(&interface_wifi_display);
|
||||
|
||||
|
||||
@@ -17,57 +17,31 @@
|
||||
#include "driver/gpio.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
#include "ssd1306.h"
|
||||
#include "ssd1306-gfx.h"
|
||||
#include "display.h"
|
||||
#include "display-gfx.h"
|
||||
|
||||
#include "interface.h"
|
||||
|
||||
static int old_button_states[GPIO_PIN_COUNT];
|
||||
static int button_states[GPIO_PIN_COUNT];
|
||||
static interface_button_callback button_callbacks[GPIO_PIN_COUNT];
|
||||
static interface_command_callback command_callbacks[INTERFACE_COMMANDS_SIZE];
|
||||
static interface_display_function current_display_function;
|
||||
|
||||
void interface_register_button_callback(int button_gpio, interface_button_callback callback)
|
||||
void interface_register_command_callback(interface_command_t command, interface_command_callback callback)
|
||||
{
|
||||
button_callbacks[button_gpio] = callback;
|
||||
command_callbacks[command] = callback;
|
||||
}
|
||||
|
||||
void interface_set_display_function(interface_display_function display_function)
|
||||
{
|
||||
ssd1306_clear(SSD1306_ADDRESS);
|
||||
display_clear();
|
||||
current_display_function = display_function;
|
||||
}
|
||||
|
||||
void interface_input_check(uint8_t gpio)
|
||||
void interface_execute_command(interface_command_t command)
|
||||
{
|
||||
button_states[gpio] = gpio_get_level(gpio);
|
||||
|
||||
if (old_button_states[gpio] != 0 && old_button_states[gpio] != 1)
|
||||
if (command_callbacks[command] != NULL)
|
||||
{
|
||||
old_button_states[gpio] = 1;
|
||||
}
|
||||
|
||||
if (button_states[gpio] == 0 && button_states[gpio] != old_button_states[gpio] && button_callbacks[gpio] != NULL)
|
||||
{
|
||||
ssd1306_clear(SSD1306_ADDRESS);
|
||||
(*button_callbacks[gpio])();
|
||||
}
|
||||
|
||||
old_button_states[gpio] = button_states[gpio];
|
||||
}
|
||||
|
||||
void interface_input_task(void *pvParameter)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
interface_input_check(INTERFACE_BUTTON_RST);
|
||||
interface_input_check(INTERFACE_BUTTON_SET);
|
||||
interface_input_check(INTERFACE_BUTTON_LFT);
|
||||
interface_input_check(INTERFACE_BUTTON_RHT);
|
||||
interface_input_check(INTERFACE_BUTTON_MID);
|
||||
interface_input_check(INTERFACE_BUTTON_UP);
|
||||
interface_input_check(INTERFACE_BUTTON_DWN);
|
||||
vTaskDelay(20 / portTICK_PERIOD_MS);
|
||||
display_clear();
|
||||
(*command_callbacks[command])();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,30 +59,16 @@ void interface_display_task(void *pvParameter)
|
||||
|
||||
void interface_start(void)
|
||||
{
|
||||
|
||||
gpio_config_t io_conf;
|
||||
|
||||
io_conf.pin_bit_mask = (1ULL << INTERFACE_BUTTON_RST) | (1ULL << INTERFACE_BUTTON_SET) |
|
||||
(1ULL << INTERFACE_BUTTON_MID) | (1ULL << INTERFACE_BUTTON_RHT) |
|
||||
(1ULL << INTERFACE_BUTTON_LFT) | (1ULL << INTERFACE_BUTTON_DWN) |
|
||||
(1ULL << INTERFACE_BUTTON_UP);
|
||||
io_conf.intr_type = GPIO_INTR_DISABLE;
|
||||
io_conf.mode = GPIO_MODE_INPUT;
|
||||
io_conf.pull_up_en = GPIO_PULLUP_ENABLE;
|
||||
io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
|
||||
gpio_config(&io_conf);
|
||||
|
||||
xTaskCreate(&interface_input_task, "interface_input_task", 4096, NULL, 5, NULL);
|
||||
xTaskCreate(&interface_display_task, "interface_display_task", 4096, NULL, 5, NULL);
|
||||
|
||||
// init label
|
||||
interface_init_label();
|
||||
|
||||
ssd1306_start(SSD1306_ADDRESS);
|
||||
ssd1306_clear(SSD1306_ADDRESS);
|
||||
display_start();
|
||||
display_clear();
|
||||
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
ssd1306_data(SSD1306_ADDRESS, ssd1306_gfx_logo[i], 64, i, 32, false);
|
||||
display_data(display_gfx_logo[i], 64, i, 32, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,18 +24,27 @@
|
||||
|
||||
#define INTERFACE_LOG "INTERFACE" // TAG for Logging
|
||||
|
||||
#define INTERFACE_BUTTON_RST GPIO_NUM_32
|
||||
#define INTERFACE_BUTTON_SET GPIO_NUM_33
|
||||
#define INTERFACE_BUTTON_MID GPIO_NUM_25
|
||||
#define INTERFACE_BUTTON_RHT GPIO_NUM_26
|
||||
#define INTERFACE_BUTTON_LFT GPIO_NUM_27
|
||||
#define INTERFACE_BUTTON_DWN GPIO_NUM_14
|
||||
#define INTERFACE_BUTTON_UP GPIO_NUM_12
|
||||
|
||||
|
||||
#define INTERFACE_FORMAT_TIME "%X"
|
||||
|
||||
#define INTERFACE_NUM_LOCALE 2
|
||||
|
||||
/**
|
||||
* @brief available commands
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
INTERFACE_COMMAND_RST = 0,
|
||||
INTERFACE_COMMAND_SET,
|
||||
INTERFACE_COMMAND_MID,
|
||||
INTERFACE_COMMAND_RHT,
|
||||
INTERFACE_COMMAND_LFT,
|
||||
INTERFACE_COMMAND_DWN,
|
||||
INTERFACE_COMMAND_UP,
|
||||
INTERFACE_COMMANDS_SIZE,
|
||||
} interface_command_t;
|
||||
|
||||
/**
|
||||
* @brief available locales
|
||||
*/
|
||||
@@ -78,9 +87,9 @@ interface_label_t interface_texts_weekday[7];
|
||||
interface_label_t interface_texts_month[12];
|
||||
|
||||
/**
|
||||
* @brief callback function for button press
|
||||
* @brief callback function for command input (button press)
|
||||
*/
|
||||
typedef void (*interface_button_callback)(void);
|
||||
typedef void (*interface_command_callback)(void);
|
||||
|
||||
/**
|
||||
* @brief current display function
|
||||
@@ -93,7 +102,7 @@ typedef void (*interface_display_function)(void);
|
||||
* @param[in] text the text from input
|
||||
* @param[in] cursor current cursor position
|
||||
*/
|
||||
typedef void (*interface_input_callback)(char *text, uint8_t cursor);
|
||||
typedef void (*interface_text_callback)(char *text, uint8_t cursor);
|
||||
|
||||
/**
|
||||
* @brief init label
|
||||
@@ -123,12 +132,19 @@ interface_locale_t interface_get_locale(void);
|
||||
void interface_set_locale(interface_locale_t locale);
|
||||
|
||||
/**
|
||||
* @brief register a callback function for button event
|
||||
* @brief register a callback function for command event
|
||||
*
|
||||
* @param[in] button_gpio id of the button to listen to
|
||||
* @param[in] command id of the command to listen to
|
||||
* @param[in] callback callback function
|
||||
*/
|
||||
void interface_register_button_callback(int button_gpio, interface_button_callback callback);
|
||||
void interface_register_command_callback(interface_command_t command, interface_command_callback callback);
|
||||
|
||||
/**
|
||||
* @brief execute a command
|
||||
*
|
||||
* @param[in] command id of the command to trigger
|
||||
*/
|
||||
void interface_execute_command(interface_command_t command);
|
||||
|
||||
/**
|
||||
* @brief set the display function
|
||||
@@ -181,7 +197,7 @@ void interface_settings_start(void);
|
||||
* @param[in] callback_set function to call on SET
|
||||
* @param[in] limit max character allowed (0=255)
|
||||
*/
|
||||
void interface_input(interface_input_callback callback_rst, interface_input_callback callback_set, uint8_t limit);
|
||||
void interface_input(interface_text_callback callback_rst, interface_text_callback callback_set, uint8_t limit);
|
||||
|
||||
/**
|
||||
* @brief set text for input interface
|
||||
|
||||
Reference in New Issue
Block a user