diff --git a/src/app/weather/weather.cpp b/src/app/weather/weather.cpp index 814384a..6311838 100644 --- a/src/app/weather/weather.cpp +++ b/src/app/weather/weather.cpp @@ -132,8 +132,7 @@ void weather_app_setup( void ) { static void enter_weather_widget_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( weather_app_tile_num, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( weather_app_tile_num, LV_ANIM_OFF ); break; } } diff --git a/src/app/weather/weather_forecast.cpp b/src/app/weather/weather_forecast.cpp index 914f797..2f63794 100644 --- a/src/app/weather/weather_forecast.cpp +++ b/src/app/weather/weather_forecast.cpp @@ -145,24 +145,21 @@ void weather_forecast_tile_setup( uint32_t tile_num ) { static void exit_weather_widget_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_maintile( LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_maintile( LV_ANIM_OFF ); break; } } static void setup_weather_widget_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - weather_jump_to_setup(); + case( LV_EVENT_CLICKED ): weather_jump_to_setup(); break; } } static void refresh_weather_widget_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - weather_forecast_sync_request(); + case( LV_EVENT_CLICKED ): weather_forecast_sync_request(); weather_widget_sync_request(); break; } diff --git a/src/app/weather/weather_setup.cpp b/src/app/weather/weather_setup.cpp index 938696d..0f9d9a8 100644 --- a/src/app/weather/weather_setup.cpp +++ b/src/app/weather/weather_setup.cpp @@ -131,6 +131,7 @@ void weather_setup_tile_setup( uint32_t tile_num ) { lv_obj_add_style( weather_autosync_cont, LV_OBJ_PART_MAIN, &weather_setup_style ); lv_obj_align( weather_autosync_cont, weather_lat_cont, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5 ); weather_autosync_onoff = lv_switch_create( weather_autosync_cont, NULL ); + lv_obj_add_protect( weather_autosync_onoff, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( weather_autosync_onoff, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( weather_autosync_onoff, LV_ANIM_ON ); lv_obj_align( weather_autosync_onoff, weather_autosync_cont, LV_ALIGN_IN_RIGHT_MID, -5, 0 ); @@ -145,6 +146,7 @@ void weather_setup_tile_setup( uint32_t tile_num ) { lv_obj_add_style( weather_wind_cont, LV_OBJ_PART_MAIN, &weather_setup_style ); lv_obj_align( weather_wind_cont, weather_autosync_cont, LV_ALIGN_OUT_BOTTOM_MID, 0, 0 ); weather_wind_onoff = lv_switch_create( weather_wind_cont, NULL); + lv_obj_add_protect( weather_wind_onoff, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( weather_wind_onoff, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( weather_wind_onoff, LV_ANIM_ON); lv_obj_align( weather_wind_onoff, weather_wind_cont, LV_ALIGN_IN_RIGHT_MID, -5, 0); diff --git a/src/config.h b/src/config.h index c93b2c3..fd97f7a 100644 --- a/src/config.h +++ b/src/config.h @@ -31,6 +31,6 @@ /* * firmeware version string */ - #define __FIRMWARE__ "2020080101" + #define __FIRMWARE__ "2020080301" #endif // _CONFIG_H diff --git a/src/gui/mainbar/setup_tile/battery_settings/battery_settings.cpp b/src/gui/mainbar/setup_tile/battery_settings/battery_settings.cpp index c0ae0aa..45ec284 100644 --- a/src/gui/mainbar/setup_tile/battery_settings/battery_settings.cpp +++ b/src/gui/mainbar/setup_tile/battery_settings/battery_settings.cpp @@ -106,6 +106,7 @@ void battery_settings_tile_setup( void ) { lv_obj_add_style( battery_percent_switch_cont, LV_OBJ_PART_MAIN, &battery_settings_style ); lv_obj_align( battery_percent_switch_cont, battery_setup_label_cont, LV_ALIGN_OUT_BOTTOM_MID, 0, 0 ); battery_percent_switch = lv_switch_create( battery_percent_switch_cont, NULL ); + lv_obj_add_protect( battery_percent_switch, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( battery_percent_switch, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( battery_percent_switch, LV_ANIM_ON ); lv_obj_align( battery_percent_switch, battery_percent_switch_cont, LV_ALIGN_IN_RIGHT_MID, -5, 0 ); @@ -120,6 +121,7 @@ void battery_settings_tile_setup( void ) { lv_obj_add_style( battery_experimental_switch_cont, LV_OBJ_PART_MAIN, &battery_settings_style ); lv_obj_align( battery_experimental_switch_cont, battery_percent_switch_cont, LV_ALIGN_OUT_BOTTOM_MID, 0, 0 ); battery_experimental_switch = lv_switch_create( battery_experimental_switch_cont, NULL ); + lv_obj_add_protect( battery_experimental_switch, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( battery_experimental_switch, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( battery_experimental_switch, LV_ANIM_ON ); lv_obj_align( battery_experimental_switch, battery_experimental_switch_cont, LV_ALIGN_IN_RIGHT_MID, -5, 0 ); @@ -144,16 +146,14 @@ void battery_settings_tile_setup( void ) { static void battery_percent_switch_event_handler( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_VALUE_CHANGED ): motor_vibe( 1 ); - pmu_set_calculated_percent( lv_switch_get_state( obj ) ); + case( LV_EVENT_VALUE_CHANGED ): pmu_set_calculated_percent( lv_switch_get_state( obj ) ); break; } } static void battery_experimental_switch_event_handler( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_VALUE_CHANGED ): motor_vibe( 1 ); - pmu_set_experimental_power_save( lv_switch_get_state( obj ) ); + case( LV_EVENT_VALUE_CHANGED ): pmu_set_experimental_power_save( lv_switch_get_state( obj ) ); if ( pmu_get_experimental_power_save() ) lv_obj_set_hidden( battery_setup_info_img, false ); else @@ -164,8 +164,7 @@ static void battery_experimental_switch_event_handler( lv_obj_t * obj, lv_event_ static void enter_battery_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( battery_settings_tile_num, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( battery_settings_tile_num, LV_ANIM_OFF ); break; } @@ -173,8 +172,7 @@ static void enter_battery_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { static void exit_battery_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( battery_settings_tile_num, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( battery_settings_tile_num, LV_ANIM_OFF ); break; } } diff --git a/src/gui/mainbar/setup_tile/battery_settings/battery_view.cpp b/src/gui/mainbar/setup_tile/battery_settings/battery_view.cpp index f6a9c01..4dcae00 100644 --- a/src/gui/mainbar/setup_tile/battery_settings/battery_view.cpp +++ b/src/gui/mainbar/setup_tile/battery_settings/battery_view.cpp @@ -168,8 +168,7 @@ void battery_view_tile_setup( uint32_t tile_num ) { static void enter_battery_view_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( battery_view_tile_num, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( battery_view_tile_num, LV_ANIM_OFF ); break; } @@ -177,8 +176,7 @@ static void enter_battery_view_event_cb( lv_obj_t * obj, lv_event_t event ) { static void enter_battery_settings_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( battery_view_tile_num + 1, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( battery_view_tile_num + 1, LV_ANIM_OFF ); break; } @@ -186,8 +184,7 @@ static void enter_battery_settings_event_cb( lv_obj_t * obj, lv_event_t event ) static void exit_battery_view_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( setup_get_tile_num() , LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( setup_get_tile_num() , LV_ANIM_OFF ); break; } } diff --git a/src/gui/mainbar/setup_tile/display_settings/display_setting.cpp b/src/gui/mainbar/setup_tile/display_settings/display_setting.cpp index 7fe3c69..a78e0b4 100644 --- a/src/gui/mainbar/setup_tile/display_settings/display_setting.cpp +++ b/src/gui/mainbar/setup_tile/display_settings/display_setting.cpp @@ -88,6 +88,7 @@ void display_settings_tile_setup( void ) { lv_obj_add_style( brightness_cont, LV_OBJ_PART_MAIN, &display_settings_style ); lv_obj_align( brightness_cont, display_settings_tile, LV_ALIGN_IN_TOP_RIGHT, 0, 75 ); display_brightness_slider = lv_slider_create( brightness_cont, NULL ); + lv_obj_add_protect( display_brightness_slider, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( display_brightness_slider, LV_SLIDER_PART_INDIC, mainbar_get_slider_style() ); lv_obj_add_style( display_brightness_slider, LV_SLIDER_PART_KNOB, mainbar_get_slider_style() ); lv_slider_set_range( display_brightness_slider, DISPLAY_MIN_BRIGHTNESS, DISPLAY_MAX_BRIGHTNESS ); @@ -103,6 +104,7 @@ void display_settings_tile_setup( void ) { lv_obj_add_style( timeout_cont, LV_OBJ_PART_MAIN, &display_settings_style ); lv_obj_align( timeout_cont, brightness_cont, LV_ALIGN_OUT_BOTTOM_MID, 0, 0 ); display_timeout_slider = lv_slider_create( timeout_cont, NULL ); + lv_obj_add_protect( display_timeout_slider, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( display_timeout_slider, LV_SLIDER_PART_INDIC, mainbar_get_slider_style() ); lv_obj_add_style( display_timeout_slider, LV_SLIDER_PART_KNOB, mainbar_get_slider_style() ); lv_slider_set_range( display_timeout_slider, DISPLAY_MIN_TIMEOUT, DISPLAY_MAX_TIMEOUT ); @@ -147,8 +149,7 @@ void display_settings_tile_setup( void ) { static void enter_display_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( display_tile_num, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( display_tile_num, LV_ANIM_OFF ); break; } @@ -156,8 +157,7 @@ static void enter_display_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { static void exit_display_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( setup_get_tile_num(), LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( setup_get_tile_num(), LV_ANIM_OFF ); display_save_config(); break; } diff --git a/src/gui/mainbar/setup_tile/move_settings/move_settings.cpp b/src/gui/mainbar/setup_tile/move_settings/move_settings.cpp index a9627bb..371c728 100644 --- a/src/gui/mainbar/setup_tile/move_settings/move_settings.cpp +++ b/src/gui/mainbar/setup_tile/move_settings/move_settings.cpp @@ -82,6 +82,7 @@ void move_settings_tile_setup( void ) { lv_obj_add_style( stepcounter_cont, LV_OBJ_PART_MAIN, &move_settings_style ); lv_obj_align( stepcounter_cont, move_settings_tile, LV_ALIGN_IN_TOP_RIGHT, 0, 75 ); stepcounter_onoff = lv_switch_create( stepcounter_cont, NULL ); + lv_obj_add_protect( stepcounter_onoff, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( stepcounter_onoff, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( stepcounter_onoff, LV_ANIM_ON ); lv_obj_align( stepcounter_onoff, stepcounter_cont, LV_ALIGN_IN_RIGHT_MID, -5, 0 ); @@ -96,6 +97,7 @@ void move_settings_tile_setup( void ) { lv_obj_add_style( doubleclick_cont, LV_OBJ_PART_MAIN, &move_settings_style ); lv_obj_align( doubleclick_cont, stepcounter_cont, LV_ALIGN_OUT_BOTTOM_MID, 0, 0 ); doubleclick_onoff = lv_switch_create( doubleclick_cont, NULL ); + lv_obj_add_protect( doubleclick_onoff, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( doubleclick_onoff, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( doubleclick_onoff, LV_ANIM_ON ); lv_obj_align( doubleclick_onoff, doubleclick_cont, LV_ALIGN_IN_RIGHT_MID, -5, 0 ); @@ -119,16 +121,14 @@ void move_settings_tile_setup( void ) { static void enter_move_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( move_tile_num, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( move_tile_num, LV_ANIM_OFF ); break; } } static void exit_move_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( setup_get_tile_num(), LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( setup_get_tile_num(), LV_ANIM_OFF ); break; } } diff --git a/src/gui/mainbar/setup_tile/time_settings/time_settings.cpp b/src/gui/mainbar/setup_tile/time_settings/time_settings.cpp index f3c5abb..4a74206 100644 --- a/src/gui/mainbar/setup_tile/time_settings/time_settings.cpp +++ b/src/gui/mainbar/setup_tile/time_settings/time_settings.cpp @@ -86,6 +86,7 @@ void time_settings_tile_setup( void ) { lv_obj_add_style( wifisync_cont, LV_OBJ_PART_MAIN, &time_settings_style ); lv_obj_align( wifisync_cont, time_settings_tile, LV_ALIGN_IN_TOP_RIGHT, 0, 75 ); wifisync_onoff = lv_switch_create( wifisync_cont, NULL ); + lv_obj_add_protect( wifisync_onoff, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( wifisync_onoff, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( wifisync_onoff, LV_ANIM_ON ); lv_obj_align( wifisync_onoff, wifisync_cont, LV_ALIGN_IN_RIGHT_MID, -5, 0 ); @@ -100,6 +101,7 @@ void time_settings_tile_setup( void ) { lv_obj_add_style( daylight_cont, LV_OBJ_PART_MAIN, &time_settings_style ); lv_obj_align( daylight_cont, wifisync_cont, LV_ALIGN_OUT_BOTTOM_MID, 0, 0 ); daylight_onoff = lv_switch_create( daylight_cont, NULL ); + lv_obj_add_protect( daylight_onoff, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( daylight_onoff, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( daylight_onoff, LV_ANIM_ON ); lv_obj_align( daylight_onoff, daylight_cont, LV_ALIGN_IN_RIGHT_MID, -5, 0 ); @@ -138,16 +140,14 @@ void time_settings_tile_setup( void ) { static void enter_time_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( time_tile_num, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( time_tile_num, LV_ANIM_OFF ); break; } } static void exit_time_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( setup_get_tile_num(), LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( setup_get_tile_num(), LV_ANIM_OFF ); break; } } diff --git a/src/gui/mainbar/setup_tile/update/update.cpp b/src/gui/mainbar/setup_tile/update/update.cpp index cc95a8d..e128da6 100644 --- a/src/gui/mainbar/setup_tile/update/update.cpp +++ b/src/gui/mainbar/setup_tile/update/update.cpp @@ -147,23 +147,20 @@ void update_tile_setup( void ) { static void enter_update_setup_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( update_tile_num + 1, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( update_tile_num + 1, LV_ANIM_OFF ); break; } } static void enter_update_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( update_tile_num, LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( update_tile_num, LV_ANIM_OFF ); break; } } static void exit_update_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( setup_get_tile_num(), LV_ANIM_OFF ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( setup_get_tile_num(), LV_ANIM_OFF ); break; } } diff --git a/src/gui/mainbar/setup_tile/update/update_setup.cpp b/src/gui/mainbar/setup_tile/update/update_setup.cpp index 65e4fae..982b3e6 100644 --- a/src/gui/mainbar/setup_tile/update/update_setup.cpp +++ b/src/gui/mainbar/setup_tile/update/update_setup.cpp @@ -80,6 +80,7 @@ void update_setup_tile_setup( uint32_t tile_num ) { lv_obj_align( update_check_autosync_cont, update_setup_tile, LV_ALIGN_IN_TOP_RIGHT, 0, 75 ); update_check_autosync_onoff = lv_switch_create( update_check_autosync_cont, NULL ); + lv_obj_add_protect( update_check_autosync_onoff, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( update_check_autosync_onoff, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( update_check_autosync_onoff, LV_ANIM_ON ); lv_obj_align( update_check_autosync_onoff, update_check_autosync_cont, LV_ALIGN_IN_RIGHT_MID, -5, 0 ); @@ -99,8 +100,7 @@ void update_setup_tile_setup( uint32_t tile_num ) { static void update_check_autosync_onoff_event_handler( lv_obj_t * obj, lv_event_t event ) { switch (event) { - case (LV_EVENT_VALUE_CHANGED): motor_vibe( 1 ); - update_config.autosync = lv_switch_get_state( obj ); + case (LV_EVENT_VALUE_CHANGED): update_config.autosync = lv_switch_get_state( obj ); update_save_config(); break; } @@ -108,8 +108,7 @@ static void update_check_autosync_onoff_event_handler( lv_obj_t * obj, lv_event_ static void exit_update_check_setup_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - mainbar_jump_to_tilenumber( update_setup_tile_num - 1, false ); + case( LV_EVENT_CLICKED ): mainbar_jump_to_tilenumber( update_setup_tile_num - 1, false ); break; } } diff --git a/src/gui/mainbar/setup_tile/wlan_settings/wlan_settings.cpp b/src/gui/mainbar/setup_tile/wlan_settings/wlan_settings.cpp index fa169d6..d74cc68 100644 --- a/src/gui/mainbar/setup_tile/wlan_settings/wlan_settings.cpp +++ b/src/gui/mainbar/setup_tile/wlan_settings/wlan_settings.cpp @@ -99,6 +99,7 @@ void wlan_settings_tile_setup( void ) { /*Copy the first switch and turn it ON*/ wifi_onoff = lv_switch_create( wifi_settings_tile, NULL ); + lv_obj_add_protect( wifi_onoff, LV_PROTECT_CLICK_FOCUS); lv_obj_add_style( wifi_onoff, LV_SWITCH_PART_INDIC, mainbar_get_switch_style() ); lv_switch_off( wifi_onoff, LV_ANIM_ON ); lv_obj_align( wifi_onoff, exit_label, LV_ALIGN_OUT_RIGHT_MID, 30, 0 ); @@ -245,8 +246,7 @@ void wlan_password_tile_setup( uint32_t wifi_password_tile_num ) { static void apply_wifi_password_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - wifictl_insert_network( lv_label_get_text( wifi_password_name_label ), lv_textarea_get_text( wifi_password_pass_textfield ) ); + case( LV_EVENT_CLICKED ): wifictl_insert_network( lv_label_get_text( wifi_password_name_label ), lv_textarea_get_text( wifi_password_pass_textfield ) ); keyboard_hide(); mainbar_jump_to_tilenumber( wifi_settings_tile_num, LV_ANIM_ON ); break; @@ -255,8 +255,7 @@ static void apply_wifi_password_event_cb( lv_obj_t * obj, lv_event_t event ) { static void delete_wifi_password_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - wifictl_delete_network( lv_label_get_text( wifi_password_name_label ) ); + case( LV_EVENT_CLICKED ): wifictl_delete_network( lv_label_get_text( wifi_password_name_label ) ); keyboard_hide(); mainbar_jump_to_tilenumber( wifi_settings_tile_num, LV_ANIM_ON ); break; @@ -265,8 +264,7 @@ static void delete_wifi_password_event_cb( lv_obj_t * obj, lv_event_t event ) { static void wlan_password_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { - case( LV_EVENT_CLICKED ): motor_vibe( 1 ); - keyboard_set_textarea( obj ); + case( LV_EVENT_CLICKED ): keyboard_set_textarea( obj ); break; } } @@ -274,7 +272,6 @@ static void wlan_password_event_cb( lv_obj_t * obj, lv_event_t event ) { static void exit_wifi_password_event_cb( lv_obj_t * obj, lv_event_t event ) { switch( event ) { case( LV_EVENT_CLICKED ): keyboard_hide(); - motor_vibe( 1 ); mainbar_jump_to_tilenumber( wifi_settings_tile_num, LV_ANIM_ON ); break; } diff --git a/src/hardware/bma.cpp b/src/hardware/bma.cpp index e3831cf..1668f23 100644 --- a/src/hardware/bma.cpp +++ b/src/hardware/bma.cpp @@ -65,6 +65,20 @@ void bma_setup( TTGOClass *ttgo ) { bma_reload_settings(); } +void bma_standby( void ) { + TTGOClass *ttgo = TTGOClass::getWatch(); + + if ( bma_get_config( BMA_STEPCOUNTER ) ) + ttgo->bma->enableStepCountInterrupt( false ); +} + +void bma_wakeup( void ) { + TTGOClass *ttgo = TTGOClass::getWatch(); + + if ( bma_get_config( BMA_STEPCOUNTER ) ) + ttgo->bma->enableStepCountInterrupt( true ); +} + /* * */ diff --git a/src/hardware/bma.h b/src/hardware/bma.h index a94b09d..b19e22b 100644 --- a/src/hardware/bma.h +++ b/src/hardware/bma.h @@ -38,7 +38,8 @@ void bma_setup( TTGOClass *ttgo ); void bma_loop( TTGOClass *ttgo ); - + void bma_standby( void ); + void bma_wakeup( void ); void bma_reload_settings( void ); void bma_save_config( void ); void bma_read_config( void ); diff --git a/src/hardware/display.cpp b/src/hardware/display.cpp index 5d24b4f..b03a9eb 100644 --- a/src/hardware/display.cpp +++ b/src/hardware/display.cpp @@ -24,6 +24,7 @@ #include "display.h" #include "powermgm.h" +#include "motor.h" display_config_t display_config; @@ -66,29 +67,41 @@ void display_loop( TTGOClass *ttgo ) { } } -void display_go_wakeup( TTGOClass *ttgo ) { - ttgo->openBL(); - ttgo->displayWakeup(); - ttgo->bl->adjust( 0 ); - brightness = 0; - dest_brightness = display_get_brightness(); -} +void display_standby( void ) { + TTGOClass *ttgo = TTGOClass::getWatch(); -void display_go_silence_wakeup( TTGOClass *ttgo ) { - ttgo->openBL(); - ttgo->displayWakeup(); - ttgo->bl->adjust( 0 ); - brightness = 0; - dest_brightness = 0; -} - -void display_go_sleep( TTGOClass *ttgo ) { ttgo->bl->adjust( 0 ); ttgo->displaySleep(); ttgo->closeBL(); brightness = 0; dest_brightness = 0; } + +void display_wakeup( void ) { + TTGOClass *ttgo = TTGOClass::getWatch(); + + // normal wake up from standby + if ( powermgm_get_event( POWERMGM_PMU_BUTTON | POWERMGM_PMU_BATTERY | POWERMGM_BMA_WAKEUP ) ) { + log_i("wakeup"); + ttgo->openBL(); + ttgo->displayWakeup(); + ttgo->bl->adjust( 0 ); + brightness = 0; + dest_brightness = display_get_brightness(); + motor_vibe( 1 ); + } + // silence wakeup request from standby + else if ( powermgm_get_event( POWERMGM_SILENCE_WAKEUP_REQUEST ) ) { + log_i("silence wakeup"); + ttgo->openBL(); + ttgo->displayWakeup(); + ttgo->bl->adjust( 0 ); + brightness = 0; + dest_brightness = 0; + powermgm_set_event( POWERMGM_SILENCE_WAKEUP ); + } +} + /* * */ diff --git a/src/hardware/display.h b/src/hardware/display.h index 7ac3c5a..a9ae294 100644 --- a/src/hardware/display.h +++ b/src/hardware/display.h @@ -95,8 +95,14 @@ * @param rotation from 0-270 in 90 degree steps */ void display_set_rotation( uint32_t rotation ); - void display_go_silence_wakeup( TTGOClass *ttgo ); - void display_go_wakeup( TTGOClass *ttgo ); - void display_go_sleep( TTGOClass *ttgo ); + /* + * @brief set display into standby + */ + void display_standby( void ); + /* + * @brief set display into normal mode or leave it in standby if a silence wakeup occur + */ + void display_wakeup( void ); + #endif // _DISPLAY_H \ No newline at end of file diff --git a/src/hardware/pmu.cpp b/src/hardware/pmu.cpp index 856aeb3..af7fbe7 100644 --- a/src/hardware/pmu.cpp +++ b/src/hardware/pmu.cpp @@ -2,6 +2,7 @@ #include #include +#include "display.h" #include "pmu.h" #include "powermgm.h" #include "motor.h" @@ -66,6 +67,37 @@ void IRAM_ATTR pmu_irq( void ) { setCpuFrequencyMhz(240); } +void pmu_standby( void ) { + TTGOClass *ttgo = TTGOClass::getWatch(); + + ttgo->power->clearTimerStatus(); + ttgo->power->setTimer( 60 ); + + if ( pmu_get_experimental_power_save() ) { + ttgo->power->setDCDC3Voltage( 2700 ); + log_i("enable 2.7V standby voltage"); + } + else { + ttgo->power->setDCDC3Voltage( 3000 ); + log_i("enable 3.0V standby voltage"); + } +} + +void pmu_wakeup( void ) { + TTGOClass *ttgo = TTGOClass::getWatch(); + + if ( pmu_get_experimental_power_save() ) { + ttgo->power->setDCDC3Voltage( 3000 ); + log_i("enable 3.0V voltage"); + } + else { + ttgo->power->setDCDC3Voltage( 3300 ); + log_i("enable 3.3V voltage"); + } + + ttgo->power->clearTimerStatus(); + ttgo->power->offTimer(); +} /* * */ @@ -185,5 +217,4 @@ int32_t pmu_get_battery_percent( TTGOClass *ttgo ) { else { return( ttgo->power->getBattPercentage() ); } - // discharg coulumb higher then charge coulumb, battery state unknow and set to zero } \ No newline at end of file diff --git a/src/hardware/pmu.h b/src/hardware/pmu.h index 2e1e274..1e01908 100644 --- a/src/hardware/pmu.h +++ b/src/hardware/pmu.h @@ -54,6 +54,8 @@ * @return charge in percent or -1 if unknown */ int32_t pmu_get_battery_percent( TTGOClass *ttgo ); + void pmu_standby( void ); + void pmu_wakeup( void ); void pmu_save_config( void ); void pmu_read_config( void ); bool pmu_get_calculated_percent( void ); diff --git a/src/hardware/powermgm.cpp b/src/hardware/powermgm.cpp index 42c129a..7886025 100644 --- a/src/hardware/powermgm.cpp +++ b/src/hardware/powermgm.cpp @@ -70,64 +70,36 @@ void powermgm_loop( TTGOClass *ttgo ) { if ( powermgm_get_event( POWERMGM_STANDBY ) ) { powermgm_clear_event( POWERMGM_STANDBY ); - if ( pmu_get_experimental_power_save() ) { - ttgo->power->setDCDC3Voltage( 3000 ); - log_e("enable 3.0V voltage"); - } - else { - ttgo->power->setDCDC3Voltage( 3300 ); - log_e("enable 3.3V voltage"); - } - // normal wake up from standby - if ( powermgm_get_event( POWERMGM_PMU_BUTTON | POWERMGM_PMU_BATTERY | POWERMGM_BMA_WAKEUP ) ) { - log_i("wakeup"); - display_go_wakeup( ttgo ); - motor_vibe( 1 ); - } - // silence wakeup request from standby - else if ( powermgm_get_event( POWERMGM_SILENCE_WAKEUP_REQUEST ) ) { - log_i("silence wakeup"); - display_go_silence_wakeup( ttgo ); - powermgm_set_event( POWERMGM_SILENCE_WAKEUP ); - } + + pmu_wakeup(); + bma_wakeup(); + display_wakeup(); + timesyncToSystem(); ttgo->startLvglTick(); - mainbar_jump_to_maintile( LV_ANIM_OFF ); lv_disp_trig_activity(NULL); - if ( bma_get_config( BMA_STEPCOUNTER ) ) - ttgo->bma->enableStepCountInterrupt( true ); - if ( ttgo->power->getBattVoltage() > 3300 ) { - wifictl_on(); - } - - ttgo->power->clearTimerStatus(); - ttgo->power->offTimer(); + wifictl_wakeup(); + log_i("go wakeup"); } else { - log_i("go to standby"); - display_go_sleep( ttgo ); - timesyncToRTC(); - if ( powermgm_get_event( POWERMGM_WIFI_ACTIVE ) ) wifictl_off(); - while( powermgm_get_event( POWERMGM_WIFI_ACTIVE | POWERMGM_WIFI_CONNECTED | POWERMGM_WIFI_OFF_REQUEST | POWERMGM_WIFI_ON_REQUEST | POWERMGM_WIFI_SCAN ) ) { yield(); } + log_i("go standby"); + display_standby(); + mainbar_jump_to_maintile( LV_ANIM_OFF ); + ttgo->stopLvglTick(); - if ( bma_get_config( BMA_STEPCOUNTER ) ) - ttgo->bma->enableStepCountInterrupt( false ); + timesyncToRTC(); + + bma_standby(); + pmu_standby(); + wifictl_standby(); + powermgm_set_event( POWERMGM_STANDBY ); powermgm_clear_event( POWERMGM_SILENCE_WAKEUP ); - ttgo->power->clearTimerStatus(); - ttgo->power->setTimer( 60 ); - if ( pmu_get_experimental_power_save() ) { - ttgo->power->setDCDC3Voltage( 2700 ); - log_e("enable 2.7V standby voltage"); - } - else { - ttgo->power->setDCDC3Voltage( 3000 ); - log_e("enable 3.0V standby voltage"); - } + setCpuFrequencyMhz( 10 ); - gpio_wakeup_enable ((gpio_num_t)AXP202_INT, GPIO_INTR_LOW_LEVEL); - gpio_wakeup_enable ((gpio_num_t)BMA423_INT1, GPIO_INTR_HIGH_LEVEL); + gpio_wakeup_enable ( (gpio_num_t)AXP202_INT, GPIO_INTR_LOW_LEVEL ); + gpio_wakeup_enable ( (gpio_num_t)BMA423_INT1, GPIO_INTR_HIGH_LEVEL ); esp_sleep_enable_gpio_wakeup (); esp_light_sleep_start(); } diff --git a/src/hardware/touch.cpp b/src/hardware/touch.cpp index b7a0e8b..2c7e201 100644 --- a/src/hardware/touch.cpp +++ b/src/hardware/touch.cpp @@ -22,6 +22,7 @@ #include "config.h" #include "touch.h" #include "powermgm.h" +#include "motor.h" lv_indev_t *touch_indev = NULL; @@ -37,6 +38,7 @@ void touch_setup( TTGOClass *ttgo ) { static bool touch_getXY( int16_t &x, int16_t &y ) { TTGOClass *ttgo = TTGOClass::getWatch(); TP_Point p; + static bool touch_press = false; // disable touch when we are in standby or silence wakeup if ( powermgm_get_event( POWERMGM_STANDBY | POWERMGM_SILENCE_WAKEUP ) ) { @@ -44,9 +46,15 @@ static bool touch_getXY( int16_t &x, int16_t &y ) { } if ( !ttgo->touch->touched() ) { + touch_press = false; return( false ); } + if ( !touch_press ) { + touch_press = true; + motor_vibe( 2 ); + } + p = ttgo->touch->getPoint(); uint8_t rotation = ttgo->tft->getRotation(); diff --git a/src/hardware/wifictl.cpp b/src/hardware/wifictl.cpp index 9e04cd1..1d55c18 100644 --- a/src/hardware/wifictl.cpp +++ b/src/hardware/wifictl.cpp @@ -31,7 +31,6 @@ #include "webserver/webserver.h" bool wifi_init = false; -TaskHandle_t _WIFICTL_Task; void wifictl_StartTask( void ); void wifictl_Task( void * pvParameters ); @@ -128,7 +127,8 @@ void wifictl_setup( void ) { 5000, /* Stack size in words */ NULL, /* Task input parameter */ 1, /* Priority of the task */ - &_wifictl_Task ); /* Task handle. */ + &_wifictl_Task ); /* Task handle. */ + vTaskSuspend( _wifictl_Task ); } /* @@ -263,6 +263,14 @@ void wifictl_off( void ) { } } +void wifictl_standby( void ) { + if ( powermgm_get_event( POWERMGM_WIFI_ACTIVE ) ) wifictl_off(); + while( powermgm_get_event( POWERMGM_WIFI_ACTIVE | POWERMGM_WIFI_CONNECTED | POWERMGM_WIFI_OFF_REQUEST | POWERMGM_WIFI_ON_REQUEST | POWERMGM_WIFI_SCAN ) ) { yield(); } +} + +void wifictl_wakeup( void ) { + wifictl_on(); +} /* * */ @@ -271,7 +279,7 @@ void wifictl_Task( void * pvParameters ) { return; while ( true ) { - vTaskDelay( 100 ); + vTaskDelay( 500 ); if ( powermgm_get_event( POWERMGM_WIFI_ON_REQUEST ) ) { statusbar_wifi_set_state( true, "activate" ); WiFi.mode( WIFI_STA ); diff --git a/src/hardware/wifictl.h b/src/hardware/wifictl.h index 1790a3c..887608f 100644 --- a/src/hardware/wifictl.h +++ b/src/hardware/wifictl.h @@ -66,5 +66,7 @@ * @brief switch off wifi */ void wifictl_off( void ); + void wifictl_standby( void ); + void wifictl_wakeup( void ); #endif // _WIFICTL_H \ No newline at end of file diff --git a/ttgo-t-watch2020_v1.ino.bin b/ttgo-t-watch2020_v1.ino.bin index f5b2f12..f8bce8d 100644 Binary files a/ttgo-t-watch2020_v1.ino.bin and b/ttgo-t-watch2020_v1.ino.bin differ diff --git a/ttgo-t-watch2020_v1.version.json b/ttgo-t-watch2020_v1.version.json index 3b51ff5..9c93284 100644 --- a/ttgo-t-watch2020_v1.version.json +++ b/ttgo-t-watch2020_v1.version.json @@ -1 +1 @@ -{"version":"2020080101","host":"http://www.neo-guerillaz.de","file":"ttgo-t-watch2020_v1.ino.bin"} +{"version":"2020080301","host":"http://www.neo-guerillaz.de","file":"ttgo-t-watch2020_v1.ino.bin"}