diff --git a/code/main.c b/code/main.c index 086cdd2..fb4104d 100644 --- a/code/main.c +++ b/code/main.c @@ -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) @@ -539,10 +534,6 @@ int main() case STATE_SLEEP: process_sleep(); break; - - case STATE_IDLE: - process_idle(); - break; case STATE_MENU: process_menu(); @@ -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); - } + // 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; }