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

📄 sessioncontrol.cpp

📁 KphoneSI (kpsi) is a SIP (Session Initiation Protocol) user agent for Linux, with which you can in
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include <sys/types.h>#include <unistd.h>#include <signal.h>#include <qsettings.h>#include <qwidget.h> #include "../dissipate2/sipprotocol.h"#include "../dissipate2/sipcall.h"#include "sessioncontrol.h"#include "kphone.h"#include "kstatics.h"#include "../config.h"SessionControl::SessionControl(const char *name){	output = 0;	input = 0;	useoss = true;	setVideoSW( QString::null );	setVideoDEV( QString::null );	dorem = false;	audioMode=isOSS;	QSettings settings;	pFix = QString::fromAscii( name);	payload = settings.readNumEntry( KStatics::dBase+pFix+"/dsp/SizeOfPayload", 160 );	useStun = false;	stunSrv = "";	occupyActive=false;	bool ok;	int pcodec=0,scodec=0,tcodec=0,qcodec=0,fcodec=0;	int l=0;	for (l=0;l<20;l++) {	    useL4v[l] = usertpL4;	    allowHold[l] = false;    	    allowTransfer[l] = false;    	    onlyActive[l] = false;	    AllowRemoteStart[l]=false;	}	debug=KStatics::debugLevel;#ifndef SRTPsettings.writeEntry( KStatics::dBase + "SRTP/Mode", "disabled" );#endif		notiExpires =settings.readNumEntry(KStatics::dBase+pFix+"/General/CTNotificationExpiresTime", 10)*1000 ;	dtmfWait =settings.readNumEntry(KStatics::dBase+pFix+"/General/DTMFSequenceTime", 1000);	Auacnt=settings.readEntry( KStatics::dBase+pFix+"/sip/AuaCnt", "60");	forwardNAcnt=settings.readEntry( KStatics::dBase+pFix+"/sip/callforwardNAcnt", "50");	if(forwardNAcnt<5) forwardNAcnt=5;	forwardNAuri=settings.readEntry( KStatics::dBase+pFix+"/sip/callforwardNAUri", "");	docfna=false;	doaua=false;	totalNumberOfPrefAudioCodecs=NAUDIO;	totalNumberOfPrefVideoCodecs=NVIDEO;	vCodecName[0] = H261D;	vCodecNum[0]  = H261N;	vCodecName[1] = H263D;	vCodecNum[1]  = H263N;	vCodecName[2] = H263PD;	vCodecNum[2]  = H263PN;	aCodecName[0] = PCMUD;	aCodecNum[0]  = PCMUN;	aCodecName[1] = PCMAD;	aCodecNum[1]  = PCMAN;	aCodecName[2] = GSMD;	aCodecNum[2]  = GSMN;	aCodecName[3] = ILBCD;	aCodecNum[3]  = ILBCN;	aCodecName[4] = SPEEXD;	aCodecNum[4]  = SPEEXN;//Initialisation of commandline and vectorID	extSW[1]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType1/exec", "kedit" );	settings.writeEntry( KStatics::dBase+pFix+"/SessionType1/exec",extSW[1]);	extSW[2]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType2/exec", "kedit" );	settings.writeEntry( KStatics::dBase+pFix+"/SessionType2/exec",extSW[2]);	extSW[3]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType3/exec", "kedit" );	settings.writeEntry( KStatics::dBase+pFix+"/SessionType3/exec",extSW[3]);	extSW[4]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType4/exec", "kedit" );	settings.writeEntry( KStatics::dBase+pFix+"/SessionType4/exec",extSW[4]);	extPR[1]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType1/param", "" );	settings.writeEntry( KStatics::dBase+pFix+"/SessionType1/param", extPR[1]);	extPR[2]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType2/param", "" );	settings.writeEntry( KStatics::dBase+pFix+"/SessionType2/param", extPR[2]);	extPR[3]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType3/param", "" );	settings.writeEntry( KStatics::dBase+pFix+"/SessionType3/param", extPR[3]);	extPR[4]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType4/param", "" );	settings.writeEntry( KStatics::dBase+pFix+"/SessionType4/param", extPR[4]);	vectorId[1]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType1/VectorId","no");	settings.writeEntry( KStatics::dBase+pFix+"/SessionType1/VectorId",vectorId[1]  );	vectorId[2]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType2/VectorId","no");	settings.writeEntry( KStatics::dBase+pFix+"/SessionType2/VectorId",vectorId[2]  );	vectorId[3]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType3/VectorId","no");	settings.writeEntry( KStatics::dBase+pFix+"/SessionType3/VectorId",vectorId[3]  );	vectorId[4]  = settings.readEntry(KStatics::dBase+pFix+"/SessionType4/VectorId","no");	settings.writeEntry( KStatics::dBase+pFix+"/SessionType4/VectorId",vectorId[4] );	videoSW    = settings.readEntry( KStatics::dBase+pFix+"/Video/videoSW","vic");	videoDEV   = settings.readEntry( KStatics::dBase+pFix+"/Video/device","/dev/video0");	setOSSFilename( settings.readEntry( KStatics::dBase+pFix+"/Audio/oss-filename", "/dev/dsp") );	setOSSFilename2( settings.readEntry( KStatics::dBase+pFix+"/Audio/oss-filename2" , "/dev/dsp") );	setALSAFilename( settings.readEntry( KStatics::dBase+pFix+"/Audio/alsa-filename" , "default") );	setRingtonedevice(settings.readEntry( KStatics::dBase+pFix+"/Audio/ringtone-device", "default" ) );	setRingtonefile( settings.readEntry( KStatics::dBase+pFix+"/Audio/ringtone-file" , QString(SHARE_DIR) + "/ring/ring.wav") );	setRingtoneP( settings.readEntry( KStatics::dBase+pFix+"/Audio/ringtone-parameters", "%D %F" ) );	setRingtoneapp( settings.readEntry( KStatics::dBase+pFix+"/Audio/ringtone-application","kphoneringsh" ) );	setAudioRW( settings.readEntry( KStatics::dBase+pFix+"/Audio/mode","readonly_writeonly" ) );//	if( settings.readEntry( KStatics::dBase+ pFix +"/Symmetric/Media", "Yes" ) == "Yes" ) {	setSymMediaMode( true );//	} else {//		setSymMediaMode( false );//	}	if( settings.readEntry( KStatics::dBase+pFix+"/Audio/audio","oss"  ) == "oss" ) {		setAudioSys( isOSS );		if(debug >=  2) printf( "=====Audio: audio system=OSS\n");	} else if( settings.readEntry( KStatics::dBase+pFix+"/Audio/audio", "oss" ) == "alsa" ) {		if(debug >=  2) printf( "=====Audio: audio system=ALSA\n");		setAudioSys( isALSA );	} else {		setAudioSys( isOSS );		if(debug >=  2) printf( "=====Audio: audio system=OSS\n");	}		if( settings.readEntry( KStatics::dBase + pFix + "/sip/remdialer", "No" ) == "Yes" ) {		setRem( true );	} else {		setRem( false );	}	pcodec=0; scodec=0; tcodec=0; qcodec=0;	pcodec=settings.readNumEntry( KStatics::dBase+pFix+"/Video/poscodec0",0);	scodec=settings.readNumEntry( KStatics::dBase+pFix+"/Video/poscodec1",1);	tcodec=settings.readNumEntry( KStatics::dBase+pFix+"/Video/poscodec2",2);	initCodecVideo(pcodec, scodec,tcodec);	pcodec=0; scodec=0; tcodec=0; qcodec=0;fcodec=0;	pcodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec0","0").toInt(&ok,10);	scodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec1","1").toInt(&ok,10);	tcodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec2","2").toInt(&ok,10);	qcodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec3","3").toInt(&ok,10);#ifdef  SPEEX	fcodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec4","4").toInt(&ok,10);#else	fcodec = -1;#endif	minMediaPort = settings.readEntry( KStatics::dBase+ pFix  +"/Media/MinPort","8000" ).toInt(&ok,10);	maxMediaPort = settings.readEntry( KStatics::dBase+ pFix  +"/Media/MaxPort","9000" ).toInt(&ok,10);	minApplPort  = settings.readEntry( KStatics::dBase+ pFix  +"/Application/MinPort","10000" ).toInt(&ok,10);	maxApplPort  = settings.readEntry( KStatics::dBase+ pFix  +"/Application/MaxPort","11000" ).toInt(&ok,10);	initCodecAudio(pcodec, scodec,tcodec,qcodec,fcodec);	rtbsel = settings.readNumEntry( KStatics::dBase+pFix+"/General/Ringtone",1);		if( settings.readEntry( KStatics::dBase+ pFix  +"/STUN/UseStun", "No" ) == "Yes" ) {		setStun(true);	} else {		setStun(false);	}	if(settings.readEntry(KStatics::dBase +"SRTP/Mode", "disabled") == "PSK") {		srtpmode = 1;	} else if(settings.readEntry(KStatics::dBase +"SRTP/Mode", "disabled") == "PKE") {		srtpmode = 2;	} else {		srtpmode = 0;		}	int i=0;//audio	i= (int)SipCall::StandardCall;	allowHold[i] = true;    	allowTransfer[i] = true;    	onlyActive[i] = true;	AllowRemoteStart[i]=false;	useL4v[i] = usertpL4;//auvi	i= (int)SipCall::auviCall;	allowHold[i] = true;	allowTransfer[i] = true;	onlyActive[i] = true;	useL4v[i] = usertpL4;	AllowRemoteStart[i]=false;    	if (settings.readEntry(KStatics::dBase+pFix+"/Video/Hold", "No" ) == "Yes") {		allowHold[i] = true;    	} else {		allowHold[i] = false;    	}    	if (settings.readEntry(KStatics::dBase+pFix+"/Video/Transfer", "No" ) == "Yes") {		allowTransfer[i] = true;    	} else {		allowTransfer[i] = false;   	}//Video	i = (int)SipCall::videoCall;	if (settings.readEntry(KStatics::dBase+pFix+"/Video/Hold", "No" ) == "Yes") {		allowHold[i] = true;    	} else {		allowHold[i] = false;    	}    	if (settings.readEntry(KStatics::dBase+pFix+"/Video/Transfer", "No" ) == "Yes") {		allowTransfer[i] = true;    	} else {		allowTransfer[i] = false;   	}	useL4v[i] = usertpL4;	onlyActive[i] = false;	AllowRemoteStart[i]=false;// Privat: general	for (i=(int)SipCall::extCall1; i<=(int)SipCall::extCall4;i++) {		int i1=i-(int)SipCall::extCall1+1;		if (settings.readEntry(KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/Hold", "No" ) == "Yes") {			allowHold[i] = true;			settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/Hold", "Yes"  );    		} else {			allowHold[i] = false;			settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/Hold", "No"  );    		}    		if (settings.readEntry(KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/Transfer", "No" ) == "Yes") {        		allowTransfer[i] = true;			settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/Transfer", "Yes"  );    		} else {			allowTransfer[i] = false;			settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/Transfer", "No"  );    		}    		if (settings.readEntry(KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/UseSound", "No" ) == "Yes") {			onlyActive[i] = true;			settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/UseSound", "Yes"  );    		} else {			onlyActive[i] = false;			settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/UseSound", "No"  );    		}			if (settings.readEntry(KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/UseL4", "UDP" ) == "UDP") {				useL4v[i] = useudpL4;				settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/UseL4", "UDP"  );		} else {				useL4v[i] = usertpL4;				settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/UseL4", "RTP"  );		}								if (settings.readEntry(KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/Rst", "No" ) == "Yes") {				AllowRemoteStart[i] = true;				settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/Rst", "Yes"  );		} else {				AllowRemoteStart[i] = false;				settings.writeEntry( KStatics::dBase+pFix+"/SessionType" + QString::number(i1) + "/Rst", "No"  );		}	}}SessionControl::~SessionControl( void ){}void SessionControl::setALSAFilename( const QString &devname ){	if(debug >=  2) printf( "=====Audio: set AlsaFilename %s\n", devname.latin1());	if( devname == QString::null ) {		alsafilename = "default";	} else {		alsafilename = devname;	}}void SessionControl::setOSSFilename( const QString &devname ){	if(debug >=  2) printf( "=====Audio: audio set OSSFilename %s\n", devname.latin1());	if( devname == QString::null ) {		ossfilename = "/dev/dsp";	} else {		ossfilename = devname;	}}void SessionControl::setRingtonefile( const QString &devname ){	if(debug >=  2) printf( "=====Audio: audio set RingToneFile %s\n", devname.latin1());	if( devname == QString::null ) {		ringtonefile = "default";	} else {		ringtonefile = devname;	}}void SessionControl::setRingtonedevice( const QString &devname ){	if(debug >=  2) printf( "=====Audio: set RingTonedevice %s\n", devname.latin1());	if( devname == QString::null ) {		ringtonedevice = "/dev/dsp";	} else {		ringtonedevice = devname;	}}void SessionControl::setRingtoneP( const QString &devname ){	if(debug >=  2) printf( "=====Audio: audio set RingToneP %s\n", devname.latin1());	if( devname == QString::null ) {		ringtonep = "%D %F";	} else {		ringtonep = devname;	}}void SessionControl::setRingtoneapp( const QString &devname ){	if(debug >=  2) printf( "=====Audio: set RingToneApp %s\n", devname.latin1());	if( devname == QString::null ) {		ringtoneapp = "kphoneringsh";	} else {		ringtoneapp = devname;	}}void SessionControl::setOSSFilename2( const QString &devname ){	if(debug >=  2) printf( "=====Audio: audio set OSSFilename2 %s\n", devname.latin1());	if( devname == QString::null ) {		ossfilename2 = "/dev/dsp";	} else {		ossfilename2 = devname;	}}void SessionControl::setVideoSW( const QString &sw ){	if( sw == QString::null ) {		videoSW = "vic";	} else {		videoSW = sw;	}}

⌨️ 快捷键说明

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