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

501 lines
14 KiB
C

/*H********************************************************************************/
/*!
\File voipstub.c
\Description
Voip library interface.
\Copyright
Copyright (c) Electronic Arts 2004. ALL RIGHTS RESERVED.
\Version 0.5 03/02/2004 (jbrookes) Implemented stubbed interface.
*/
/********************************************************************************H*/
/*** Include files ****************************************************************/
#include "DirtySDK/platform.h"
#include "DirtySDK/dirtysock/dirtylib.h"
#include "DirtySDK/dirtysock/dirtymem.h"
#include "DirtySDK/voip/voip.h"
#include "DirtySDK/voip/voipcodec.h"
#include "voippriv.h"
#include "voipcommon.h"
/*** Include files ****************************************************************/
/*** Defines **********************************************************************/
/*** Macros ***********************************************************************/
/*** Type Definitions *************************************************************/
//! VoIP module state
struct VoipRefT
{
//! module memory group
int32_t iMemGroup;
void *pMemGroupUserData;
};
/*** Function Prototypes **********************************************************/
/*** Variables ********************************************************************/
// Private Variables
//! pointer to module state
static VoipRefT *_Voip_pRef = NULL;
// Public Variables
/*** Private Functions ************************************************************/
/*** Public Functions *************************************************************/
/*F********************************************************************************/
/*!
\Function VoipStartup
\Description
Prepare VoIP for use.
\Input iMaxPeers - maximum number of peers supported (up to 32)
\Input iData - platform-specific - unused for voipstub
\Output
VoipRefT - state reference that is passed to all other functions
\Version 1.0 03/02/2004 (jbrookes) First Version
*/
/********************************************************************************F*/
VoipRefT *VoipStartup(int32_t iMaxPeers, int32_t iData)
{
VoipRefT *pVoip;
int32_t iMemGroup;
void *pMemGroupUserData;
// Query current mem group data
DirtyMemGroupQuery(&iMemGroup, &pMemGroupUserData);
// make sure we're not already started
if (_Voip_pRef != NULL)
{
NetPrintf(("voip: module startup called when not in a shutdown state\n"));
return(NULL);
}
// create and initialize module state
if ((pVoip = (VoipRefT *)DirtyMemAlloc(sizeof(*pVoip), VOIP_MEMID, iMemGroup, pMemGroupUserData)) == NULL)
{
NetPrintf(("voip: unable to allocate module state\n"));
return(NULL);
}
pVoip->iMemGroup = iMemGroup;
pVoip->pMemGroupUserData = pMemGroupUserData;
// save ref and return to caller
_Voip_pRef = pVoip;
return(pVoip);
}
/*F********************************************************************************/
/*!
\Function VoipGetRef
\Description
Return current module reference.
\Output
VoipRefT * - reference pointer, or NULL if the module is not active
\Version 1.0 03/08/2004 (jbrookes) First Version
*/
/********************************************************************************F*/
VoipRefT *VoipGetRef(void)
{
// return pointer to module state
return(_Voip_pRef);
}
/*F********************************************************************************/
/*!
\Function VoipShutdown
\Description
Release all VoIP resources.
\Input *pVoip - module state from VoipStartup
\Input uShutdownFlags - NET_SHUTDOWN_* flags
\Version 03/02/2004 (jbrookes) First Version
*/
/********************************************************************************F*/
void VoipShutdown(VoipRefT *pVoip, uint32_t uShutdownFlags)
{
// make sure we're really started up
if (_Voip_pRef == NULL)
{
NetPrintf(("voip: module shutdown called when not in a started state\n"));
return;
}
// free module memory
DirtyMemFree(pVoip, VOIP_MEMID, pVoip->iMemGroup, pVoip->pMemGroupUserData);
// clear pointer to module state
_Voip_pRef = NULL;
}
/*F********************************************************************************/
/*!
\Function VoipSetLocalUser
\Description
Register/unregister specified local user with the voip sub-system.
\Input *pVoip - module state from VoipStartup
\Input iLocalUserIndex - local user index (ignored because MLU not supported on PC)
\Input bRegister - ignored
\Version 04/15/2004 (jbrookes)
*/
/********************************************************************************F*/
void VoipSetLocalUser(VoipRefT *pVoip, int32_t iLocalUserIndex, uint32_t bRegister)
{
}
/*F********************************************************************************/
/*!
\Function VoipCommonActivateLocalUser
\Description
Promote/demote specified local user to/from "participating" state
\Input *pVoipCommon - voip common state
\Input iLocalUserIndex - local user index (ignored because MLU not supported on PC)
\Input bActivate - TRUE to activate, FALSE to deactivate
\Version 04/25/2013 (tcho)
*/
/********************************************************************************F*/
void VoipCommonActivateLocalUser(VoipCommonRefT *pVoipCommon, int32_t iLocalUserIndex, uint8_t bActivate)
{
}
/*F********************************************************************************/
/*!
\Function VoipStatus
\Description
Return status.
\Input *pVoip - module state from VoipStartup
\Input iSelect - status selector
\Input iValue - selector-specific
\Input *pBuf - [out] storage for selector-specific output
\Input iBufSize - size of output buffer
\Output
int32_t - selector-specific data
\Version 1.0 03/02/2004 (jbrookes)
*/
/********************************************************************************F*/
int32_t VoipStatus(VoipRefT *pVoip, int32_t iSelect, int32_t iValue, void *pBuf, int32_t iBufSize)
{
if (iSelect == 'avlb')
{
return(TRUE);
}
if (iSelect == 'from')
{
return(0);
}
if (iSelect == 'micr')
{
return(0);
}
if (iSelect == 'sock')
{
return(0);
}
if (iSelect == 'spkr')
{
return(0);
}
// unsupported selector
return(-1);
}
/*F********************************************************************************/
/*!
\Function VoipControl
\Description
Set control options.
\Input *pVoip - module state from VoipStartup
\Input iControl - control selector
\Input iValue - selector-specific
\Input *pValue - selector-specific
\Output
int32_t - selector-specific data
\Version 1.0 03/02/2004 (jbrookes) First Version
*/
/********************************************************************************F*/
int32_t VoipControl(VoipRefT *pVoip, int32_t iControl, int32_t iValue, void *pValue)
{
return(0);
}
/*F*************************************************************************************************/
/*!
\Function VoipSpkrCallback
\Description
Set speaker data callback.
\Input *pVoip - voip module state
\Input *pCallback - data callback
\Input *pUserData - user data
\Version 1.0 12/12/2005 (jbrookes) First Version
*/
/*************************************************************************************************F*/
void VoipSpkrCallback(VoipRefT *pVoip, VoipSpkrCallbackT *pCallback, void *pUserData)
{
}
/*F*************************************************************************************************/
/*!
\Function VoipCodecControl
\Description
Stub for codec control
\Input iCodecIdent - codec identifier, or VOIP_CODEC_ACTIVE
\Input iControl - control selector
\Input iValue - selector specific
\Input iValue2 - selector specific
\Input *pValue - selector specific
\Output
int32_t - selector specific
\Version 1.0 10/11/2011 (jbrookes) First Version
*/
/*************************************************************************************************F*/
int32_t VoipCodecControl(int32_t iCodecIdent, int32_t iControl, int32_t iValue, int32_t iValue2, void *pValue)
{
return(0);
}
/*F********************************************************************************/
/*!
\Function VoipSelectChannel
\Description
Stub for VoipSelectChannel
\Input *pVoip - voip module state
\Input iUserIndex - local user index
\Input iChannel - Channel ID (valid range: [0,63])
\Input eMode - The mode, combination of VOIPGROUP_CHANSEND, VOIPGROUP_CHANRECV
\Output
int32_t - number of channels remaining that this console could join
\Version 01/31/2007 (jrainy)
*/
/********************************************************************************F*/
int32_t VoipSelectChannel(VoipRefT *pVoip, int32_t iUserIndex, int32_t iChannel, VoipChanModeE eMode)
{
return(0);
}
/*F********************************************************************************/
/*!
\Function VoipResetChannels
\Description
Stub for VoipResetChannels
\Input *pVoip - module ref
\Input iUserIndex - local user index
\Version 12/07/2009 (jrainy)
*/
/********************************************************************************F*/
void VoipResetChannels(VoipRefT *pVoip, int32_t iUserIndex)
{
}
/*F********************************************************************************/
/*!
\Function VoipLocalUserStatus
\Description
Return information about local hardware state
\Input *pVoip - module state from VoipStartup
\Input iLocalUserIndex - local index of the user
\Output
int32_t - VOIP_LOCAL* flags
\Version 1.0 03/02/2004 (jbrookes) First Version
\Version 2.0 04/25/2014 (amakoukji) Refactored for MLU
*/
/********************************************************************************F*/
int32_t VoipLocalUserStatus(VoipRefT *pVoip, int32_t iLocalUserIndex)
{
return(0);
}
/*F********************************************************************************/
/*!
\Function VoipBlockListCreate
\Description
Creates the VoipBlockListT.
\Output
VoipBlockListT * - The Blocked List state
\Version 05/02/2019 (cvienneau)
*/
/********************************************************************************F*/
VoipBlockListT *VoipBlockListCreate(void)
{
return(NULL);
}
/*F********************************************************************************/
/*!
\Function VoipBlockListDestroy
\Description
Free the voip block list
\Input pVoip - voip state
\Version 05/07/2019 (cvienneau)
*/
/********************************************************************************F*/
void VoipBlockListDestroy(VoipRefT *pVoip)
{
}
/*F********************************************************************************/
/*!
\Function VoipBlockListAdd
\Description
Add a user to be blocked by the local user
\Input pVoip - voip state
\Input iLocalUserIndex - the index of the local user
\Input iBlockedAccountId - the account id of the user to be blocked
\Output
uint8_t - TRUE if the user was successfully blocked
\Version 05/07/2019 (cvienneau)
*/
/********************************************************************************F*/
uint8_t VoipBlockListAdd(VoipRefT *pVoip, int32_t iLocalUserIndex, int64_t iBlockedAccountId)
{
return(FALSE);
}
/*F********************************************************************************/
/*!
\Function VoipBlockListRemove
\Description
Remove a user that was blocked by the local user
\Input pVoip - voip state
\Input iLocalUserIndex - the index of the local user
\Input iBlockedAccountId - the account id of the user who was blocked
\Output
uint8_t - TRUE if the user was successfully un-blocked
\Version 05/07/2019 (cvienneau)
*/
/********************************************************************************F*/
uint8_t VoipBlockListRemove(VoipRefT *pVoip, int32_t iLocalUserIndex, int64_t iBlockedAccountId)
{
return(FALSE);
}
/*F********************************************************************************/
/*!
\Function VoipBlockListIsBlocked
\Description
Check if a user is blocked by the local user
\Input pVoip - voip state
\Input iLocalUserIndex - the index of the local user
\Input iBlockedAccountId - the account id of the user who was blocked
\Output
uint8_t - TRUE if the user is blocked
\Version 05/07/2019 (cvienneau)
*/
/********************************************************************************F*/
uint8_t VoipBlockListIsBlocked(VoipRefT *pVoip, int32_t iLocalUserIndex, int64_t iBlockedAccountId)
{
return(FALSE);
}
/*F********************************************************************************/
/*!
\Function VoipBlockListClear
\Description
Clear the blocked list for the local user
\Input pVoip - voip state
\Input iLocalUserIndex - the index of the local user (-1 for all users)
\Output
uint8_t - TRUE if the list was cleared
\Version 05/07/2019 (cvienneau)
*/
/********************************************************************************F*/
uint8_t VoipBlockListClear(VoipRefT *pVoip, int32_t iLocalUserIndex)
{
return(FALSE);
}
/*F********************************************************************************/
/*!
\Function VoipRegisterFirstPartyIdCallback
\Description
Register first party id callback
\Input *pVoip - module ref
\Input *pCallback - first party id callback
\Input *pUserData - callback user data
\Version 05/08/2019 (tcho)
*/
/********************************************************************************F*/
void VoipRegisterFirstPartyIdCallback(VoipRefT *pVoip, VoipFirstPartyIdCallbackCbT *pCallback, void *pUserData)
{
}