📄 h323common.h
字号:
#ifndef __H323COMMON_H__
#define __H323COMMON_H__
/***********************************************
* INCLUDES
***********************************************/
extern "C" {
#include "h323.h"
}
/*#include "jb.x"*/
//jitter buffer files
/*
#include "jb.h"
#include "jb.x"
*/
/*#include "DTMFDevice.h"*/
/*
#include "vxWorks.h"*/
/*#include "dspManager.h"*/
#include "task.h"
#include "beptimer.h"
#define __H323
#include "configuration.h"
/*#include "bepcommon.h"*/
typedef char ForwardNumber[40];
typedef struct ForwardNumberList_tag
{
RvUint32 num;
ForwardNumber list[MAX_FORWARD_NUMBER_LIST];
} ForwardNumberList;
/*
typedef struct MAC_LIST
{
unsigned char mac_addr[6];
struct MAC_LIST* next;
}MAC_LIST;
*/
#define ETH_ARP 0x0806
typedef struct ARPPACKET
{
unsigned char htype[2];
unsigned char ptype[2];
unsigned char hlen;
unsigned char plen;
unsigned char op[2];
unsigned char SenderMac[6];
unsigned char SenderIP[4];
unsigned char TargetMac[6];
unsigned char TargetIP[4];
unsigned char Trailer[18];
} ARPPACKET;
typedef struct AppCallInfo_tag
{
char ipAddr[5];
char display[MAX_DISPLAY_LENGTH + 1];
char h323Id[MAX_H323ID_LENGTH + 1];
char e164Num[MAX_E164NUM_LENGTH + 1];
WpCodec codec;
ForwardNumberList forwardNumberList; /* Forward to number list */
unsigned char used;
} AppCallInfo;
/***********************************************
* DEFINES
***********************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*#define LENGTH_LOCAL_ID 32 /* Large enough to hold the biggest configuration string */
#define TASKDELAY_ONE_SEC 100
#define CDR_FORMAT "AA:%s AN:%s BA:%s BN:%s AD: BD: TP: CF: CA: CN: BW: ST:%u ET:%u\n"
#define CALLER_ACTOR 1
#define RECEIVER_ACTOR 2
#define MAX_PHONE_NUMBER_LEN 32
#define ONE_SEC 1 * 1000
#define THREE_SEC 3 * 1000
#define FOUR_SEC 4 * 1000
#define SIX_SEC 6 * 1000
#define TEN_SEC 10 * 1000
#define FIFTEEN_SEC 15 * 1000
#define THIRTY_SEC 30 * 1000
#define ALERTING_SEC 30*1000
#define CONNECT_TIME 90*1000
#define LENGTH_LOCAL_ID 32
#if 0
/***********************************************
* External declarations
***********************************************/
extern int InitStack(void);
extern short wpSendMsgToWp(WrapperMsg * givenMsg);
extern ULONG sysGetCPUVer(void);
/*offhook-reboot-ringing*/
extern void ScanForOffHook(void);
extern void appRegisterToPhyStatus( FUNCPTR ptr );
extern void changeNetSpeed ( void );
#endif
/***********************************************
* Forward declarations
***********************************************/
/* 等待第一次拨号超时或按拨出键,
* 则直接拨出待机时已输入号码
*/
int AppCalloutDirect();
/* 直接拨出Transfer 号码 */
int AppCalloutTransfer();
/* 得到预拨出号码 */
int AppGetCallingNumber();
int AppSendWrapper (WpMsgId msgid, int callId);
int AppTerminateAction (int given_state);
int SendARPBroadcast();
void AppSendCallForward(int callId, char *destAddr, int destAddrType);
#if 0
/* 终结指定通道的通话 */
void AppTerminateOneCall(unsigned int chan, unsigned int term_type);
/* 激活指定通道已有的通话 */
void AppMakeActiveCall(unsigned int chan);
/* 切换当前的激活通道*/
void AppSwitchActiveCall(unsigned int new_chan, int unpause);
#endif
/* 设置信号编码格式 */
void AppSetCodec(WpCodex rx, WpCodex tx);
/* 封装返回忙或呼叫转移的处理流程 */
void AppReplyNotAvailOrFwd(WrapperMsg *wp_msg);
/* 保存已接来电 */
int AppRecordIncomingCall(char * number);
/* 保存未接来电 */
int AppRecordNoAnswerCall(char * number);
/* 保存拨出电话 */
int AppRecordOutgoingCall(char * number);
/* 得到nvram中的call forward相关配置 */
void AppGetForwardConfig();
/* 设置通话状态下需显示的对方IP地址或者E.164号码 */
void SetRemoteNumber();
void SetRemoteName(char *name, char *number);
/* 查找速拨号码 */
int SearchSpeedDialNumber(char *digits);
int RedialKey(int type);
/* 设置localID */
void SetLocalID();
void PlayBusyTone(int playTime);
int copyStrSafely(char *dst, char *src, int len);
time_t getCurrentTime();
void recordCallTime();
void LcdShowMessage(char *msg);
int startJbAndRtp(int callId);
void stopJbAndRtp();
int h323JbInit();
WpCodex AppGetCodec(int codecIndex);
int TestInputHook(struct ifnet *pIf, char *buffer, int length);
/***********************************************
* LOCAL VARIABLES
***********************************************/
int* state = NULL;
/*tone_type tone_playing = null_tone;*/
char digit_set[MAX_PHONE_NUMBER_LEN+1]; /* 用户输入的数字号码 */
/* Pointer to the decoder and encoder objects. The Jitter Buffer uses these
* pointers to send and receive packets of media.
*/
#if 0
CdspDecoder *dspApiDecoder[DSP_MAX_DECODER_USERS];
CdspEncoder *dspApiEncoder[DSP_MAX_ENCODER_USERS];
CdspManager *dspApiMgr; /* DSPAPI Manager */
extern int muted;
unsigned char mutedByTransfer = 0; /* 按下转接键时是否打开了静音 */
#endif
int callIndex = -1; /* 当前占用通道号 */
unsigned char call_numbers = 0; /* Concurrent call numbers */
unsigned char remoteIPAddr[5];
char localTermIPAddr[5]; /* Terminal's IP address */
char localIPAddr[5]; /* Terminal's IP address */
char localGWAddr[5]; /* Terminal's Gateway IP address */
char localIPNumber[5]; /* 本地终端IP地址,as numbers, not a string */
char localDisplay[MAX_DISPLAY_LENGTH+1]; /* Terminal's display string */
char localE164Num[MAX_E164NUM_LENGTH+1]; /* Terminal's E.164 number */
char localH323Id[MAX_H323ID_LENGTH+1]; /* Terminal's H.323 Id */
char toAddr[32+1];
int num_digits = 0;
int digitCollectAmount = -1;
unsigned char gkEnabled = 0; /* 是否支持网守 */
int gatekeeperStatus = FALSE;
#ifdef INCLUDE_PPPOE_APP
int pppoeStatus = FALSE; /*pppoe status*/
#endif
unsigned char networkStatus = FALSE/*TRUE*/; /* 网线连接是否正常 */
unsigned int ForwardUncond = FALSE; /* 是否允许无条件转移,默认为false */
unsigned int ForwardBusy = FALSE; /* 是否允许遇忙转移,默认为false */
unsigned int ForwardNoResponse = FALSE; /* 是否允许无应答转移,默认为false */
char ForwardNumberUncond[MAX_PHONE_NUMBER_LEN + 1];
char ForwardNumberBusy[MAX_PHONE_NUMBER_LEN + 1];
char ForwardNumberNoResponse[MAX_PHONE_NUMBER_LEN + 1];
RvUint16 ForwardNumberUncondType; /* 呼叫转移地址的类型 */
RvUint16 ForwardNumberBusyType; /* 呼叫转移地址的类型 */
RvUint16 ForwardNumberNoResponseType; /* 呼叫转移地址的类型 */
int transferred_flag = FALSE; /* 转接标志 */
int starting_transfer = FALSE; /* 是否已开始转接 */
int transfer_done = FALSE; /* 是否转接结束 */
int awaiting_transfer = FALSE; /* 是否在等待转接 */
int transfer_abandoned = FALSE; /* 是否放弃转接 */
char TransferIPAddr[5]; /* Transferred-to's IP address (party C address) */
int call_forward_timer = -1; /* 呼叫前转计时器 */
int h323_timer = -1; /* 计时器 */
int volume_timer = -1; /* 音量保存计时器 */
int pingTimer = -1; /* Ping 计时器 */
int IPTimer =-1; /*IP地址冲突计时器*/
int DelayTimer =-1; /* 延迟发arp包的计时器*/
int rasTimer = -1; /* ras 消息定时器*/
int dhcpTimer = -1; /* dhcp 申请定时器 */
int reDhcpTimer = -1; /* dhcp重新申请定时器 */
int congestion_timeout = 0; /* 催挂音是否超时 */
int arp_reply_timer = -1; /*是否收到arp包的定时器*/
int ifipconflict;
int forwarded_flag = FALSE; /* 前转标志 */
char net_config_msg[41]; /* 网络配置后的消息 */
int gk_error_msg_index = -1;
char CDRMessage[210];
/*time_t startVoiceTime, endVoiceTime;*/
unsigned char callActor = CALLER_ACTOR;
char oldRemoteName[32+1];
char oldRemoteNumber[MAX_PHONE_NUMBER_LEN+1];
#ifndef INCLUDE_RV_RTP
RtpManager* rtpManager = NULL;
#endif
int sId = 0;
/*U8 txCodec ;
U8 rxCodec ;
U16 txpayload;
U16 rxpayload;
U16 txmaxAlSduFrames;
U16 rxmaxAlSduFrames;
U16 txencodeRate;
U16 rxencodeRate;*/
AppCallInfo appCallInfo[MAX_CONCURRENT_CALL_NUM];
/*struct timespec times2 = { 0, 100000000};*/
/*
extern SEM_ID initProcSem;
extern int initDone;
*/
/*extern WpCodecList wpCodecList;*/
/*extern unsigned char h323ParamInit;*/
#ifdef __cplusplus
}
#endif
#endif /* __H323COMMON_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -