Files
svc.ems/plat/sccp/ut/fsmtest/sccp_test.c
2024-09-27 15:39:34 +08:00

193 lines
3.9 KiB
C

#include "../../src/include/sccp.h"
#include "signal.h"
#include <unistd.h>
#ifdef _WXC_FSM_TEST
#define spLogFsm printf
#else
#define spLogFsm
#endif
static struct itimerval itimer, old_itimer;
u8 sccp_timer_flag;
void mtp3_timer ( );
void send_data ( );
void showbuf ( BYTE * buf, int len )
{
int i;
for ( i = 0; i < len; i++ )
printf ( "%X", buf[i] );
printf ( "\n" );
}
void showbuf2 ( BYTE * buf, int len )
{
int i;
for ( i = 0; i < len; i++ )
printf ( "%02X", buf[i] );
printf ( "\n" );
}
void on_data ( )
{
SCLC_MSG clmsg;
SCCP_ADDR addr;
int len, len2;
if( ( len = sclc_receive ( &clmsg, 0 ) ) > 0 )
{
showbuf2 ( clmsg.msg, clmsg.msglen );
memcpy ( &addr, &clmsg.src_addr, sizeof ( SCCP_ADDR ) );
memcpy ( &clmsg.src_addr, &clmsg.dst_addr, sizeof ( SCCP_ADDR ) );
memcpy ( &clmsg.dst_addr, &addr, sizeof ( SCCP_ADDR ) );
len2 = sclc_send ( &clmsg );
if( len2 == -1 )
printf ( "fail to send message" );
}
}
u8 sccp_20ms_flag = 0;
void On_Timer ( )
{
//on_data ( );
sccp_20ms_flag++;
sccp_timer_flag++;
spLogFsm("pos plat iprtans start \r\n");
iptrans_timer ( );
spLogFsm("pos plat mpt3 start \r\n");
mtp3_proc ( );
spLogFsm("pos plat sccp start \r\n");
spWxcBackTrace();
sccp_timer ( );
spLogFsm("pos plat sccp over \r\n");
spWxcBackTrace();
if( sccp_20ms_flag >= 2 )
{
spWxcBackTrace();
sccp_20ms_flag = 0;
spLogFsm("pos plat debug start \r\n");
debug_rt ( );
spLogFsm("pos plat snmp start \r\n");
snmp_timer ( );
spLogFsm("pos plat heartbeat start \r\n");
heartbeat_timer ( );
spLogFsm("pos plat end start \r\n");
spWxcBackTrace();
}
}
void SetTimer ( )
{
struct sigaction act;
act.sa_handler = On_Timer;
sigemptyset ( &act.sa_mask );
act.sa_flags = 0;
if( sigaction ( SIGALRM, &act, NULL ) < 0 )
{
perror ( "Produce Sigaction" );
exit ( 1 );
}
itimer.it_interval.tv_sec = 0;
itimer.it_interval.tv_usec = 10 * 1000;
itimer.it_value.tv_sec = 0;
itimer.it_value.tv_usec = 10 * 1000;
if( setitimer ( ITIMER_REAL, &itimer, &old_itimer ) != 0 )
{
printf ( "Setting Timer error! \n" );
exit ( 1 );
}
}
void spUserInit( )
{
}
void spUserFsm( )
{
}
u8 delay = 5;
u8 main_state = 0;
void system_init ( )
{
sleep ( 3 );
debug_init ( );
iptrMainInit ( );
snmp_init ( 4957 );
heartbeat_init ( 0x0188 );
mtp_shm_init ( );
sccp_init ( );
sccp_20ms_flag = 0;
sccp_timer_flag = 0;
}
int main ( )
{
system_init();
SetTimer ( );
while ( 1 )
{
usleep ( 1 );
if( sccp_timer_flag >= delay )
{
sccp_timer_flag = 0;
switch ( main_state )
{
case 0:
ulInit( );
main_state = 1;
break;
case 1:
spLogFsm("sccp_test.c: main->ulsapfsm in \n");
ulSapFsm( );
spLogFsm("sccp_test.c: main->ulsapfsm out \n");
break;
}
}
}
return 1;
}
void send_data ( )
{
SCLC_MSG clmsg;
BYTE value[100] = { 1, 2, 3, 4, 5, 6 };
BYTE number[20] = { 0x68, 0x57, 0x55, 0x17, 0x32, 0x00, 0xF3 };
clmsg.msglen = 6;
memcpy ( clmsg.msg, value, clmsg.msglen );
clmsg.src_addr.DPC = 0x111111;
clmsg.src_addr.SSN = 8;
clmsg.src_addr.GTI = 0;
clmsg.dst_addr.DPC = 0;
clmsg.dst_addr.SSN = 8;
clmsg.dst_addr.GTI = 4;
clmsg.dst_addr.NP = 1;
clmsg.dst_addr.NAI = 4;
clmsg.dst_addr.len = 13;
clmsg.dst_addr.NetID = 0;
memcpy ( clmsg.dst_addr.GTAI, number, 7 );
if( sclc_send ( &clmsg ) == -1 )
printf ( "fail to send message\n" );
}