Improvements in cellSearch, cellUsbd and cellRudp

This commit is contained in:
Raul Tambre 2015-02-22 16:50:11 +02:00
parent c13ebc8692
commit 46e7207e93
8 changed files with 445 additions and 73 deletions

View file

@ -2,62 +2,43 @@
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
#include "Emu/SysCalls/Modules.h"
#include "cellRudp.h"
extern Module cellRudp;
// Return Codes
enum
struct cellRudpInternal
{
CELL_RUDP_SUCCESS = 0,
CELL_RUDP_ERROR_NOT_INITIALIZED = 0x80770001,
CELL_RUDP_ERROR_ALREADY_INITIALIZED = 0x80770002,
CELL_RUDP_ERROR_INVALID_CONTEXT_ID = 0x80770003,
CELL_RUDP_ERROR_INVALID_ARGUMENT = 0x80770004,
CELL_RUDP_ERROR_INVALID_OPTION = 0x80770005,
CELL_RUDP_ERROR_INVALID_MUXMODE = 0x80770006,
CELL_RUDP_ERROR_MEMORY = 0x80770007,
CELL_RUDP_ERROR_INTERNAL = 0x80770008,
CELL_RUDP_ERROR_CONN_RESET = 0x80770009,
CELL_RUDP_ERROR_CONN_REFUSED = 0x8077000a,
CELL_RUDP_ERROR_CONN_TIMEOUT = 0x8077000b,
CELL_RUDP_ERROR_CONN_VERSION_MISMATCH = 0x8077000c,
CELL_RUDP_ERROR_CONN_TRANSPORT_TYPE_MISMATCH = 0x8077000d,
CELL_RUDP_ERROR_QUALITY_LEVEL_MISMATCH = 0x8077000e,
CELL_RUDP_ERROR_THREAD = 0x8077000f,
CELL_RUDP_ERROR_THREAD_IN_USE = 0x80770010,
CELL_RUDP_ERROR_NOT_ACCEPTABLE = 0x80770011,
CELL_RUDP_ERROR_MSG_TOO_LARGE = 0x80770012,
CELL_RUDP_ERROR_NOT_BOUND = 0x80770013,
CELL_RUDP_ERROR_CANCELLED = 0x80770014,
CELL_RUDP_ERROR_INVALID_VPORT = 0x80770015,
CELL_RUDP_ERROR_WOULDBLOCK = 0x80770016,
CELL_RUDP_ERROR_VPORT_IN_USE = 0x80770017,
CELL_RUDP_ERROR_VPORT_EXHAUSTED = 0x80770018,
CELL_RUDP_ERROR_INVALID_SOCKET = 0x80770019,
CELL_RUDP_ERROR_BUFFER_TOO_SMALL = 0x8077001a,
CELL_RUDP_ERROR_MSG_MALFORMED = 0x8077001b,
CELL_RUDP_ERROR_ADDR_IN_USE = 0x8077001c,
CELL_RUDP_ERROR_ALREADY_BOUND = 0x8077001d,
CELL_RUDP_ERROR_ALREADY_EXISTS = 0x8077001e,
CELL_RUDP_ERROR_INVALID_POLL_ID = 0x8077001f,
CELL_RUDP_ERROR_TOO_MANY_CONTEXTS = 0x80770020,
CELL_RUDP_ERROR_IN_PROGRESS = 0x80770021,
CELL_RUDP_ERROR_NO_EVENT_HANDLER = 0x80770022,
CELL_RUDP_ERROR_PAYLOAD_TOO_LARGE = 0x80770023,
CELL_RUDP_ERROR_END_OF_DATA = 0x80770024,
CELL_RUDP_ERROR_ALREADY_ESTABLISHED = 0x80770025,
CELL_RUDP_ERROR_KEEP_ALIVE_FAILURE = 0x80770026,
bool m_bInitialized;
cellRudpInternal()
: m_bInitialized(false)
{
}
};
s32 cellRudpInit()
cellRudpInternal cellRudpInstance;
s32 cellRudpInit(vm::ptr<CellRudpAllocator> allocator)
{
UNIMPLEMENTED_FUNC(cellRudp);
cellRudp.Warning("cellRudpInit()");
if (cellRudpInstance.m_bInitialized)
return CELL_RUDP_ERROR_ALREADY_INITIALIZED;
cellRudpInstance.m_bInitialized = true;
return CELL_OK;
}
s32 cellRudpEnd()
{
UNIMPLEMENTED_FUNC(cellRudp);
cellRudp.Log("cellRudpInit()");
if (!cellRudpInstance.m_bInitialized)
return CELL_RUDP_ERROR_NOT_INITIALIZED;
cellRudpInstance.m_bInitialized = false;
return CELL_OK;
}

View file

@ -0,0 +1,52 @@
// Return Codes
enum
{
CELL_RUDP_SUCCESS = 0,
CELL_RUDP_ERROR_NOT_INITIALIZED = 0x80770001,
CELL_RUDP_ERROR_ALREADY_INITIALIZED = 0x80770002,
CELL_RUDP_ERROR_INVALID_CONTEXT_ID = 0x80770003,
CELL_RUDP_ERROR_INVALID_ARGUMENT = 0x80770004,
CELL_RUDP_ERROR_INVALID_OPTION = 0x80770005,
CELL_RUDP_ERROR_INVALID_MUXMODE = 0x80770006,
CELL_RUDP_ERROR_MEMORY = 0x80770007,
CELL_RUDP_ERROR_INTERNAL = 0x80770008,
CELL_RUDP_ERROR_CONN_RESET = 0x80770009,
CELL_RUDP_ERROR_CONN_REFUSED = 0x8077000a,
CELL_RUDP_ERROR_CONN_TIMEOUT = 0x8077000b,
CELL_RUDP_ERROR_CONN_VERSION_MISMATCH = 0x8077000c,
CELL_RUDP_ERROR_CONN_TRANSPORT_TYPE_MISMATCH = 0x8077000d,
CELL_RUDP_ERROR_QUALITY_LEVEL_MISMATCH = 0x8077000e,
CELL_RUDP_ERROR_THREAD = 0x8077000f,
CELL_RUDP_ERROR_THREAD_IN_USE = 0x80770010,
CELL_RUDP_ERROR_NOT_ACCEPTABLE = 0x80770011,
CELL_RUDP_ERROR_MSG_TOO_LARGE = 0x80770012,
CELL_RUDP_ERROR_NOT_BOUND = 0x80770013,
CELL_RUDP_ERROR_CANCELLED = 0x80770014,
CELL_RUDP_ERROR_INVALID_VPORT = 0x80770015,
CELL_RUDP_ERROR_WOULDBLOCK = 0x80770016,
CELL_RUDP_ERROR_VPORT_IN_USE = 0x80770017,
CELL_RUDP_ERROR_VPORT_EXHAUSTED = 0x80770018,
CELL_RUDP_ERROR_INVALID_SOCKET = 0x80770019,
CELL_RUDP_ERROR_BUFFER_TOO_SMALL = 0x8077001a,
CELL_RUDP_ERROR_MSG_MALFORMED = 0x8077001b,
CELL_RUDP_ERROR_ADDR_IN_USE = 0x8077001c,
CELL_RUDP_ERROR_ALREADY_BOUND = 0x8077001d,
CELL_RUDP_ERROR_ALREADY_EXISTS = 0x8077001e,
CELL_RUDP_ERROR_INVALID_POLL_ID = 0x8077001f,
CELL_RUDP_ERROR_TOO_MANY_CONTEXTS = 0x80770020,
CELL_RUDP_ERROR_IN_PROGRESS = 0x80770021,
CELL_RUDP_ERROR_NO_EVENT_HANDLER = 0x80770022,
CELL_RUDP_ERROR_PAYLOAD_TOO_LARGE = 0x80770023,
CELL_RUDP_ERROR_END_OF_DATA = 0x80770024,
CELL_RUDP_ERROR_ALREADY_ESTABLISHED = 0x80770025,
CELL_RUDP_ERROR_KEEP_ALIVE_FAILURE = 0x80770026,
};
typedef vm::ptr<u32>(CellRudpAllocatorFuncAlloc)(u32 size);
typedef u32(CellRudpAllocatorFuncFree)(vm::ptr<u32> ptr);
struct CellRudpAllocator
{
vm::ptr<CellRudpAllocatorFuncAlloc> app_malloc;
vm::ptr<CellRudpAllocatorFuncFree> app_free;
};

View file

@ -2,6 +2,7 @@
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
#include "Emu/SysCalls/Modules.h"
#include "cellScreenshot.h"
extern Module cellScreenshot;

View file

@ -2,44 +2,49 @@
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
#include "Emu/SysCalls/Modules.h"
#include "cellSearch.h"
extern Module cellSearch;
// Error Codes
enum
struct cellSearchInternal
{
CELL_SEARCH_OK = 0,
CELL_SEARCH_CANCELED = 1,
CELL_SEARCH_ERROR_PARAM = 0x8002C801,
CELL_SEARCH_ERROR_BUSY = 0x8002C802,
CELL_SEARCH_ERROR_NO_MEMORY = 0x8002C803,
CELL_SEARCH_ERROR_UNKNOWN_MODE = 0x8002C804,
CELL_SEARCH_ERROR_ALREADY_INITIALIZED = 0x8002C805,
CELL_SEARCH_ERROR_NOT_INITIALIZED = 0x8002C806,
CELL_SEARCH_ERROR_FINALIZING = 0x8002C807,
CELL_SEARCH_ERROR_NOT_SUPPORTED_SEARCH = 0x8002C808,
CELL_SEARCH_ERROR_CONTENT_OBSOLETE = 0x8002C809,
CELL_SEARCH_ERROR_CONTENT_NOT_FOUND = 0x8002C80A,
CELL_SEARCH_ERROR_NOT_LIST = 0x8002C80B,
CELL_SEARCH_ERROR_OUT_OF_RANGE = 0x8002C80C,
CELL_SEARCH_ERROR_INVALID_SEARCHID = 0x8002C80D,
CELL_SEARCH_ERROR_ALREADY_GOT_RESULT = 0x8002C80E,
CELL_SEARCH_ERROR_NOT_SUPPORTED_CONTEXT = 0x8002C80F,
CELL_SEARCH_ERROR_INVALID_CONTENTTYPE = 0x8002C810,
CELL_SEARCH_ERROR_DRM = 0x8002C811,
CELL_SEARCH_ERROR_TAG = 0x8002C812,
CELL_SEARCH_ERROR_GENERIC = 0x8002C8FF,
bool m_bInitialized;
cellSearchInternal()
: m_bInitialized(false)
{
}
};
s32 cellSearchInitialize()
cellSearchInternal cellSearchInstance;
s32 cellSearchInitialize(CellSearchMode mode, u32 container, CellSearchSystemCallback func, vm::ptr<u32> userData)
{
UNIMPLEMENTED_FUNC(cellSearch);
cellSearch.Todo("cellSearchInitialize()");
if (cellSearchInstance.m_bInitialized)
return CELL_SEARCH_ERROR_ALREADY_INITIALIZED;
if (mode != 0)
return CELL_SEARCH_ERROR_UNKNOWN_MODE;
if (!func)
return CELL_SEARCH_ERROR_PARAM;
cellSearchInstance.m_bInitialized = true;
// TODO: Store the arguments somewhere so we can use them later.
return CELL_OK;
}
s32 cellSearchFinalize()
{
UNIMPLEMENTED_FUNC(cellSearch);
cellSearch.Log("cellSearchFinalize()");
if (!cellSearchInstance.m_bInitialized)
return CELL_SEARCH_ERROR_NOT_INITIALIZED;
cellSearchInstance.m_bInitialized = false;
return CELL_OK;
}

View file

@ -0,0 +1,302 @@
// Error Codes
enum
{
CELL_SEARCH_OK = 0,
CELL_SEARCH_CANCELED = 1,
CELL_SEARCH_ERROR_PARAM = 0x8002C801,
CELL_SEARCH_ERROR_BUSY = 0x8002C802,
CELL_SEARCH_ERROR_NO_MEMORY = 0x8002C803,
CELL_SEARCH_ERROR_UNKNOWN_MODE = 0x8002C804,
CELL_SEARCH_ERROR_ALREADY_INITIALIZED = 0x8002C805,
CELL_SEARCH_ERROR_NOT_INITIALIZED = 0x8002C806,
CELL_SEARCH_ERROR_FINALIZING = 0x8002C807,
CELL_SEARCH_ERROR_NOT_SUPPORTED_SEARCH = 0x8002C808,
CELL_SEARCH_ERROR_CONTENT_OBSOLETE = 0x8002C809,
CELL_SEARCH_ERROR_CONTENT_NOT_FOUND = 0x8002C80A,
CELL_SEARCH_ERROR_NOT_LIST = 0x8002C80B,
CELL_SEARCH_ERROR_OUT_OF_RANGE = 0x8002C80C,
CELL_SEARCH_ERROR_INVALID_SEARCHID = 0x8002C80D,
CELL_SEARCH_ERROR_ALREADY_GOT_RESULT = 0x8002C80E,
CELL_SEARCH_ERROR_NOT_SUPPORTED_CONTEXT = 0x8002C80F,
CELL_SEARCH_ERROR_INVALID_CONTENTTYPE = 0x8002C810,
CELL_SEARCH_ERROR_DRM = 0x8002C811,
CELL_SEARCH_ERROR_TAG = 0x8002C812,
CELL_SEARCH_ERROR_GENERIC = 0x8002C8FF,
};
typedef be_t<s32> CellSearchId;
// Constants
enum
{
CELL_SEARCH_CONTENT_ID_SIZE = 16,
CELL_SEARCH_TITLE_LEN_MAX = 384,
CELL_SEARCH_TAG_NUM_MAX = 6,
CELL_SEARCH_TAG_LEN_MAX = 63,
CELL_MUSIC_SELECTION_CONTEXT_SIZE = 2048,
CELL_SEARCH_PATH_LEN_MAX = 63,
CELL_SEARCH_MTOPTION_LEN_MAX = 63,
};
// Sort keys
enum
{
CELL_SEARCH_SORTKEY_NONE = 0,
CELL_SEARCH_SORTKEY_DEFAULT = 1,
CELL_SEARCH_SORTKEY_TITLE = 2,
CELL_SEARCH_SORTKEY_ALBUMTITLE = 3,
CELL_SEARCH_SORTKEY_GENRENAME = 4,
CELL_SEARCH_SORTKEY_ARTISTNAME = 5,
CELL_SEARCH_SORTKEY_IMPORTEDDATE = 6,
CELL_SEARCH_SORTKEY_TRACKNUMBER = 7,
CELL_SEARCH_SORTKEY_TAKENDATE = 8,
CELL_SEARCH_SORTKEY_USERDEFINED = 9,
CELL_SEARCH_SORTKEY_MODIFIEDDATE = 10,
};
// Sort order
enum
{
CELL_SEARCH_SORTORDER_NONE = 0,
CELL_SEARCH_SORTORDER_ASCENDING = 1,
CELL_SEARCH_SOFTORDER_DESCENDING = 2,
};
// Content types
enum
{
CELL_SEARCH_CONTENTTYPE_NONE = 0,
CELL_SEARCH_CONTENTTYPE_MUSIC = 1,
CELL_SEARCH_CONTENTTYPE_MUSICLIST = 2,
CELL_SEARCH_CONTENTTYPE_PHOTO = 3,
CELL_SEARCH_CONTENTTYPE_PHOTOLIST = 4,
CELL_SEARCH_CONTENTTYPE_VIDEO = 5,
CELL_SEARCH_CONTENTTYPE_VIDEOLIST = 6,
CELL_SEARCH_CONTENTTYPE_SCENE = 7,
};
// Codecs
enum CellSearchCodec
{
CELL_SEARCH_CODEC_UNKNOWN = 0,
CELL_SEARCH_CODEC_MPEG2 = 1,
CELL_SEARCH_CODEC_MPEG4 = 2,
CELL_SEARCH_CODEC_AVC = 3,
CELL_SEARCH_CODEC_MPEG1 = 4,
CELL_SEARCH_CODEC_AT3 = 5,
CELL_SEARCH_CODEC_AT3P = 6,
CELL_SEARCH_CODEC_ATALL = 7,
CELL_SEARCH_CODEC_MP3 = 8,
CELL_SEARCH_CODEC_AAC = 9,
CELL_SEARCH_CODEC_LPCM = 10,
CELL_SEARCH_CODEC_WAV = 11,
CELL_SEARCH_CODEC_WMA = 12,
CELL_SEARCH_CODEC_JPEG = 13,
CELL_SEARCH_CODEC_PNG = 14,
CELL_SEARCH_CODEC_TIFF = 15,
CELL_SEARCH_CODEC_BMP = 16,
CELL_SEARCH_CODEC_GIF = 17,
CELL_SEARCH_CODEC_MPEG2_TS = 18,
CELL_SEARCH_CODEC_DSD = 19,
CELL_SEARCH_CODEC_AC3 = 20,
CELL_SEARCH_CODEC_MPEG1_LAYER1 = 21,
CELL_SEARCH_CODEC_MPEG1_LAYER2 = 22,
CELL_SEARCH_CODEC_MPEG1_LAYER3 = 23,
CELL_SEARCH_CODEC_MPEG2_LAYER1 = 24,
CELL_SEARCH_CODEC_MPEG2_LAYER2 = 25,
CELL_SEARCH_CODEC_MPEG2_LAYER3 = 26,
CELL_SEARCH_CODEC_MOTIONJPEG = 27,
CELL_SEARCH_CODEC_MPO = 28,
};
// Scene types
enum CellSearchSceneType
{
CELL_SEARCH_SCENETYPE_NONE = 0,
CELL_SEARCH_SCENETYPE_CHAPTER = 1,
CELL_SEARCH_SCENETYPE_CLIP_HIGHLIGHT = 2,
CELL_SEARCH_SCENETYPE_CLIP_USER = 3,
};
// List types
enum CellSearchListType
{
CELL_SEARCH_LISTTYPE_MUSIC_ALBUM = 1,
CELL_SEARCH_LISTTYPE_MUSIC_GENRE = 2,
CELL_SEARCH_LISTTYPE_MUSIC_ARTIST = 3,
CELL_SEARCH_LISTTYPE_MUSIC_PLAYLIST = 9,
};
// Content status
enum CellSearchContentStatus
{
CELL_SEARCH_CONTENTSTATUS_AVAILABLE,
CELL_SEARCH_CONTENTSTATUS_NOT_SUPPORTED,
CELL_SEARCH_CONTENTSTATUS_BROKEN,
};
// Search orientation
enum CellSearchOrientation
{
CELL_SEARCH_ORIENTATION_UNKNOWN,
CELL_SEARCH_ORIENTATION_TOP_LEFT,
CELL_SEARCH_ORIENTATION_TOP_RIGHT,
CELL_SEARCH_ORIENTATION_BOTTOM_RIGHT,
CELL_SEARCH_ORIENTATION_BOTTOM_LEFT,
};
// Search modes
enum CellSearchMode
{
CELL_SEARCH_MODE_NORMAL = 0,
};
// Search events
enum CellSearchEvent
{
CELL_SEARCH_EVENT_NOTIFICATION = 0,
CELL_SEARCH_EVENT_INITIALIZE_RESULT,
CELL_SEARCH_EVENT_FINALIZE_RESULT,
CELL_SEARCH_EVENT_LISTSEARCH_RESULT,
CELL_SEARCH_EVENT_CONTENTSEARCH_INLIST_RESULT,
CELL_SEARCH_EVENT_CONTENTSEARCH_RESULT,
CELL_SEARCH_EVENT_SCENESEARCH_INVIDEO_RESULT,
CELL_SEARCH_EVENT_SCENESEARCH_RESULT,
};
typedef void(CellSearchSystemCallback)(CellSearchEvent event, s32 result, vm::ptr<const u32> param, vm::ptr<u32> userData);
struct CellSearchContentId
{
char data[CELL_SEARCH_CONTENT_ID_SIZE];
};
struct CellSearchResultParam
{
CellSearchId searchId;
be_t<u32> resultNum;
};
struct CellSearchMusicListInfo
{
CellSearchListType listType;
be_t<u32> numOfItems;
be_t<s64> duration;
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved[3];
char artistName[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved2[3];
};
struct CellSearchPhotoListInfo
{
CellSearchListType listType;
be_t<u32> numOfItems;
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved[3];
};
struct CellSearchVideoListInfo
{
CellSearchListType listType;
be_t<u32> numOfItems;
be_t<s64> duration;
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved[3];
};
struct CellSearchMusicInfo
{
be_t<s64> duration;
be_t<s64> size;
be_t<s64> importedDate;
be_t<s64> lastPlayedDate;
be_t<s32> releasedYear;
be_t<s32> trackNumber;
be_t<s32> bitrate;
be_t<s32> samplingRate;
be_t<s32> quantizationBitrate;
be_t<s32> playCount;
be_t<s32> drmEncrypted;
CellSearchCodec codec;
CellSearchContentStatus status;
char diskNumber[8];
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved[3];
char albumTitle[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved2[3];
char artistName[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved3[3];
char genreName[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved4[3];
};
struct CellSearchPhotoInfo
{
be_t<s64> size;
be_t<s64> importedDate;
be_t<s64> takenDate;
be_t<s32> width;
be_t<s32> height;
CellSearchOrientation orientation;
CellSearchCodec codec;
CellSearchContentStatus status;
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved[3];
char albumTitle[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved2[3];
};
struct CellSearchVideoInfo
{
be_t<s64> duration;
be_t<s64> size;
be_t<s64> importedDate;
be_t<s64> takenDate;
be_t<s32> videoBitrate;
be_t<s32> audioBitrate;
be_t<s32> playCount;
be_t<s32> drmEncrypted;
CellSearchCodec videoCodec;
CellSearchCodec audioCodec;
CellSearchContentStatus status;
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved[3];
char albumTitle[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved2[3];
};
struct CellSearchVideoSceneInfo
{
CellSearchSceneType sceneType;
be_t<s64> startTime_ms;
be_t<s64> endTime_ms;
CellSearchContentId videoId;
char title[CELL_SEARCH_TITLE_LEN_MAX + 1];
char reserved[3];
char tags[CELL_SEARCH_TAG_NUM_MAX][CELL_SEARCH_TAG_LEN_MAX];
};
struct CellMusicSelectionContext
{
char data[CELL_MUSIC_SELECTION_CONTEXT_SIZE];
};
struct CellSearchContentInfoPath
{
char contentPath[CELL_SEARCH_PATH_LEN_MAX + 1];
char thumbnailPath[CELL_SEARCH_PATH_LEN_MAX + 1];
};
struct CellSearchContentInfoPathMovieThumb
{
char movieThumbnailPath[CELL_SEARCH_PATH_LEN_MAX + 1];
char movieThumbnailOption[CELL_SEARCH_MTOPTION_LEN_MAX + 1];
};
struct CellSearchTimeInfo
{
be_t<s64> takenDate;
be_t<s64> importedDate;
be_t<s64> modifiedDate;
};

View file

@ -2,20 +2,43 @@
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
#include "Emu/SysCalls/Modules.h"
#include "cellUsbd.h"
extern Module cellUsbd;
struct cellUsbdInternal
{
bool m_bInitialized;
cellUsbdInternal()
: m_bInitialized(false)
{
}
};
cellUsbdInternal cellUsbdInstance;
s32 cellUsbdInit()
{
UNIMPLEMENTED_FUNC(cellUsbd);
cellUsbd.Log("cellUsbdInit()");
if (cellUsbdInstance.m_bInitialized)
return CELL_USBD_ERROR_ALREADY_INITIALIZED;
cellUsbdInstance.m_bInitialized = true;
return CELL_OK;
}
s32 cellUsbdEnd()
{
UNIMPLEMENTED_FUNC(cellUsbd);
cellUsbd.Log("cellUsbdEnd()");
if (!cellUsbdInstance.m_bInitialized)
return CELL_USBD_ERROR_NOT_INITIALIZED;
cellUsbdInstance.m_bInitialized = false;
return CELL_OK;
}

View file

@ -485,8 +485,10 @@
<ClInclude Include="Emu\SysCalls\Modules\cellPngDec.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellResc.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellRtc.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellRudp.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellSail.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellScreenshot.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellSearch.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellSpurs.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellSpursJq.h" />
<ClInclude Include="Emu\SysCalls\Modules\cellSubdisplay.h" />

View file

@ -1525,5 +1525,11 @@
<ClInclude Include="Emu\SysCalls\Modules\cellScreenshot.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellRudp.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Emu\SysCalls\Modules\cellSearch.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
</ItemGroup>
</Project>