Added sleep state. Battery is now read on display wake or battery info click
This commit is contained in:
parent
ca40b8d0eb
commit
e71049146a
78
code/main.c
78
code/main.c
@ -82,6 +82,7 @@ enum btn_state_e
|
||||
|
||||
enum main_state_e
|
||||
{
|
||||
STATE_SLEEP,
|
||||
STATE_IDLE,
|
||||
STATE_MENU,
|
||||
STATE_ADJUST,
|
||||
@ -308,9 +309,6 @@ void print_battery_stat(uint8_t force_draw);
|
||||
// Prints single battery stat on row using symbols
|
||||
void print_battery_single_stat(uint8_t y, int16_t bat_stat, uint8_t *symbols, uint8_t decimal_idx);
|
||||
|
||||
// Prints battery temp
|
||||
void print_battery_temp();
|
||||
|
||||
// Find the current eeprom data idx of the attached spool
|
||||
int16_t find_eeprom_idx();
|
||||
|
||||
@ -347,6 +345,7 @@ uint8_t consume_event();
|
||||
// Adjusts count value based on event
|
||||
void spool_count(uint8_t event);
|
||||
|
||||
void process_sleep();
|
||||
void process_idle();
|
||||
void process_menu();
|
||||
void process_adjust();
|
||||
@ -511,6 +510,10 @@ int main()
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case STATE_SLEEP:
|
||||
process_sleep();
|
||||
break;
|
||||
|
||||
case STATE_IDLE:
|
||||
process_idle();
|
||||
break;
|
||||
@ -528,15 +531,11 @@ int main()
|
||||
break;
|
||||
}
|
||||
|
||||
print_mm();
|
||||
print_direction();
|
||||
print_battery_icon();
|
||||
|
||||
if (sleep_when_ms > ms)
|
||||
if (STATE_SLEEP != state)
|
||||
{
|
||||
sleep_when_ms = 0xFFFFFFFF;
|
||||
do_sleep();
|
||||
read_battery(&battery_mAh, &battery_mV, &battery_temp);
|
||||
print_mm();
|
||||
print_direction();
|
||||
print_battery_icon();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1414,6 +1413,40 @@ void spool_count(uint8_t event)
|
||||
}
|
||||
}
|
||||
|
||||
void process_sleep()
|
||||
{
|
||||
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:
|
||||
display_enable(1);
|
||||
read_battery(&battery_mAh, &battery_mV, &battery_temp);
|
||||
sleep_when_ms = ms + DISPLAY_DELAY;
|
||||
state = STATE_IDLE;
|
||||
break;
|
||||
|
||||
case EVENT_BTN_UP:
|
||||
long_press_when_ms = 0xFFFFFFFF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (STATE_SLEEP == state)
|
||||
{
|
||||
display_enable(0);
|
||||
do_sleep();
|
||||
}
|
||||
}
|
||||
|
||||
void process_idle()
|
||||
{
|
||||
uint8_t curr_event;
|
||||
@ -1435,8 +1468,6 @@ void process_idle()
|
||||
|
||||
case EVENT_BTN_UP:
|
||||
long_press_when_ms = 0xFFFFFFFF;
|
||||
// Click - update battery info
|
||||
read_battery(&battery_mAh, &battery_mV, &battery_temp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1449,6 +1480,13 @@ void process_idle()
|
||||
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()
|
||||
@ -1505,6 +1543,13 @@ void process_menu()
|
||||
// Print Menu in auto mode
|
||||
print_menu(0);
|
||||
}
|
||||
|
||||
if (ms >= sleep_when_ms)
|
||||
{
|
||||
print_clear_menu_area();
|
||||
state = STATE_SLEEP;
|
||||
sleep_when_ms = 0xFFFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
void process_adjust()
|
||||
@ -1643,6 +1688,13 @@ void process_battery()
|
||||
state = STATE_IDLE;
|
||||
long_press_when_ms = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
if (ms >= sleep_when_ms)
|
||||
{
|
||||
print_clear_menu_area();
|
||||
state = STATE_SLEEP;
|
||||
sleep_when_ms = 0xFFFFFFFF;
|
||||
}
|
||||
}
|
||||
|
||||
void attach_detach_spool()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user