add fake battery Drain to simulator
Fake drain of a period of 3 minuets
This commit is contained in:
		
							parent
							
								
									3318265e0a
								
							
						
					
					
						commit
						628ae37b9d
					
				
					 4 changed files with 40 additions and 6 deletions
				
			
		|  | @ -1,9 +1,34 @@ | |||
| #include "BatteryInterface.h" | ||||
| 
 | ||||
| #include <chrono> | ||||
| #include <thread> | ||||
| #include <cmath> | ||||
| class BatterySimulator: public BatteryInterface{ | ||||
|     public: | ||||
|         BatterySimulator() {}; | ||||
|         virtual int getPercentage() override { return 75; } | ||||
|         BatterySimulator() :  | ||||
|             mCreationTime(std::chrono::high_resolution_clock::now()), | ||||
|             mBattNotifier(std::thread(&BatterySimulator::batteryNotifyThread,this)) | ||||
|         {}; | ||||
| 
 | ||||
|         ~BatterySimulator(){ | ||||
|             mBattNotifier.join(); | ||||
|         } | ||||
|         virtual int getPercentage() override {  | ||||
|             auto now = std::chrono::high_resolution_clock::now(); | ||||
|             auto batteryRunTime = std::chrono::duration_cast<std::chrono::seconds>(now - mCreationTime); | ||||
|             constexpr auto minToBatteryZero = 3; | ||||
|             auto fakeBattPercentage = 100 - ((batteryRunTime / std::chrono::duration<float,std::ratio<60LL>>(minToBatteryZero)) * 100); | ||||
|             return std::floor(fakeBattPercentage < 100 ? fakeBattPercentage : 0); | ||||
|         } | ||||
| 
 | ||||
|         virtual bool isCharging() override { return true; } | ||||
| 
 | ||||
|     private: | ||||
|         void batteryNotifyThread(){ | ||||
|             while (true){ | ||||
|                 NotifyCurrentStatus(); | ||||
|                 std::this_thread::sleep_for(std::chrono::seconds(5)); | ||||
|             } | ||||
|         } | ||||
|         std::chrono::_V2::system_clock::time_point mCreationTime; | ||||
|         std::thread mBattNotifier; | ||||
| }; | ||||
|  | @ -9,6 +9,16 @@ std::shared_ptr<OmoteUI> OmoteUI::mInstance = nullptr; | |||
| // #if defined(IS_SIMULATOR) && (IS_SIMULATOR == true)
 | ||||
| // #endif
 | ||||
| 
 | ||||
| OmoteUI::OmoteUI(std::shared_ptr<HardwareAbstract> aHardware) : mHardware(aHardware){ | ||||
|   mHardware->battery()->onBatteryStatusChange([this](int percent, bool isCharging){  | ||||
|       if(percent > 95) lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_FULL); | ||||
|       else if(percent > 75) lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_3); | ||||
|       else if(percent > 50) lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_2); | ||||
|       else if(percent > 25) lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_1); | ||||
|       else lv_label_set_text(objBattIcon, LV_SYMBOL_BATTERY_EMPTY); | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| // Set the page indicator scroll position relative to the tabview scroll
 | ||||
| // position
 | ||||
| void OmoteUI::store_scroll_value_event_cb(lv_event_t *e) { | ||||
|  |  | |||
|  | @ -15,8 +15,7 @@ | |||
| /// of resources.
 | ||||
| class OmoteUI { | ||||
| public: | ||||
|   OmoteUI(std::shared_ptr<HardwareAbstract> aHardware) | ||||
|       : mHardware(aHardware){}; | ||||
|   OmoteUI(std::shared_ptr<HardwareAbstract> aHardware); | ||||
| 
 | ||||
|   static std::weak_ptr<OmoteUI> getRefrence() { return getInstance(); }; | ||||
|   static std::shared_ptr<OmoteUI> | ||||
|  |  | |||
|  | @ -50,7 +50,7 @@ lib_archive = false | |||
| build_src_filter = | ||||
|   +<../OmoteUI/*> | ||||
|   +<../HAL/HardwareAbstract.cpp> | ||||
|   +<../HAL/HardwareModules/DisplayAbstract.cpp> | ||||
|   +<../HAL/HardwareModules/*.cpp> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue