| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- #include "state_impl.h"
- //////////////////////////////////////////////////////////////////////////////////////////////////
- // STATE LOCK
- //////////////////////////////////////////////////////////////////////////////////////////////////
- void StateLock::setup()
- {
- // draw screen
- Dev.Drawer.draw_icon(LOCK_ICON, COL_ICON_FG, COL_ICON_BG_INACTIVE, LAY_ICON_YOFFSET);
- Dev.Drawer.draw_description("Odomknite", "podrzanim", LAY_DESC_YOFFSET);
- Dev.Drawer.draw_measure_number(GenericState::measure_num++);
- }
- StateTx StateLock::loop(int64_t duration)
- {
- // long press -> unlock
- if (Dev.M5Board.BtnB.pressedFor(TIM_LONG_PRESS))
- return {STATE_UNLOCK};
- // timer -> power off
- if (duration > TIM_POWER_OFF)
- Dev.M5Board.Power.powerOff();
- return {STATE_LOCK};
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////
- // STATE UNLOCK
- //////////////////////////////////////////////////////////////////////////////////////////////////
- void StateUnlock::setup()
- {
- // draw screen
- Dev.Drawer.draw_icon(UNLOCK_ICON, COL_ICON_FG, COL_ICON_BG_ACTIVE, LAY_ICON_YOFFSET);
- Dev.Drawer.draw_description("Odomknute", "", LAY_DESC_YOFFSET);
- }
- StateTx StateUnlock::loop(int64_t duration)
- {
- // wait until button is released
- if (Dev.M5Board.BtnA.isReleased())
- return {STATE_TARGET, TIM_INFO_SCREEN};
- return {STATE_UNLOCK};
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////
- // STATE TARGET
- //////////////////////////////////////////////////////////////////////////////////////////////////
- void StateTarget::setup()
- {
- // draw screen
- Dev.Drawer.draw_icon(TARGET_ICON, COL_ICON_FG, COL_ICON_BG_INACTIVE, LAY_ICON_YOFFSET);
- Dev.Drawer.draw_description("Zamerajte", "poziciu", LAY_DESC_YOFFSET);
- }
- StateTx StateTarget::loop(int64_t duration)
- {
- // long press -> cancel
- if (Dev.M5Board.BtnA.pressedFor(TIM_LONG_PRESS))
- return {STATE_CANCEL};
-
- // short press -> start
- if (Dev.M5Board.BtnA.wasReleased())
- {
- Dev.Drawer.draw_icon(TARGET_ICON, COL_ICON_FG, COL_ICON_BG_ACTIVE, LAY_ICON_YOFFSET);
- return {STATE_START, TIM_INFO_SCREEN};
- }
- return {STATE_TARGET};
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////
- // STATE START
- //////////////////////////////////////////////////////////////////////////////////////////////////
- void StateStart::setup()
- {
- // draw screen
- Dev.Drawer.draw_icon(GO_ICON, COL_ICON_FG, COL_ICON_BG_INACTIVE, LAY_ICON_YOFFSET);
- Dev.Drawer.draw_description("Spustite", "meranie", LAY_DESC_YOFFSET);
- }
- StateTx StateStart::loop(int64_t duration)
- {
- // long press -> cancel
- if (Dev.M5Board.BtnA.pressedFor(TIM_LONG_PRESS))
- return {STATE_CANCEL};
- // short press -> run
- if (Dev.M5Board.BtnA.wasReleased())
- {
- Dev.Drawer.draw_icon(GO_ICON, COL_ICON_FG, COL_ICON_BG_ACTIVE, LAY_ICON_YOFFSET);
- return {STATE_RUN, TIM_INFO_SCREEN};
- }
-
- return {STATE_START};
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////
- // STATE RUN
- //////////////////////////////////////////////////////////////////////////////////////////////////
- void StateRun::setup()
- {
- // draw screen
- Dev.Drawer.draw_icon(REC_ICON, COL_ICON_FG, COL_ICON_BG_INACTIVE, LAY_ICON_YOFFSET);
- Dev.Drawer.draw_description("Meranie", "pohybu", LAY_DESC_YOFFSET);
- }
- StateTx StateRun::loop(int64_t duration)
- {
- // long press -> cancel
- if (Dev.M5Board.BtnA.pressedFor(TIM_LONG_PRESS))
- return {STATE_CANCEL};
- // if need to refresh
- if (duration - _last_blink_time >= TIM_RUN_BLINK)
- {
- _icon_state ^= 1;
- _last_blink_time = duration;
- if (_icon_state)
- {
- Dev.Drawer.draw_icon(REC_ICON, COL_ICON_FG, COL_ICON_BG_REC, LAY_ICON_YOFFSET);
- return {STATE_RUN, TIM_RUN_REFRESH};
- }
- else
- {
- Dev.Drawer.draw_icon(REC_ICON, COL_ICON_FG, COL_ICON_BG_INACTIVE, LAY_ICON_YOFFSET);
- return {STATE_RUN, TIM_RUN_REFRESH};
- }
- }
- // short press -> stop
- if (Dev.M5Board.BtnA.wasReleased())
- {
- _last_blink_time = 0;
- _icon_state = false;
- return {STATE_STOP};
- }
- return {STATE_RUN};
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////
- // STATE STOP
- //////////////////////////////////////////////////////////////////////////////////////////////////
- void StateStop::setup()
- {
- // draw screen
- Dev.Drawer.draw_icon(OK_ICON, COL_ICON_FG, COL_ICON_BG_INACTIVE, LAY_ICON_YOFFSET);
- Dev.Drawer.draw_description("Meranie", "dokoncene", LAY_DESC_YOFFSET);
- }
- StateTx StateStop::loop(int64_t duration)
- {
- if (duration > TIM_INFO_SCREEN)
- {
- Dev.Drawer.draw_icon(OK_ICON, COL_ICON_FG, COL_ICON_BG_ACTIVE, LAY_ICON_YOFFSET);
- return {STATE_LOCK, TIM_INFO_SCREEN};
- }
- return {STATE_STOP};
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////
- // STATE CANCEL
- //////////////////////////////////////////////////////////////////////////////////////////////////
- void StateCancel::setup()
- {
- Dev.Drawer.draw_measure_number(--GenericState::measure_num);
- Dev.Drawer.draw_icon(CANCEL_ICON, COL_ICON_FG, COL_ICON_BG_CANCEL, LAY_ICON_YOFFSET);
- Dev.Drawer.draw_description("Meranie", "zrusene", LAY_DESC_YOFFSET);
- }
- StateTx StateCancel::loop(int64_t duration)
- {
- if (duration > TIM_INFO_SCREEN && Dev.M5Board.BtnA.isReleased())
- return {STATE_LOCK};
-
- return {STATE_CANCEL};
- }
|