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