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

📄 voip.h

📁 telcobridges voip develop
💻 H
📖 第 1 页 / 共 3 页
字号:
	/* TDM tone params */
	TBX_BOOL					fTdmToneParamsAvailable;
	TBX_BOOL					fTdmToneGenerationEnabled;
	TBX_BOOL					fTdmToneDetectionEnabled;
	TBX_BOOL					fTdmToneDtmfSuppressionEnabled;
	TBX_BOOL					fTdmToneDtmfCompleteSuppression;
	TBX_BOOL					fTdmToneDtmfToneRegeneration;

	/* TDM AGC params */
	TBX_BOOL					fTdmAgcParamsAvailable;
	TBX_BOOL					fTdmAgcEnabled;

	/* TDM VAD params */
	TBX_BOOL					fTdmVadParamsAvailable;
	TBX_BOOL					fTdmVadEnabled;

	/* TDM Echo params */
	TBX_BOOL					fTdmEchoParamsAvailable;
	TBX_BOOL					fTdmEchoEnabled;
	TBX_UINT8					un8TdmEchoWindowSizeMsec;
	TBX_UINT8					un8TdmEchoTailLengthMsec;

	/* Stream params */
	TBX_BOOL					fStreamParamsAvailable;
	TBX_STREAM_PACKET_DURATION	StreamPacketDurationMs;

	/* Stream tone params */
	TBX_BOOL					fStreamToneParamsAvailable;
	TBX_BOOL					fStreamToneGenerationEnabled;
	TBX_BOOL					fStreamToneDetectionEnabled;
	TBX_BOOL					fStreamToneDtmfSuppressionEnabled;
	TBX_BOOL					fStreamToneDtmfCompleteSuppression;
	TBX_BOOL					fStreamToneDtmfToneRegeneration;
	TBX_BOOL					fStreamToneEnableRfc2833ToneRelay;

	/* Stream jitter buffer params*/
	TBX_BOOL					fStreamJitterBufferParamsAvailable;
	TBX_UINT16					un16StreamJitterBufferDelayInitMsec;
	TBX_UINT16					un16StreamJitterBufferMinDelayMsec;
	TBX_UINT16					un16StreamJitterBufferMaxDelayMsec;
	TBX_UINT16					un16StreamJitterBufferAdaptationPeriodMsec;
	TBX_UINT16					un16StreamJitterBufferDeletionThresholdMsec;
	TBX_BOOL					fStreamJitterBufferSmoothDeletionMode;

	/* Stream RTCP params */
	TBX_BOOL					fStreamRtcpParamsAvailable;
	TBX_BOOL					fStreamRtcpUseRtcp;
	TBX_BOOL					fStreamRtcpUseExtendedRtcp;

	/* Stream T38 params */
	TBX_BOOL								fStreamT38ParamsAvailable;
	TB640_VP_T38_PACKET_LOSS_CONCEALMENT	StreamT38PacketLossConcealment;
	TBX_UINT8								un8StreamT38RedundancyCountForFaxPages;
	TBX_UINT8								un8StreamT38RedundancyCountForT38Msg;
	TBX_UINT8								un8StreamT38NbFecPacketInUdptl;
	TBX_UINT8								un8StreamT38NbIfpPerFecPacket;
	TBX_BOOLEAN								fStreamT38AllowEcmFaxes;
	TBX_BOOLEAN								fStreamT38EnableByteBasedT38;
	TBX_BOOLEAN								fStreamT38EnableTsiFrameRemoval;
	TBX_BOOLEAN								fStreamT38EnableCsiFrameRemoval;
	TBX_BOOLEAN								fStreamT38EnableNsfFrameRemoval;
	TBX_BOOLEAN								fStreamT38EnableDsiFrameRemoval;
	TBX_BOOLEAN								fStreamT38GenerateFaxRelayPageStatsEvent;
	TBX_BOOLEAN								fStreamT38GenerateFaxRelayStateEvents;

	TB640_VP_FAX_SPEED_LIMIT				StreamT38FaxSpeedLimit;
	TB640_VP_T38_ERROR_RECOVERY_TYPE		StreamT38RecoveryType;

	TB640_VP_T38_TCF_PROCEDURE				StreamT38TcfProcedure;

} VOIP_VP_GRP1_PARAMS, *PVOIP_VP_GRP1_PARAMS;

/* Connection types */
typedef enum _VOIP_CONNECTION_TYPE
{
	VOIP_CONNECTION_TYPE_0	= 0,		/* Permanent. Are cleared when doing a clear all. */
	VOIP_CONNECTION_TYPE_1	= 1			/* Normal connection. */

} VOIP_CONNECTION_TYPE, *PVOIP_CONNECTION_TYPE;

/* Connection parameters (type 0: prompt connection) */
typedef struct _VOIP_CONNECTION_PARAMS_TYPE_0
{
	VOIP_RESOURCE_TYPE			Type;
	TBX_CHAR					szPromptName[ VOIP_PROMPT_NAME_MAX_LENGTH ];
	TBX_CHAR					szRawDataFileResName[ VOIP_RAW_DATA_FILE_NAME_MAX_LENGTH ];

	/* Playback params */
	TBX_BOOL					fPlaybackEnabled;
	TBX_UINT16					un16RxIPPort;

	/* Record params */
	TBX_BOOL					fRecordEnabled;
	TBX_UINT16					un16TxIPPort;
	TBX_CHAR					szStreamSocketIP[ 64 ];

} VOIP_CONNECTION_PARAMS_TYPE_0, *PVOIP_CONNECTION_PARAMS_TYPE_0;

/* Connection parameters (type 1: voip connection) */
typedef struct _VOIP_CONNECTION_PARAMS_TYPE_1
{
	TBX_UINT32						un32DurationMs;

	struct
	{
		/* First resource params */
		VOIP_RESOURCE_TYPE			Type;
		TB640_RESOURCE_CLASS		Class;

		/* Prompt */
		TBX_CHAR					szPromptName[ VOIP_PROMPT_NAME_MAX_LENGTH ];
		/* RawDataFile */
		TBX_CHAR					szRawDataFileResName[ VOIP_RAW_DATA_FILE_NAME_MAX_LENGTH ];

		/* Trunk */
		TBX_UINT32					un32TrunkNb;
		TBX_UINT32					un32TimeSlot;

		/* MBL port */
		TBX_UINT32					un32MblPortNb;
		TBX_UINT32					un32MblStreamNb;
		TBX_UINT32					un32MblTimeSlot;
	} FirstRes;

	struct
	{
		/* Second resource params */
		VOIP_RESOURCE_TYPE			Type;
		TB640_RESOURCE_CLASS		Class;

		/* Stream socket */
		TBX_UINT16					un16RxIPPort;
		TBX_UINT16					un16TxIPPort;
		TBX_CHAR					szStreamSocketIP[ 64 ];
		TBX_STREAM_PACKET_TYPE		PacketType;
		TB640_VP_GROUP_TYPE			GroupType;

		/* Trunk */
		TBX_UINT32					un32TrunkNb;
		TBX_UINT32					un32TimeSlot;

		/* MBL port */
		TBX_UINT32					un32MblPortNb;
		TBX_UINT32					un32MblStreamNb;
		TBX_UINT32					un32MblTimeSlot;
		
		/* RawDataFile */
		TBX_CHAR					szRawDataFileResName[ VOIP_RAW_DATA_FILE_NAME_MAX_LENGTH ];
	} SecondRes;

} VOIP_CONNECTION_PARAMS_TYPE_1, *PVOIP_CONNECTION_PARAMS_TYPE_1;

/* Connection parameters */
struct _VOIP_CONNECTION_PARAMS
{
	VOIP_CONNECTION_TYPE				Type;
	union
	{
		VOIP_CONNECTION_PARAMS_TYPE_0	Type0;
		VOIP_CONNECTION_PARAMS_TYPE_1	Type1;
	};

};

/* Connection context */
typedef struct _VOIP_CONNECTION_CONTEXT
{
	TB640_CONNECTION_HANDLE		hConn;
	TBX_UINT32					un32ConnectionId;
	TBX_UINT32					un32ConnectionIdx;
	TBX_UINT32					un32NbResponsesExpected;

	TBX_BOOL					fAllocated;
	TBX_UINT32					un32AllocatedTimestamp;

	/* Connection parameters */
	VOIP_CONNECTION_PARAMS		Params;

	/* Connection description */
	TBX_UINT32					un32PathDescCount;
	TB640_PATH_DESCRIPTION		aPathDesc[ VOIP_MAX_PATH_DESC_PER_CONNECTION ];

} VOIP_CONNECTION_CONTEXT, *PVOIP_CONNECTION_CONTEXT;

/* Packet type information */
typedef struct _VOIP_STRESS_TEST_PACKET_TYPE_INFO
{
	TBX_STREAM_PACKET_TYPE	PacketType;
	TB640_VP_GROUP_TYPE		GroupType;
	TBX_CHAR				szPromptName[ VOIP_PROMPT_NAME_MAX_LENGTH ];
	TBX_UINT32				un32CurrentCount;
	TBX_UINT32				un32MaxCount;

} VOIP_STRESS_TEST_PACKET_TYPE_INFO, *PVOIP_STRESS_TEST_PACKET_TYPE_INFO;

/* Stress test statistics */
typedef struct _VOIP_STRESS_TEST_STATS
{
	TBX_BOOL			fStatsActivated;
	TBX_UINT32			un32StartTimestamp;
	TBX_UINT32			un32CurrentTimestamp;
	TBX_UINT32			un32EndTimestamp;

	/* Stats */
	TBX_UINT64			un64NbConnectionsAttempt;
	TBX_UINT64			un64NbConnectionsCompleted;
	TBX_UINT64			un64NbConnectionsFailed;
	TBX_UINT64			un64NbConnectionsClosed;
	TBX_UINT64			un64NbBertConnectionOpened;
	TBX_UINT64			un64NbBertConnectionInErr;
	TBX_UINT64			un64NbBertConnectionClosed;
	TBX_UINT64			un64MaxBertErrorFound;

} VOIP_STRESS_TEST_STATS, *PVOIP_STRESS_TEST_STATS;

/* Stress test context */
typedef struct _VOIP_STRESS_TEST_CONTEXT
{
	TBX_BOOL							fActive;				/* Stress test active or not */
	TBX_BOOL							fAutoAbort;				/* Automatically abort stress test on failure */
	TBX_BOOL							fCleanupPending;		/* Stress test cleanup pending or not */
	TBX_UINT32							un32CleanupRetryCount;	/* Stress test cleanup retry count */
	TBX_BOOL							fStartPending;			/* Stress test start pending or not */
	TBX_BOOL							fStopPending;			/* Stress test stop pending or not */
	TBX_UINT32							un32Elapsed;			/* Elapsed time accumulator since last operation */
	TBX_BOOL							fDoBertTests;			/* Do random BERT testing during stress-test */

	/* Initial config parameters */
	TBX_CHAR							szStreamSocketIP[ 64 ];
	VOIP_RESOURCE_TYPE					FirstResType;
	TBX_UINT32							un32PacketTypeCount;
	VOIP_STRESS_TEST_PACKET_TYPE_INFO	aPacketTypeInfo[VOIP_MAX_STRESS_TEST_PACKET_TYPE];
	TBX_UINT32							un32NbConnectionsPerSecond;	/* Number of connections per second we want */
	TBX_UINT32							un32NbMinConnectionDurationSecond;
	TBX_UINT32							un32NbMaxConnectionDurationSecond;
	TBX_UINT32							un32TestDurationInSec;

	/* Run-time variables */
	double								dNbConnectionsPerSecondAverage;
	TBX_UINT32							un32LastConnectionsPerSecondTimestamp;	/* Last time dNbConnectionsPerSecondAverage was updated */
	TBX_UINT64							un64LastNbConnections;					/* Number of connections on last update of un32LastConnectionsPerSecondTimestamp */
	TBX_UINT32							un32LastNbConnectionsPerLoop;

	TBX_BOOL							fBertConnectionActive;
	TBX_BOOL							fBertStatsReset;
	TBX_UINT32							un32TimeSinceBertStart;

	/* Map of reserved IP ports */
	TBX_BOOL							afIpPortReserved[VOIP_STRESS_TEST_IP_PORT_COUNT];
	TBX_UINT32							un32IpPortReservedLast;

	/* Stats for the monitor application */
	VOIP_STRESS_TEST_STATS				Stats;

} VOIP_STRESS_TEST_CONTEXT, *PVOIP_STRESS_TEST_CONTEXT;

/* Demo step type identifiers */
typedef enum _VOIP_DEMO_STEP_TYPE
{
	VOIP_DEMO_STEP_TYPE_CONNECT		= 0,
	VOIP_DEMO_STEP_TYPE_DISCONNECT	= 1,
	VOIP_DEMO_STEP_TYPE_PAUSE		= 2,
	VOIP_DEMO_STEP_TYPE_TITLE		= 3,
	VOIP_DEMO_STEP_TYPE_UNKNOWN		= -1

} VOIP_DEMO_STEP_TYPE, *PVOIP_DEMO_STEP_TYPE;

/* Demo step information */
typedef struct _VOIP_DEMO_STEP
{
	VOIP_DEMO_STEP_TYPE		Type;
	TBX_UINT32				un32Step;
	TBX_BOOL				fWait;
	union
	{
		struct
		{
			VOIP_CONNECTION_PARAMS	ConnectionParams;
			TBX_UINT32				un32NbConnections;
			TBX_UINT16				un16IPPortIncrement;
		};
		struct
		{
			TBX_CHAR				szTitle[ VOIP_DEMO_TITLE_MAX_LENGTH ];
		};
	};

} VOIP_DEMO_STEP, *PVOIP_DEMO_STEP;

/* Demo context */
typedef struct _VOIP_DEMO_CONTEXT
{
	/* Configuration parameters */
	TBX_BOOL					fActive;				/* Demo active or not */
	TBX_BOOL					fCleanupPending;		/* Demo cleanup pending or not */
	TBX_BOOL					fSkipPauses;			/* Skip pauses indication */
	TBX_BOOL					fAutoAbort;				/* Automatically abort demo on failure */
	TBX_UINT32					un32CleanupRetryCount;	/* Demo cleanup retry count */

	TBX_BOOL					fTitle;
	TBX_CHAR					szTitle[ VOIP_DEMO_TITLE_MAX_LENGTH ];
	TBX_UINT32					un32CurrentStep;
	TBX_UINT32					un32StepCount;
	VOIP_DEMO_STEP				aStep[VOIP_MAX_STEPS_PER_ADAPTER];

} VOIP_DEMO_CONTEXT, *PVOIP_DEMO_CONTEXT;

/* All resources on a discovered adapter */
typedef struct _VOIP_ADAPTER_CONFIG
{
	TBX_BOOL					fAllocated;
	TBX_BOOL					fLoaded;

	/*
	 *	Adapter configuration
	 */
	TBX_UINT32					aun32FeatureEnabled[ TBX_FEATURE_TYPE_LAST ];
	TBX_UINT32					aun32FeatureMax[ TBX_FEATURE_TYPE_LAST ];
	TBX_UINT32					aun32FeatureLicensed[ TBX_FEATURE_TYPE_LAST ];
	TBX_BOOL					fTrunkAvailable;
	TBX_BOOL					fVpGroup0Available;
	TBX_BOOL					fVpGroup1Available;

	/*
	 *	Prompts
	 */

	/* Pool of prompt configuration contexts. Hash table of the pool is hashing by connection identifier */
	TBX_POOL_OF_BUFFERS_HANDLE	hPoolOfPrompts;

	/* Hash table to retrieve prompt context by prompt name */
	TBX_HASH_HANDLE				hPromptNameHash;		/* Contains pointers to structures of types VOIP_PROMPT_CONTEXT */

	/*
	 *	RawDataFiles
	 */

	/* Pool of raw data file configuration contexts. Hash table of the pool is hashing by connection identifier */
	TBX_POOL_OF_BUFFERS_HANDLE	hPoolOfRawDataFiles;

	/* Hash table to retrieve raw data file context by raw data file name */
	TBX_HASH_HANDLE				hRawDataFileNameHash;		/* Contains pointers to structures of types VOIP_RAW_DATA_FILE_CONTEXT */
	/* Hash table to retrieve raw data file context by id */
	TBX_HASH_64_HANDLE			hRawDataFileIdHash64;		/* Contains pointers to structures of types VOIP_RAW_DATA_FILE_CONTEXT */

	/*
	 *	Clock config
	 */
	VOIP_CLOCK_CONFIG			Clock;

	/*
	 *	BERT config
	 */
	VOIP_BERT_RES				aBertRes[ VOIP_MAX_BERT_RES ];

	/*
	 *	Trunks
	 */
	VOIP_TRUNK_CONFIG			aTrunk[ VOIP_MAX_TRUNK_PER_ADAPTER ];

	/* Hash table of trunk names */
	TBX_HASH_HANDLE				hTrunkNameHash;		/* Contains pointers to structures of types VOIP_TRUNK_CONFIG */

	/*
	 *	MBL ports
	 */
	VOIP_MBL_PORT_CONFIG		aMblPort[ VOIP_MAX_MBL_PORT_PER_ADAPTER ];

	/* Hash table of MBL port names */
	TBX_HASH_HANDLE				hMblPortNameHash;		/* Contains pointers to structures of types VOIP_MBL_PORT_CONFIG */

	/*
	 *	Voice processing
	 */
	VOIP_VP_GRP0_PARAMS			VpGrp0Params;
	VOIP_VP_GRP1_PARAMS			VpGrp1Params;

	/*
	 *	Stream resources
	 */

	/* Pool of stream resources. Hash table of the pool is not used. */
	TBX_POOL_OF_BUFFERS_HANDLE	hPoolOfStreamRes;

	/*
	 *	Voice processing resources
	 */

	/* Pool of voice processing groups. Hash table of the pool is not used. */
	TBX_POOL_OF_BUFFERS_HANDLE	hPoolOfVpGroups;

	/*
	 *	Resources
	 */

	/* Hash table of resource handles */
	TBX_HASH_HANDLE				hResHandleHash;		/* Contains pointers to structures of types VOIP_RES */

	/*
	 *	Connections
	 */

	/* Pool of connection contexts. Hash table of the pool is hashing by connection identifier */
	TBX_POOL_OF_BUFFERS_HANDLE	hPoolOfConnections;

	/* Hash table of connection identifiers */
	TBX_HASH_HANDLE				hConnectionHash;	/* Contains pointers to structures of types VOIP_CONNECTION_CONTEXT */

	/* Hash table of connection identifiers */
	TBX_HASH_HANDLE				hStreamResHash;		/* Contains pointers to structures of types VOIP_STREAM_RES */

	/* Hash table of connection identifiers */
	TBX_HASH_HANDLE				hVpGroupHash;		/* Contains pointers to structures of types VOIP_VP_GROUP */

	/* Map of reserved connection index */
	TBX_UINT32					aun32ConnectionIdxReserved[VOIP_MAX_CONNECTION_IDX_PER_ADAPTER];
	TBX_UINT32					un32ConnectionIdxReservedLast;

} VOIP_ADAPTER_CONFIG, *PVOIP_ADAPTER_CONFIG;

/* Status of a discovered adapter */
typedef struct _VOIP_ADAPTER_STATUS
{
	/*
	 *	Clock status
	 */
	VOIP_CLOCK_STATUS	Clock;

	/*
	 *	Trunks status
	 */
	VOIP_TRUNK_STATUS	aTrunk[ VOIP_MAX_TRUNK_PER_ADAPTER ];

	/*
	 *	BERT status
	 */
	TB640_BERT_STATES	aBertRes[ VOIP_MAX_BERT_RES ];

	/*
	 *	Voice processing status
	 */
	TBX_BOOL			fVpGroup0Ready;		/* When TRUE, adapter is ready to receive VP group0 allocation request */
	TBX_BOOL			fVpGroup1Ready;		/* When TRUE, adapter is ready to receive VP group1 allocation request */

} VOIP_ADAPTER_STATUS, *PVOIP_ADAPTER_STATUS;

/* Statistics of a discovered adapter */
typedef struct _VOIP_ADAPTER_STATS
{
	/*
	 *	Stream statistics
	 */
	TBX_BOOL					fGlobalStats;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -