gpio: update for 23.0.0

This commit is contained in:
hexkyz
2026-09-17 19:40:17 +01:00
parent ff09b598d5
commit 9b4e4a2190
9 changed files with 135 additions and 73 deletions

View File

@@ -81,9 +81,9 @@ namespace ams::gpio {
ams::sf::SharedPointer<gpio::sf::IPadSession> session;
{
if (hos::GetVersion() >= hos::Version_7_0_0) {
R_TRY(g_manager->OpenSession2(std::addressof(session), device_code, ddsf::AccessMode_ReadWrite));
R_TRY(g_manager->OpenSession(std::addressof(session), device_code, ddsf::AccessMode_ReadWrite));
} else {
R_TRY(g_manager->OpenSession(std::addressof(session), ConvertToGpioPadName(device_code)));
R_TRY(g_manager->OpenSessionDeprecated(std::addressof(session), ConvertToGpioPadName(device_code)));
}
}
@@ -110,9 +110,9 @@ namespace ams::gpio {
Result IsWakeEventActive(bool *out_is_active, ams::DeviceCode device_code) {
if (hos::GetVersion() >= hos::Version_7_0_0) {
R_TRY(g_manager->IsWakeEventActive2(out_is_active, device_code));
R_TRY(g_manager->IsWakeEventActive(out_is_active, device_code));
} else {
R_TRY(g_manager->IsWakeEventActive(out_is_active, ConvertToGpioPadName(device_code)));
R_TRY(g_manager->IsWakeEventActiveDeprecated(out_is_active, ConvertToGpioPadName(device_code)));
}
R_SUCCEED();
@@ -125,7 +125,7 @@ namespace ams::gpio {
}
void SetDirection(GpioPadSession *session, Direction direction) {
R_ABORT_UNLESS(GetInterface(session)->SetDirection(direction));
R_ABORT_UNLESS(GetInterface(session)->SetDirectionDeprecated(direction));
}
GpioValue GetValue(GpioPadSession *session) {

View File

@@ -34,7 +34,7 @@ namespace ams::gpio {
}
Result RemoteManagerImpl::OpenSession(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name) {
Result RemoteManagerImpl::OpenSessionDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name) {
::GpioPadSession p;
R_TRY(::gpioOpenSession(std::addressof(p), static_cast<::GpioPadName>(static_cast<u32>(pad_name))));
@@ -42,7 +42,7 @@ namespace ams::gpio {
R_SUCCEED();
}
Result RemoteManagerImpl::OpenSession2(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, DeviceCode device_code, ddsf::AccessMode access_mode) {
Result RemoteManagerImpl::OpenSession(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, DeviceCode device_code, ddsf::AccessMode access_mode) {
::GpioPadSession p;
R_TRY(::gpioOpenSession2(std::addressof(p), device_code.GetInternalValue(), access_mode));

View File

@@ -27,31 +27,31 @@ namespace ams::gpio {
~RemoteManagerImpl() { /* ... */ }
public:
/* Actual commands. */
Result OpenSessionForDev(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, s32 pad_descriptor) {
Result OpenSessionForDevDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, s32 pad_descriptor) {
/* TODO: libnx bindings */
AMS_UNUSED(out, pad_descriptor);
AMS_ABORT();
}
Result OpenSession(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name);
Result OpenSessionDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name);
Result OpenSessionForTest(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name) {
Result OpenSessionForTestDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name) {
/* TODO: libnx bindings */
AMS_UNUSED(out, pad_name);
AMS_ABORT();
}
Result IsWakeEventActive(ams::sf::Out<bool> out, gpio::GpioPadName pad_name) {
Result IsWakeEventActiveDeprecated(ams::sf::Out<bool> out, gpio::GpioPadName pad_name) {
R_RETURN(::gpioIsWakeEventActive2(out.GetPointer(), static_cast<::GpioPadName>(static_cast<u32>(pad_name))));
}
Result GetWakeEventActiveFlagSet(ams::sf::Out<gpio::WakeBitFlag> out) {
Result GetWakeEventActiveFlagSetDeprecated(ams::sf::Out<gpio::WakeBitFlag> out) {
/* TODO: libnx bindings */
AMS_UNUSED(out);
AMS_ABORT();
}
Result SetWakeEventActiveFlagSetForDebug(gpio::GpioPadName pad_name, bool is_enabled) {
Result SetWakeEventActiveFlagSetForDebugDeprecated(gpio::GpioPadName pad_name, bool is_enabled) {
/* TODO: libnx bindings */
AMS_UNUSED(pad_name, is_enabled);
AMS_ABORT();
@@ -63,19 +63,19 @@ namespace ams::gpio {
AMS_ABORT();
}
Result OpenSession2(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, DeviceCode device_code, ddsf::AccessMode access_mode);
Result OpenSession(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, DeviceCode device_code, ddsf::AccessMode access_mode);
Result IsWakeEventActive2(ams::sf::Out<bool> out, DeviceCode device_code) {
Result IsWakeEventActive(ams::sf::Out<bool> out, DeviceCode device_code) {
R_RETURN(::gpioIsWakeEventActive2(out.GetPointer(), device_code.GetInternalValue()));
}
Result SetWakeEventActiveFlagSetForDebug2(DeviceCode device_code, bool is_enabled) {
Result SetWakeEventActiveFlagSetForDebug(DeviceCode device_code, bool is_enabled) {
/* TODO: libnx bindings */
AMS_UNUSED(device_code, is_enabled);
AMS_ABORT();
}
Result SetRetryValues(u32 arg0, u32 arg1) {
Result DumpStateForDebug(u32 arg0, u32 arg1) {
/* TODO: libnx bindings */
AMS_UNUSED(arg0, arg1);
AMS_ABORT();

View File

@@ -28,7 +28,7 @@ namespace ams::gpio {
~RemotePadSessionImpl() { ::gpioPadClose(std::addressof(m_srv)); }
public:
/* Actual commands. */
Result SetDirection(gpio::Direction direction) {
Result SetDirectionDeprecated(gpio::Direction direction) {
R_RETURN(::gpioPadSetDirection(std::addressof(m_srv), static_cast<::GpioDirection>(static_cast<u32>(direction))));
}
@@ -105,7 +105,30 @@ namespace ams::gpio {
AMS_ABORT();
}
Result GetValueForSleepState(ams::sf::Out<gpio::GpioValue> out) {
Result GetMaxDebounceTime(ams::sf::Out<gpio::GpioValue> out) {
/* TODO: libnx bindings. */
AMS_UNUSED(out);
AMS_ABORT();
}
Result SetDirectionInput() {
/* TODO: libnx bindings. */
AMS_ABORT();
}
Result SetDirectionOutput(gpio::GpioValue value) {
/* TODO: libnx bindings. */
AMS_UNUSED(value);
AMS_ABORT();
}
Result SetUnknownEnabled(bool enable) {
/* TODO: libnx bindings. */
AMS_UNUSED(enable);
AMS_ABORT();
}
Result GetUnknownEnabled(ams::sf::Out<bool> out) {
/* TODO: libnx bindings. */
AMS_UNUSED(out);
AMS_ABORT();

View File

@@ -27,35 +27,35 @@ namespace ams::gpio::server {
lmem::DestroyExpHeap(m_heap_handle);
}
Result ManagerImpl::OpenSessionForDev(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, s32 pad_descriptor) {
Result ManagerImpl::OpenSessionForDevDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, s32 pad_descriptor) {
/* TODO */
AMS_UNUSED(out, pad_descriptor);
AMS_ABORT();
}
Result ManagerImpl::OpenSession(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name) {
R_RETURN(this->OpenSession2(out, ConvertToDeviceCode(pad_name), ddsf::AccessMode_ReadWrite));
Result ManagerImpl::OpenSessionDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name) {
R_RETURN(this->OpenSession(out, ConvertToDeviceCode(pad_name), ddsf::AccessMode_ReadWrite));
}
Result ManagerImpl::OpenSessionForTest(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name) {
Result ManagerImpl::OpenSessionForTestDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name) {
/* TODO */
AMS_UNUSED(out, pad_name);
AMS_ABORT();
}
Result ManagerImpl::IsWakeEventActive(ams::sf::Out<bool> out, gpio::GpioPadName pad_name) {
Result ManagerImpl::IsWakeEventActiveDeprecated(ams::sf::Out<bool> out, gpio::GpioPadName pad_name) {
/* TODO */
AMS_UNUSED(out, pad_name);
AMS_ABORT();
}
Result ManagerImpl::GetWakeEventActiveFlagSet(ams::sf::Out<gpio::WakeBitFlag> out) {
Result ManagerImpl::GetWakeEventActiveFlagSetDeprecated(ams::sf::Out<gpio::WakeBitFlag> out) {
/* TODO */
AMS_UNUSED(out);
AMS_ABORT();
}
Result ManagerImpl::SetWakeEventActiveFlagSetForDebug(gpio::GpioPadName pad_name, bool is_enabled) {
Result ManagerImpl::SetWakeEventActiveFlagSetForDebugDeprecated(gpio::GpioPadName pad_name, bool is_enabled) {
/* TODO */
AMS_UNUSED(pad_name, is_enabled);
AMS_ABORT();
@@ -67,7 +67,7 @@ namespace ams::gpio::server {
AMS_ABORT();
}
Result ManagerImpl::OpenSession2(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, DeviceCode device_code, ddsf::AccessMode access_mode) {
Result ManagerImpl::OpenSession(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, DeviceCode device_code, ddsf::AccessMode access_mode) {
/* Allocate a session. */
auto session = Factory::CreateSharedEmplaced<gpio::sf::IPadSession, PadSessionImpl>(std::addressof(m_pad_allocator), this);
@@ -79,19 +79,19 @@ namespace ams::gpio::server {
R_SUCCEED();
}
Result ManagerImpl::IsWakeEventActive2(ams::sf::Out<bool> out, DeviceCode device_code) {
Result ManagerImpl::IsWakeEventActive(ams::sf::Out<bool> out, DeviceCode device_code) {
/* TODO */
AMS_UNUSED(out, device_code);
AMS_ABORT();
}
Result ManagerImpl::SetWakeEventActiveFlagSetForDebug2(DeviceCode device_code, bool is_enabled) {
Result ManagerImpl::SetWakeEventActiveFlagSetForDebug(DeviceCode device_code, bool is_enabled) {
/* TODO */
AMS_UNUSED(device_code, is_enabled);
AMS_ABORT();
}
Result ManagerImpl::SetRetryValues(u32 arg0, u32 arg1) {
Result ManagerImpl::DumpStateForDebug(u32 arg0, u32 arg1) {
/* TODO */
AMS_UNUSED(arg0, arg1);
AMS_ABORT();

View File

@@ -33,17 +33,17 @@ namespace ams::gpio::server {
~ManagerImpl();
public:
/* Actual commands. */
Result OpenSessionForDev(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, s32 pad_descriptor);
Result OpenSession(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name);
Result OpenSessionForTest(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name);
Result IsWakeEventActive(ams::sf::Out<bool> out, gpio::GpioPadName pad_name);
Result GetWakeEventActiveFlagSet(ams::sf::Out<gpio::WakeBitFlag> out);
Result SetWakeEventActiveFlagSetForDebug(gpio::GpioPadName pad_name, bool is_enabled);
Result OpenSessionForDevDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, s32 pad_descriptor);
Result OpenSessionDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name);
Result OpenSessionForTestDeprecated(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, gpio::GpioPadName pad_name);
Result IsWakeEventActiveDeprecated(ams::sf::Out<bool> out, gpio::GpioPadName pad_name);
Result GetWakeEventActiveFlagSetDeprecated(ams::sf::Out<gpio::WakeBitFlag> out);
Result SetWakeEventActiveFlagSetForDebugDeprecated(gpio::GpioPadName pad_name, bool is_enabled);
Result SetWakePinDebugMode(s32 mode);
Result OpenSession2(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, DeviceCode device_code, ddsf::AccessMode access_mode);
Result IsWakeEventActive2(ams::sf::Out<bool> out, DeviceCode device_code);
Result SetWakeEventActiveFlagSetForDebug2(DeviceCode device_code, bool is_enabled);
Result SetRetryValues(u32 arg0, u32 arg1);
Result OpenSession(ams::sf::Out<ams::sf::SharedPointer<gpio::sf::IPadSession>> out, DeviceCode device_code, ddsf::AccessMode access_mode);
Result IsWakeEventActive(ams::sf::Out<bool> out, DeviceCode device_code);
Result SetWakeEventActiveFlagSetForDebug(DeviceCode device_code, bool is_enabled);
Result DumpStateForDebug(u32 arg0, u32 arg1);
};
static_assert(gpio::sf::IsIManager<ManagerImpl>);

View File

@@ -44,7 +44,7 @@ namespace ams::gpio::server {
}
public:
/* Actual commands. */
Result SetDirection(gpio::Direction direction) {
Result SetDirectionDeprecated(gpio::Direction direction) {
/* Validate our state. */
AMS_ASSERT(m_has_session);
@@ -205,7 +205,42 @@ namespace ams::gpio::server {
AMS_ABORT();
}
Result GetValueForSleepState(ams::sf::Out<gpio::GpioValue> out) {
Result GetMaxDebounceTime(ams::sf::Out<gpio::GpioValue> out) {
/* Validate our state. */
AMS_ASSERT(m_has_session);
/* TODO */
AMS_UNUSED(out);
AMS_ABORT();
}
Result SetDirectionInput() {
/* Validate our state. */
AMS_ASSERT(m_has_session);
/* TODO */
AMS_ABORT();
}
Result SetDirectionOutput(gpio::GpioValue value) {
/* Validate our state. */
AMS_ASSERT(m_has_session);
/* TODO */
AMS_UNUSED(value);
AMS_ABORT();
}
Result SetUnknownEnabled(bool enable) {
/* Validate our state. */
AMS_ASSERT(m_has_session);
/* TODO */
AMS_UNUSED(enable);
AMS_ABORT();
}
Result GetUnknownEnabled(ams::sf::Out<bool> out) {
/* Validate our state. */
AMS_ASSERT(m_has_session);