mirror of
https://github.com/DarkMatterCore/nxdumptool.git
synced 2024-11-26 12:12:02 +00:00
Added StatusInfoTask.
This commit is contained in:
parent
ee17ffca5d
commit
063d8e9b3f
5 changed files with 120 additions and 2 deletions
|
@ -31,6 +31,9 @@ namespace nxdt::views
|
||||||
class RootView: public brls::TabFrame
|
class RootView: public brls::TabFrame
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
bool applet_mode = false;
|
||||||
|
|
||||||
|
nxdt::tasks::StatusInfoTask *status_info_task = nullptr;
|
||||||
nxdt::tasks::GameCardTask *gc_status_task = nullptr;
|
nxdt::tasks::GameCardTask *gc_status_task = nullptr;
|
||||||
nxdt::tasks::TitleTask *title_task = nullptr;
|
nxdt::tasks::TitleTask *title_task = nullptr;
|
||||||
nxdt::tasks::UmsTask *ums_task = nullptr;
|
nxdt::tasks::UmsTask *ums_task = nullptr;
|
||||||
|
|
|
@ -44,6 +44,43 @@ namespace nxdt::tasks
|
||||||
/* Custom vector type used to hold UMS devices. */
|
/* Custom vector type used to hold UMS devices. */
|
||||||
typedef std::vector<UsbHsFsDevice> UmsDeviceVector;
|
typedef std::vector<UsbHsFsDevice> UmsDeviceVector;
|
||||||
|
|
||||||
|
/* Status info task. */
|
||||||
|
class StatusInfoTask: public brls::RepeatingTask
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
VoidEvent status_info_event;
|
||||||
|
|
||||||
|
std::string cur_time = "";
|
||||||
|
|
||||||
|
u32 charge_percentage = 0;
|
||||||
|
PsmChargerType charger_type = PsmChargerType_Unconnected;
|
||||||
|
|
||||||
|
NifmInternetConnectionType connection_type = (NifmInternetConnectionType)0;
|
||||||
|
u32 signal_strength = 0;
|
||||||
|
NifmInternetConnectionStatus connection_status = (NifmInternetConnectionStatus)0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void run(retro_time_t current_time) override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
StatusInfoTask(void);
|
||||||
|
~StatusInfoTask(void);
|
||||||
|
|
||||||
|
std::string GetCurrentTimeString(void);
|
||||||
|
void GetBatteryStats(u32 *out_charge_percentage, PsmChargerType *out_charger_type);
|
||||||
|
void GetNetworkStats(NifmInternetConnectionType *out_connection_type, u32 *out_signal_strength, NifmInternetConnectionStatus *out_connection_status);
|
||||||
|
|
||||||
|
ALWAYS_INLINE VoidEvent::Subscription RegisterListener(VoidEvent::Callback cb)
|
||||||
|
{
|
||||||
|
return this->status_info_event.subscribe(cb);
|
||||||
|
}
|
||||||
|
|
||||||
|
ALWAYS_INLINE void UnregisterListener(VoidEvent::Subscription subscription)
|
||||||
|
{
|
||||||
|
this->status_info_event.unsubscribe(subscription);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/* Gamecard task. */
|
/* Gamecard task. */
|
||||||
class GameCardTask: public brls::RepeatingTask
|
class GameCardTask: public brls::RepeatingTask
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
"dump_options": "Dump options",
|
"dump_options": "Dump options",
|
||||||
|
|
||||||
"dump_card_image": {
|
"dump_card_image": {
|
||||||
"label": "Dump gamecard image",
|
"label": "Dump gamecard image (XCI)",
|
||||||
"description": "Generates a raw gamecard image. This is the option most people will want to use."
|
"description": "Generates a raw gamecard image. This is the option most people will want to use."
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <nxdt_includes.h>
|
#include <nxdt_utils.h>
|
||||||
#include <root_view.hpp>
|
#include <root_view.hpp>
|
||||||
#include <gamecard_tab.hpp>
|
#include <gamecard_tab.hpp>
|
||||||
//#include <user_titles_tab.hpp>
|
//#include <user_titles_tab.hpp>
|
||||||
|
@ -33,7 +33,11 @@ namespace nxdt::views
|
||||||
{
|
{
|
||||||
RootView::RootView(void) : brls::TabFrame()
|
RootView::RootView(void) : brls::TabFrame()
|
||||||
{
|
{
|
||||||
|
/* Check if we're running under applet mode. */
|
||||||
|
this->applet_mode = utilsAppletModeCheck();
|
||||||
|
|
||||||
/* Start background tasks. */
|
/* Start background tasks. */
|
||||||
|
this->status_info_task = new nxdt::tasks::StatusInfoTask();
|
||||||
this->gc_status_task = new nxdt::tasks::GameCardTask();
|
this->gc_status_task = new nxdt::tasks::GameCardTask();
|
||||||
this->title_task = new nxdt::tasks::TitleTask();
|
this->title_task = new nxdt::tasks::TitleTask();
|
||||||
this->ums_task = new nxdt::tasks::UmsTask();
|
this->ums_task = new nxdt::tasks::UmsTask();
|
||||||
|
|
|
@ -26,6 +26,80 @@
|
||||||
|
|
||||||
namespace nxdt::tasks
|
namespace nxdt::tasks
|
||||||
{
|
{
|
||||||
|
/* Status info task. */
|
||||||
|
|
||||||
|
StatusInfoTask::StatusInfoTask(void) : brls::RepeatingTask(NXDT_TASK_INTERVAL * 10)
|
||||||
|
{
|
||||||
|
brls::RepeatingTask::start();
|
||||||
|
brls::Logger::debug("Status info task started.");
|
||||||
|
}
|
||||||
|
|
||||||
|
StatusInfoTask::~StatusInfoTask(void)
|
||||||
|
{
|
||||||
|
/* Clear current time string. */
|
||||||
|
this->cur_time.clear();
|
||||||
|
|
||||||
|
brls::Logger::debug("Status info task stopped.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void StatusInfoTask::run(retro_time_t current_time)
|
||||||
|
{
|
||||||
|
brls::RepeatingTask::run(current_time);
|
||||||
|
|
||||||
|
/* Get current time. */
|
||||||
|
bool is_am = true;
|
||||||
|
time_t unix_time = time(NULL);
|
||||||
|
struct tm *timeinfo = localtime(&unix_time);
|
||||||
|
|
||||||
|
if (timeinfo->tm_hour > 12)
|
||||||
|
{
|
||||||
|
timeinfo->tm_hour -= 12;
|
||||||
|
is_am = false;
|
||||||
|
} else
|
||||||
|
if (!timeinfo->tm_hour)
|
||||||
|
{
|
||||||
|
timeinfo->tm_hour = 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->cur_time.clear();
|
||||||
|
fmt::format_to(std::back_inserter(this->cur_time), "{:02d}:{:02d}:{:02d} {}", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec, is_am ? "AM" : "PM");
|
||||||
|
|
||||||
|
/* Get battery stats. */
|
||||||
|
psmGetBatteryChargePercentage(&(this->charge_percentage));
|
||||||
|
psmGetChargerType(&(this->charger_type));
|
||||||
|
|
||||||
|
/* Get network connection status. */
|
||||||
|
Result rc = nifmGetInternetConnectionStatus(&(this->connection_type), &(this->signal_strength), &(this->connection_status));
|
||||||
|
if (R_FAILED(rc))
|
||||||
|
{
|
||||||
|
this->connection_type = (NifmInternetConnectionType)0;
|
||||||
|
this->signal_strength = 0;
|
||||||
|
this->connection_status = (NifmInternetConnectionStatus)0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->status_info_event.fire();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string StatusInfoTask::GetCurrentTimeString(void)
|
||||||
|
{
|
||||||
|
return this->cur_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StatusInfoTask::GetBatteryStats(u32 *out_charge_percentage, PsmChargerType *out_charger_type)
|
||||||
|
{
|
||||||
|
if (!out_charge_percentage || !out_charger_type) return;
|
||||||
|
*out_charge_percentage = this->charge_percentage;
|
||||||
|
*out_charger_type = this->charger_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
void StatusInfoTask::GetNetworkStats(NifmInternetConnectionType *out_connection_type, u32 *out_signal_strength, NifmInternetConnectionStatus *out_connection_status)
|
||||||
|
{
|
||||||
|
if (!out_connection_type || !out_signal_strength || !out_connection_status) return;
|
||||||
|
*out_connection_type = this->connection_type;
|
||||||
|
*out_signal_strength = this->signal_strength;
|
||||||
|
*out_connection_status = this->connection_status;
|
||||||
|
}
|
||||||
|
|
||||||
/* Gamecard task. */
|
/* Gamecard task. */
|
||||||
|
|
||||||
GameCardTask::GameCardTask(void) : brls::RepeatingTask(NXDT_TASK_INTERVAL)
|
GameCardTask::GameCardTask(void) : brls::RepeatingTask(NXDT_TASK_INTERVAL)
|
||||||
|
|
Loading…
Reference in a new issue