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

📄 h323common.h

📁 基于h323协议的软phone
💻 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 + -