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

📄 config.c

📁 基于h323协议的软phone
💻 C
📖 第 1 页 / 共 4 页
字号:
    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 + -