mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 00:22:57 -05:00
47 lines
2.4 KiB
C++
47 lines
2.4 KiB
C++
#include "SceTypes.hpp"
|
|
#include <cstdlib>
|
|
|
|
extern "C" {
|
|
int APS5_VABI sceNpRegisterNpReachabilityStateCallback(void*, void*);
|
|
int APS5_VABI sceNpUnregisterNpReachabilityStateCallback();
|
|
int APS5_VABI sceNpGetNpReachabilityState(int, uint32_t*);
|
|
int APS5_VABI sceNpCheckCallback();
|
|
int APS5_VABI sceNpCheckNpAvailability(int, const NpOnlineId*, std::uint8_t*);
|
|
}
|
|
|
|
static constexpr int ErrorArgument = static_cast<int>(0x80550003);
|
|
static constexpr int ErrorAlreadyRegistered = static_cast<int>(0x80550008);
|
|
static constexpr int ErrorNotRegistered = static_cast<int>(0x80550009);
|
|
static constexpr int ErrorUserNotFound = static_cast<int>(0x80550007);
|
|
static void Require(bool value) { if (!value) std::abort(); }
|
|
static void APS5_VABI Callback(int, uint32_t, void*) { std::abort(); }
|
|
|
|
int main() {
|
|
int userdata = 0;
|
|
auto* callback = reinterpret_cast<void*>(&Callback);
|
|
Require(sceNpUnregisterNpReachabilityStateCallback() == ErrorNotRegistered);
|
|
Require(sceNpRegisterNpReachabilityStateCallback(nullptr, &userdata) == ErrorArgument);
|
|
Require(sceNpRegisterNpReachabilityStateCallback(callback, &userdata) == 0);
|
|
Require(sceNpRegisterNpReachabilityStateCallback(callback, nullptr) == ErrorAlreadyRegistered);
|
|
Require(sceNpRegisterNpReachabilityStateCallback(nullptr, nullptr) == ErrorArgument);
|
|
uint32_t state = 99;
|
|
Require(sceNpGetNpReachabilityState(0, &state) == 0 && state == 0);
|
|
Require(sceNpCheckCallback() == 0);
|
|
Require(sceNpUnregisterNpReachabilityStateCallback() == 0);
|
|
Require(sceNpUnregisterNpReachabilityStateCallback() == ErrorNotRegistered);
|
|
Require(sceNpRegisterNpReachabilityStateCallback(callback, nullptr) == 0);
|
|
Require(sceNpUnregisterNpReachabilityStateCallback() == 0);
|
|
NpOnlineId onlineId{};
|
|
onlineId.data[0] = 'p';
|
|
Require(sceNpCheckNpAvailability(1, &onlineId, nullptr) == ErrorUserNotFound);
|
|
Require(sceNpCheckNpAvailability(1, nullptr, nullptr) == ErrorArgument);
|
|
std::uint8_t available[3]{0x55, 0x55, 0x55};
|
|
Require(sceNpCheckNpAvailability(0, &onlineId, &available[1]) == ErrorArgument);
|
|
Require(available[1] == 0x55);
|
|
Require(sceNpCheckNpAvailability(1, nullptr, &available[1]) == ErrorArgument);
|
|
Require(available[1] == 0x55);
|
|
Require(sceNpCheckNpAvailability(1, &onlineId, &available[1]) == ErrorUserNotFound);
|
|
Require(available[0] == 0x55 && available[1] == 0 && available[2] == 0x55);
|
|
|
|
}
|