mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-07-01 22:16:28 +02:00
Add Airplane Mode + Host Network Interface Details (#204)
Adds Airplane Mode function to settings, host states, etc. Windows implemented only for now. Closes #203 Co-authored-by: crueter <swurl@swurl.xyz> Co-authored-by: Aleksandr Popovich <alekpopo@pm.me> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/204 Co-authored-by: Maufeat <sahyno1996@gmail.com> Co-committed-by: Maufeat <sahyno1996@gmail.com>
This commit is contained in:
parent
b2e602325c
commit
2e6a289a0b
34 changed files with 1193 additions and 203 deletions
46
src/core/hle/service/am/frontend/applet_net_connect.cpp
Normal file
46
src/core/hle/service/am/frontend/applet_net_connect.cpp
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#include "common/assert.h"
|
||||
#include "common/hex_util.h"
|
||||
#include "common/logging/log.h"
|
||||
#include "core/core.h"
|
||||
#include "core/frontend/applets/net_connect.h"
|
||||
#include "core/hle/result.h"
|
||||
#include "core/hle/service/am/am.h"
|
||||
#include "core/hle/service/am/applet_data_broker.h"
|
||||
#include "core/hle/service/am/frontend/applet_net_connect.h"
|
||||
#include "core/hle/service/am/service/storage.h"
|
||||
#include "core/reporter.h"
|
||||
|
||||
namespace Service::AM::Frontend {
|
||||
|
||||
NetConnect::NetConnect(Core::System& system_, std::shared_ptr<Applet> applet_, LibraryAppletMode applet_mode_, const Core::Frontend::NetConnectApplet& frontend_)
|
||||
: FrontendApplet{system_, applet_, applet_mode_}, frontend{frontend_} {}
|
||||
|
||||
NetConnect::~NetConnect() = default;
|
||||
|
||||
void NetConnect::Initialize() {
|
||||
FrontendApplet::Initialize();
|
||||
complete = false;
|
||||
}
|
||||
|
||||
Result NetConnect::GetStatus() const {
|
||||
return ResultSuccess;
|
||||
}
|
||||
|
||||
void NetConnect::ExecuteInteractive() {
|
||||
ASSERT_MSG(false, "Unexpected interactive applet data.");
|
||||
}
|
||||
|
||||
void NetConnect::Execute() {
|
||||
if (complete)
|
||||
return;
|
||||
}
|
||||
|
||||
Result NetConnect::RequestExit() {
|
||||
frontend.Close();
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
} // namespace Service::AM::Frontend
|
||||
32
src/core/hle/service/am/frontend/applet_net_connect.h
Normal file
32
src/core/hle/service/am/frontend/applet_net_connect.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "core/hle/service/am/frontend/applets.h"
|
||||
|
||||
namespace Core {
|
||||
class System;
|
||||
}
|
||||
|
||||
namespace Service::AM::Frontend {
|
||||
|
||||
class NetConnect final : public FrontendApplet {
|
||||
public:
|
||||
explicit NetConnect(Core::System& system_, std::shared_ptr<Applet> applet_,
|
||||
LibraryAppletMode applet_mode_,
|
||||
const Core::Frontend::NetConnectApplet& frontend_);
|
||||
~NetConnect() override;
|
||||
|
||||
void Initialize() override;
|
||||
Result GetStatus() const override;
|
||||
void ExecuteInteractive() override;
|
||||
void Execute() override;
|
||||
Result RequestExit() override;
|
||||
|
||||
private:
|
||||
const Core::Frontend::NetConnectApplet& frontend;
|
||||
bool complete = false;
|
||||
};
|
||||
|
||||
} // namespace Service::AM::Frontend
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#include <cstring>
|
||||
|
||||
|
|
@ -10,6 +10,7 @@
|
|||
#include "core/frontend/applets/error.h"
|
||||
#include "core/frontend/applets/general.h"
|
||||
#include "core/frontend/applets/mii_edit.h"
|
||||
#include "core/frontend/applets/net_connect.h"
|
||||
#include "core/frontend/applets/profile_select.h"
|
||||
#include "core/frontend/applets/software_keyboard.h"
|
||||
#include "core/frontend/applets/web_browser.h"
|
||||
|
|
@ -22,6 +23,7 @@
|
|||
#include "core/hle/service/am/frontend/applet_error.h"
|
||||
#include "core/hle/service/am/frontend/applet_general.h"
|
||||
#include "core/hle/service/am/frontend/applet_mii_edit.h"
|
||||
#include "core/hle/service/am/frontend/applet_net_connect.h"
|
||||
#include "core/hle/service/am/frontend/applet_profile_select.h"
|
||||
#include "core/hle/service/am/frontend/applet_software_keyboard.h"
|
||||
#include "core/hle/service/am/frontend/applet_web_browser.h"
|
||||
|
|
@ -83,12 +85,13 @@ FrontendAppletSet::FrontendAppletSet(CabinetApplet cabinet_applet,
|
|||
MiiEdit mii_edit_,
|
||||
ParentalControlsApplet parental_controls_applet,
|
||||
PhotoViewer photo_viewer_, ProfileSelect profile_select_,
|
||||
SoftwareKeyboard software_keyboard_, WebBrowser web_browser_)
|
||||
SoftwareKeyboard software_keyboard_, WebBrowser web_browser_, NetConnect net_connect_)
|
||||
: cabinet{std::move(cabinet_applet)}, controller{std::move(controller_applet)},
|
||||
error{std::move(error_applet)}, mii_edit{std::move(mii_edit_)},
|
||||
parental_controls{std::move(parental_controls_applet)},
|
||||
photo_viewer{std::move(photo_viewer_)}, profile_select{std::move(profile_select_)},
|
||||
software_keyboard{std::move(software_keyboard_)}, web_browser{std::move(web_browser_)} {}
|
||||
software_keyboard{std::move(software_keyboard_)}, web_browser{std::move(web_browser_)},
|
||||
net_connect{std::move(net_connect_)} {}
|
||||
|
||||
FrontendAppletSet::~FrontendAppletSet() = default;
|
||||
|
||||
|
|
@ -148,6 +151,10 @@ void FrontendAppletHolder::SetFrontendAppletSet(FrontendAppletSet set) {
|
|||
if (set.web_browser != nullptr) {
|
||||
frontend.web_browser = std::move(set.web_browser);
|
||||
}
|
||||
|
||||
if (set.net_connect != nullptr) {
|
||||
frontend.net_connect = std::move(set.net_connect);
|
||||
}
|
||||
}
|
||||
|
||||
void FrontendAppletHolder::SetCabinetMode(NFP::CabinetMode mode) {
|
||||
|
|
@ -197,6 +204,10 @@ void FrontendAppletHolder::SetDefaultAppletsIfMissing() {
|
|||
if (frontend.web_browser == nullptr) {
|
||||
frontend.web_browser = std::make_unique<Core::Frontend::DefaultWebBrowserApplet>();
|
||||
}
|
||||
|
||||
if (frontend.net_connect == nullptr) {
|
||||
frontend.net_connect = std::make_unique<Core::Frontend::DefaultNetConnectApplet>();
|
||||
}
|
||||
}
|
||||
|
||||
void FrontendAppletHolder::ClearAll() {
|
||||
|
|
@ -230,6 +241,8 @@ std::shared_ptr<FrontendApplet> FrontendAppletHolder::GetApplet(std::shared_ptr<
|
|||
return std::make_shared<WebBrowser>(system, applet, mode, *frontend.web_browser);
|
||||
case AppletId::PhotoViewer:
|
||||
return std::make_shared<PhotoViewer>(system, applet, mode, *frontend.photo_viewer);
|
||||
case AppletId::NetConnect:
|
||||
return std::make_shared<NetConnect>(system, applet, mode, *frontend.net_connect);
|
||||
default:
|
||||
UNIMPLEMENTED_MSG(
|
||||
"No backend implementation exists for applet_id={:02X}! Falling back to stub applet.",
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
|
@ -8,6 +11,7 @@
|
|||
|
||||
#include "common/swap.h"
|
||||
#include "core/hle/service/am/applet.h"
|
||||
#include "core/frontend/applets/net_connect.h"
|
||||
|
||||
union Result;
|
||||
|
||||
|
|
@ -90,13 +94,14 @@ struct FrontendAppletSet {
|
|||
using ProfileSelect = std::unique_ptr<Core::Frontend::ProfileSelectApplet>;
|
||||
using SoftwareKeyboard = std::unique_ptr<Core::Frontend::SoftwareKeyboardApplet>;
|
||||
using WebBrowser = std::unique_ptr<Core::Frontend::WebBrowserApplet>;
|
||||
using NetConnect = std::unique_ptr<Core::Frontend::NetConnectApplet>;
|
||||
|
||||
FrontendAppletSet();
|
||||
FrontendAppletSet(CabinetApplet cabinet_applet, ControllerApplet controller_applet,
|
||||
ErrorApplet error_applet, MiiEdit mii_edit_,
|
||||
ParentalControlsApplet parental_controls_applet, PhotoViewer photo_viewer_,
|
||||
ProfileSelect profile_select_, SoftwareKeyboard software_keyboard_,
|
||||
WebBrowser web_browser_);
|
||||
WebBrowser web_browser_, NetConnect net_connect_);
|
||||
~FrontendAppletSet();
|
||||
|
||||
FrontendAppletSet(const FrontendAppletSet&) = delete;
|
||||
|
|
@ -114,6 +119,7 @@ struct FrontendAppletSet {
|
|||
ProfileSelect profile_select;
|
||||
SoftwareKeyboard software_keyboard;
|
||||
WebBrowser web_browser;
|
||||
NetConnect net_connect;
|
||||
};
|
||||
|
||||
class FrontendAppletHolder {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ public:
|
|||
|
||||
private:
|
||||
Result GetLastForegroundCaptureImageEx(Out<bool> out_was_written,
|
||||
OutBuffer<BufferAttr_HipcMapAlias> out_image_data);
|
||||
OutBuffer<BufferAttr_HipcMapAlias> out_image_data);
|
||||
Result GetCallerAppletCaptureImageEx(Out<bool> out_was_written,
|
||||
OutBuffer<BufferAttr_HipcMapAlias> out_image_data);
|
||||
Result TakeScreenShotOfOwnLayer(bool unknown0, s32 fbshare_layer_index);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue