⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 voip.h

📁 telcobridges voip develop
💻 H
📖 第 1 页 / 共 3 页
字号:
	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 + -