📄 voip.h
字号:
TB640_STREAM_INTERFACE_TYPE Interface;
TBX_UINT16 un16RxIPPort;
TBX_UINT16 un16TxIPPort;
TBX_BOOL fResetStats;
PVOIP_STREAM_RES pStreamRes;
TB640_STREAM_STATS Stream;
/*
* Bert Stats
*/
TBX_BOOL fBertResetStats;
} VOIP_ADAPTER_STATS, *PVOIP_ADAPTER_STATS;
/*
* Context of a discovered adapter
*/
struct _VOIP_ADAPTER_CONTEXT
{
TBX_BOOL fPresent; /* Indicates if the adapter has been detected */
TBX_BOOL fConfigured; /* Tells if the adapter has been configured */
TBX_BOOL fAttached; /* Tells if we are actually attached to events for this adapter */
TBX_ADAPTER_INFO AdapterInfo; /* Information on this adapter */
/* Name of this adapter within this setup */
TBX_CHAR szAdapterName[ TBX_API_NAME_MAX_LEN ];
/* CPU usage on this adapter */
TBX_UINT32 un32Cpu0Usage;
TBX_UINT32 un32Cpu1Usage;
/* Unique user contexts used for events sent of this adapter */
TBX_UINT64 un64UserContext1;
TBX_UINT64 un64UserContext2;
/* State machine */
VOIP_ADAPTER_STATE State; /* Current state */
PFCT_VOIP_STATE_HANDLER pFctStateHandler; /* Function to handle current state machine */
TBX_UINT32 un32TimeoutMs; /* Timeout for current state */
TBX_BOOL fStateTimedout; /* Current state timeout occured */
/* Information related to various states */
TBX_BOOL fStopUsingPending; /* We are now trying to stop using this adapter */
TBX_BOOL fNewConfigPending; /* New config ready to be applied */
TBX_BOOL fDetachSent; /* We already tried to detach from this adapter */
TBX_BOOL fSyncCompleted; /* Tells if this adapter's sync state has completed */
TBX_RESULT StateResult;
TBX_UINT32 un32NbResponsesExpected;
TBX_BOOL fFullClearRequired; /* In some cases, must totally clear everything on adapter before reallocating */
TBX_UINT32 un32ConfiguringClearCount; /* Used to match some responses received from remote hosts to the adapter's state machine */
TBX_BOOL fReadyToClear; /* When TRUE, adapter can start clearing module not compatible with the new config */
TBX_BOOL fReadyToConfigure; /* When TRUE, adapter has been added to the system and can now be configured. */
/* State machine sub-states */
TBX_BOOL fClearComplete; /* Tells if recursive adapter clear has completed or not */
TBX_BOOL fRawDataFileClearInProgress;/* Clearing of at least one raw data file is in progress */
VOIP_ADAPTER_SUB_STATE SyncSubState; /* Sub-state when synchronizing resources */
VOIP_ADAPTER_SUB_STATE ClearSubState; /* Sub-state when clearing resources */
VOIP_ADAPTER_SUB_STATE ConfigSubState; /* Sub-state when configuring resources */
/*
* Adapter configuration
*/
VOIP_ADAPTER_CONFIG* pTargetConfig; /* Target configuration of this adapter */
VOIP_ADAPTER_CONFIG CurrentConfig; /* Current configuration of this adapter */
VOIP_ADAPTER_CONFIG TargetConfig1; /* Target config 1. Used as "double buffering" with TargetConfig2 when reloading config files while the system is running */
VOIP_ADAPTER_CONFIG TargetConfig2; /* Target config 2. Used as "double buffering" with TargetConfig1 when reloading config files while the system is running */
/*
* Adapter status
*/
VOIP_ADAPTER_STATUS Status;
/*
* Adapter statistics
*/
VOIP_ADAPTER_STATS Stats;
/*
* Stress test context
*/
VOIP_STRESS_TEST_CONTEXT StressTest;
/*
* Demo context
*/
VOIP_DEMO_CONTEXT Demo;
};
/* Structure that contains the dynamically allocated adapter context */
typedef struct _VOIP_ADAPTER_CONTEXT_NODE
{
TBX_CHAR szAdapterName[ TBX_API_NAME_MAX_LEN ];
PVOIP_ADAPTER_CONTEXT pAdapterContext;
} VOIP_ADAPTER_CONTEXT_NODE, *PVOIP_ADAPTER_CONTEXT_NODE;
/* Prompt parameters */
typedef struct _VOIP_PROMPT_PARAMS
{
/* Name of this prompt within this adapter setup */
TBX_CHAR szPromptName[ VOIP_PROMPT_NAME_MAX_LENGTH ];
/* Path and name of this prompt file */
TBX_CHAR szPathName[ VOIP_PATH_NAME_MAX_LENGTH ];
/* Repeat params */
TBX_UINT32 un32NbRepeat;
/* Rx IP port */
TBX_UINT16 un16RxIPPort;
/* Record params */
TBX_BOOL fRecordEnabled;
TBX_UINT16 un16TxIPPort;
TBX_CHAR szStreamSocketIP[ 64 ];
} VOIP_PROMPT_PARAMS, *PVOIP_PROMPT_PARAMS;
/* Prompt parameters */
typedef struct _VOIP_RAW_DATA_FILE_PARAMS
{
/* Name of this raw data file within this adapter setup */
TBX_CHAR szRawDataFileResName[ VOIP_RAW_DATA_FILE_NAME_MAX_LENGTH ];
/* Path and name of this prompt file */
TBX_CHAR szPathName[ VOIP_PATH_NAME_MAX_LENGTH ];
/* Repeat params */
TBX_UINT32 un32NbRepeat;
VOIP_RAW_DATAFILE_DIRECTION Direction;
/* Playback params */
TBX_UINT16 un16RxIPPort;
/* Record params */
TBX_UINT16 un16TxIPPort;
TBX_CHAR szStreamSocketIP[ 64 ];
} VOIP_RAW_DATA_FILE_PARAMS, *PVOIP_RAW_DATA_FILE_PARAMS;
/* Prompt configuration */
typedef struct _VOIP_STREAM_SERVER_PROMPT_CONTEXT
{
TBX_UINT16 un16Port;
TBX_CHAR szIpAddress0[ 64 ];
TBX_CHAR szIpAddress1[ 64 ];
TBX_CHAR szPathName[ VOIP_PATH_NAME_MAX_LENGTH ];
TBX_UINT32 un32PromptId;
TBX_UINT32 un32NbRepeat;
/* Current state of the stream server's resource */
TBX_UINT32 un32StartTime; /* Time (TBX_GET_TICK format) when this call was opened */
TBX_BOOL fStarting; /* Audio prompt is starting */
TBX_BOOL fPlaying; /* Audio prompt is playing */
TBX_BOOL fStopping; /* Audio prompt is stopping */
TBX_BOOL fSynched; /* Synchronized with stream server's state? */
} VOIP_STREAM_SERVER_PROMPT_CONTEXT, *PVOIP_STREAM_SERVER_PROMPT_CONTEXT;
/* Prompt configuration */
typedef struct _VOIP_PROMPT_CONTEXT
{
TBX_BOOL fAllocated;
/* Prompt parameters */
VOIP_PROMPT_PARAMS Params;
/* Connection identifier */
TBX_UINT32 un32ConnectionId;
/* Associated stream server prompt context */
TBX_UINT32 un32StreamServerPromptId;
} VOIP_PROMPT_CONTEXT, *PVOIP_PROMPT_CONTEXT;
/* RawDataFile play runtime context */
typedef struct _VOIP_RAW_DATA_FILE_PLAY_CONTEXT
{
TBX_BOOL fAllocated; /* This context has been initialised */
TBX_UINT64 un64Id;
TBX_UINT16 un16Port;
TBX_CHAR szIpAddress0[ 64 ];
TBX_CHAR szIpAddress1[ 64 ];
TBX_CHAR szPathName[ VOIP_PATH_NAME_MAX_LENGTH ];
TBX_UINT32 un32RepeatCount;
TBX_UINT32 un32CurrentRepetition;
PTBX_BYTE pData; /* The data to send */
TBX_UINT32 un32DataSize;
TBX_STREAM_LIB_HANDLE hPlay;
/* Current state */
TBX_UINT32 un32StartTime; /* Time (TBX_GET_TICK format) when this call was opened */
TBX_BOOL fStarting; /* Raw data play is starting */
TBX_BOOL fPlaying; /* Raw data is playing */
TBX_BOOL fStopping; /* Raw data play is stopping */
} VOIP_RAW_DATA_FILE_PLAY_CONTEXT, *PVOIP_RAW_DATA_FILE_PLAY_CONTEXT;
/* RawDataFile record runtime context */
typedef struct _VOIP_RAW_DATA_FILE_RECORD_CONTEXT
{
TBX_BOOL fAllocated; /* This context has been initialised */
TBX_UINT64 un64Id;
TBX_UINT16 un16Port;
TBX_CHAR szIpAddress0[ 64 ];
TBX_CHAR szIpAddress1[ 64 ];
TBX_CHAR szPathName[ VOIP_PATH_NAME_MAX_LENGTH ];
FILE* pFile;
TBX_STREAM_LIB_HANDLE hRecord;
/* Current state */
TBX_UINT32 un32StartTime; /* Time (TBX_GET_TICK format) when the first data was received */
TBX_BOOL fStarting; /* Raw data record is starting */
TBX_BOOL fStopping; /* Raw data record is stopping */
} VOIP_RAW_DATA_FILE_RECORD_CONTEXT, *PVOIP_RAW_DATA_FILE_RECORD_CONTEXT;
/* RawDataFile configuration */
typedef struct _VOIP_RAW_DATA_FILE_CONTEXT
{
TBX_BOOL fAllocated;
TBX_UINT64 un64Id;
/* RawDataFile parameters */
VOIP_RAW_DATA_FILE_PARAMS Params;
TBX_BOOL fActive; /* Active or not */
TBX_BOOL fCleanupPending; /* Cleanup pending or not */
/* Connection identifier */
TBX_UINT32 un32ConnectionId; /* VPGrp<-->Stream connection */
TBX_UINT32 un32TdmConnectionId; /* VPGrp<-->TDM connection */
/* Runtime raw data file play context */
VOIP_RAW_DATA_FILE_PLAY_CONTEXT PlayContext;
/* Runtime raw data file record context */
VOIP_RAW_DATA_FILE_RECORD_CONTEXT RecordContext;
} VOIP_RAW_DATA_FILE_CONTEXT, *PVOIP_RAW_DATA_FILE_CONTEXT;
/* Stream server context */
typedef struct _VOIP_STREAM_SERVER_CONTEXT
{
TBX_STREAM_SERVER_LIB_HANDLE hStreamServerLib;
TBX_STREAM_SERVER_HANDLE hStreamServer;
TBX_SEM StreamServerSem;
TBX_BOOL fEnable;
volatile TBX_BOOL fServerAvailable;
TBX_BOOL fResyncRunning; /* Tells if we are actually re-synching the resources */
/* Stream server Ip addresses */
TBX_CHAR szStreamServerIp0[ 64 ];
TBX_CHAR szStreamServerIp1[ 64 ];
/* Receive thread information */
TBX_THREAD hRecvThread;
TBX_BOOL fRecvThreadRunning;
TBX_BOOL fRecvThreadDone;
TBX_POOL_OF_BUFFERS_HANDLE hPoolOfPrompts;
} VOIP_STREAM_SERVER_CONTEXT, *PVOIP_STREAM_SERVER_CONTEXT;
/* Application global configuration */
typedef struct _VOIP_CONFIG
{
TBX_BOOL fLoaded;
/*
* Logging facility parameters
*/
TBX_CHAR szLogFileName[128];
TRACE_LEVEL TraceLevelStdout;
TRACE_LEVEL TraceLevelLogFile;
/*
* Command-line interface parameters
*/
TBX_UINT32 un32MinRefresh;
TBX_BOOL fShowConnectionInfoDisplay;
TBX_BOOL fShowStreamInfoDisplay;
TBX_BOOL fShowTrunkInfoDisplay;
TBX_BOOL fShowPromptInfoDisplay;
TBX_BOOL fShowRawDataFileInfoDisplay;
TBX_BOOL fShowBertInfoDisplay;
TBX_BOOL fShowTrunkResMapDisplay;
TBX_BOOL fShowTrunkResInvMapDisplay;
TBX_BOOL fShowPacketTypeGraphDisplay;
TBX_BOOL fShowTrunkResMapAndPacketTypeGraphDisplay;
TBX_BOOL fShowTrunkResInvMapAndPacketTypeGraphDisplay;
/*
* Host library parameters
*/
TBX_CHAR szInterfaceIp0[64];
TBX_CHAR szInterfaceIp1[64];
TBX_UINT16 aun16TbxGwPort[TBX_API_MAX_EXTRA_GW_PORTS + 1];
TBX_UINT32 un32GwPortNumber;
/*
* Network redundancy parameters
*/
TBX_UINT32 un32NetworkDownDelayMs;
TBX_UINT32 un32AdapterDownDelayMs;
TBX_UINT32 un32PollDelayMs;
/*
* Stream server parameters
*/
TBX_CHAR szStreamServerIp0[ 64 ];
TBX_CHAR szStreamServerIp1[ 64 ];
} VOIP_CONFIG, *PVOIP_CONFIG;
/*
* Global statistics
*/
typedef struct _VOIP_GLOBAL_STATS
{
TBX_UINT32 un32PrevTimestamp;
/*
* Streamlib Stats
*/
TBX_STREAM_LIB_PLAY_STATS StreamLibStats;
TBX_STREAM_LIB_PLAY_STATS StreamLibStatsResetVal;
TBX_UINT64 un64PrevBytesTransmitted;
TBX_UINT64 un64PrevBytesReceived;
TBX_UINT32 un32TxByteRate;
TBX_UINT32 un32RxByteRate;
} VOIP_GLOBAL_STATS, *PVOIP_GLOBAL_STATS;
/*
* Main context of this application
*/
typedef struct _VOIP_CONTEXT
{
TBX_LIB_HANDLE hTbxLib;
TBX_LIB_PARAMS LibParam;
TBX_SEM hThreadSem;
TBX_SEM TbxCliLogSem;
/* Logging facilities */
TBX_UINT32 un32AppStartTimestamp;
VOIP_CLI_CONTEXT CliContext;
/*
* Configuration file
*/
TBX_CHAR szConfigFileName[ TBX_API_NAME_MAX_LEN ];
VOIP_CONFIG TempConfig;
/*
* Stream server
*/
TBX_BOOL fOpenStreamServer;
VOIP_STREAM_SERVER_CONTEXT StreamServerContext;
/*
* Streaming facility parameters
*/
TBX_STREAM_LIB_PARAMS StreamLibParam;
TBX_STREAM_LIB_HANDLE hStreamLib;
/*
* Stress test
*/
TBX_BOOL fStressTestRunning;
TBX_BOOL fDemoRunning;
TBX_BOOL fDemoCleanupPending;
TBX_UINT32 un32LastLoopTimestamp;
/* Temporary pool of adapter contexts. Using while loading a new configuration */
TBX_POOL_OF_BUFFERS_HANDLE hTempPoolOfAdapters; /* Contains VOIP_MAX_ADAPTERS structures of type VOIP_ADAPTER_CONTEXT_NODE. */
/*
* Application configuration
*/
VOIP_CONFIG CurrentConfig;
/* Pool of adapter contexts. Hash table of the pool is hashing adapter name. */
TBX_POOL_OF_BUFFERS_HANDLE hPoolOfAdapters; /* Contains VOIP_MAX_ADAPTERS structures of type VOIP_ADAPTER_CONTEXT_NODE. */
/* Hash table to retrieve adapter contexts by adapter handle */
TBX_HASH_HANDLE hAdapterHandleHash; /* Contains pointers to structures of types VOIP_ADAPTER_CONTEXT */
/* Timer manager for adapters. Manage timers for each state machine's state */
TBX_TIMER_HANDLE hAdapterTimers; /* Contains pointers to structures of types VOIP_ADAPTER_CONTEXT */
/* Startup time of this application, and timer current time */
TBX_UINT32 un32TimerCurrentTime;
TBX_UINT32 un32NumberConnectedPeers; /* Number of adapters */
/* Filter to receive messages from adapters */
TBX_FILTER_HANDLE hFilter;
/* Auto test script context */
VOIP_SCRIPT_CONTEXT TestModeContext;
/*
* Global stats
*/
VOIP_GLOBAL_STATS Stats;
} VOIP_CONTEXT, *PVOIP_CONTEXT;
/*--------------------------------------------------------------------------------------------------------------------------------
| Global variables
*------------------------------------------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------------------------------------------
| Macros
*------------------------------------------------------------------------------------------------------------------------------*/
#define VOIP_CREATE_CONNECTION_ID( __ConnectionType__,__un32ConnectionIdx__ ) \
( (TBX_UINT32)(0xABC00000) | ((TBX_UINT32)(__ConnectionType__ & 0x1) << 16) | (TBX_UINT32)(__un32ConnectionIdx__ & 0x0000FFFF) )
#define VOIP_IS_VALID_CONNECTION_ID( __un32ConnectionId__ ) \
( ((__un32ConnectionId__ & 0xFFF00000) == 0xABC00000) ? TBX_TRUE:TBX_FALSE )
#define VOIP_CREATE_PROMPT_ID( __un16RxIPPort__ ) \
( ((TBX_UINT32)(0) << 16) + (TBX_UINT32)(__un16RxIPPort__) )
/*--------------------------------------------------------------------------------------------------------------------------------
| Function Prototypes
*------------------------------------------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------------------------------------------
| C++ support
*------------------------------------------------------------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __VOIP_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -