mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 00:22:57 -05:00
The param is void*, as RommPS declares it. The test also passes a null and an empty URI and a param that must stay untouched, and compares against 0x8002002D itself. The debt entries now say the error is returned for any arguments and that the param layout and the console's argument checks are unknown.
68 lines
3.4 KiB
C++
68 lines
3.4 KiB
C++
#include "SceTypes.hpp"
|
|
#include "prx/libSceSystemService/SystemService.hpp"
|
|
#include <cstddef>
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
#include <stdexcept>
|
|
|
|
extern "C" int APS5_VABI sceSystemServiceGetHdrToneMapLuminance(SystemServiceHdrToneMapLuminance* luminance);
|
|
extern "C" int APS5_VABI sceSystemServiceParamGetString(int paramId, char* buf, std::size_t bufSize);
|
|
|
|
namespace {
|
|
|
|
constexpr int browserUnavailable = static_cast<int>(0x8002002Du);
|
|
|
|
void Require(bool value) { if (!value) std::abort(); }
|
|
|
|
bool ParamGetStringThrows(int paramId, char* buf, std::size_t bufSize) {
|
|
try {
|
|
static_cast<void>(sceSystemServiceParamGetString(paramId, buf, bufSize));
|
|
} catch (const std::runtime_error&) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
extern "C" int APS5_VABI sceSystemServicePowerTick(void);
|
|
extern "C" int APS5_VABI sceSystemServiceReportAbnormalTermination(const void* info);
|
|
extern "C" int APS5_VABI sceSystemServiceDisableMusicPlayer(void);
|
|
extern "C" int APS5_VABI sceSystemServiceReenableMusicPlayer(void);
|
|
extern "C" int APS5_VABI sceSystemServiceLaunchWebBrowser(const char* uri, void* param);
|
|
|
|
int main() {
|
|
Require(sceSystemServicePowerTick() == SYSTEM_SERVICE_OK);
|
|
Require(sceSystemServicePowerTick() == SYSTEM_SERVICE_OK);
|
|
Require(sceSystemServiceReportAbnormalTermination(nullptr) == SYSTEM_SERVICE_OK);
|
|
int info = 0;
|
|
Require(sceSystemServiceReportAbnormalTermination(&info) == SYSTEM_SERVICE_OK);
|
|
Require(sceSystemServiceDisableMusicPlayer() == SYSTEM_SERVICE_OK);
|
|
Require(sceSystemServiceDisableMusicPlayer() == SYSTEM_SERVICE_OK);
|
|
Require(sceSystemServiceReenableMusicPlayer() == SYSTEM_SERVICE_OK);
|
|
Require(sceSystemServiceReenableMusicPlayer() == SYSTEM_SERVICE_OK);
|
|
Require(sceSystemServiceLaunchWebBrowser("http://127.0.0.1:8780/video?v=0", nullptr) == browserUnavailable);
|
|
unsigned char browserParam[64];
|
|
std::memset(browserParam, 0x5a, sizeof(browserParam));
|
|
Require(sceSystemServiceLaunchWebBrowser("https://example.com/", browserParam) == browserUnavailable);
|
|
for (unsigned char byte : browserParam) Require(byte == 0x5a);
|
|
Require(sceSystemServiceLaunchWebBrowser("", nullptr) == browserUnavailable);
|
|
Require(sceSystemServiceLaunchWebBrowser(nullptr, nullptr) == browserUnavailable);
|
|
Require(sceSystemServiceGetHdrToneMapLuminance(nullptr) == SYSTEM_SERVICE_ERROR_PARAMETER);
|
|
SystemServiceHdrToneMapLuminance luminance{-1.0f, -1.0f, -1.0f};
|
|
Require(sceSystemServiceGetHdrToneMapLuminance(&luminance) == SYSTEM_SERVICE_OK);
|
|
Require(luminance.max_full_frame_tone_map_luminance == 100.0f);
|
|
Require(luminance.max_tone_map_luminance == 100.0f);
|
|
Require(luminance.min_tone_map_luminance == 0.0f);
|
|
|
|
char name[SYSTEM_SERVICE_MAX_SYSTEM_NAME_LENGTH];
|
|
std::memset(name, 'x', sizeof(name));
|
|
Require(sceSystemServiceParamGetString(SYSTEM_SERVICE_PARAM_ID_SYSTEM_NAME, nullptr, sizeof(name)) == SYSTEM_SERVICE_ERROR_PARAMETER);
|
|
Require(sceSystemServiceParamGetString(SYSTEM_SERVICE_PARAM_ID_SYSTEM_NAME, name, 0) == SYSTEM_SERVICE_ERROR_PARAMETER);
|
|
Require(ParamGetStringThrows(SYSTEM_SERVICE_PARAM_ID_SYSTEM_NAME, name, sizeof(name) - 1));
|
|
Require(ParamGetStringThrows(SYSTEM_SERVICE_PARAM_ID_LANG, name, sizeof(name)));
|
|
Require(name[0] == 'x');
|
|
Require(sceSystemServiceParamGetString(SYSTEM_SERVICE_PARAM_ID_SYSTEM_NAME, name, sizeof(name)) == SYSTEM_SERVICE_OK);
|
|
Require(std::strcmp(name, "PS5") == 0);
|
|
}
|