-
-
Notifications
You must be signed in to change notification settings - Fork 560
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
support for battery if any + TPMS app to ext (#2129)
* batt initial * batt widgets * settings modify * batt info screen * ability to hide icon * battView * redo tmps * hide curr + charge if no data * fix flashing
- Loading branch information
Showing
23 changed files
with
767 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
/* | ||
* Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. | ||
* Copyright (C) 2016 Furrtek | ||
* | ||
* This file is part of PortaPack. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 2, or (at your option) | ||
* any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program; see the file COPYING. If not, write to | ||
* the Free Software Foundation, Inc., 51 Franklin Street, | ||
* Boston, MA 02110-1301, USA. | ||
*/ | ||
|
||
#include "ui_battinfo.hpp" | ||
|
||
#include "event_m0.hpp" | ||
#include "portapack.hpp" | ||
|
||
#include <cstring> | ||
|
||
using namespace portapack; | ||
|
||
namespace ui { | ||
|
||
void BattinfoView::focus() { | ||
button_exit.focus(); | ||
} | ||
|
||
// called each 1/60th of second, so 6 = 100ms | ||
void BattinfoView::on_timer() { | ||
if (++timer_counter == timer_period) { | ||
timer_counter = 0; | ||
update_result(); | ||
} | ||
} | ||
|
||
void BattinfoView::update_result() { | ||
if (!battery::BatteryManagement::isDetected()) { | ||
// todo show no batt management | ||
text_percent.set("UNKNOWN"); | ||
text_voltage.set("UNKNOWN"); | ||
text_current.set("-"); | ||
text_charge.set("-"); | ||
return; | ||
} | ||
bool uichg = false; | ||
battery::BatteryManagement::getBatteryInfo(percent, voltage, current, isCharging); | ||
// update text fields | ||
if (percent <= 100) | ||
text_percent.set(to_string_dec_uint(percent) + " %"); | ||
else | ||
text_percent.set("UNKNOWN"); | ||
if (voltage > 1) { | ||
text_voltage.set(to_string_decimal(voltage / 1000.0, 3) + " V"); | ||
} else { | ||
text_voltage.set("UNKNOWN"); | ||
} | ||
if (current != 0) { | ||
if (labels_opt.hidden()) uichg = true; | ||
labels_opt.hidden(false); | ||
text_current.hidden(false); | ||
text_charge.hidden(false); | ||
text_current.set(to_string_dec_int(current) + " mA"); | ||
text_charge.set(isCharging ? "charge" : "discharge"); | ||
labels_opt.hidden(false); | ||
} else { | ||
if (!labels_opt.hidden()) uichg = true; | ||
labels_opt.hidden(true); | ||
text_current.hidden(true); | ||
text_charge.hidden(true); | ||
} | ||
if (uichg) set_dirty(); | ||
// to update status bar too, send message in behalf of batt manager | ||
BatteryStateMessage msg{percent, isCharging, voltage}; | ||
EventDispatcher::send_message(msg); | ||
} | ||
|
||
BattinfoView::BattinfoView(NavigationView& nav) | ||
: nav_{nav} { | ||
add_children({&labels, | ||
&labels_opt, | ||
&text_percent, | ||
&text_voltage, | ||
&text_current, | ||
&text_charge, | ||
&button_exit}); | ||
|
||
button_exit.on_select = [this, &nav](Button&) { | ||
nav.pop(); | ||
}; | ||
|
||
update_result(); | ||
} | ||
|
||
} // namespace ui |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
/* | ||
* Copyright (C) 2015 Jared Boone, ShareBrained Technology, Inc. | ||
* Copyright (C) 2016 Furrtek | ||
* | ||
* This file is part of PortaPack. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation; either version 2, or (at your option) | ||
* any later version. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with this program; see the file COPYING. If not, write to | ||
* the Free Software Foundation, Inc., 51 Franklin Street, | ||
* Boston, MA 02110-1301, USA. | ||
*/ | ||
|
||
#ifndef __UI_BATTINFO_H__ | ||
#define __UI_BATTINFO_H__ | ||
|
||
#include "ui.hpp" | ||
#include "ui_widget.hpp" | ||
#include "ui_navigation.hpp" | ||
#include "string_format.hpp" | ||
|
||
namespace ui { | ||
class BattinfoView : public View { | ||
public: | ||
BattinfoView(NavigationView& nav); | ||
void focus() override; | ||
std::string title() const override { return "Battery"; }; | ||
|
||
private: | ||
void update_result(); | ||
void on_timer(); | ||
NavigationView& nav_; | ||
uint16_t timer_period = 60; | ||
uint16_t timer_counter = 0; | ||
uint8_t percent = 0; | ||
uint16_t voltage = 0; | ||
int32_t current = 0; | ||
bool isCharging = false; | ||
|
||
Labels labels{ | ||
{{2 * 8, 1 * 16}, "Percent:", Color::light_grey()}, | ||
{{2 * 8, 2 * 16}, "Voltage:", Color::light_grey()}}; | ||
|
||
Labels labels_opt{ | ||
{{2 * 8, 3 * 16}, "Current:", Color::light_grey()}, | ||
{{2 * 8, 4 * 16}, "Charge:", Color::light_grey()}}; | ||
|
||
Text text_percent{ | ||
{13 * 8, 1 * 16, 10 * 16, 16}, | ||
"-"}; | ||
Text text_voltage{ | ||
{13 * 8, 2 * 16, 10 * 16, 16}, | ||
"-"}; | ||
Text text_current{ | ||
{13 * 8, 3 * 16, 10 * 16, 16}, | ||
"-"}; | ||
Text text_charge{ | ||
{13 * 8, 4 * 16, 10 * 16, 16}, | ||
"-"}; | ||
|
||
Button button_exit{ | ||
{72, 17 * 16, 96, 32}, | ||
"Back"}; | ||
|
||
MessageHandlerRegistration message_handler_frame_sync{ | ||
Message::ID::DisplayFrameSync, | ||
[this](const Message* const) { | ||
this->on_timer(); | ||
}}; | ||
}; | ||
|
||
} /* namespace ui */ | ||
|
||
#endif /*__UI_BATTINFO__*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.