Files
svc.ems/plat/sccp/src/scoc.c
2024-09-27 15:39:34 +08:00

127 lines
3.9 KiB
C

/********************************************************************/
/*Title: scoc.c */
/*Descr: SCCP Connection-Oriented Control */
/*Author: Liang Hanxi */
/*Create: 2002-2-19 */
/*Modify: 2003-5-9 */
/********************************************************************/
#include "./include/sccp.h"
/*===========import================*/
extern int scrc_route ( Intra_Msg * pIntraMsg, BOOL ForceAnsi );
extern int build_msg ( BYTE * buf, Intra_Msg * intramsg, BYTE NetID, BYTE ansi_flag ); //sccpmsg.c
extern int parse_msg ( BYTE * buf, Intra_Msg * intramsg, int len, BYTE NetID, BYTE ansi_flag ); //sccpmsg.c
/*===========export================*/
int scrc2scoc ( Intra_Msg * intramsg, BYTE AnsiFlag );
int scoc_store ( up_message * sccpmsg );
/*
int scrc2scoc ( Intra_Msg * intramsg, BYTE AnsiFlag )
{
up_message mtp3msg;
mtp3msg.len = build_msg ( mtp3msg.msgList, intramsg, intramsg->NetID, AnsiFlag );
mtp3msg.dest_ip = intramsg->CDA.ip;
mtp3msg.dpc = intramsg->DPC;
mtp3msg.opc = intramsg->OPC;
mtp3msg.sio = intramsg->NetID * 0x40 + 3;
mtp3msg.cic[0] = intramsg->SLS;
mtp3msg.link = intramsg->link;
scoc_store ( &mtp3msg );
return 1;
}
*/
/*
int scoc_store ( up_message * sccpmsg )
{
up_message *pmsg;
SccpCsta[SccpCstaInd].utilization[4 - 3]++;
spLogDebug ( SCCPDB_AIF, "MSC <== SCCP: CO Message. opc=%x,sio=%02x", sccpmsg->opc, sccpmsg->sio );
spShowBCD ( SCCPDB_AIF, ( BYTE * ) sccpmsg, ( sccpmsg->len + 17 ) % 256 );
pmsg = &ScocBuf.msgin[ScocBuf.rcvsub[0]];
memcpy ( pmsg, sccpmsg, sizeof ( up_message ) );
ScocBuf.rcvsub[0] = ( ScocBuf.rcvsub[0] + 1 ) % SS_MSG_NUM;
if( ScocBuf.rcvsub[0] == ScocBuf.rcvsub[1] )
ScocBuf.rcvsub[1] = ( ScocBuf.rcvsub[1] + 1 ) % SS_MSG_NUM;
sccpmsg_st.msg_mtp_scoc++;
return 1;
}
*/
/******************************************************************/
/*================== User Interface-----> ================*/
/******************************************************************/
/*
int scoc_send ( up_message * pmsg )
{
BYTE ntype;
BOOL ForceAnsi = 0;
ntype = pmsg->msgList[0];
spLogDebug ( SCCPDB_AIF, "MSC ==> SCCP: CO/UDT Message. opc=%x,sio=%02x,type=%d", pmsg->opc, pmsg->sio, ntype );
spShowBCD ( SCCPDB_AIF, ( BYTE * ) pmsg, ( pmsg->len + 17 ) % 256 );
SccpCsta[SccpCstaInd].utilization[0]++;
switch ( ntype )
{
case CR_MSG:
SccpCsta[SccpCstaInd].quality[4]++;
break;
case CC_MSG:
break;
case DT1_MSG:
SccpCsta[SccpCstaInd].utilization[10 - 3]++;
break;
case DT2_MSG:
SccpCsta[SccpCstaInd].utilization[12 - 3]++;
break;
}
if( ntype == CR_MSG || ntype == UDT_MSG )
{
Intra_Msg outmsg;
BYTE NetID = pmsg->sio / 0x40;
memset ( &outmsg, 0, sizeof ( Intra_Msg ) );
ForceAnsi = ( pmsg->sio >> 4 ) & 1;
parse_msg ( pmsg->msgList, &outmsg, pmsg->len, NetID, ForceAnsi );
outmsg.CDA.ip = INADDR_NONE;
outmsg.OPC = pmsg->opc;
outmsg.DPC = pmsg->dpc;
outmsg.SLS = pmsg->cic[0];
outmsg.NetID = outmsg.CGA.NetID = outmsg.CDA.NetID = NetID;
return scrc_route ( &outmsg, ForceAnsi );
}
else
{
return sccp_to_mtp3 ( pmsg );
}
}
int scoc_receive ( up_message * sccpmsg )
{
up_message *pmsg;
if( ScocBuf.rcvsub[0] == ScocBuf.rcvsub[1] )
return 0;
pmsg = &ScocBuf.msgin[ScocBuf.rcvsub[1]];
memcpy ( sccpmsg, pmsg, sizeof ( up_message ) );
ScocBuf.rcvsub[1] = ( ScocBuf.rcvsub[1] + 1 ) % SS_MSG_NUM;
sccpmsg_st.msg_scoc_up++;
return 1;
}
*/