#ifndef FS_DEFS_H #define FS_DEFS_H #include #ifdef __cplusplus extern "C" { #endif #include "os_types.h" /* FS defines and types */ #define FS_MAX_LOCALPATH_SIZE 511 #define FS_MAX_MOUNTPATH_SIZE 128 #define FS_MAX_FULLPATH_SIZE (FS_MAX_LOCALPATH_SIZE + FS_MAX_MOUNTPATH_SIZE) #define FS_MAX_ARGPATH_SIZE FS_MAX_FULLPATH_SIZE #define FS_STATUS_OK 0 #define FS_STATUS_EOF -2 #define FS_RET_UNSUPPORTED_CMD 0x0400 #define FS_RET_NO_ERROR 0x0000 #define FS_RET_ALL_ERROR (u32)(-1) #define FS_STAT_FLAG_IS_DIRECTORY 0x80000000 /* max length of file/dir name */ #define FS_MAX_ENTNAME_SIZE 256 #define FS_SOURCETYPE_EXTERNAL 0 #define FS_SOURCETYPE_HFIO 1 #define FS_MOUNT_SOURCE_SIZE 0x300 #define FS_CLIENT_SIZE 0x1700 #define FS_CMD_BLOCK_SIZE 0xA80 struct FSClient { u8 buffer[FS_CLIENT_SIZE]; }; struct FSCmdBlock { u8 buffer[FS_CMD_BLOCK_SIZE]; }; typedef struct { uint32_t flag; uint32_t permission; uint32_t owner_id; uint32_t group_id; uint32_t size; uint32_t alloc_size; uint64_t quota_size; uint32_t ent_id; uint64_t ctime; uint64_t mtime; uint8_t attributes[48]; } __attribute__((packed)) FSStat; typedef struct { FSStat stat; char name[FS_MAX_ENTNAME_SIZE]; } FSDirEntry; typedef void (*FSAsyncCallback)(void *pClient, void *pCmd, int result, void *context); typedef struct { FSAsyncCallback userCallback; void *userContext; OSMessageQueue *ioMsgQueue; } FSAsyncParams; typedef struct{ void* data; // pointer to a FSAsyncResult; u32 unkwn1; u32 unkwn2; u32 unkwn3; // always 0x08 } __attribute__((packed)) FSMessage; typedef struct FSAsyncResult_{ FSAsyncParams userParams; FSMessage ioMsg; struct FSClient * client; struct FSCmdBlock * block; u32 result; } FSAsyncResult; #ifdef __cplusplus } #endif #endif /* FS_DEFS_H */