2022-06-09 19:11:30 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <coreinit/filesystem.h>
|
|
|
|
#include <mocha/commands.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2022-07-22 13:49:11 +02:00
|
|
|
typedef enum MochaUtilsStatus {
|
2022-06-09 19:11:30 +02:00
|
|
|
MOCHA_RESULT_SUCCESS = 0,
|
|
|
|
MOCHA_RESULT_INVALID_ARGUMENT = -0x01,
|
|
|
|
MOCHA_RESULT_MAX_CLIENT = -0x02,
|
2022-07-22 13:58:00 +02:00
|
|
|
MOCHA_RESULT_NOT_FOUND = -0x06,
|
2022-06-09 19:11:30 +02:00
|
|
|
MOCHA_RESULT_UNSUPPORTED_API_VERSION = -0x10,
|
|
|
|
MOCHA_RESULT_UNSUPPORTED_COMMAND = -0x11,
|
|
|
|
MOCHA_RESULT_LIB_UNINITIALIZED = -0x20,
|
|
|
|
MOCHA_RESULT_UNKNOWN_ERROR = -0x100,
|
2022-07-22 13:49:11 +02:00
|
|
|
} MochaUtilsStatus;
|
2022-06-09 19:11:30 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Initializes the mocha lib. Needs to be called before any other functions can be used
|
|
|
|
* @return MOCHA_RESULT_SUCCESS: Library has been successfully initialized <br>
|
|
|
|
* MOCHA_RESULT_UNSUPPORTED_COMMAND: Failed to initialize the library caused by an outdated mocha version.
|
|
|
|
*/
|
|
|
|
MochaUtilsStatus Mocha_InitLibrary();
|
|
|
|
|
|
|
|
MochaUtilsStatus Mocha_DeInitLibrary();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieves the API Version of the running mocha.
|
|
|
|
*
|
|
|
|
* @param outVersion pointer to the variable where the version will be stored.
|
|
|
|
*
|
|
|
|
* @return MOCHA_RESULT_SUCCESS: The API version has been store in the version ptr<br>
|
|
|
|
* MOCHA_RESULT_INVALID_ARGUMENT: invalid version pointer<br>
|
|
|
|
* MOCHA_RESULT_UNSUPPORTED_API_VERSION: Failed to get the API version caused by an outdated mocha version.
|
|
|
|
*/
|
|
|
|
MochaUtilsStatus Mocha_CheckAPIVersion(uint32_t *outVersion);
|
|
|
|
|
|
|
|
/***
|
|
|
|
* Returns the path of the currently loaded environment
|
|
|
|
* @param environmentPathBuffer: buffer where the result will be stored
|
|
|
|
* @param bufferLen: length of the buffer. Required to be >= 0x100
|
|
|
|
* @return MOCHA_RESULT_SUCCESS: The environment path has been stored in environmentPathBuffer<br>
|
|
|
|
* MOCHA_RESULT_INVALID_ARGUMENT: invalid environmentPathBuffer pointer or bufferLen \< 0x100<br>
|
|
|
|
* MOCHA_RESULT_LIB_UNINITIALIZED: Library was not initialized. Call Mocha_InitLibrary() before using this function.<br>
|
|
|
|
* MOCHA_RESULT_UNSUPPORTED_COMMAND: Command not supported by the currently loaded mocha version.<br>
|
|
|
|
* MOCHA_RESULT_UNKNOWN_ERROR: Failed to retrieve the environment path.
|
|
|
|
*/
|
|
|
|
MochaUtilsStatus Mocha_GetEnvironmentPath(char *environmentPathBuffer, uint32_t bufferLen);
|
|
|
|
|
2022-07-22 13:48:43 +02:00
|
|
|
/**
|
|
|
|
* Enables logging via USB (FTDI FT232 chipset only) via OSReport and friends. <br>
|
|
|
|
* @param notSkipExistingLogs If set to true, existing logs of this session won't be skipped.
|
|
|
|
* @return MOCHA_RESULT_SUCCESS: Logging via USB starts or has already been started<br>
|
|
|
|
* MOCHA_RESULT_LIB_UNINITIALIZED: Library was not initialized. Call Mocha_InitLibrary() before using this function.<br>
|
|
|
|
* MOCHA_RESULT_UNSUPPORTED_COMMAND: Command not supported by the currently loaded mocha version.<br>
|
|
|
|
* MOCHA_RESULT_UNKNOWN_ERROR: Failed to retrieve the environment path.
|
2022-06-09 19:11:30 +02:00
|
|
|
*/
|
2022-07-22 13:48:43 +02:00
|
|
|
MochaUtilsStatus Mocha_StartUSBLogging(bool notSkipExistingLogs);
|
2022-06-09 19:11:30 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gives a FSClient full permissions. <br>
|
|
|
|
* Requires Mocha API Version: 1
|
|
|
|
* @param client The FSClient that should have full permission
|
|
|
|
* @return MOCHA_RESULT_SUCCESS: The has been unlocked successfully.
|
|
|
|
* MOCHA_RESULT_MAX_CLIENT: The maximum number of FS Clients have been unlocked.<br>
|
|
|
|
* MOCHA_RESULT_LIB_UNINITIALIZED: Library was not initialized. Call Mocha_InitLibrary() before using this function.<br>
|
|
|
|
* MOCHA_RESULT_UNSUPPORTED_COMMAND: Command not supported by the currently loaded mocha version.<br>
|
|
|
|
* MOCHA_RESULT_UNKNOWN_ERROR: Failed to retrieve the environment path.
|
|
|
|
*/
|
|
|
|
MochaUtilsStatus Mocha_UnlockFSClient(FSClient *client);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gives a /dev/fsa handle full permissions. <br>
|
|
|
|
* Requires Mocha API Version: 1
|
|
|
|
* @param client The /dev/fsa handle that should have full permission
|
|
|
|
* @return MOCHA_RESULT_SUCCESS: The has been unlocked successfully.
|
|
|
|
* MOCHA_RESULT_MAX_CLIENT: The maximum number of FS Clients have been unlocked.<br>
|
|
|
|
* MOCHA_RESULT_LIB_UNINITIALIZED: Library was not initialized. Call Mocha_InitLibrary() before using this function.<br>
|
|
|
|
* MOCHA_RESULT_UNSUPPORTED_COMMAND: Command not supported by the currently loaded mocha version.<br>
|
|
|
|
* MOCHA_RESULT_UNKNOWN_ERROR: Failed to retrieve the environment path.
|
|
|
|
*/
|
|
|
|
MochaUtilsStatus Mocha_UnlockFSClientEx(int clientHandle);
|
|
|
|
|
|
|
|
MochaUtilsStatus Mocha_LoadRPXOnNextLaunch(MochaRPXLoadInfo *loadInfo);
|
|
|
|
|
|
|
|
typedef struct WUDDiscKey {
|
|
|
|
uint8_t key[0x10];
|
|
|
|
} WUDDiscKey;
|
|
|
|
|
2022-07-22 13:58:00 +02:00
|
|
|
/**
|
|
|
|
* Reads the disc key (used to decrypt the SI partition) of the inserted disc.
|
|
|
|
*
|
|
|
|
* @param discKey target buffer where the result will be stored.
|
|
|
|
* @return MOCHA_RESULT_SUCCESS: The disc key of the inserted disc has been read into the given buffer.<br>
|
|
|
|
* MOCHA_RESULT_INVALID_ARGUMENT: The given discKey buffer was NULL <br>
|
|
|
|
* MOCHA_RESULT_LIB_UNINITIALIZED: Library was not initialized. Call Mocha_InitLibrary() before using this function.<br>
|
|
|
|
* MOCHA_RESULT_UNSUPPORTED_COMMAND: Command not supported by the currently loaded mocha version.<br>
|
|
|
|
* MOCHA_RESULT_NOT_FOUND: Failed to obtain disc key, no disc inserted?.
|
|
|
|
* MOCHA_RESULT_UNKNOWN_ERROR: Unknown error.
|
|
|
|
*/
|
2022-06-09 19:11:30 +02:00
|
|
|
MochaUtilsStatus Mocha_ODMGetDiscKey(WUDDiscKey *discKey);
|
|
|
|
|
|
|
|
MochaUtilsStatus Mocha_SEEPROMRead(uint8_t *out_buffer, uint32_t offset, uint32_t size);
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
} // extern "C"
|
|
|
|
#endif
|