diff --git a/src/gui/mainbar/setup_tile/update/update_setup.cpp b/src/gui/mainbar/setup_tile/update/update_setup.cpp index 9f097c1..af0a004 100644 --- a/src/gui/mainbar/setup_tile/update/update_setup.cpp +++ b/src/gui/mainbar/setup_tile/update/update_setup.cpp @@ -38,10 +38,12 @@ lv_style_t update_setup_style; uint32_t update_setup_tile_num; lv_obj_t *update_check_autosync_onoff = NULL; +lv_obj_t *update_check_url_textfield = NULL; LV_IMG_DECLARE(exit_32px); LV_IMG_DECLARE(setup_32px); +static void update_check_url_textarea_event_cb( lv_obj_t * obj, lv_event_t event ); static void exit_update_check_setup_event_cb( lv_obj_t * obj, lv_event_t event ); static void update_check_autosync_onoff_event_handler( lv_obj_t * obj, lv_event_t event ); void update_read_config( void ); @@ -90,6 +92,23 @@ void update_setup_tile_setup( uint32_t tile_num ) { lv_label_set_text( update_check_autosync_label, "check for updates"); lv_obj_align( update_check_autosync_label, update_check_autosync_cont, LV_ALIGN_IN_LEFT_MID, 5, 0 ); + lv_obj_t *update_check_url_cont = lv_obj_create( update_setup_tile, NULL ); + lv_obj_set_size(update_check_url_cont, LV_HOR_RES_MAX , 60); + lv_obj_add_style( update_check_url_cont, LV_OBJ_PART_MAIN, &update_setup_style ); + lv_obj_align( update_check_url_cont, update_check_autosync_cont, LV_ALIGN_OUT_BOTTOM_MID, 0, 0 ); + lv_obj_t *update_check_url_label = lv_label_create( update_check_url_cont, NULL); + lv_obj_add_style( update_check_url_label, LV_OBJ_PART_MAIN, &update_setup_style ); + lv_label_set_text( update_check_url_label, "update URL"); + lv_obj_align( update_check_url_label, update_check_url_cont, LV_ALIGN_IN_TOP_LEFT, 5, 0 ); + update_check_url_textfield = lv_textarea_create( update_check_url_cont, NULL); + lv_textarea_set_text( update_check_url_textfield, update_config.updateurl ); + lv_textarea_set_pwd_mode( update_check_url_textfield, false); + lv_textarea_set_one_line( update_check_url_textfield, true); + lv_textarea_set_cursor_hidden( update_check_url_textfield, true); + lv_obj_set_width( update_check_url_textfield, LV_HOR_RES - 10 ); + lv_obj_align( update_check_url_textfield, update_check_url_cont, LV_ALIGN_IN_BOTTOM_MID, 0, 0 ); + lv_obj_set_event_cb( update_check_url_textfield, update_check_url_textarea_event_cb ); + if ( update_config.autosync ) lv_switch_on( update_check_autosync_onoff, LV_ANIM_OFF); else @@ -97,11 +116,15 @@ void update_setup_tile_setup( uint32_t tile_num ) { } +static void update_check_url_textarea_event_cb( lv_obj_t * obj, lv_event_t event ) { + if( event == LV_EVENT_CLICKED ) { + keyboard_set_textarea( obj ); + } +} static void update_check_autosync_onoff_event_handler( lv_obj_t * obj, lv_event_t event ) { switch (event) { - case (LV_EVENT_VALUE_CHANGED): update_config.autosync = lv_switch_get_state( obj ); - update_save_config(); + case ( LV_EVENT_VALUE_CHANGED ): update_config.autosync = lv_switch_get_state( obj ); break; } } @@ -109,6 +132,8 @@ 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 ): mainbar_jump_to_tilenumber( update_setup_tile_num - 1, false ); + strlcpy( update_config.updateurl , lv_textarea_get_text( update_check_url_textfield ), sizeof( update_config.updateurl ) ); + update_save_config(); break; } } diff --git a/src/hardware/pmu.cpp b/src/hardware/pmu.cpp index baf7fad..573e6d1 100644 --- a/src/hardware/pmu.cpp +++ b/src/hardware/pmu.cpp @@ -56,7 +56,7 @@ void pmu_setup( TTGOClass *ttgo ) { // Turn i2s DAC on ttgo->power->setLDO3Mode( AXP202_LDO3_MODE_DCIN ); - ttgo->power->setPowerOutPut(AXP202_LDO3, AXP202_ON ); + ttgo->power->setPowerOutPut( AXP202_LDO3, AXP202_ON ); pinMode( AXP202_INT, INPUT ); attachInterrupt( AXP202_INT, &pmu_irq, FALLING ); @@ -92,32 +92,34 @@ void pmu_standby( void ) { } if ( pmu_get_experimental_power_save() ) { - ttgo->power->setDCDC3Voltage( 2700 ); - log_i("go standby, enable 2.7V standby voltage"); + ttgo->power->setDCDC3Voltage( pmu_config.experimental_power_save_voltage ); + log_i("go standby, enable %dmV standby voltage", pmu_config.experimental_power_save_voltage ); } else { - ttgo->power->setDCDC3Voltage( 3000 ); - log_i("go standby, enable 3.0V standby voltage"); + ttgo->power->setDCDC3Voltage( pmu_config.normal_power_save_voltage ); + log_i("go standby, enable %dmV standby voltage", pmu_config.normal_power_save_voltage ); } - ttgo->power->setPowerOutPut(AXP202_LDO3, AXP202_OFF ); + ttgo->power->setPowerOutPut( AXP202_LDO3, AXP202_OFF ); + ttgo->power->setPowerOutPut( AXP202_LDO2, AXP202_OFF ); } void pmu_wakeup( void ) { TTGOClass *ttgo = TTGOClass::getWatch(); if ( pmu_get_experimental_power_save() ) { - ttgo->power->setDCDC3Voltage( 3000 ); - log_i("go wakeup, enable 3.0V voltage"); + ttgo->power->setDCDC3Voltage( pmu_config.experimental_normal_voltage ); + log_i("go wakeup, enable %dmV voltage", pmu_config.experimental_normal_voltage ); } else { - ttgo->power->setDCDC3Voltage( 3300 ); - log_i("go wakeup, enable 3.3V voltage"); + ttgo->power->setDCDC3Voltage( pmu_config.normal_voltage ); + log_i("go wakeup, enable %dmV voltage", pmu_config.normal_voltage ); } ttgo->power->clearTimerStatus(); ttgo->power->offTimer(); ttgo->power->setPowerOutPut( AXP202_LDO3, AXP202_ON ); + ttgo->power->setPowerOutPut( AXP202_LDO2, AXP202_ON ); } /* * @@ -134,12 +136,16 @@ void pmu_save_config( void ) { log_e("Can't open file: %s!", PMU_JSON_CONFIG_FILE ); } else { - SpiRamJsonDocument doc( 1000 ); + SpiRamJsonDocument doc( 3000 ); doc["silence_wakeup"] = pmu_config.silence_wakeup; doc["silence_wakeup_time"] = pmu_config.silence_wakeup_time; doc["silence_wakeup_time_vbplug"] = pmu_config.silence_wakeup_time_vbplug; doc["experimental_power_save"] = pmu_config.experimental_power_save; + doc["normal_voltage"] = pmu_config.normal_voltage; + doc["normal_power_save_voltage"] = pmu_config.normal_power_save_voltage; + doc["experimental_normal_voltage"] = pmu_config.experimental_normal_voltage; + doc["experimental_power_save_voltage"] = pmu_config.experimental_power_save_voltage; doc["compute_percent"] = pmu_config.compute_percent; doc["high_charging_target_voltage"] = pmu_config.high_charging_target_voltage; doc["designed_battery_cap"] = pmu_config.designed_battery_cap; @@ -177,6 +183,10 @@ void pmu_read_config( void ) { pmu_config.compute_percent = doc["compute_percent"] | false; pmu_config.high_charging_target_voltage = doc["high_charging_target_voltage"] | false; pmu_config.designed_battery_cap = doc["designed_battery_cap"] | 300; + pmu_config.normal_voltage = doc["normal_voltage"] | 3300; + pmu_config.normal_power_save_voltage = doc["normal_power_save_voltage"] | 3000; + pmu_config.experimental_normal_voltage = doc["experimental_normal_voltage"] | 3000; + pmu_config.experimental_power_save_voltage = doc["experimental_power_save_voltage"] | 2700; } doc.clear(); } diff --git a/src/hardware/pmu.h b/src/hardware/pmu.h index 279580e..ff4a74c 100644 --- a/src/hardware/pmu.h +++ b/src/hardware/pmu.h @@ -33,6 +33,10 @@ int32_t designed_battery_cap = 300; int32_t silence_wakeup_time = 60; int32_t silence_wakeup_time_vbplug = 3; + int32_t normal_voltage = 3300; + int32_t normal_power_save_voltage = 3000; + int32_t experimental_normal_voltage = 3000; + int32_t experimental_power_save_voltage = 2700; bool high_charging_target_voltage = true; bool compute_percent = false; bool experimental_power_save = false; diff --git a/src/hardware/powermgm.cpp b/src/hardware/powermgm.cpp index 0011cd2..8965883 100644 --- a/src/hardware/powermgm.cpp +++ b/src/hardware/powermgm.cpp @@ -160,9 +160,16 @@ void powermgm_loop( TTGOClass *ttgo ) { } powermgm_clear_event( POWERMGM_SILENCE_WAKEUP_REQUEST | POWERMGM_WAKEUP_REQUEST | POWERMGM_STANDBY_REQUEST ); - pmu_loop( ttgo ); - bma_loop( ttgo ); - display_loop( ttgo ); + if ( powermgm_get_event( POWERMGM_STANDBY ) ) { + vTaskDelay( 100 ); + pmu_loop( ttgo ); + bma_loop( ttgo ); + } + else { + pmu_loop( ttgo ); + bma_loop( ttgo ); + display_loop( ttgo ); + } } /*