#include "prx/libc/include/general/VabiMacros.hpp" #include #include #include extern "C" { int APS5_VABI sceUsbStorageDialogInitialize(void); int APS5_VABI sceUsbStorageDialogOpen(const void* param); int APS5_VABI sceUsbStorageDialogUpdateStatus(void); int APS5_VABI sceUsbStorageDialogGetStatus(void); int APS5_VABI sceUsbStorageDialogGetResult(void* result); int APS5_VABI sceUsbStorageDialogClose(void); int APS5_VABI sceUsbStorageDialogTerminate(void); } namespace { void Require(bool value) { if (!value) std::abort(); } constexpr int kStatusNone = 0; constexpr int kStatusInitialized = 1; constexpr int kStatusRunning = 2; constexpr int kStatusFinished = 3; constexpr int kErrNotInitialized = static_cast(0x80B80003); constexpr int kErrAlreadyInitialized = static_cast(0x80B80004); constexpr int kErrNotFinished = static_cast(0x80B80005); constexpr int kErrBusy = static_cast(0x80B80007); constexpr int kErrNotRunning = static_cast(0x80B8000B); constexpr int kErrArgNull = static_cast(0x80B8000D); constexpr int kResultUserCanceled = 1; } int main() { std::int64_t param = 0; std::int32_t result = 0x5a5a5a5a; Require(sceUsbStorageDialogTerminate() == kErrNotInitialized); Require(sceUsbStorageDialogOpen(¶m) == kErrNotInitialized); Require(sceUsbStorageDialogClose() == kErrNotInitialized); Require(sceUsbStorageDialogGetResult(&result) == kErrNotInitialized); Require(sceUsbStorageDialogGetStatus() == kStatusNone); Require(sceUsbStorageDialogUpdateStatus() == kStatusNone); Require(sceUsbStorageDialogInitialize() == 0); Require(sceUsbStorageDialogInitialize() == kErrAlreadyInitialized); Require(sceUsbStorageDialogGetStatus() == kStatusInitialized); Require(sceUsbStorageDialogOpen(nullptr) == kErrArgNull); Require(sceUsbStorageDialogGetResult(&result) == kErrNotFinished); Require(sceUsbStorageDialogOpen(¶m) == 0); Require(sceUsbStorageDialogOpen(¶m) == kErrBusy); Require(sceUsbStorageDialogGetStatus() == kStatusRunning); Require(sceUsbStorageDialogGetResult(&result) == kErrNotFinished); Require(sceUsbStorageDialogUpdateStatus() == kStatusFinished); Require(sceUsbStorageDialogGetStatus() == kStatusFinished); Require(sceUsbStorageDialogGetResult(nullptr) == kErrArgNull); Require(sceUsbStorageDialogGetResult(&result) == 0); Require(result == kResultUserCanceled); Require(sceUsbStorageDialogClose() == kErrNotRunning); Require(sceUsbStorageDialogTerminate() == 0); Require(sceUsbStorageDialogTerminate() == kErrNotInitialized); Require(sceUsbStorageDialogGetStatus() == kStatusNone); Require(sceUsbStorageDialogInitialize() == 0); Require(sceUsbStorageDialogOpen(¶m) == 0); Require(sceUsbStorageDialogGetStatus() == kStatusRunning); Require(sceUsbStorageDialogClose() == 0); Require(sceUsbStorageDialogGetStatus() == kStatusFinished); result = 0; Require(sceUsbStorageDialogGetResult(&result) == 0); Require(result == kResultUserCanceled); Require(sceUsbStorageDialogTerminate() == 0); return 0; }