📄 transpcap.c
字号:
atmParam = &qosCapability->cmAtmParameters;
result = addQosCapability( hApp,capTransport,rsvpParam,atmParam, nonStandard);
cmiAPIExit(hApp, "cmAddQosCapability: result=%d",result);
return result ;
}
RVAPI int RVCALLCONV
cmAddMediaChannelCap( IN HAPP hApp,
IN int capTransport,
IN cmMediaChannelCapability * mediaCap
)
{
int result;
if (!hApp) return RV_ERROR_UNKNOWN;
cmiAPIEnter(hApp, "cmAddMediaChannelCap: hApp=0x%p,TransportCapabilityId=%d",
hApp,capTransport);
result = addMediaChannelCap( hApp,capTransport,mediaCap);
cmiAPIExit(hApp, "cmAddMediaChannelCap: result=%d",result);
return result;
}
/* ================================================== */
int createTranspCapability( IN HAPP hApp,
IN cmNonStandardIdentifier *identifier,
/* non standard param is optional may be equal NULL */
IN char *data,
IN int dataLength /* in bytes */
)
{
int nodeId,nonStandardId,ret=0;
HPVT hVal;
if (!hApp) return RV_ERROR_UNKNOWN;
cmiAPIEnter(hApp, "createTranspCapability: hApp=0x%p",hApp);
hVal = ((cmElem *)hApp)->hVal;
nodeId = pvtAddRoot(hVal, ((cmElem*)hApp)->h245TransCap, 0, NULL);
if (nodeId<0)
{
cmiAPIExit(hApp, "createTranspCapability: [%d].", nodeId);
return nodeId;
}
if (identifier!=NULL)
{
nonStandardId=pvtAdd(hVal, nodeId, __h245(nonStandard), 0, NULL, NULL);
ret=cmNonStandardParameterCreate(hVal,nonStandardId,identifier,data,dataLength);
}
cmiAPIExit(hApp, "createTranspCapability: [%d].", ret);
if (ret<0)
return ret;
return nodeId;
}
int addMediaChannelCap( IN HAPP hApp,
IN int capTransport,
IN cmMediaChannelCapability * mediaCap
)
{
int nodeId,mediaId=-1,ret=1;
HPVT hVal;
if (!hApp) return RV_ERROR_UNKNOWN;
cmiAPIEnter(hApp, "addMediaChannelCap: hApp=0x%p",hApp);
hVal = ((cmElem *)hApp)->hVal;
nodeId = pvtGetChild(hVal,capTransport,__h245(mediaChannelCapabilities),NULL);
/* check if node is already exist*/
if (nodeId<0)
nodeId = pvtAdd(hVal, capTransport, __h245(mediaChannelCapabilities), 0, NULL, NULL);
mediaId = pvtAdd(hVal, nodeId, -800, 0, NULL, NULL);
mediaId = pvtAdd(hVal,mediaId,__h245(mediaTransport), 0 , NULL, NULL);
switch(mediaCap->cmTransportType)
{
case cmIP_UDP:
ret=pvtAdd(hVal, mediaId, __h245(ip_UDP), 0, NULL,NULL);
break;
case cmIP_TCP:
ret=pvtAdd(hVal, mediaId, __h245(ip_TCP), 0, NULL, NULL);
break;
case cmAtm_AAL5_UNIDIR:
ret=pvtAdd(hVal, mediaId, __h245(atm_AAL5_UNIDIR), 0, NULL, NULL);
break;
case cmAtm_AAL5_BIDIR:
ret=pvtAdd(hVal, mediaId, __h245(atm_AAL5_BIDIR), 0, NULL, NULL);
break;
}
cmiAPIExit(hApp, "addMediaChannelCap: [%d].", ret);
if(ret<0)
return ret;
return mediaId;
}
RVAPI int RVCALLCONV
cmGetTransportCapabilities( IN HCALL hsCall)
{
HAPP hApp=(HAPP)emaGetInstance((EMAElement)hsCall);
HPVT hVal;
int capId=RV_ERROR_UNKNOWN,transpId=RV_ERROR_UNKNOWN;
if (!hsCall) return RV_ERROR_UNKNOWN;
cmiAPIEnter(hApp, "cmGetTransportCapabilities: hsCall=0x%p",hsCall);
if (emaLock((EMAElement)hsCall))
{
hVal = ((cmElem *)hApp)->hVal;
capId = cmCallGetRemoteCapabilities(hsCall);/*terminalCapabilitySet */
__pvtGetNodeIdByFieldIds(transpId, hVal,capId,
{_h245(multiplexCapability)
_h245(h2250Capability)
_h245(transportCapability)
LAST_TOKEN});
emaUnlock((EMAElement)hsCall);
}
cmiAPIExit(hApp, "cmGetTransportCapabilities: capId =[%d] transpId = [%d].", capId,transpId);
return transpId;
}
RVAPI int RVCALLCONV
cmGetTransportCapNonStandard( IN HAPP hApp,
IN int transpId,
OUT cmNonStandardParam *nonStandard )
{
HPVT hVal;
int nonStandardId;
if (!hApp) return RV_ERROR_UNKNOWN;
cmiAPIEnter(hApp, "cmGetTransportCapNonStandard: hApp=0x%p",hApp);
hVal = ((cmElem *)hApp)->hVal;
nonStandardId = pvtGetChild(hVal,transpId,__h245(nonStandardData),NULL);
if (nonStandardId >=0)
cmNonStandardParameterGet(hVal,nonStandardId,&nonStandard->info,
nonStandard->data,&(nonStandard->length));
cmiAPIExit(hApp, "cmGetTransportCapNonStandard: transpId = [%d],nonStandardId = [%d].",
transpId,nonStandardId);
return nonStandardId;
}
RVAPI int RVCALLCONV
cmGetTransportCapQosParameters(IN HAPP hApp,
IN int transpId,
INOUT cmQosCapability * cmQOSCapability,
INOUT int * cmQOSCapabilitySize)
{
HPVT hVal;
int qosId,ii,qosElemId,childs;
if (!hApp) return RV_ERROR_UNKNOWN;
cmiAPIEnter(hApp, "cmGetTransportCapQosParameters: hApp=0x%p transpId [%d]",hApp,transpId);
hVal = ((cmElem *)hApp)->hVal;
qosId = pvtGetChild(hVal, transpId, __h245(qOSCapabilities), NULL);
if (qosId >=0)
{
childs = pvtNumChilds(hVal,qosId);
if (childs< *cmQOSCapabilitySize)
*cmQOSCapabilitySize = childs;
if (cmQOSCapability==NULL)
{
cmiAPIExit(hApp, "cmGetTransportCapQosParameters: transpId = [%d], childs [%d]", transpId,childs);
return childs;
}
for (ii=1; ii<= *cmQOSCapabilitySize ;ii++)
{
pvtGetByIndex(hVal,qosId,ii,&qosElemId);
if (qosElemId >= 0)
getQosParameters(hVal,qosElemId,&cmQOSCapability[ii-1]);
}
}
else
*cmQOSCapabilitySize = 0;
cmiAPIExit(hApp, "cmGetTransportCapQosParameters: transpId = [%d], cmQOSCapabilitySize [%d]", transpId, *cmQOSCapabilitySize);
return (*cmQOSCapabilitySize);
}
/*
mediaChannelCapability is array,allocated by user .Max size is 256
mediaChannelCapabilitySize as IN param passes the size of allocated array
as OUT param passes the result size ,according to the h245 message.
*/
RVAPI int RVCALLCONV
cmGetTransportCapMedia(
IN HAPP hApp,
IN int transpId,
INOUT cmMediaChannelCapability * mediaChannelCapability ,
INOUT int * mediaChannelCapabilitySize)
{
HPVT hVal;
int mediaId,ii,mediaElemId,nodeId,mediaTranspId,childs;
if (!hApp) return RV_ERROR_UNKNOWN;
cmiAPIEnter(hApp, "cmGetTransportCapMedia: hApp=0x%p transpId [%d]",hApp,transpId);
hVal = ((cmElem *)hApp)->hVal;
mediaId = pvtGetChild(hVal, transpId, __h245(mediaChannelCapabilities), NULL);
if (mediaId >=0)
{
childs = pvtNumChilds(hVal,mediaId);;
if (childs< *mediaChannelCapabilitySize)
*mediaChannelCapabilitySize = childs;
for (ii=1;ii<=*mediaChannelCapabilitySize;ii++)
{
pvtGetByIndex(hVal,mediaId,ii,&mediaElemId);
mediaTranspId = pvtGetChild(hVal, mediaElemId, __h245(mediaTransport), NULL);
if (mediaTranspId>=0)
{
nodeId = pvtGetChild(hVal, mediaTranspId, __h245(ip_UDP), NULL);
if (nodeId>=0)
mediaChannelCapability[ii-1].cmTransportType = cmIP_UDP;
nodeId = pvtGetChild(hVal, mediaTranspId, __h245(ip_TCP), NULL);
if (nodeId>=0)
mediaChannelCapability[ii-1].cmTransportType = cmIP_TCP;
nodeId = pvtGetChild(hVal, mediaTranspId, __h245(atm_AAL5_UNIDIR), NULL);
if (nodeId>=0)
mediaChannelCapability[ii-1].cmTransportType = cmAtm_AAL5_UNIDIR;
nodeId = pvtGetChild(hVal, mediaTranspId, __h245(atm_AAL5_BIDIR), NULL);
if (nodeId>=0)
mediaChannelCapability[ii-1].cmTransportType = cmAtm_AAL5_BIDIR;
}
}
}
else
*mediaChannelCapabilitySize=0;
cmiAPIExit(hApp, "cmGetTransportCapMedia: transpId = [%d], mediaChannelCapabilitySize [%d]", transpId,
mediaChannelCapabilitySize);
return (*mediaChannelCapabilitySize);
}
#ifdef __cplusplus
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -