ocs init
This commit is contained in:
126
plat/sccp/src/scoc.c
Normal file
126
plat/sccp/src/scoc.c
Normal file
@@ -0,0 +1,126 @@
|
||||
|
||||
/********************************************************************/
|
||||
/*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;
|
||||
}
|
||||
*/
|
||||
Reference in New Issue
Block a user