2014-07-12 09:46:14 +02:00
|
|
|
#include "stdafx.h"
|
2015-02-22 12:38:14 +01:00
|
|
|
#include "Emu/Memory/Memory.h"
|
|
|
|
|
#include "Emu/System.h"
|
|
|
|
|
#include "Emu/SysCalls/Modules.h"
|
2015-07-15 10:52:20 +02:00
|
|
|
|
|
|
|
|
#include "sys_net.h"
|
2015-02-22 15:50:11 +01:00
|
|
|
#include "cellRudp.h"
|
2013-09-28 04:36:57 +02:00
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
extern Module cellRudp;
|
2013-09-28 04:36:57 +02:00
|
|
|
|
2015-02-22 15:50:11 +01:00
|
|
|
struct cellRudpInternal
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
2015-02-22 15:50:11 +01:00
|
|
|
bool m_bInitialized;
|
2015-07-15 10:52:20 +02:00
|
|
|
CellRudpAllocator allocator;
|
|
|
|
|
vm::ptr<CellRudpEventHandler> handler;
|
|
|
|
|
u32 argument;
|
2015-02-22 15:50:11 +01:00
|
|
|
|
|
|
|
|
cellRudpInternal()
|
|
|
|
|
: m_bInitialized(false)
|
|
|
|
|
{
|
|
|
|
|
}
|
2013-09-28 04:36:57 +02:00
|
|
|
};
|
|
|
|
|
|
2015-02-22 15:50:11 +01:00
|
|
|
cellRudpInternal cellRudpInstance;
|
|
|
|
|
|
|
|
|
|
s32 cellRudpInit(vm::ptr<CellRudpAllocator> allocator)
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
2015-07-15 10:52:20 +02:00
|
|
|
cellRudp.Warning("cellRudpInit(allocator_addr=0x%x)", allocator.addr());
|
2015-02-22 15:50:11 +01:00
|
|
|
|
|
|
|
|
if (cellRudpInstance.m_bInitialized)
|
2015-07-15 10:52:20 +02:00
|
|
|
{
|
|
|
|
|
cellRudp.Error("cellRudpInit(): cellRudp has already been initialized.");
|
2015-02-22 15:50:11 +01:00
|
|
|
return CELL_RUDP_ERROR_ALREADY_INITIALIZED;
|
2015-07-15 10:52:20 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (allocator)
|
|
|
|
|
{
|
|
|
|
|
cellRudpInstance.allocator = *allocator.get_ptr();
|
|
|
|
|
}
|
2015-02-22 15:50:11 +01:00
|
|
|
|
|
|
|
|
cellRudpInstance.m_bInitialized = true;
|
|
|
|
|
|
2013-09-28 04:36:57 +02:00
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpEnd()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
2015-07-15 10:52:20 +02:00
|
|
|
cellRudp.Log("cellRudpEnd()");
|
2015-02-22 15:50:11 +01:00
|
|
|
|
|
|
|
|
if (!cellRudpInstance.m_bInitialized)
|
2015-07-15 10:52:20 +02:00
|
|
|
{
|
|
|
|
|
cellRudp.Error("cellRudpEnd(): cellRudp has not been initialized.");
|
2015-02-22 15:50:11 +01:00
|
|
|
return CELL_RUDP_ERROR_NOT_INITIALIZED;
|
2015-07-15 10:52:20 +02:00
|
|
|
}
|
2015-02-22 15:50:11 +01:00
|
|
|
|
|
|
|
|
cellRudpInstance.m_bInitialized = false;
|
|
|
|
|
|
2013-09-28 04:36:57 +02:00
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpEnableInternalIOThread()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-15 10:52:20 +02:00
|
|
|
s32 cellRudpSetEventHandler(vm::ptr<CellRudpEventHandler> handler, vm::ptr<u32> arg)
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
2015-07-15 10:52:20 +02:00
|
|
|
cellRudp.Todo("cellRudpSetEventHandler(handler=0x%x, arg_addr=0x%x)", handler, arg.addr());
|
|
|
|
|
|
|
|
|
|
if (!cellRudpInstance.m_bInitialized)
|
|
|
|
|
{
|
|
|
|
|
cellRudp.Error("cellRudpInit(): cellRudp has not been initialized.");
|
|
|
|
|
return CELL_RUDP_ERROR_NOT_INITIALIZED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cellRudpInstance.argument = *arg.get_ptr();
|
|
|
|
|
cellRudpInstance.handler = handler;
|
|
|
|
|
|
2013-09-28 04:36:57 +02:00
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpSetMaxSegmentSize()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpGetMaxSegmentSize()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpCreateContext()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpSetOption()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpGetOption()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpGetContextStatus()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpGetStatus()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpGetLocalInfo()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpGetRemoteInfo()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpBind()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpInitiate()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpActivate()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpTerminate()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpRead()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpWrite()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpGetSizeReadable()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpGetSizeWritable()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpFlush()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpPollCreate()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpPollDestroy()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpPollControl()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpPollWait()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpNetReceived()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
s32 cellRudpProcessEvents()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
|
|
|
|
UNIMPLEMENTED_FUNC(cellRudp);
|
|
|
|
|
return CELL_OK;
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-22 12:38:14 +01:00
|
|
|
Module cellRudp("cellRudp", []()
|
2013-09-28 04:36:57 +02:00
|
|
|
{
|
2015-02-23 16:09:52 +01:00
|
|
|
cellRudpInstance.m_bInitialized = false;
|
|
|
|
|
|
2015-02-20 14:58:40 +01:00
|
|
|
REG_FUNC(cellRudp, cellRudpInit);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpEnd);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpEnableInternalIOThread);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpSetEventHandler);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpSetMaxSegmentSize);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpGetMaxSegmentSize);
|
|
|
|
|
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpCreateContext);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpSetOption);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpGetOption);
|
|
|
|
|
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpGetContextStatus);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpGetStatus);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpGetLocalInfo);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpGetRemoteInfo);
|
|
|
|
|
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpBind);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpInitiate);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpActivate);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpTerminate);
|
|
|
|
|
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpRead);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpWrite);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpGetSizeReadable);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpGetSizeWritable);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpFlush);
|
|
|
|
|
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpPollCreate);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpPollDestroy);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpPollControl);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpPollWait);
|
2015-02-22 12:38:14 +01:00
|
|
|
//REG_FUNC(cellRudp, cellRudpPollCancel);
|
2013-09-28 04:36:57 +02:00
|
|
|
|
2015-02-20 14:58:40 +01:00
|
|
|
REG_FUNC(cellRudp, cellRudpNetReceived);
|
|
|
|
|
REG_FUNC(cellRudp, cellRudpProcessEvents);
|
2015-02-22 12:38:14 +01:00
|
|
|
});
|