📄 voip.h
字号:
/* 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 + -