📄 config.c
字号:
#include "cm.h"
#include "ci.h"
#include "cmintr.h"
#include "seli.h"
#include "rvwpconfig.h"
#include "configuration.h"
/*#include "msg.h"*/
#include "rvwpct.h"
#include "bepcommon.h"
#include "psyntree.h"
#include "psyntreeDef.h"
#include "rvh323timer.h"
#ifdef INCLUDE_PPPOE_APP
#include "ipphonePPPoE.h"
#include "DoPhoneMenuf.h"
#endif
HAPP hApp;
HPVT hVal = NULL;
extern int gatekeeperStatus;
extern unsigned char gkEnabled;
extern char localE164Num[]; /* Terminal's E.164 number */
extern char localH323Id[]; /* Terminal's H.323 Id */
extern char net_config_msg[41]; /* 网络配置后的消息 */
extern int gk_error_msg_index;
#ifdef INCLUDE_PPPOE_APP
extern enum SubStateOfMenuItem CurState;
extern SEM_ID g_sem_pppoe_startedflag;
#endif
char password[16];
#if 0
extern void cmpBuf();
#endif
int reverseIPAddr(int srcIPAddr)
{
char ipAddr[32];
ipAddr[3] = srcIPAddr >> 24;
ipAddr[2] = (srcIPAddr >> 16) & 0xFF;
ipAddr[1] = (srcIPAddr >> 8) & 0xFF;
ipAddr[0] = srcIPAddr & 0xFF;
return ipAddr[3] + ipAddr[2]*0x100 + ipAddr[1]*0x10000 + ipAddr[0]*0x1000000;
}
extern void startAgentClient();
extern void RebootDSP();
int configRv()
{
Config cfg;
/*sys para*/
SystemConfiguration system;
int maxCalls = MAX_CONCURRENT_CALL_NUM;
int maxChannels = MAX_CONCURRENT_CHAN_NUM;
int maxRasTransaction = maxCalls * 2 + 10;
Allocations allocations;
int maxPoolSizeInKB = 8;
int localIpAddress;
CallProperty callProperty;
int copySingleMessage = 1;
/*RAS para*/
RasConfigration RAS;
int responseTimeOut = 2;
int manualRAS = 1;
int allowCallsWhenNonReg = 1;
int maxFail = 1;
int manualRegistration = 1;
ManualDiscovery manualDiscovery;
TransportAddress GKAddr;
RegistrationInfo registrationInfo;
EndpointType terminalType;
Vendor vendor;
H221NonStandard vendorn;
int t35CountryCode = COUNTRY_CODE;/*china*/
int t35Extension = 0;
int manufacturerCode = MANUFACTURER_CODE;
char* productId;
char* versionId;
TerminalInfo terminal;
NonStandardParameter nonStandardData;
NonStandardIdentifier nonStandardIdentifier;
int mc = 0;
int undefinedNode = 0;
AliasAddress terminalAlias[10];
int aliasSize = 10;
/* char* gatekeeperIdentifier;
VendorIdentifier* endpointVendor;*/
int timeToLive = 60;
VendorIdentifier endpointVendor;
int rasPort =1739;
int maxRetries = 6;
PreGrantedArqUse preGrantedArqUse;
int routed = 1;
int supportAltGK = 1;
int compare15bitRasCrv = 1;
int overlappedSending = 1;
int preTimeToLiveRegistration = 10;
/*Q931 param*/
Q931Configuration Q931;
/* int responseTimeOut = 15;*/
int connectTimeOut = 0;
int callSignalingPort = 1720;
int responseQ931 = ALERTING_SEC+5;
int manualAcc = 1;
int h245Tunneling = 1;
H245Configuration h245;
CapabilitiesConf capabilities;
TermianlCapabilitySet terminalCapabilitySet;
int sequenceNumber = 0;
int protocolIdentifier = 0;
MultiplexCapability multiplexCapability;
MultipointCapability multipointCapatility;
MediaDistributionCapability mediaDistributionCapability;
CapabilityTableEntry capabilityTable[10];
int tableSize = 0;
CapabilityDescriptor capabilityDescriptor[10];
AlternativeCapabilitySet simultaneousCapabilities[10];
int val[10];
int descSize = 0;
ChannelEntry channels[10];
int temp = 20;
int g729 = 2;
int i, index;
GG7231 g7231;
localIpAddress = reverseIPAddr(phoneconfig.conf_network.ipaddr);
memset(&cfg, 0, sizeof(Config));
memset(&system, 0, sizeof(SystemConfiguration));
memset(&callProperty, 0, sizeof(CallProperty));
memset(&allocations, 0, sizeof(Allocations));
memset(&RAS, 0, sizeof(RasConfigration));
memset(&manualDiscovery, 0, sizeof(ManualDiscovery));
memset(®istrationInfo, 0, sizeof(RegistrationInfo));
memset(&terminalType, 0, sizeof(EndpointType));
memset(&terminal, 0, sizeof(TerminalInfo));
memset(&vendor, 0, sizeof(Vendor));
memset(&Q931, 0, sizeof(Q931Configuration));
memset(&preGrantedArqUse, 0, sizeof(PreGrantedArqUse));
memset(&h245, 0, sizeof(H245Configuration));
memset(&capabilities, 0, sizeof(CapabilitiesConf));
memset(&terminalCapabilitySet, 0, sizeof(TermianlCapabilitySet));
memset(&multiplexCapability, 0, sizeof(MultiplexCapability));
memset(&multipointCapatility, 0, sizeof(MultipointCapability));
memset(&mediaDistributionCapability, 0, sizeof(MediaDistributionCapability));
memset(&capabilityTable, 0, 10 * sizeof(CapabilityTableEntry));
memset(&capabilityDescriptor, 0, 10 * sizeof(CapabilityDescriptor));
memset(&channels, 0, 10 * sizeof(ChannelEntry));
/*system config*/
cfg.system = &system;
/*system.manualStart = &h245Tunneling;*/
system.maxCalls = &maxCalls;
system.maxChannels = &maxChannels;
system.maxRasOutTransaction = &maxRasTransaction;
system.maxRasInTransaction = &maxRasTransaction;
system.localIpAddress = &localIpAddress;
system.callProperty = &callProperty;
callProperty.copySingleMessage = ©SingleMessage;
system.allocations = &allocations;
allocations.maxPoolSizeInKB = &maxPoolSizeInKB;
/*RAS config*/
cfg.RAS = &RAS;
RAS.responseTimeOut = &responseTimeOut;
RAS.manualRAS = &manualRAS;
RAS.allowCallsWhenNonReg = &allowCallsWhenNonReg;
RAS.maxFail = &maxFail;
RAS.compare15bitRasCrv = &compare15bitRasCrv;
if (gkEnabled)
{
RAS.manualRAS = NULL;
RAS.manualRegistration = &manualRegistration;/*NULL;*/
RAS.manualDiscovery = &manualDiscovery;
manualDiscovery.defaultGatekeeper = &GKAddr;
if (!phoneconfig.conf_h323.iffirewall)
{
manualDiscovery.defaultGatekeeper->ipAddress.ip
= reverseIPAddr(phoneconfig.conf_service.serverip);
}
else
{
manualDiscovery.defaultGatekeeper->ipAddress.ip
= reverseIPAddr(phoneconfig.conf_network.ipaddr);
if ((SpawnTask( "tStartAgentClient", (FUNCPTR) startAgentClient, FALSE, 60, 10240)) == ERROR)
{
printf("Unable to spawn agent client task\n");
}
taskDelay(200);
}
manualDiscovery.defaultGatekeeper->ipAddress.port = 1719;
/* = phoneconfig.conf_service.serviceport;*/
RAS.registrationInfo = ®istrationInfo;
registrationInfo.terminalType = &terminalType;
terminalType.terminal = &terminal;
/* terminal.nonStandardData = &nonStandardData;*/
nonStandardData.nonStandardIdentifier = &nonStandardIdentifier;
nonStandardData.data = "nonStandardData";
nonStandardIdentifier.h221NonStandard = &vendorn;
nonStandardIdentifier.object = "nonStandardIdentifier";
terminalType.mc = &mc;
terminalType.undefinedNode = &undefinedNode;
terminalType.vendor = &vendor;
vendor.productId = PRODUCT_IDENTIFIER;
vendor.versionId = PRODUCT_VERSION;
vendor.vendor = &vendorn;
vendorn.t35CountryCode = &t35CountryCode;
vendorn.t35Extension = &t35Extension;
vendorn.manufacturerCode = &manufacturerCode;
aliasSize = 1;
registrationInfo.aliasSize = &aliasSize;
registrationInfo.terminalAlias = terminalAlias;
if(localH323Id[0]!='\0')
{
terminalAlias[aliasSize-1].aliasType = "h323-ID";
terminalAlias[aliasSize-1].aliasVal = localH323Id;
aliasSize++;
}
terminalAlias[aliasSize-1].aliasType = "e164";
terminalAlias[aliasSize-1].aliasVal = localE164Num;
strncpy(password, phoneconfig.conf_h323.registerpin, 15);
password[15]='\0';
registrationInfo.timeToLive = &timeToLive;
registrationInfo.endpointVendor = &endpointVendor;
endpointVendor.productId = PRODUCT_IDENTIFIER;
endpointVendor.versionId = PRODUCT_VERSION;
endpointVendor.vendor = &vendorn;
}
RAS.rasPort = &rasPort;
RAS.maxRetries = &maxRetries;
RAS.preGrantedArqUse = &preGrantedArqUse;
preGrantedArqUse.routed = &routed;
RAS.supportAltGK = &supportAltGK;
RAS.overlappedSending = &overlappedSending;
RAS.preTimeToLiveRegistration = &preTimeToLiveRegistration;
/*Q931 config*/
cfg.Q931 = &Q931;
Q931.responseTimeOut = &responseQ931;
Q931.connectTimeOut = &connectTimeOut;
Q931.maxCalls = &maxCalls;
Q931.callSignalingPort = &callSignalingPort;
Q931.manualAccept = &manualAcc;
/*Q931.manualCallProceeding = &manualAcc;*/
Q931.keepCallOnQ931Close = &manualAcc;
/*Q931.notEstablishControl = &manualAcc;*/
Q931.t304 = &responseQ931;
if (phoneconfig.conf_h323.isH245Tunneling)
Q931.h245Tunneling = &h245Tunneling;
/*h245 config*/
cfg.h245 = &h245;
h245.capabilities = &capabilities;
capabilities.terminalCapabilitySet = &terminalCapabilitySet;
terminalCapabilitySet.multiplexCapability = &multiplexCapability;
multiplexCapability.h2250Capability.maximumAudioDelayJitter = 60;
multiplexCapability.h2250Capability.receiveMultipointCapability = &multipointCapatility;
multiplexCapability.h2250Capability.transmitMultipointCapability = &multipointCapatility;
multiplexCapability.h2250Capability.receiveAndTransmitMultipointCapability = &multipointCapatility;
multipointCapatility.mediaDistributionCapability = &mediaDistributionCapability;
multipointCapatility.size = 1;
terminalCapabilitySet.capabilityTable = capabilityTable;
/* 2004.05.20 Move G.723 to the first, to adapt our bp8805v1 codec list */
terminalCapabilitySet.tableSize = 0;
h245.channels = channels;
h245.channelsSize = 0;
for (i = 0, index = 0; i < AUDIO_CODEC_NUM; i++)
{
if (!phoneconfig.conf_audio.codecPrefOrder[i].isUsed)
continue;
if (strcmp(phoneconfig.conf_audio.codecPrefOrder[i].codecName, "g7231") == 0)
{
index++;
terminalCapabilitySet.tableSize++;
capabilityTable[terminalCapabilitySet.tableSize-1].capabilityTableEntryNumber = index;
capabilityTable[terminalCapabilitySet.tableSize-1].capability.receiveAudioCapability.g7231 = &g7231;
g7231.maxAl_sduAudioFrames = 1;
g7231.silenceSuppression = 1;
h245.channelsSize++;
channels[h245.channelsSize-1].name = "g7231";
channels[h245.channelsSize-1].dataType.audioData =
&capabilityTable[h245.channelsSize-1].capability.receiveAudioCapability;
}
else if (strcmp(phoneconfig.conf_audio.codecPrefOrder[i].codecName, "g729AnnexA") == 0)
{
index++;
terminalCapabilitySet.tableSize++;
capabilityTable[terminalCapabilitySet.tableSize-1].capabilityTableEntryNumber = index;
capabilityTable[terminalCapabilitySet.tableSize-1].capability.receiveAudioCapability.g729AnnexA = &g729;
h245.channelsSize++;
channels[h245.channelsSize-1].name = "g729AnnexA";
channels[h245.channelsSize-1].dataType.audioData =
&capabilityTable[h245.channelsSize-1].capability.receiveAudioCapability;
}
else if (strcmp(phoneconfig.conf_audio.codecPrefOrder[i].codecName, "g711Ulaw64k") == 0)
{
index++;
terminalCapabilitySet.tableSize++;
capabilityTable[terminalCapabilitySet.tableSize-1].capabilityTableEntryNumber = index;
capabilityTable[terminalCapabilitySet.tableSize-1].capability.receiveAudioCapability.g711Ulaw64k = &temp;
h245.channelsSize++;
channels[h245.channelsSize-1].name = "g711Ulaw64k";
channels[h245.channelsSize-1].dataType.audioData =
&capabilityTable[h245.channelsSize-1].capability.receiveAudioCapability;
}
else if (strcmp(phoneconfig.conf_audio.codecPrefOrder[i].codecName, "g711Alaw64k") == 0)
{
index++;
terminalCapabilitySet.tableSize++;
capabilityTable[terminalCapabilitySet.tableSize-1].capabilityTableEntryNumber = index;
capabilityTable[terminalCapabilitySet.tableSize-1].capability.receiveAudioCapability.g711Alaw64k = &temp;
h245.channelsSize++;
channels[h245.channelsSize-1].name = "g711Alaw64k";
channels[h245.channelsSize-1].dataType.audioData =
&capabilityTable[h245.channelsSize-1].capability.receiveAudioCapability;
}
else
{
printf("unknown codecIndex %d 's name\n", i);
continue;
}
}
terminalCapabilitySet.capabilityDescriptor = capabilityDescriptor;
terminalCapabilitySet.descSize = 1;
capabilityDescriptor[terminalCapabilitySet.descSize-1].simultaneousCapabilities = simultaneousCapabilities;
capabilityDescriptor[terminalCapabilitySet.descSize-1].size = 1;
simultaneousCapabilities[0].size = index;
simultaneousCapabilities[0].val = val;
/* 2004.05.20 Move G.723 to the first, to adapt our bp8805v1 codec list */
/*val[0] = 7110;
val[1] = 7111;
val[2] = 7291;
val[3] = 7292;
val[4] = 7293;
val[5] = 7294;
val[6] = 7231;
val[0] = 7291;*/
for (i = 0; i < index; i++)
val[i] = i + 1;
if (buildConfigRVStack(&cfg) < 0)
return -1;
return 0;
}
RvH323TimerPoolHandle rv_timer;
RvTimerQueue* rv_timersQueue;
void localTimeInit()
{
rv_timer = RvH323TimerConstruct(5, &rv_timersQueue);
}
void localTimeEnd()
{
RvH323TimerDestruct(rv_timer);
}
/*extern RvBool ChangeGKCfg(IN void * context);
GKConnChange __localgkch;*/
extern int rvwpReceive(WrapperMsg *msg);
RvBool dumbHandle(IN void* context)
{
WrapperMsg wpMsg;
while (rvwpReceive(&wpMsg) != ERROR)
{
printf("receive msg from msgQ , handle!--------\n");
wpHandleMsg(&wpMsg);
}
return RV_TRUE;
}
#if 0
void ChangeGK(GKConnChange* ch)
{
/* cmElem *app = (cmElem*)hApp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -