mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
DirtySDK (EA's Dirty Sockets library) will be used for the LiveAPI implementation, and depends on: EABase, EAThread.
501 lines
14 KiB
C
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)
|
|
{
|
|
} |