Kawe Mazidjatari b3a68ed095 Add EABase, EAThread and DirtySDK to R5sdk
DirtySDK (EA's Dirty Sockets library) will be used for the LiveAPI implementation, and depends on: EABase, EAThread.
2024-04-05 18:29:03 +02:00

161 lines
5.2 KiB
C++

/*H*************************************************************************************/
/*!
\File netconn.h
\Description
Provides network setup and teardown support. Does not actually create any
kind of network connections.
\Copyright
Copyright (c) Electronic Arts 2001-2009
\Version 03/12/2001 (gschaefer) First Version
*/
/*************************************************************************************H*/
#ifndef _netconn_h
#define _netconn_h
/*!
\Moduledef NetConnDefs NetConnDefs
\Modulemember DirtySock
*/
//@{
/*** Include files *********************************************************************/
#include "DirtySDK/platform.h"
#include "DirtySDK/dirtysock/netconndefs.h"
/*** Defines ***************************************************************************/
//! maximum number of local users
#if defined(DIRTYCODE_XBOXONE)
#define NETCONN_MAXLOCALUSERS (16)
#elif defined(DIRTYCODE_NX)
#define NETCONN_MAXLOCALUSERS (8)
#else
#define NETCONN_MAXLOCALUSERS (4)
#endif
/*** Macros ****************************************************************************/
/*** Type Definitions ******************************************************************/
typedef struct NetConnUserDataT
{
char strName[16];
void *pRawData1;
void *pRawData2;
} NetConnUserDataT;
//! account structure
typedef struct NetConnAccountInfoT
{
int64_t iAccountId; //!< the EA account Id of the user
int64_t iPersonaId; //!< the EA persona Id of the user
} NetConnAccountInfoT;
#if defined(DIRTYCODE_PS4)
typedef void (NetConnNpStateCallbackT)(int32_t /* SceUserServiceUserId */ userId, int32_t /* SceNpState */ state, void* pUserData);
#endif
/*** Variables *************************************************************************/
/*** Functions *************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
// bring the network connection module to life
DIRTYCODE_API int32_t NetConnStartup(const char *pParams);
// query the list of available connection configurations
DIRTYCODE_API int32_t NetConnQuery(const char *pDevice, NetConfigRecT *pList, int32_t iSize);
// bring the networking online with a specific configuration
DIRTYCODE_API int32_t NetConnConnect(const NetConfigRecT *pConfig, const char *pParms, int32_t iData);
// set module behavior based on input selector
DIRTYCODE_API int32_t NetConnControl(int32_t iControl, int32_t iValue, int32_t iValue2, void *pValue, void *pValue2);
// check general network connection status (added param)
DIRTYCODE_API int32_t NetConnStatus(int32_t iKind, int32_t iData, void *pBuf, int32_t iBufSize);
// return MAC address in textual form
DIRTYCODE_API const char *NetConnMAC(void);
// take down the network connection
DIRTYCODE_API int32_t NetConnDisconnect(void);
// shutdown the network code and return to idle state
DIRTYCODE_API int32_t NetConnShutdown(uint32_t uShutdownFlags);
// return elapsed time in milliseconds
DIRTYCODE_API uint32_t NetConnElapsed(void);
// sleep the application (burn cycles) for some number of milliseconds
DIRTYCODE_API void NetConnSleep(int32_t iMilliSecs);
// add an idle handler that will get called periodically
DIRTYCODE_API int32_t NetConnIdleAdd(void (*proc)(void *data, uint32_t tick), void *data);
// remove a previously added idle handler
DIRTYCODE_API int32_t NetConnIdleDel(void (*proc)(void *data, uint32_t tick), void *data);
// provide "life" to the network code
DIRTYCODE_API void NetConnIdle(void);
// shut down netconn idle handler
// NOTE: this is meant for internal use only, and should not be called by applications directly
DIRTYCODE_API void NetConnIdleShutdown(void);
// Enable or disable the timing of netconnidles
DIRTYCODE_API void NetConnTiming(uint8_t uEnableTiming);
typedef void (UserInfoCallbackT)(NetConnUserDataT *pUserDataT, void *pData);
// get the unique machine id
DIRTYCODE_API uint32_t NetConnMachineId(void);
// set the unique machine id
DIRTYCODE_API void NetConnSetMachineId(uint32_t uMachineId);
#if DIRTYCODE_LOGGING
DIRTYCODE_API void NetConnMonitorValue(const char* pName, int32_t iValue);
#endif
// copy a startup parameter
DIRTYCODE_API int32_t NetConnCopyParam(char *pDst, int32_t iDstLen, const char *pParamName, const char *pSrc, const char *pDefault);
// create dirtycert module
DIRTYCODE_API int32_t NetConnDirtyCertCreate(const char *pParams);
// translate netconn environment to string
DIRTYCODE_API const char *NetConnGetEnvStr(void);
#if defined(DIRTYCODE_PS4)
DIRTYCODE_API void NetConnRegisterNpStateCallback(NetConnNpStateCallbackT *pCallback, void *pUserData);
#endif
#ifdef __cplusplus
}
// forward declare IEAUser so as not to create a dependency
namespace EA { namespace User { class IEAUser; } }
// use this function to tell netconn about a newly detected local user on the local console
DIRTYCODE_API int32_t NetConnAddLocalUser(int32_t iLocalUserIndex, const EA::User::IEAUser *pLocalUser);
// use this function to tell netconn about a removed local user on the local console
// in cases where the index is unknown, pass -1 and we will do an internal query
DIRTYCODE_API int32_t NetConnRemoveLocalUser(int32_t iLocalUserIndex, const EA::User::IEAUser *pLocalUser);
#endif // __cplusplus
//@}
#endif // _netconn_h