| 89 | } |
| 90 | |
| 91 | void updateUi() { |
| 92 | if (chargeStateLabel == nullptr) { |
| 93 | return; |
| 94 | } |
| 95 | |
| 96 | const char* charge_state; |
| 97 | hal::power::PowerDevice::MetricData metric_data; |
| 98 | if (power->getMetric(hal::power::PowerDevice::MetricType::IsCharging, metric_data)) { |
| 99 | charge_state = metric_data.valueAsBool ? "yes" : "no"; |
| 100 | } else { |
| 101 | charge_state = "N/A"; |
| 102 | } |
| 103 | |
| 104 | uint8_t charge_level; |
| 105 | bool charge_level_scaled_set = false; |
| 106 | if (power->getMetric(hal::power::PowerDevice::MetricType::ChargeLevel, metric_data)) { |
| 107 | charge_level = metric_data.valueAsUint8; |
| 108 | charge_level_scaled_set = true; |
| 109 | } |
| 110 | |
| 111 | bool charging_enabled_set = power->supportsChargeControl(); |
| 112 | bool charging_enabled_and_allowed = power->supportsChargeControl() && power->isAllowedToCharge(); |
| 113 | |
| 114 | bool quick_charge_set = power->supportsQuickCharge(); |
| 115 | bool quick_charge_enabled = power->supportsQuickCharge() && power->isQuickChargeEnabled(); |
| 116 | |
| 117 | int32_t current; |
| 118 | bool current_set = false; |
| 119 | if (power->getMetric(hal::power::PowerDevice::MetricType::Current, metric_data)) { |
| 120 | current = metric_data.valueAsInt32; |
| 121 | current_set = true; |
| 122 | } |
| 123 | |
| 124 | uint32_t battery_voltage; |
| 125 | bool battery_voltage_set = false; |
| 126 | if (power->getMetric(hal::power::PowerDevice::MetricType::BatteryVoltage, metric_data)) { |
| 127 | battery_voltage = metric_data.valueAsUint32; |
| 128 | battery_voltage_set = true; |
| 129 | } |
| 130 | |
| 131 | lvgl::lock(kernel::millisToTicks(1000)); |
| 132 | |
| 133 | if (charging_enabled_set) { |
| 134 | lv_obj_set_state(enableSwitch, LV_STATE_CHECKED, charging_enabled_and_allowed); |
| 135 | lv_obj_remove_flag(enableSwitch, LV_OBJ_FLAG_HIDDEN); |
| 136 | lv_obj_remove_flag(enableLabel, LV_OBJ_FLAG_HIDDEN); |
| 137 | } else { |
| 138 | lv_obj_add_flag(enableSwitch, LV_OBJ_FLAG_HIDDEN); |
| 139 | lv_obj_add_flag(enableLabel, LV_OBJ_FLAG_HIDDEN); |
| 140 | } |
| 141 | |
| 142 | if (quick_charge_set) { |
| 143 | lv_obj_set_state(quickChargeSwitch, LV_STATE_CHECKED, quick_charge_enabled); |
| 144 | lv_obj_remove_flag(quickChargeSwitch, LV_OBJ_FLAG_HIDDEN); |
| 145 | lv_obj_remove_flag(quickChargeLabel, LV_OBJ_FLAG_HIDDEN); |
| 146 | } else { |
| 147 | lv_obj_add_flag(quickChargeSwitch, LV_OBJ_FLAG_HIDDEN); |
| 148 | lv_obj_add_flag(quickChargeLabel, LV_OBJ_FLAG_HIDDEN); |
no test coverage detected