Removed IDLE state. Enabled battery percentage printing.

This commit is contained in:
nedko 2022-11-13 17:37:16 +02:00
parent d0125ef276
commit 063c343ef4

View File

@ -85,7 +85,6 @@ enum btn_state_e
enum main_state_e
{
STATE_SLEEP,
STATE_IDLE,
STATE_MENU,
STATE_ADJUST,
STATE_BATTERY
@ -188,10 +187,8 @@ enum charmap
CHAR_t,
CHAR_u,
CHAR_y,
// CHAR_plus,
CHAR_minus,
CHAR_dot,
// CHAR_lt,
CHAR_gt,
CHAR_deg,
CHAR_MAX
@ -223,14 +220,12 @@ const uint8_t PROGMEM symbols[CHAR_MAX * CHAR_SIZE] =
0x20, 0x40, 0x44, 0x3D, 0x00, // j
0x7C, 0x04, 0x78, 0x04, 0x78, // m
0x7C, 0x08, 0x04, 0x04, 0x08, // r
0x48, 0x54, 0x54, 0x54, 0x40, // s
0x48, 0x54, 0x54, 0x54, 0x20, // s
0x04, 0x3F, 0x44, 0x40, 0x20, // t
0x3C, 0x40, 0x40, 0x20, 0x7C, // u
0x0C, 0x50, 0x50, 0x50, 0x3C, // y
// 0x10, 0x10, 0x7C, 0x10, 0x10, // plus
0x10, 0x10, 0x10, 0x10, 0x10, // minus
0x00, 0x60, 0x60, 0x00, 0x00, // .
// 0x00, 0x08, 0x14, 0x22, 0x41, // <
0x41, 0x22, 0x14, 0x08, 0x00, // >
0x0E, 0x11, 0x11, 0x0E, 0x00 // deg
};
@ -368,7 +363,6 @@ uint8_t consume_event();
void spool_count(uint8_t event);
void process_sleep();
void process_idle();
void process_menu();
void process_adjust();
void process_battery();
@ -529,7 +523,8 @@ int main()
attach_detach_spool();
display_enable(1);
state = STATE_IDLE;
print_menu(1);
state = STATE_MENU;
sei();
while(1)
@ -540,10 +535,6 @@ int main()
process_sleep();
break;
case STATE_IDLE:
process_idle();
break;
case STATE_MENU:
process_menu();
break;
@ -654,7 +645,6 @@ void display_set_area(uint8_t start_x, uint8_t end_x, uint8_t start_y, uint8_t e
};
uint8_t i;
#if 0
if (start_x >= OLED_X_SIZE)
{
start_x = OLED_X_SIZE - 1;
@ -684,7 +674,6 @@ void display_set_area(uint8_t start_x, uint8_t end_x, uint8_t start_y, uint8_t e
{
end_y = start_y;
}
#endif
cmd_list[1] = start_x;
cmd_list[2] = end_x;
@ -1014,9 +1003,8 @@ void print_option(uint8_t option)
void print_battery_percent()
{
#if 0
static uint8_t old_symbols[3] = {0xFF, 0xFF, 0xFF};
uint32_t percent = BATTERY_CAPACITY_MAH;
int32_t percent = BATTERY_CAPACITY_MAH;
uint8_t i;
uint8_t symbol;
uint8_t is_first = 1;
@ -1027,9 +1015,9 @@ void print_battery_percent()
percent *= 100;
percent /= BATTERY_CAPACITY_MAH;
if (percent > 100)
if (percent < 0)
{
percent = 100;
percent = 0;
}
// Print percent top to bot
@ -1049,10 +1037,9 @@ void print_battery_percent()
if (symbol != old_symbols[3 - i])
{
print_symbol(symbol, OLED_X_SIZE - (CHAR_SIZE + 1) * 2, 3 - i + 1, 0);
old_symbols[3 - i + 1] = symbol;
old_symbols[3 - i] = symbol;
}
}
#endif
}
void print_battery_stat(uint8_t force_draw)
@ -1531,7 +1518,8 @@ void process_sleep()
display_enable(1);
read_battery(&battery_mAh, &battery_mV, &battery_temp);
sleep_when_ms = ms + DISPLAY_DELAY;
state = STATE_IDLE;
print_menu(1);
state = STATE_MENU;
break;
case EVENT_BTN_UP:
@ -1547,48 +1535,6 @@ void process_sleep()
}
}
void process_idle()
{
uint8_t curr_event;
while (event_count > 0)
{
curr_event = consume_event();
switch (curr_event)
{
case EVENT_ROT_CW: // Fall-through
case EVENT_ROT_CCW:
spool_count(curr_event);
break;
case EVENT_BTN_DOWN:
long_press_when_ms = ms + LONG_PRESS;
sleep_when_ms = ms + DISPLAY_DELAY;
break;
case EVENT_BTN_UP:
long_press_when_ms = 0xFFFFFFFF;
break;
}
}
// Hold button to enter menu
if (ms >= long_press_when_ms)
{
state = STATE_MENU;
menu_option = 0;
long_press_when_ms = 0xFFFFFFFF;
print_menu(1);
}
// Go to sleep
if (ms >= sleep_when_ms)
{
state = STATE_SLEEP;
sleep_when_ms = 0xFFFFFFFF;
}
}
void process_menu()
{
uint8_t curr_event;
@ -1636,18 +1582,8 @@ void process_menu()
}
}
// Hold button to exit menu
if (ms >= long_press_when_ms)
{
print_clear_menu_area();
state = STATE_IDLE;
long_press_when_ms = 0xFFFFFFFF;
}
else
{
// Print Menu in auto mode
print_menu(0);
}
if (ms >= sleep_when_ms)
{
@ -1747,7 +1683,8 @@ void process_adjust()
write_eeprom_val(eeprom_idx, count_value, rot_dir_is_A);
// Go back to idle
state = STATE_IDLE;
print_menu(1);
state = STATE_MENU;
long_press_when_ms = 0xFFFFFFFF;
sleep_when_ms = ms + DISPLAY_DELAY;
spool_counting = 1;
@ -1793,7 +1730,8 @@ void process_battery()
if (ms >= long_press_when_ms)
{
print_clear_menu_area();
state = STATE_IDLE;
print_menu(1);
state = STATE_MENU;
long_press_when_ms = 0xFFFFFFFF;
}