mirror of
https://github.com/wiiu-env/wut.git
synced 2024-12-05 03:44:19 +01:00
7492ff0483
Maybe we should start using clang-format for wut.
182 lines
5.2 KiB
C
182 lines
5.2 KiB
C
#pragma once
|
|
#include <wut.h>
|
|
#include <coreinit/ios.h>
|
|
|
|
/**
|
|
* \defgroup coreinit_userconfig User Config
|
|
* \ingroup coreinit
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef int32_t UCError;
|
|
typedef struct UCSysConfig UCSysConfig;
|
|
typedef struct UCAsyncParams UCAsyncParams;
|
|
|
|
typedef enum UCCommand
|
|
{
|
|
UC_CMD_READ_SYS_CONFIG = 0x30,
|
|
UC_CMD_WRITE_SYS_CONFIG = 0x31,
|
|
UC_CMD_DELETE_SYS_CONFIG = 0x32,
|
|
UC_CMD_QUERY_SYS_CONFIG = 0x33,
|
|
UC_CMD_LIST_SYS_CONFIG = 0x34,
|
|
} UCCommand;
|
|
|
|
typedef enum UCDataType
|
|
{
|
|
UC_DATATYPE_UNDEFINED = 0x00,
|
|
UC_DATATYPE_UNSIGNED_BYTE = 0x01,
|
|
UC_DATATYPE_UNSIGNED_SHORT = 0x02,
|
|
UC_DATATYPE_UNSIGNED_INT = 0x03,
|
|
UC_DATATYPE_SIGNED_INT = 0x04,
|
|
UC_DATATYPE_FLOAT = 0x05,
|
|
UC_DATATYPE_STRING = 0x06,
|
|
UC_DATATYPE_HEXBINARY = 0x07,
|
|
UC_DATATYPE_COMPLEX = 0x08,
|
|
UC_DATATYPE_INVALID = 0xFF,
|
|
} UCDataType;
|
|
|
|
typedef enum UCErrors
|
|
{
|
|
UC_ERROR_OK = 0,
|
|
UC_ERROR_ERROR = -1,
|
|
UC_ERROR_OTHER = -0x200001,
|
|
UC_ERROR_SYSTEM = -0x200002,
|
|
UC_ERROR_ALLOC = -0x200003,
|
|
UC_ERROR_OPCODE = -0x200004,
|
|
UC_ERROR_INVALID_PARAM = -0x200005,
|
|
UC_ERROR_INVALID_TYPE = -0x200006,
|
|
UC_ERROR_UNSUPPORTED = -0x200007,
|
|
UC_ERROR_NON_LEAF_NODE = -0x200008,
|
|
UC_ERROR_KEY_NOT_FOUND = -0x200009,
|
|
UC_ERROR_MODIFY = -0x20000A,
|
|
UC_ERROR_STRING_TOO_LONG = -0x20000B,
|
|
UC_ERROR_ROOT_KEYS_DIFFER = -0x20000C,
|
|
UC_ERROR_INVALID_LOCATION = -0x20000D,
|
|
UC_ERROR_BAD_COMMENT = -0x20000E,
|
|
UC_ERROR_READ_ACCESS = -0x20000F,
|
|
UC_ERROR_WRITE_ACCESS = -0x200010,
|
|
UC_ERROR_CREATE_ACCESS = -0x200011,
|
|
UC_ERROR_FILE_SYS_NAME = -0x200012,
|
|
UC_ERROR_FILE_SYS_INIT = -0x200013,
|
|
UC_ERROR_FILE_SYS_MOUNT = -0x200014,
|
|
UC_ERROR_FILE_OPEN = -0x200015,
|
|
UC_ERROR_FILE_STAT = -0x200016,
|
|
UC_ERROR_FILE_READ = -0x200017,
|
|
UC_ERROR_FILE_WRITE = -0x200018,
|
|
UC_ERROR_FILE_TOO_BIG = -0x200019,
|
|
UC_ERROR_FILE_REMOVE = -0x20001A,
|
|
UC_ERROR_FILE_RENAME = -0x20001B,
|
|
UC_ERROR_FILE_CLOSE = -0x20001C,
|
|
UC_ERROR_FILE_SEEK = -0x20001D,
|
|
UC_ERROR_FILE_CONFIRM = -0x20001E,
|
|
UC_ERROR_FILE_BACKUP = -0x20001F,
|
|
UC_ERROR_MALFORMED_XML = -0x200020,
|
|
UC_ERROR_VERSION = -0x200021,
|
|
UC_ERROR_NO_IPC_BUFFERS = -0x200022,
|
|
UC_ERROR_FILE_LOCK_NEEDED = -0x200024,
|
|
UC_ERROR_SYS_PROT = -0x200028,
|
|
} UCErrors;
|
|
|
|
typedef enum UCFileSys
|
|
{
|
|
UC_FILE_SYS_INVALID = 0x00,
|
|
UC_FILE_SYS_SYS = 0x01,
|
|
UC_FILE_SYS_SLC = 0x02,
|
|
UC_FILE_SYS_RAM = 0x03,
|
|
} UCFileSys;
|
|
|
|
#pragma pack(push, 1)
|
|
struct UCSysConfig
|
|
{
|
|
char name[64];
|
|
uint32_t access;
|
|
UCDataType dataType;
|
|
UCError error;
|
|
uint32_t dataSize;
|
|
void *data;
|
|
};
|
|
#pragma pack(pop)
|
|
WUT_CHECK_OFFSET(UCSysConfig, 0x00, name);
|
|
WUT_CHECK_OFFSET(UCSysConfig, 0x40, access);
|
|
WUT_CHECK_OFFSET(UCSysConfig, 0x44, dataType);
|
|
WUT_CHECK_OFFSET(UCSysConfig, 0x48, error);
|
|
WUT_CHECK_OFFSET(UCSysConfig, 0x4C, dataSize);
|
|
WUT_CHECK_OFFSET(UCSysConfig, 0x50, data);
|
|
WUT_CHECK_SIZE(UCSysConfig, 0x54);
|
|
|
|
typedef void (*UCAsyncCallbackFn)(UCError result,
|
|
UCCommand command,
|
|
uint32_t count,
|
|
UCSysConfig *settings,
|
|
void *context);
|
|
#pragma pack(push, 1)
|
|
struct UCAsyncParams
|
|
{
|
|
UCAsyncCallbackFn callback;
|
|
void *context;
|
|
UCCommand command;
|
|
uint32_t unk0x0C;
|
|
uint32_t count;
|
|
UCSysConfig *settings;
|
|
IOSVec *vecs;
|
|
};
|
|
#pragma pack(pop)
|
|
WUT_CHECK_OFFSET(UCAsyncParams, 0x00, callback);
|
|
WUT_CHECK_OFFSET(UCAsyncParams, 0x04, context);
|
|
WUT_CHECK_OFFSET(UCAsyncParams, 0x08, command);
|
|
WUT_CHECK_OFFSET(UCAsyncParams, 0x0C, unk0x0C);
|
|
WUT_CHECK_OFFSET(UCAsyncParams, 0x10, count);
|
|
WUT_CHECK_OFFSET(UCAsyncParams, 0x14, settings);
|
|
WUT_CHECK_OFFSET(UCAsyncParams, 0x18, vecs);
|
|
WUT_CHECK_SIZE(UCAsyncParams, 0x1C);
|
|
|
|
UCError
|
|
UCOpen();
|
|
|
|
UCError
|
|
UCClose(IOSHandle handle);
|
|
|
|
UCError
|
|
UCDeleteSysConfig(int32_t handle,
|
|
uint32_t count,
|
|
UCSysConfig *settings);
|
|
|
|
UCError
|
|
UCDeleteSysConfigAsync(int32_t handle,
|
|
uint32_t count,
|
|
UCSysConfig *settings,
|
|
UCAsyncParams *asyncParams);
|
|
|
|
UCError
|
|
UCReadSysConfig(int32_t handle,
|
|
uint32_t count,
|
|
UCSysConfig *settings);
|
|
|
|
UCError
|
|
UCReadSysConfigAsync(int32_t handle,
|
|
uint32_t count,
|
|
UCSysConfig *settings,
|
|
UCAsyncParams *asyncParams);
|
|
|
|
UCError
|
|
UCWriteSysConfig(int32_t handle,
|
|
uint32_t count,
|
|
UCSysConfig *settings);
|
|
|
|
UCError
|
|
UCWriteSysConfigAsync(int32_t handle,
|
|
uint32_t count,
|
|
UCSysConfig *settings,
|
|
UCAsyncParams *asyncParams);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
/** @} */
|