📄 config.c
字号:
cmChanEvent.cmEvChannelReplace = cmEvChannelReplace;
cmChanEvent.cmEvChannelFlowControlToZero = cmEvChannelFlowControlToZero;
cmChanEvent.cmEvChannelMiscCommand = cmEvChannelMiscCommand;
cmChanEvent.cmEvChannelTransportCapInd = cmEvChannelTransportCapInd;
cmChanEvent.cmEvChannelSetNSAPAddress = cmEvChannelSetNSAPAddress;
cmChanEvent.cmEvChannelSetATMVC = cmEvChannelSetATMVC;*/
cmSetChannelEventHandler(hApp,&cmChanEvent,sizeof(SCMCHANEVENT));
memset (&cmControlEvent,0,sizeof(SCMCONTROLEVENT));
cmControlEvent.cmEvCallNewChannel = cmEvCallNewChannel;
/*cmControlEvent.cmEvCallUserInput = cmEvCallUserInput;*/
cmControlEvent.cmEvCallCapabilities = cmEvCallCapabilities;
/* cmControlEvent.cmEvCallCapabilities = cmEvCallCapabilities;
cmControlEvent.cmEvCallCapabilitiesExt = cmEvCallCapabilitiesExt;
cmControlEvent.cmEvCallNewChannel = cmEvCallNewChannel;
cmControlEvent.cmEvCallCapabilitiesResponse = cmEvCallCapabilitiesResponse;
cmControlEvent.cmEvCallMasterSlaveStatus = cmEvCallMasterSlaveStatus;
cmControlEvent.cmEvCallRoundTripDelay = cmEvCallRoundTripDelay;
cmControlEvent.cmEvCallUserInput = cmEvCallUserInput;
cmControlEvent.cmEvCallRequestMode = cmEvCallRequestMode;
cmControlEvent.cmEvCallMiscStatus = cmEvCallMiscStatus;
cmControlEvent.cmEvCallControlStateChanged = cmEvCallControlStateChanged;
cmControlEvent.cmEvCallMasterSlave = cmEvCallMasterSlave;
cmControlEvent.cmEvCallControlMessage = cmEvCallControlMessage;*/
cmSetControlEventHandler(hApp,&cmControlEvent,sizeof(SCMCONTROLEVENT));
memset (&cmProtocolEvent,0,sizeof(SCMPROTOCOLEVENT));
cmProtocolEvent.hookRecvFrom = wphookRecvFrom;
cmProtocolEvent.hookSendTo = wphookSendTo;
cmSetProtocolEventHandler(hApp,&cmProtocolEvent,sizeof(SCMPROTOCOLEVENT));
memset(&cmRasEvent, 0, sizeof(SCMRASEVENT));
UNUSED_HANDLE(cmRasEvent.cmEvRASConfirm);
UNUSED_HANDLE(cmRasEvent.cmEvRASReject);
UNUSED_HANDLE(cmRasEvent.cmEvRASRequest);
UNUSED_HANDLE(cmRasEvent.cmEvRASTimeout);
cmRASSetEventHandler(hApp, &cmRasEvent, sizeof(SCMRASEVENT));
memset(&cmAutoRasEvent, 0, sizeof(SCMAUTORASEVENT));
UNUSED_HANDLE(cmAutoRasEvent.cmEvAutoRASRequest);
cmAutoRasEvent.cmEvAutoRASConfirm = wpcmEvAutoRASConfirm;
cmAutoRasEvent.cmEvAutoRASReject = wpcmEvAutoRASReject;
cmAutoRasEvent.cmEvAutoRASTimeout = wpcmEvAutoRASTimeout;
cmAutoRASSetEventHandler(hApp, &cmAutoRasEvent, sizeof(SCMAUTORASEVENT));
/*
status = cmStart(hApp);
if (status < 0) return status;
*/
/* if (interp != NULL)
TclExecute("test:SetStackStatus Running");
/* Used for host color randomization */
/* srand(time(NULL));
seliInit();
*/
Initrvwp();
return 0;
}
#if 0
void getParm(char* path)
{
int status = -10;
int val = -20;
status = ciGetValue( ((cmElem*)hApp)->hCfg, path, NULL, &val);
printf("get %s=%d, return %d!\n", path, val, status);
}
void showParm()
{
H245Configuration h245;
getParm("system.maxCalls");
getParm("system.localIpAddress");
getParm("system.callProperty.copySingleMessage");
getParm("RAS.rasPort");
getParm("RAS.responseTimeOut");
getParm("RAS.allowCallsWhenNonReg");
getParm("RAS.maxFail");
getParm("RAS.manualDiscovery");
getParm("RAS.manualRegistration");
getParm("RAS.manualDiscovery.defaultGatekeeper");
getParm("RAS.manualDiscovery.defaultGatekeeper.ipAddress");
getParm("RAS.manualDiscovery.defaultGatekeeper.ipAddress.port");
getParm("RAS.manualDiscovery.defaultGatekeeper.ipAddress.ip");
getParm("RAS.registrationInfo");
getParm("RAS.registrationInfo.terminalType");
getParm("RAS.registrationInfo.terminalType.mc");
getParm("RAS.registrationInfo.terminalType.undefinedNode");
getParm("RAS.registrationInfo.terminalType.vendor");
getParm("RAS.registrationInfo.terminalType.vendor.vendor");
getParm("RAS.registrationInfo.terminalType.vendor.vendor.manufacturerCode");
getParm("RAS.registrationInfo.terminalType.vendor.vendor.t35CountryCode");
getParm("RAS.registrationInfo.terminalType.vendor.productId");
getParm("RAS.registrationInfo.terminalAlias.2.aliasType");
getParm("RAS.registrationInfo.terminalAlias.2.aliasVal");
getParm("RAS.registrationInfo.terminalAlias.2.e164");
getParm("RAS.registrationInfo.terminalAlias.1.aliasType");
getParm("RAS.registrationInfo.terminalAlias.1.aliasVal");
getParm("RAS.registrationInfo.terminalAlias.1.h323-ID");
getParm("RAS.registrationInfo.terminalType.vendor.versionId");
getParm("RAS.registrationInfo.terminalType.terminal.nonStandardData.nonStandardIdentifier.h221NonStandard.manufacturerCode");
getParm("RAS.registrationInfo.endpointVendor.productId");
getParm("RAS.registrationInfo.endpointVendor.versionId");
getParm("RAS.registrationInfo.endpointVendor.vendor.t35CountryCode");
getParm("RAS.registrationInfo.endpointVendor.vendor.manufacturerCode");
getParm("Q931.responseTimeOut");
getParm("maxCalls");
getParm("h245");
getParm("h245.capabilities");
getParm("h245.capabilities.terminalCapabilitySet");
getParm("h245.capabilities.terminalCapabilitySet.multiplexCapability.h2250Capability");
getParm("h245.capabilities.terminalCapabilitySet.multiplexCapability.h2250Capability.maximumAudioDelayJitter");
getParm("h245.capabilities.terminalCapabilitySet.multiplexCapability.h2250Capability.rtcpVideoControlCapability");
getParm("h245.capabilities.terminalCapabilitySet.multiplexCapability.h2250Capability.mcCapability.centralizedConferenceMC");
getParm("h245.capabilities.terminalCapabilitySet.multiplexCapability.h2250Capability.mediaPacketizationCapability.h261aVideoPacketization");
getParm("h245.capabilities.terminalCapabilitySet.multiplexCapability.h2250Capability.receiveMultipointCapability.mediaDistributionCapability");
getParm("h245.capabilities.terminalCapabilitySet.multiplexCapability.h2250Capability.receiveMultipointCapability.mediaDistributionCapability.1.centralizedAudio");
getParm("h245.capabilities.terminalCapabilitySet.multiplexCapability.h2250Capability.maximumAudioDelayJitter");
getParm("h245.capabilities.terminalCapabilitySet.capabilityTable");
getParm("h245.capabilities.terminalCapabilitySet.capabilityTable.1.capability.receiveAudioCapability.g711Alaw64k");
getParm("h245.capabilities.terminalCapabilitySet.capabilityDescriptors");
getParm("h245.capabilities.terminalCapabilitySet.capabilityDescriptors.1.capabilityDescriptorNumber");
getParm("h245.capabilities.terminalCapabilitySet.capabilityDescriptors.1.simultaneousCapabilities");
getParm("h245.capabilities.terminalCapabilitySet.capabilityDescriptors.1.simultaneousCapabilities.1");
getParm("h245.capabilities.terminalCapabilitySet.capabilityDescriptors.1.simultaneousCapabilities.1.1");
getParm("h245.channels.1.dataType.audioData.g711Alaw64k");
}
extern char * bufConfig;
extern int bufCfOffset;
void cmpBuf()
{
char* tmpB;
int tmpS;
int i;
ciAllocateTargetBuffer(((cmElem*)hApp)->hCfg, &tmpB, &tmpS);
ciSave(((cmElem*)hApp)->hCfg, tmpB);
printf("bufConfig,size=%d\n", bufCfOffset);
for (i = 0; i < bufCfOffset; i++)
{
if ((i +1)%80 == 0)printf("\n");
if ( (bufConfig[i] >= '0' && bufConfig[i] <='9')
|| (bufConfig[i] >= 'a' && bufConfig[i] <= 'z')
|| (bufConfig[i] >= 'A' && bufConfig[i] <= 'Z'))
printf("%c ", bufConfig[i]);
else
printf("%x", bufConfig[i]);
}
printf("\n");
printf("tmpB,size=%d\n", tmpS);
for (i = 0; i < tmpS; i++)
{
if ((i +1)%80 == 0)printf("\n");
if ( (tmpB[i] >= '0' && tmpB[i] <='9')
|| (tmpB[i] >= 'a' && tmpB[i] <= 'z')
|| (tmpB[i] >= 'A' && tmpB[i] <= 'Z'))
printf("%c ", tmpB[i]);
else
printf("%x", tmpB[i]);
}
printf("\n");
endConfig();
}
extern void AppMain();
void testApp()
{
printf("start init h323...\n");
H323Init();
printf("end init h323.\n");
taskSpawn("rvTask", 100, 0, 10000, (FUNCPTR)AppMain,0,0,0,0,0,0,0,0,0,0 );
taskDelay(2*100);
RvTask();
}
void printSyn(synStruct* syn, char* name)
{
printf("syn(%s)rootNodeId :%d\n", name, syn->rootNodeId);
printf("syn(%s)rootNameId:%d\n", name, syn->rootNameId);
printf("syn(%s)syntaxName:%s\n", name, syn->syntaxName);
}
int isComplexType(pstNodeType type)
{
switch (type)
{
case pstChoice:
case pstSequence:
case pstSet:
case pstOf:
case pstSequenceOf:
case pstSetOf:
return 1;
default:
return 0;
}
}
char* nodtype[] =
{
"Integer",
"Null",
"Boolean",
"Enumeration",
"ObjectIdentifier",
"OctetString",
"BitString",
"GeneralString",
"UniversalString",
"BMPString",
"IA5String",
"VisibleString",
"NumericString",
"PrintableString",
"Choice",
"Sequence",
"Set",
"Of",
"SequenceOf",
"SetOf"
} ;
static int level = 0;
void printMsgSyn(HPST synH, int stNodeId)
{
pstChild child;
int numOfChild, i, j, len, status;
char nameBuf[64];
pstNodeType type;
level++;
type = pstGetNodeType(synH, stNodeId);
if (type < 0)
{
printf("get node(%d) type return error(%d)!\n", stNodeId, type);
return;
}
if (isComplexType(type) && level < 4)
{
for (j = 1; j <= level-1; j++)
printf(" ");
printf("{\n");
numOfChild = pstGetNumberOfChildren(synH, stNodeId);
if (numOfChild < 0)
{
printf("get node(%d)'s numofchild return error(%d)!\n", stNodeId, type);
return;
}
for (i = 1; i <= numOfChild; i++)
{
printf("%2d>", level);
for (j = 1; j <= level; j++)
printf(" ");
status = pstGetChild(synH, stNodeId, i, &child);
if (status < 0)
{
printf("get node(%d) child return error(%d)", stNodeId, status);
return;
}
status = pstGetFieldName(synH, child.fieldId, 64, nameBuf);
if (status < 0)
{
printf("get node(%d) child field(%d) name return error(%d)", stNodeId, child.fieldId, status);
return;
}
printf("%s(%d) ", nameBuf, child.fieldId);
type = pstGetNodeType(synH, child.nodeId);
if (type < 0)
{
printf("get child node(%d) type return error(%d)", child.nodeId, type);
return;
}
printf("%s ", nodtype[type-1]);
if (type == pstSequenceOf || type == pstSetOf)
{
pstNodeType subtype = pstGetNodeType(synH, pstGetNodeOfId(synH, child.nodeId));
if (subtype < 0)
{
printf("get so or seto node(%d) type return error(%d)", child.nodeId, subtype);
return;
}
printf(" %s \n", nodtype[subtype]);
if (isComplexType(subtype))
printMsgSyn(synH, child.nodeId);
}
else if (isComplexType(type))
printMsgSyn(synH, child.nodeId);
else
printf("\n");
}
for (j = 1; j <= level-1; j++)
printf(" ");
printf("}\n");
}
else
printf("\n");
level--;
}
void testSyn()
{
int status = 0;
char tmpbuf[64];
synStruct *syn = NULL;
HPST synGkCrypto = NULL;
HPST synGkPwdCert = NULL;
HPST synKeySync = NULL;
HPST synProtQ931 = NULL;
cmElem *app = (cmElem*)hApp;
static int sync = 0;
printf("starting test syn...\n");
if (sync++ != 0)
taskDelay(10*100);
synGkCrypto = cmGetSynTreeByRootName(hApp, "CryptoH323Token");
if (synGkCrypto == app->synGkCrypto)
printf("get CryptoH323Token is OK!\n");
else
printf("get CryptoH323Token is Error!!!\n");
synGkPwdCert = cmGetSynTreeByRootName(hApp, "PwdCertToken");
if (synGkPwdCert == app->synGkPwdCert)
printf("get PwdCertToken is OK!\n");
else
printf("get PwdCertToken is Error!!!\n");
synKeySync = cmGetSynTreeByRootName(hApp, "KeySyncMaterial");
if (synKeySync == app->synKeySync)
printf("get KeySyncMaterial is OK!\n");
else
printf("get KeySyncMaterial is Error!!!\n");
synProtQ931=cmGetSynTreeByRootName(hApp, "q931");
if (synProtQ931 == app->synProtQ931)
printf("get Q931Message is OK!\n");
else
printf("get Q931Message is Error!!!\n");
printSyn((synStruct*)synGkCrypto, "CryptoH323Token");
printSyn((synStruct*)synGkPwdCert, "PwdCertToken");
printSyn((synStruct*)synKeySync, "KeySyncMaterial");
printSyn((synStruct*)synProtQ931, "q931");
status = pstGetNodeIdByPath(synProtQ931, "Q931Message.protocolDiscriminator");
if (status < 0)
printf("pstGetNodeIdByPath return error(%d)!\n", status);
else
printf("pstGetNodeIdByPath return %d!\n", status);
/* if (status >= 0)*/
status = pstGetRootName(synProtQ931, 64, tmpbuf);
if (status < 0)
printf("pstGetRootName return error(%d)!\n", status);
else
printf("pstGetRootName return name **%s**!\n", tmpbuf);
if (((synStruct*)synProtQ931)->rootNodeId >= 0)
{
printMsgSyn(synProtQ931, ((synStruct*)synProtQ931)->rootNodeId);
}
printf("\n\n\nstart to get synGkCrypto:\n");
if (((synStruct*)synGkCrypto)->rootNodeId >= 0)
{
printMsgSyn(synGkCrypto, ((synStruct*)synGkCrypto)->rootNodeId);
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -