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

2484 lines
57 KiB
C

#include "../../debug/src/include/debug.h"
#include "./include/mtp3.h"
#include "./include/mtpstm.h"
#include "./include/mtpext.h"
extern void mtp3_debug(int n,const char *fmt,...);
/*@ignore@*/
int mtp3_send_netcap=0;
void reset_mtp3();
long atol(const char *nptr);
int gettimeofday(struct timeval *tv,struct timezone *tz);
struct tm *localtime(const time_t *timep);
void mtp3_list_link(BYTE i);
static char ascii[16] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
0x41,0x42,0x43,0x44,0x45,0x46};
extern BOOL mtp3DebugFull;
BYTE disp_flag;
BYTE disp_page[16];
/* by simon at 23/9/27 */
extern BYTE * disp_ptr;
extern BYTE disp_length;
static DWORD debug_mask=0;
void mtp3_show_routine_status(BYTE nw);
void mtp3_show_routine_status_sorted(BYTE nw);
void mtp3_list_log_status();
void mtp3_reload_data();
int mtp3_write_parameter();
static BYTE title1_p[] =
{
" PAGE01 MTP3 Measure-TRAFFIC sub-page0:flow, sub-page1:throwed \n\r\
[---SNM---] [---T+M---] [--SCCP---] [---TUP---] [--ISUP---]\n\r\
--Page--\n\r\
U (nw0)\n\r\
t (nw1)\n\r\
o (nw2)\n\r\
M (nw3)\n\r\
M (nw0)\n\r\
t (nw1) E\n\r\
o (nw2) 1\n\r\
I (nw3)\n\r\
I (nw0)\n\r\
t (nw1)\n\r\
o (nw2)\n\r\
M (nw3)\n\r\
M (nw0)\n\r\
t (nw1)\n\r\
o (nw2)\n\r\
U (nw3)\n\r\
M (nw0)\n\r\
S (nw1)\n\r\
T (nw2)\n\r\
P (nw3)\n\r\
"
};
static BYTE title2_p[] =
{
" PAGE02 link mark \n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
--Page--\n\r\
link_available\n\r\
link_unavailable\n\r\
failed\n\r\
CB_in_progress\n\r\
CO_in_progress\n\r\
link_inhibited\n\r\
locally_inhibited\n\r\
remotely_inhibited\n\r\
localInhibit_inPro\n\r\
uninhibit_in_pro\n\r\
local_blocked\n\r\
remote_blocked\n\r\
local_change_over\n\r\
"
};
static BYTE title3_p[] =
{
" PAGE03 MTP2 MTP3 flag \n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
Page\n\r\
mtp2 flag(old)\n\r\
\n\r\
mtp2 flag(new)\n\r\
\n\r\
\n\r\
page\n\r\
0:mtp3 ip\n\r\
1:mtp3 flag old\n\r\
2:mtp3 flag new\n\r\
3:lk_configured\n\r\
"
};
static BYTE title4_p[] =
{
" PAGE09 MTP3 STATE MACHINE'S INPUT \n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
--Page--\n\r\
LSAC L2\n\r\
LSAC SLTC\n\r\
LSAC SLM\n\r\
LSAC STM\n\r\
LSAC TCOC\n\r\
LSAC MGMT\n\r\
TLAC SLM\n\r\
TLAC STM\n\r\
TLAC HMDT\n\r\
TSRC STM\n\r\
TSRC TLAC\n\r\
TSRC TCOC\n\r\
TSRC TCBC\n\r\
TSRC SRM\n\r\
TCOC L2\n\r\
TCOC STM\n\r\
TCOC TSRC\n\r\
TCOC HMDT\n\r\
TCBC\n\r\
TCBC_TSRC\n\r\
T(A)PRC\n\r\
"
};
static BYTE title5_p[] =
{
" PAGE05 MTP3 Port state(16 port per sub page)\n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
subPage\r\n\
L1\r\n\
L2\r\n\
L3\r\n\
lsac\r\n\
sltc\r\n\
tlac\r\n\
tsrc\r\n\
tcoc\r\n\
tcbc\r\n\
rtpc[nw0]\r\n\
rtpc[nw1]\r\n\
rtpc[nw2]\r\n\
rtpc[nw3]\r\n\
rtac[nw0]\r\n\
rtac[nw1]\r\n\
rtac[nw2]\r\n\
rtac[nw3]\r\n\
tprc"
};
static BYTE title6_p[] =
{
" PAGE06 MTP3 ROUTINE TABLE(4) \n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
--PAGE--\n\r\
0 INTERNATIONAL\n\r\
1 INTERNATIONAL(S)\n\r\
2 NATIONAL\n\r\
3 NATIONAL(S)\n\r\
\n\r\
\n\r\
value=\n\r\
18:route:normal ls\n\r\
nls:available\n\r\
als:unavailable\n\r\
10:route:normal ls\n\r\
nls:available\n\r\
als:available\n\r\
52:route=alter ls\n\r\
nls:unavailable\n\r\
als:available\n\r\
8A:no route\n\r\
other:problem bug\n\r\
"
};
static BYTE title7_p[] =
{
" PAGE07 MTP3 LINKSET SLS TABLE \n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
--PAGE--\n\r\
(16*page+00)ls\n\r\
(16*page+01)ls\n\r\
(16*page+02)ls\n\r\
(16*page+03)ls\n\r\
(16*page+04)ls\n\r\
(16*page+05)ls\n\r\
(16*page+06)ls\n\r\
(16*page+07)ls\n\r\
(16*page+08)ls\n\r\
(16*page+09)ls\n\r\
(16*page+10)ls\n\r\
(16*page+11)ls\n\r\
(16*page+12)ls\n\r\
(16*page+13)ls\n\r\
(16*page+14)ls\n\r\
(16*page+15)ls\n\r\
"
};
static BYTE title8_p[] =
{
" PAGE08 MTP3 Version 1.0 linkset State \n\r\
avail mark place cf influence dst number\n\r\
--Page--\n\r\
(16*page+00)ls\n\r\
(16*page+01)ls\n\r\
(16*page+02)ls\n\r\
(16*page+03)ls\n\r\
(16*page+04)ls\n\r\
(16*page+05)ls\n\r\
(16*page+06)ls\n\r\
(16*page+07)ls\n\r\
(16*page+08)ls\n\r\
(16*page+09)ls\n\r\
(16*page+10)ls\n\r\
(16*page+11)ls\n\r\
(16*page+12)ls\n\r\
(16*page+13)ls\n\r\
(16*page+14)ls\n\r\
(16*page+15)ls\n\r\
"
};
static BYTE title9_p[] =
{
" PAGE9 MTP3 ls influence dst\n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
--page--\n\r\
page0-page127\n\r\
ls0 -ls127\n\r\
[NLS]\n\r\
\n\r\
\n\r\
\n\r\
\n\r\
\n\r\
\n\r\
[ALS]\n\r\
"
};
static BYTE title10_p[] =
{
" PAGE10 MTP3 isup sd/rv count\n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
--page--\n\r\
RvISUP\n\r\
\n\r\
\n\r\
\n\r\
SdISUP\n\r\
\n\r\
\n\r\
\n\r\
\n\r\
\n\r\
"
};
static BYTE title11_p[] =
{
" PAGE11 MTP3 watch dog\n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
Dog\n\r\
"
};
void mtpi_m()
{
memset(disp_page,0,16);
}
BYTE mtp_disp_line(BYTE page, BYTE line)//return display length,disp data ptr per line
{
BYTE disp_length;
BYTE subpage;
disp_length = 16;
page = page & 15;
disp_page[page] = disp_page[page] & 31;
subpage = disp_page[page];
switch(page)
{
case 1:
if (subpage == 0)
{
disp_length = 20;
switch (line)
{
case 0:
disp_ptr = &disp_page[page];
disp_length = 1;
break;
case 1:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.UtoM;
break;
case 2:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.UtoM;
break;
case 3:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.UtoM;
break;
case 4:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.UtoM;
break;
case 5:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.MtoI;
break;
case 6:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.MtoI;
break;
case 7:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.MtoI;
break;
case 8:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.MtoI;
break;
case 9:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.ItoM;
break;
case 10:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.ItoM;
break;
case 11:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.ItoM;
break;
case 12:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.ItoM;
break;
case 13:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.MtoU;
break;
case 14:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.MtoU;
break;
case 15:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.MtoU;
break;
case 16:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.MtoU;
break;
case 17:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.stp;
break;
case 18:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.stp;
break;
case 19:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.stp;
break;
case 20:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.stp;
break;
default:
disp_length = 0;
break;
}
}
else if (subpage == 1)
{
disp_length = 20;
switch (line)
{
case 0:
disp_ptr = &disp_page[page];
disp_length = 1;
break;
case 1:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.UtoM_throwed;
break;
case 2:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.UtoM_throwed;
break;
case 3:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.UtoM_throwed;
break;
case 4:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.UtoM_throwed;
break;
case 5:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.MtoI_throwed;
break;
case 6:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.MtoI_throwed;
break;
case 7:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.MtoI_throwed;
break;
case 8:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.MtoI_throwed;
break;
case 9:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.ItoM_throwed;
break;
case 10:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.ItoM_throwed;
break;
case 11:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.ItoM_throwed;
break;
case 12:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.ItoM_throwed;
break;
case 13:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.MtoU_throwed;
break;
case 14:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.MtoU_throwed;
break;
case 15:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.MtoU_throwed;
break;
case 16:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.MtoU_throwed;
break;
case 17:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.stp_throwed;
break;
case 18:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.stp_throwed;
break;
case 19:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.stp_throwed;
break;
case 20:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.stp_throwed;
break;
default:
disp_length = 0;
break;
}
}
else if (subpage == 2)
{
disp_length = 20;
switch (line)
{
case 0:
disp_ptr = &disp_page[page];
disp_length = 1;
break;
case 1:
disp_ptr = (BYTE*)&mtp3.nw[0].flow.stp_loop;
break;
case 2:
disp_ptr = (BYTE*)&mtp3.nw[1].flow.stp_loop;
break;
case 3:
disp_ptr = (BYTE*)&mtp3.nw[2].flow.stp_loop;
break;
case 4:
disp_ptr = (BYTE*)&mtp3.nw[3].flow.stp_loop;
break;
default:
disp_length = 0;
break;
}
}
else
disp_length = 0;
break;
case 2:
if (subpage > 15)
return 0;
switch (line)
{
case 0:
disp_ptr = &disp_page[page];
disp_length = 1;
break;
case 1:
disp_ptr = link_available + subpage*16;
break;
case 2:
/* disp_ptr = link_unavailable + subpage*16;*/
break;
case 3:
disp_ptr = failed + subpage*16;
break;
case 4:/* l3 */
disp_ptr = changeback_in_progress + subpage*16;
break;
case 5:/* l2 */
disp_ptr = changeover_in_progress + subpage*16;
break;
case 6:
disp_ptr = link_inhibited + subpage*16;
break;
case 7:
disp_ptr = link_locally_inhibited + subpage*16;
break;
case 8:
disp_ptr = link_remotely_inhibited + subpage*16;
break;
case 9:
disp_ptr = local_inhibit_in_progress + subpage*16;
break;
case 10:
disp_ptr = uninhibit_in_progress + subpage*16;
break;
case 11:
disp_ptr = local_blocked + subpage*16;
break;
case 12:
disp_ptr = remote_blocked + subpage*16;
break;
case 13:
disp_ptr = local_change_over + subpage*16;
break;
default:
disp_length = 0;
}
break;
case 3:
if (line == 0)
{
disp_ptr = &disp_page[page];
disp_length = 1;
}
else if (line < 3)
{
disp_ptr = mtp2_flag_old+(line-1)*16;
}
else if (line < 5)
{
disp_ptr = mtp2_flag_new+(line-3)*16;
}
else if (line==5)
{
disp_ptr = &MTP3IPMng.LinkIPNum;
disp_length = 1;
}
else if (line < 24)
{
if (subpage == 0)
disp_ptr = (BYTE*)MTP3IPMng.mtp3_flag_ip+(line-6)*16;
else if (subpage == 1)
disp_ptr = MTP3IPMng.mtp3_flag_old+(line-6)*16;
else if (subpage == 2)
disp_ptr = MTP3IPMng.mtp3_flag_new+(line-6)*16;
else if (subpage == 3)
disp_ptr = mtp3ObjState.lk_configured+(line-6)*16;
else if (subpage == 4)
disp_ptr = mtp3ObjState.lk_NMTP3_ok+(line-6)*16;
else if (subpage == 5)
disp_ptr = mtp3ObjState.lk_AMTP3_ok+(line-6)*16;
else if (subpage == 6)
disp_ptr = (BYTE*)MTP3IPMng.LinkIP+(line-6)*16;
}
else
disp_length = 0;
break;
case 4:/* input of state machine */
if (subpage > 15)
return 0;
switch (line)
{
case 0:
disp_ptr = &disp_page[page];
disp_length = 1;
break;
case 1:/* l3 */
disp_ptr = mtp3ObjInput.lsac_input_from_l2 + subpage*16;
break;
case 2:/* l2 */
disp_ptr = mtp3ObjInput.lsac_input_from_sltc + subpage*16;
break;
case 3:/* l1 */
disp_length = 0;
break;
case 4:
disp_ptr = mtp3ObjInput.lsac_input_from_stm + subpage*16;
break;
case 5:
disp_ptr = mtp3ObjInput.lsac_input_from_tcoc + subpage*16;
break;
case 6:
disp_ptr = mtp3ObjInput.lsac_input_from_mgmt + subpage*16;
break;
case 7:
disp_ptr = mtp3ObjInput.tlac_input_from_slm + subpage*16;
break;
case 8:
disp_ptr = mtp3ObjInput.tlac_input_from_stm + subpage*16;
break;
case 9:
disp_ptr = mtp3ObjInput.tlac_input_from_hmdt + subpage*16;
break;
case 10:
disp_ptr = mtp3ObjInput.tsrc_input_from_stm + subpage*16;
break;
case 11:
disp_ptr = mtp3ObjInput.tsrc_input_from_tlac + subpage*16;
break;
case 12:
disp_ptr = mtp3ObjInput.tsrc_input_from_tcoc + subpage*16;
break;
case 13:
disp_ptr = mtp3ObjInput.tsrc_input_from_tcbc + subpage*16;
break;
case 14:
disp_length = 0;
break;
case 15:
disp_length = 0;
break;
case 16:
disp_ptr = mtp3ObjInput.tcoc_input_from_stm + subpage*16;
break;
case 17:
disp_ptr = mtp3ObjInput.tcoc_input_from_tsrc + subpage*16;
break;
case 18:
disp_ptr = mtp3ObjInput.tcoc_input_from_hmdt + subpage*16;
break;
case 19:
disp_ptr = mtp3ObjInput.tcbc_input + subpage*16;
break;
case 20:
disp_ptr = mtp3ObjInput.tcbc_input_from_tsrc + subpage*16;
break;
/* case 21:
disp_ptr = mtp3ObjInput.sltc_input + subpage*16;
break;*/
case 21:
disp_ptr = mtp3ObjInput.taprc_input + subpage*16;
break;
case 22:
disp_ptr = &mtp3ObjInput.tprc_input;
disp_length = 1;
break;
default:
disp_length = 0;
break;
}
break;
case 5: /* state machine */
if (subpage > 15)
return 0;
switch (line)
{
case 0:
disp_ptr = &disp_page[page];
disp_length = 1;
break;
case 1:
disp_ptr = mtp3ObjState.link_l1_state+subpage*16;
break;
case 2:
disp_ptr = mtp3ObjState.link_l2_state+subpage*16;
break;
case 3:
disp_ptr = mtp3ObjState.link_l3_state+subpage*16;
break;
case 4:
disp_ptr = mtp3ObjState.lsac_state+subpage*16;
break;
case 5:
disp_ptr = mtp3ObjState.sltc_state+subpage*16;
break;
case 6:
disp_ptr = mtp3ObjState.tlac_state+subpage*16;
break;
case 7:
disp_ptr = mtp3ObjState.tsrc_state+subpage*16;
break;
case 8:
disp_ptr = mtp3ObjState.tcoc_state+subpage*16;
break;
case 9:
disp_ptr = mtp3ObjState.tcbc_state+subpage*16;
break;
case 10:
disp_ptr = mtp3.nw[0].rtpc_state+subpage*16;
break;
case 11:
disp_ptr = mtp3.nw[1].rtpc_state+subpage*16;
break;
case 12:
disp_ptr = mtp3.nw[2].rtpc_state+subpage*16;
break;
case 13:
disp_ptr = mtp3.nw[3].rtpc_state+subpage*16;
break;
case 14:
disp_ptr = mtp3.nw[0].rtac_state+subpage*16;
break;
case 15:
disp_ptr = mtp3.nw[1].rtac_state+subpage*16;
break;
case 16:
disp_ptr = mtp3.nw[2].rtac_state+subpage*16;
break;
case 17:
disp_ptr = mtp3.nw[3].rtac_state+subpage*16;
break;
case 18:
disp_ptr = &mtp3ObjState.tprc_state;
disp_length = 1;
break;
default:
disp_length = 0;
break;
}
break;
case 6:/* routine */
if (line == 0)
{
disp_ptr = &disp_page[page];
disp_length = 1;
}
else if ( line <17 )
{
if (subpage < 4)
{
disp_ptr = mtp3.nw[subpage].routine+(line-1)*16;
}
else
disp_length = 0;
}
else
disp_length = 0;
break;
case 7:/* ls sls & ls slc table */
if (line == 0)
{
disp_ptr = &disp_page[page];
disp_length = 1;
}
else if ( line <17 )
{
if (subpage < 8)
{
disp_ptr = ls_sls + (line-1)*16 + subpage*256;
}
else if (subpage < 16)
{
disp_ptr = ls_slc + (line-1)*16 + (subpage-8)*256;
}
else if (subpage < 24)
{
disp_ptr = sls_to_link + (line-1)*16 + (subpage-16)*256;
}
else
disp_length = 0;
}
else
disp_length = 0;
break;
case 8:/* E1 STATE */
if (line == 0)
{
disp_ptr = &disp_page[page];
disp_length = 1;
}
else if (line < 17)
{
if (subpage < 8)
{
disp_ptr = (BYTE*)&mtp3.ls[subpage*16+line-1];
disp_length = 9;
}
else
disp_length = 0;
}
else
disp_length = 0;
break;
case 9:/* ls influence dstination table */
if (line == 0)
{
disp_ptr = &disp_page[page];
disp_length = 1;
}
else if (line < 18)
{
if (subpage < 128)
{
if (line < 9)
{
disp_ptr = (BYTE*)&mtp3.ls[subpage].influ_dstplace_intable_asNLS[(line-1)*16];
disp_length = 16;
}
else if (line == 9)
{
disp_length = 0;
}
else
{
disp_ptr = (BYTE*)&mtp3.ls[subpage].influ_dstplace_intable_asALS[(line-10)*16];
disp_length = 16;
}
}
else
disp_length = 0;
}
else if (line == 18)
disp_length = 0;
else if (line == 19)
{
disp_ptr = (BYTE*)&mtp3.ls[subpage];
disp_length = 9;
}
else
disp_length = 0;
break;
case 10:/* isup watch dog */
if (line == 0)
{
disp_ptr = &disp_page[page];
disp_length = 1;
}
else if (line < 9)
{
disp_ptr = (BYTE*)&mtp3.nw[page].flow.isup_detail[(line-1)*16];
disp_length = 16;
}
else
disp_length = 0;
break;
case 11:/* watch dog */
if (line < 16)
{
disp_ptr = (BYTE*)&mtp3ObjState.MTP3WatchDog[line*16];
disp_length = 16;
}
else
disp_length = 0;
break;
default:
disp_length = 0;
break;
}
return disp_length;
}
void mtp_disp_page(BYTE page)
{
BYTE disp_line;
BYTE disp_length;
DWORD object_id[20];//for test
/* object_id head */
object_id[0] = 1;
object_id[1] = 3;
object_id[2] = 6;
object_id[3] = 1;
object_id[4] = 4;
object_id[5] = 1;
object_id[6] = 1373;
object_id[7] = 1;
object_id[8] = 1;
object_id[9] = 2;
/* object_id head */
object_id[10] = 3;
object_id[11] = 1;
object_id[12] = 2;
object_id[13] = MTP3_DEBUG_ID + 2;
object_id[14] = 5 + page;//page
//object_id[3] = 2;//line
object_id[16] = 0;//instance
for (disp_line = 0; disp_line < 22; disp_line++)
{
disp_length = mtp_disp_line(page,disp_line);
object_id[15] = disp_line + 2;//line
// debug_set_response(17,object_id,&disp_length,10);
object_id[16] = 2;//data pointer
debug_set_response(17,object_id,disp_ptr,disp_length);
}
}
int mtp_debug_set()
{
BYTE page;
BYTE data[10];
BYTE *ptr;
DWORD object_id[20];//for test
BYTE mtp3_ver[20] = MTP3_VERSION;
sprintf(mtp3_ver,"R%dV%d_%03d",mtp3_ver[0],mtp3_ver[1],mtp3_ver[2]);
mtpi_m();
ptr = data;
/* object_id head */
object_id[0] = 1;
object_id[1] = 3;
object_id[2] = 6;
object_id[3] = 1;
object_id[4] = 4;
object_id[5] = 1;
object_id[6] = 1373;
object_id[7] = 1;
object_id[8] = 1;
object_id[9] = 2;
/* object_id head */
object_id[10] = 3;
object_id[11] = 1;
object_id[12] = 2;
object_id[13] = MTP3_DEBUG_ID+2;
object_id[14] = 1;
object_id[15] = 0;//instance
data[0] = 1;//active this module
debug_set_response(16,object_id,data,1);
object_id[14] = 2;
debug_set_response(15,object_id,mtp3_ver,strlen(mtp3_ver));//module name
object_id[14] = 3;
debug_set_response(15,object_id,mtp_asciin_buf,80);//ascii in buf
object_id[14] = 4;
debug_set_response(15,object_id,mtp_asciout_buf,4096);//ascii out buf
object_id[15] = 1;//TITLE
// object_id[16] = 2;//instance
for (page = 1; page < 16; page ++)
{
switch (page)
{
case 1:
ptr = title1_p;/*measure*/
break;
case 2:
ptr = title2_p;
break;
case 3:
ptr = title3_p;/* MIB1 */
break;
case 4:
ptr = title4_p;/* MIB2 */
break;
case 5://page 1
ptr = title5_p;
break;
case 6:
ptr = title6_p;
break;
case 7:
ptr = title7_p;
break;
case 8:
ptr = title8_p;
break;
case 9:
ptr = title9_p;
break;
case 10:
ptr = title10_p;
break;
case 11:
ptr = title11_p;
break;
default:
continue;
}
object_id[14] = 5 + page;
debug_set_response(17,object_id,ptr,strlen(ptr));
mtp_disp_page(page);
}
return 1;
}
int mtp_send_ascout(BYTE *out_str)
{
#ifdef _WXC_TEST
if( strlen(out_str) < MTP_MAX_ASCIIOUT_LEN )
printf("[MTP3]\n%s" ,out_str );
#else
int out_len;
out_len = strlen(out_str);
if (out_len + strlen(mtp_asciout_buf) > MTP_MAX_ASCIIOUT_LEN - 2)
{
mtp3DebugFull = 1;
return 0;
// strcpy(mtp_asciout_buf,out_str);
}
else
strcat(mtp_asciout_buf,out_str);
#endif
return 1;
}
void mtp3_type_command(BYTE *ascin_ptr,BYTE option)
{
BYTE info_str[80];
BYTE *tmp_ptr;
int link;
unsigned long one=1;
BYTE inputValue;
int lsx16;
int i;
if (strstr(ascin_ptr,"link all") != NULL)
{
if (option == 0)/* off */
{
debug_mask=debug_mask & (~(one<<MTP3DB_ALLLKON));
mtp_send_ascout("all link off\n\r");
memset(debug_link,MTP3_MSGLOG_OFF,256);
}
else
{
debug_mask=debug_mask | option<<MTP3DB_ALLLKON;
mtp_send_ascout("all link on\n\r");
memset(debug_link,MTP3_MSGLOG_ON,256);
}
}
else if (strstr(ascin_ptr,"tup") != NULL)
{
if (option == 0)/* off */
{
debug_mask=debug_mask & (~(one<<MTP3DB_TUPMSG));
mtp_send_ascout("tup message off\n\r");
}
else
{
debug_mask=debug_mask | one<<MTP3DB_TUPMSG;
mtp_send_ascout("tup message on\n\r");
}
}
else if (strstr(ascin_ptr,"isup") != NULL)
{
if (option == 0)/* off */
{
mtp_send_ascout("isup message off\n\r");
debug_mask=debug_mask & (~(one<<MTP3DB_ISUPMSG));
}
else
{
mtp_send_ascout("isup message on\n\r");
debug_mask=debug_mask | option<<MTP3DB_ISUPMSG;
}
}
else if (strstr(ascin_ptr,"bicc") != NULL)
{
if (option == 0)/* off */
{
mtp_send_ascout("bicc message off\n\r");
debug_mask=debug_mask & (~(one<<MTP3DB_BICCMSG));
}
else
{
mtp_send_ascout("bicc message on\n\r");
debug_mask=debug_mask | option<<MTP3DB_BICCMSG;
}
}
else if (strstr(ascin_ptr,"sccp") != NULL)
{
if (option == 0)/* off */
{
mtp_send_ascout("sccp message off\n\r");
debug_mask=debug_mask & (~(one<<MTP3DB_SCCPMSG));
}
else
{
mtp_send_ascout("sccp message on\n\r");
debug_mask=debug_mask | option<<MTP3DB_SCCPMSG;
}
}
else if (strstr(ascin_ptr,"snm") != 0)
{
if (option == 0)/* off */
{
mtp_send_ascout("snm message off\n\r");
debug_mask=debug_mask & (~(one<<MTP3DB_SNMMSG));
}
else
{
mtp_send_ascout("snm message on\n\r");
debug_mask=debug_mask | option<<MTP3DB_SNMMSG;
}
}
else if (strstr(ascin_ptr,"event") != NULL)
{
if (option == 0)/* off */
{
mtp_send_ascout("event off\n\r");
debug_mask=debug_mask & (~(one<<MTP3DB_EVENT));
}
else
{
mtp_send_ascout("event on\n\r");
debug_mask=debug_mask | option<<MTP3DB_EVENT;
}
}
else if (strstr(ascin_ptr,"error") != NULL)
{
if (option == 0)/* off */
{
mtp_send_ascout("error logs off\n\r");
debug_mask=debug_mask & (~(one<<MTP3DB_ERROR));
}
else
{
mtp_send_ascout("error logs on\n\r");
debug_mask=debug_mask | option<<MTP3DB_ERROR;
}
}
else if (strstr(ascin_ptr,"mtp3hb") != NULL)
{
if (option == 0)/* off */
{
mtp_send_ascout("mtp3 heartbeat off\n\r");
debug_mask=debug_mask & (~(one<<MTP3DB_PFHB));
}
else
{
mtp_send_ascout("mtp3 heartbeat on\n\r");
debug_mask=debug_mask | option<<MTP3DB_PFHB;
}
}
else if (strstr(ascin_ptr,"internal") != NULL)
{
if (option == 0)/* off */
{
mtp_send_ascout("messages from server to server off\n\r");
debug_mask=debug_mask & (~(one<<MTP3DB_APP_APP_MSG));
}
else
{
mtp_send_ascout("messages from server to server on\n\r");
debug_mask=debug_mask | option<<MTP3DB_APP_APP_MSG;
}
}
else if (strstr(ascin_ptr,"primitive") != NULL)
{
if (option == 0)/* off */
{
mtp_send_ascout("primitive between MTP3 and MTP2 off\n\r");
debug_mask=debug_mask & (~(one<<MTP3DB_PRIMITIVE_MSG));
}
else
{
mtp_send_ascout("primitive between MTP3 and MTP2 on\n\r");
debug_mask=debug_mask | option<<MTP3DB_PRIMITIVE_MSG;
}
}
else if ((tmp_ptr=strstr(ascin_ptr,"link="))!=NULL)
{
strcpy(info_str,"\0");
link = atol(&tmp_ptr[5]);
if (link < 256)
{
if (option == 1)
{
debug_link[link] = MTP3_MSGLOG_ON;
sprintf(info_str,"link %d ON\n\r",link);
mtp_send_ascout(info_str);
}
else
{
debug_link[link] = MTP3_MSGLOG_OFF;
sprintf(info_str,"link %d OFF\n\r",link);
mtp_send_ascout(info_str);
debug_mask=debug_mask & (~(one<<MTP3DB_ALLLKON));
}
}
}
else if ((tmp_ptr=strstr(ascin_ptr,"linkset="))!=NULL)
{
strcpy(info_str,"\0");
inputValue = atol(&tmp_ptr[8]);
if (inputValue < 128)
{
if (option == 1)
{
sprintf(info_str,"linkset %d ON\n\r",inputValue);
mtp_send_ascout(info_str);
}
else
{
sprintf(info_str,"linkset %d OFF\n\r",inputValue);
mtp_send_ascout(info_str);
}
lsx16 = inputValue << 4;
for (i=0;i<16;i++)
{
link = ls_slc[lsx16+i];
if (mtp3ObjState.lk_configured[link] == PARA_CONFIGURED)
{
if (option == 1)
debug_link[link] = MTP3_MSGLOG_ON;
else
debug_link[link] = MTP3_MSGLOG_OFF;
}
}
}
}
else
{
sprintf(info_str,"command error\n\r");
mtp_send_ascout(info_str);
}
}
void mtp3_help_page()
{
mtp_send_ascout("MTP3 HELP PAGE\n\r");
mtp_send_ascout("log [tup/isup/bicc/sccp/snm] on/off\n\r");
mtp_send_ascout("log [link=x/linkset=x/link all] on/off\n\r");
// mtp_send_ascout("log internal on/off: messages between server\n\r");
mtp_send_ascout("log [error/event/mtp3hb/primitive] on/off\n\r");
mtp_send_ascout("log all\n\r");
mtp_send_ascout("log none\n\r");
mtp_send_ascout("list par.x nStart: (parameters(from nStart),32 lines every time)\n\r");
mtp_send_ascout(" x=opc: OPC\n\r");
mtp_send_ascout(" x=link: Link attribute\n\r");
mtp_send_ascout(" x=ls: Linkset attribute\n\r");
mtp_send_ascout(" x=int: International network routine\n\r");
mtp_send_ascout(" x=ints: International network(s) routine\n\r");
mtp_send_ascout(" x=nat: National network routine\n\r");
mtp_send_ascout(" x=nats: National network(s) routine\n\r");
mtp_send_ascout("list route.x: SPC status(x=0-3,for four network)\n\r");
mtp_send_ascout("list log status: list which log has been openned\n\r");
}
int mtp3_show_parameter(BYTE option,BYTE value);
void mtp_m_rt()
{
BYTE page;
int input;
BYTE *ascin_ptr;
BYTE info_str[80];
BYTE *tmp_ptr;
ascin_ptr = &mtp_asciin_buf[1];
if (strlen(mtp_asciin_buf) > 0)
{
page = mtp_asciin_buf[0];
if (( page < 11) && (page > 1))
{
disp_page[page-1] = atoi(ascin_ptr);
mtp_disp_page(page-1);
}
if (strcmp(ascin_ptr,"C") == 0)
{
memset(&mtp3.nw[0].flow,0,sizeof(struct mtp3_flow));
memset(&mtp3.nw[1].flow,0,sizeof(struct mtp3_flow));
memset(&mtp3.nw[2].flow,0,sizeof(struct mtp3_flow));
memset(&mtp3.nw[3].flow,0,sizeof(struct mtp3_flow));
memset(mtp3ObjState.MTP3WatchDog,0,256);
}
else if (strstr(ascin_ptr,"list") != NULL)
{
if (strncmp(ascin_ptr,"list par.opc",12) == 0)
{
mtp3_show_parameter(0,0);
}
else if (strncmp(ascin_ptr,"list par.link",13) == 0)
{
input = atol(&ascin_ptr[13]);
mtp3_show_parameter(1,input);
}
else if (strncmp(ascin_ptr,"list par.ls",11) == 0)
{
input = atol(&ascin_ptr[11]);
mtp3_show_parameter(2,input);
}
else if (strncmp(ascin_ptr,"list par.ints",13) == 0)
{
input = atol(&ascin_ptr[13]);
mtp3_show_parameter(4,input);
}
else if (strncmp(ascin_ptr,"list par.int",12) == 0)
{
input = atol(&ascin_ptr[12]);
mtp3_show_parameter(3,input);
}
else if (strncmp(ascin_ptr,"list par.nats",13) == 0)
{
input = atol(&ascin_ptr[13]);
mtp3_show_parameter(6,input);
}
else if (strncmp(ascin_ptr,"list par.nat",12) == 0)
{
input = atol(&ascin_ptr[12]);
mtp3_show_parameter(5,input);
}
else if (strncmp(ascin_ptr,"list par.sg",11) == 0)
{
input = atol(&ascin_ptr[12]);
mtp3_show_parameter(7,input);
}
else if (strncmp(ascin_ptr,"list route.",11) == 0)
{
input = atol(&ascin_ptr[11]);
mtp3_show_routine_status(input);
}
else if (strncmp(ascin_ptr,"list rt.",8) == 0)
{
input = atol(&ascin_ptr[8]);
mtp3_show_routine_status_sorted(input);
}
else if (strstr(ascin_ptr,"list log status") != NULL)
{
mtp3_list_log_status();
}
if (strncmp(ascin_ptr,"list link.",10) == 0)
{
input = atol(&ascin_ptr[10]);
mtp3_list_link(input);
}
}
else if (strstr(ascin_ptr,"log all") != NULL)
{
debug_mask = debug_mask | 0xfffffaff;//not concern mtp3 hb & primitive
// debug_mask = 0xffffffff;
memset(debug_link,MTP3_MSGLOG_ON,256);
mtp_send_ascout("all logs on\n\r");
}
else if( strstr(ascin_ptr, "net cap start") !=NULL )
{
mtp3_send_netcap = 1;
mtp_send_ascout("mtp3 send netcap start");
}
else if( strstr(ascin_ptr, "net cap stop") !=NULL )
{
mtp3_send_netcap = 0;
mtp_send_ascout("mtp3 send netcap end");
}
else if (strstr(ascin_ptr,"log none") != NULL)
{
debug_mask = 0;
memset(debug_link,MTP3_MSGLOG_OFF,256);
mtp_send_ascout("all logs off\n\r");
}
else if ((tmp_ptr=strstr(ascin_ptr,"log"))!=NULL)
{
if (strstr(ascin_ptr,"on") != NULL)
mtp3_type_command(tmp_ptr,1);
else if (strstr(ascin_ptr,"off") != NULL)
mtp3_type_command(tmp_ptr,0);
else
mtp_send_ascout("command error\n\r");
}
else if (strcmp(ascin_ptr,"current portion")==0)
{
sprintf(info_str,"current portion is %ld\n\r",mtp3_csta_p);
mtp_send_ascout(info_str);
}
else if (strcmp(ascin_ptr,"restart")==0)
{
sprintf(info_str,"mtp3 restarting...\n\r");
mtp_send_ascout(info_str);
reset_mtp3();
}
else if (strcmp(ascin_ptr,"reload parameters")==0)
{
sprintf(info_str,"reloading mtp3 parameters...\n\r");
mtp_send_ascout(info_str);
mtp3_reload_data();
}
else if (strcmp(ascin_ptr,"save parameters")==0)
{
sprintf(info_str,"saving mtp3 parameters...\n\r");
mtp_send_ascout(info_str);
mtp3_write_parameter();
}
else if ( (strstr(ascin_ptr,"HELP") != NULL) |
(strstr(ascin_ptr,"help") != NULL) )
{
mtp3_help_page();
}
else if (strstr(ascin_ptr,"Activate") != NULL)
{
MTP3_activate(mtp3_localip);//deactivate alternative mtp3
}
else if (strstr(ascin_ptr,"Deactivate") != NULL)
{
MTP3_deactivate(mtp3_localip);//deactivate alternative mtp3
}
strcpy(mtp_asciin_buf,"\0");
}
}
int mtp_hex_to_ascii(BYTE *from_hex,WORD from_len, BYTE *to_asc)
{
int i,j;
if(from_len > 300)
{
mtp3_debug(MTP3DB_ERROR,"mtp_hex_to_ascii, length longer than 300, len=%d!", from_len);
from_len = 300;
}
j = 0;
for (i = 0; i< from_len; i++)
{
to_asc[j] = ascii[from_hex[i] >> 4];
j++;
to_asc[j] = ascii[from_hex[i] & 0x0f];
j++;
to_asc[j] = 0x20;
j++;
}
to_asc[j] = '\0';
return 1;
}
void mtp3_showbuf(int n,BYTE *msg,int len)
{
char info_str[1024];
unsigned long one=1;
if (mtp3DebugFull == 1)
return;
if (((one << n) & debug_mask) == 0)
return;
mtp_hex_to_ascii(msg,len,info_str);
strcat(info_str,"\n\r");
mtp_send_ascout(info_str);
}
void slt_message_decode(BYTE code,char *c)
{
switch (code)
{
case SIGNAL_SLTM:
sprintf(c,"SLTM");
break;
case SIGNAL_SLTA:
sprintf(c,"SLTA");
break;
default:
sprintf(c,"UNK");
break;
}
}
void snm_message_decode(BYTE code,char *c)
{
switch (code)
{
case SIGNAL_TFA:
sprintf(c,"TFA");
break;
case SIGNAL_TFP:
sprintf(c,"TFP");
break;
case SIGNAL_TRA:
sprintf(c,"TRA");
break;
case SIGNAL_RST:
sprintf(c,"RST");
break;
case SIGNAL_COO:
sprintf(c,"COO");
break;
case SIGNAL_COA:
sprintf(c,"COA");
break;
case SIGNAL_CBD:
sprintf(c,"CBD");
break;
case SIGNAL_CBA:
sprintf(c,"CBA");
break;
case SIGNAL_ECO:
sprintf(c,"ECA");
break;
case SIGNAL_ECA:
sprintf(c,"ECA");
break;
case SIGNAL_LIN:
sprintf(c,"LIN");
break;
case SIGNAL_LUN:
sprintf(c,"LUN");
break;
case SIGNAL_LIA:
sprintf(c,"LIA");
break;
case SIGNAL_LUA:
sprintf(c,"LUA");
break;
case SIGNAL_LID:
sprintf(c,"LID");
break;
case SIGNAL_LFU:
sprintf(c,"LFU");
break;
case SIGNAL_LLT:
sprintf(c,"LLT");
break;
case SIGNAL_LRT:
sprintf(c,"LRT");
break;
default:
sprintf(c,"UNK");
break;
}
}
void sccp_message_decode(BYTE code,char *c)
{
switch (code)
{
case MTP3_SCCP_CR:
sprintf(c,"CR");
break;
case MTP3_SCCP_CC:
sprintf(c,"CC");
break;
case MTP3_SCCP_CREF:
sprintf(c,"CREF");
break;
case MTP3_SCCP_RLSD:
sprintf(c,"RLSD");
break;
case MTP3_SCCP_RLC:
sprintf(c,"RLC");
break;
case MTP3_SCCP_DT1:
sprintf(c,"DT1");
break;
case MTP3_SCCP_DT2:
sprintf(c,"DT2");
break;
case MTP3_SCCP_AK:
sprintf(c,"AK");
break;
case MTP3_SCCP_UDT:
sprintf(c,"UDT");
break;
case MTP3_SCCP_UDTS:
sprintf(c,"UDTS");
break;
case MTP3_SCCP_ED:
sprintf(c,"ED");
break;
case MTP3_SCCP_EA:
sprintf(c,"EA");
break;
case MTP3_SCCP_RSR:
sprintf(c,"RSR");
break;
case MTP3_SCCP_RSC:
sprintf(c,"RSC");
break;
case MTP3_SCCP_ERR:
sprintf(c,"ERR");
break;
case MTP3_SCCP_IT:
sprintf(c,"IT");
break;
case MTP3_SCCP_XUDT:
sprintf(c,"XUDT");
break;
case MTP3_SCCP_XUDTS:
sprintf(c,"XUDTS");
break;
case MTP3_SCCP_LUDT:
sprintf(c,"LUDT");
break;
case MTP3_SCCP_LUDTS:
sprintf(c,"LUDTS");
break;
default:
sprintf(c,"UNK");
break;
}
}
void tup_message_decode(BYTE code,char *c)
{
switch (code)
{
case MTP3_TUP_IAM:
sprintf(c,"IAM");
break;
case MTP3_TUP_IAI:
sprintf(c,"IAI");
break;
case MTP3_TUP_SAM:
sprintf(c,"SAM");
break;
case MTP3_TUP_SAO:
sprintf(c,"SAO");
break;
case MTP3_TUP_GSM:
sprintf(c,"GSM");
break;
case MTP3_TUP_COT:
sprintf(c,"COT");
break;
case MTP3_TUP_GRQ:
sprintf(c,"GRQ");
break;
case MTP3_TUP_ACM:
sprintf(c,"ACM");
break;
case MTP3_TUP_SEC:
sprintf(c,"SEC");
break;
case MTP3_TUP_CGC:
sprintf(c,"CGC");
break;
case MTP3_TUP_CFL:
sprintf(c,"CFL");
break;
case MTP3_TUP_SSB:
sprintf(c,"SSB");
break;
case MTP3_TUP_UNN:
sprintf(c,"UNN");
break;
case MTP3_TUP_LOS:
sprintf(c,"LOS");
break;
case MTP3_TUP_SST:
sprintf(c,"SST");
break;
case MTP3_TUP_ACB:
sprintf(c,"ACB");
break;
case MTP3_TUP_DPN:
sprintf(c,"DPN");
break;
case MTP3_TUP_ANU:
sprintf(c,"ANU");
break;
case MTP3_TUP_ANC:
sprintf(c,"ANC");
break;
case MTP3_TUP_ANN:
sprintf(c,"ANN");
break;
case MTP3_TUP_CBK:
sprintf(c,"CBK");
break;
case MTP3_TUP_CLF:
sprintf(c,"CLF");
break;
case MTP3_TUP_CCL:
sprintf(c,"CCL");
break;
case MTP3_TUP_RLG:
sprintf(c,"RLG");
break;
case MTP3_TUP_BLO:
sprintf(c,"BLO");
break;
case MTP3_TUP_BLA:
sprintf(c,"BLA");
break;
case MTP3_TUP_UBL:
sprintf(c,"UBL");
break;
case MTP3_TUP_UBA:
sprintf(c,"UBA");
break;
case MTP3_TUP_ADI:
sprintf(c,"ADI");
break;
default:
sprintf(c,"UNK");
break;
}
}
void isup_message_decode(BYTE code,char *c)
{
switch (code)
{
case MTP3_ISUP_IAM:
sprintf(c,"IAM");
break;
case MTP3_ISUP_ACM:
sprintf(c,"ACM");
break;
case MTP3_ISUP_CPG:
sprintf(c,"CPG");
break;
case MTP3_ISUP_ANM:
sprintf(c,"ANM");
break;
case MTP3_ISUP_REL:
sprintf(c,"REL");
break;
case MTP3_ISUP_RLC:
sprintf(c,"RLC");
break;
case MTP3_ISUP_UBL:
sprintf(c,"UBL");
break;
case MTP3_ISUP_UBA:
sprintf(c,"UBA");
break;
case MTP3_ISUP_GRA:
sprintf(c,"GRA");
break;
default:
sprintf(c,"UNK");
break;
}
}
BOOL iptrans_msg_flow(BYTE *msg,BYTE pclen,int direction,DWORD dest_ip)
{
char info_str[1024];
long dpc=0;
long opc=0;
BYTE sls;
char tempbuf[1024];
long route_mark;
BYTE sio;
struct timeval tv;
struct timezone tz;
struct tm *t;
BYTE ssf;
unsigned long one=1;
struct in_addr in;
BOOL msg2mtp2;
char type[10];
BYTE nw;
char netID[10];
char codeName[16];
int msg_len;
if (mtp3DebugFull == 1)
return 0;
in.s_addr = dest_ip;
/* if (((dest_ip & E1CARD_BASE_IP_MASK) == E1CARD_BASE_IP) &&
(((dest_ip >> 16) & 0xff) < 32))*/
if (msg[0] < 255)
{
msg2mtp2 = TRUE;
}
else
msg2mtp2 = FALSE;
sio = msg[3];
nw = (sio >> 6) & 3;
switch (nw)
{
case 0:
sprintf(netID,"INAT");
break;
case 1:
sprintf(netID,"INATs");
break;
case 2:
sprintf(netID,"NAT");
break;
case 3:
sprintf(netID,"NATs");
break;
}
if (pclen == MTP3_24BIT_PC)
{
memcpy((BYTE *)&dpc,&msg[4],3);
memcpy((BYTE *)&opc,&msg[7],3);
sls = msg[10] & 0x0f;
}
else
{
memcpy((BYTE*)&route_mark,&msg[4],4);
dpc = route_mark & 0x3FFF;
opc = (route_mark & 0x0FFFFFFF) >> 14;
sls = (route_mark >> 28) & 0x0f;
}
if (debug_link[msg[0]] != MTP3_MSGLOG_ON)
{
if (msg2mtp2 == TRUE)
return 0;
}
{
msg_len = (msg[1]<<8) + msg[2];
if(msg_len > 300)
{
mtp3_debug(MTP3DB_ERROR,"Get message in iptrans_msg_flow, length longer than 300!");
msg[1]=0;
}
}
ssf= sio & 0x0f;
switch (ssf)
{
case TUP_SIO:
if (((one << MTP3DB_TUPMSG) & debug_mask) == 0)
return 0;
sprintf(type,"TUP");
if (pclen == MTP3_24BIT_PC)
tup_message_decode(msg[12],codeName);
else
tup_message_decode(msg[9],codeName);
break;
case ISUP_SIO:
if (((one << MTP3DB_ISUPMSG) & debug_mask) == 0)
return 0;
sprintf(type,"ISUP");
if (pclen == MTP3_24BIT_PC)
isup_message_decode(msg[13],codeName);
else
isup_message_decode(msg[10],codeName);
break;
case BICC_SIO:
if (((one << MTP3DB_BICCMSG) & debug_mask) == 0)
return 0;
sprintf(type,"BICC");
if (pclen == MTP3_24BIT_PC)
isup_message_decode(msg[13],codeName);
else
isup_message_decode(msg[10],codeName);
break;
case SCCP_SIO:
if (((one << MTP3DB_SCCPMSG) & debug_mask) == 0)
return 0;
sprintf(type,"SCCP");
if (pclen == MTP3_24BIT_PC)
sccp_message_decode(msg[11],codeName);
else
sccp_message_decode(msg[8],codeName);
break;
case SNM_SIO:
if (((one << MTP3DB_SNMMSG) & debug_mask) == 0)
return 0;
sprintf(type,"SNM");
if (pclen == MTP3_24BIT_PC)
snm_message_decode(msg[11],codeName);
else
snm_message_decode(msg[8],codeName);
break;
case TM_SIO:
if (((one << MTP3DB_SNMMSG) & debug_mask) == 0)
return 0;
sprintf(type,"SLT");
if (pclen == MTP3_24BIT_PC)
slt_message_decode(msg[11],codeName);
else
slt_message_decode(msg[8],codeName);
break;
default:
return 0;
}
gettimeofday(&tv,&tz);
t = localtime(&tv.tv_sec);
switch (direction)
{
case MTP_MSG_UP:
if (msg2mtp2 == TRUE)
sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3<==MTP2,%dB %s SPC(%lx->%lx) SLS=%x LI=%x srcLINK=%03d srcIP=%s\r\n",
type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,pclen,netID,opc,dpc,sls,(msg[1]<<8)+msg[2],msg[0],inet_ntoa(in));
else
{
if (((one << MTP3DB_APP_APP_MSG) & debug_mask) != 0)
sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3<==MTP3,%dB %s SPC(%lx->%lx) SLS=%x LI=%x srcIP=%s\r\n",
type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,pclen,netID,opc,dpc,sls,(msg[1]<<8)+msg[2],inet_ntoa(in));
else
return 0;
}
mtp_hex_to_ascii(msg, (msg[1]<<8)+msg[2]+3,tempbuf);
strcat(info_str,tempbuf);
strcat(info_str,"\n\r");
mtp_send_ascout(info_str);
return 1;
break;
case MTP_MSG_DOWN:
sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3<==USER,%s DPC=%lx SLS=%x\n\rPerform routing:MTP3==>MTP2,%dB SPC(%lx->%lx) LI=%02x dstLINK=%03d dstIP=%s\r\n",
type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,netID,dpc,sls,pclen,opc,dpc,(msg[1]<<8)+msg[2],msg[0],inet_ntoa(in));
break;
case MTP_MSG_STP:
sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld)Perform STP:MTP3==>MTP2,SPC(%lx->%lx) dstLINK=%x dstIP=%s\r\n",
type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,opc,dpc,msg[0],inet_ntoa(in));
break;
case MTP_MSG_OTHER_SERVER:
if (msg2mtp2 == TRUE)
sprintf(info_str,"%s%s(%02d:%02d:%02d.%06ld):MTP3<==USER, %s DPC=%lx SLS=%x\n\rRouting by UP:MTP3==>MTP2,%dB SPC(%lx->%lx) LI=%02x dstLINK=%03d dstIP=%s\r\n",
type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,netID,dpc,sls,pclen,opc,dpc,(msg[1]<<8)+msg[2],msg[0],inet_ntoa(in));
else
{
if (((one << MTP3DB_APP_APP_MSG) & debug_mask) != 0)
sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3<==USER, %s DPC=%lx SLS=%x\n\rRouting by UP:MTP3==>MTP3,%dB SPC(%lx->%lx) LI=%02x dstIP=%s\r\n",
type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,netID,dpc,sls,pclen,opc,dpc,(msg[1]<<8)+msg[2],inet_ntoa(in));
else
return 0;
}
break;
case MTP_SNM_MSG:
sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3==>MTP2,%dB %s SPC(%lx->%lx) SLS=%d LI=%02x dstLINK=%03d dstIP=%s\r\n",
type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,pclen,netID,opc,dpc,sls,(msg[1]<<8)+msg[2],msg[0],inet_ntoa(in));
mtp_hex_to_ascii(msg,(msg[1]<<8)+msg[2]+3,tempbuf);
strcat(info_str,tempbuf);
strcat(info_str,"\n\r");
mtp_send_ascout(info_str);
return 1;
break;
}
mtp_hex_to_ascii(msg,(msg[1]<<8)+msg[2]+3,tempbuf);
strcat(info_str,tempbuf);
strcat(info_str,"\n\r\n\r");
mtp_send_ascout(info_str);
return 1;
}
BOOL iptrans_msg_flow_2(up_message *up_msg_ptr)
{
char info_str[1024];
char tempbuf[1024];
BYTE sio;
struct timeval tv;
struct timezone tz;
struct tm *t;
unsigned long one=1;
char type[10];
BYTE nw;
char netID[10];
char codeName[16];
if (mtp3DebugFull == 1)
return 0;
if(up_msg_ptr->len > 300)
{
mtp3_debug(MTP3DB_ERROR,"Get message in iptrans_msg_flow_2, length longer than 300!");
up_msg_ptr->len = 300;
}
sio = up_msg_ptr->sio;
nw = (sio >> 6) & 3;
switch (nw)
{
case 0:
sprintf(netID,"INAT");
break;
case 1:
sprintf(netID,"INATs");
break;
case 2:
sprintf(netID,"NAT");
break;
case 3:
sprintf(netID,"NATs");
break;
}
if (((one << MTP3DB_SCCPMSG) & debug_mask) == 0)
return 0;
sprintf(type,"SCCP");
sccp_message_decode(up_msg_ptr->msgList[0],codeName);
gettimeofday(&tv,&tz);
t = localtime(&tv.tv_sec);
sprintf(info_str,"%s-%s(%02d:%02d:%02d.%06ld):MTP3LITE==>USER,%s LI=%x srcLINK=%03d\r\n",
type,codeName,t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec,netID,up_msg_ptr->len,up_msg_ptr->link);
mtp_hex_to_ascii(&up_msg_ptr->msgList[0], up_msg_ptr->len, tempbuf);
strcat(info_str,tempbuf);
strcat(info_str,"\n\r\n\r");
mtp_send_ascout(info_str);
return 1;
}
void mtp3_debug(int n,const char *fmt,...)
{
char info_str[1024];
char tempbuf[1024];
va_list ap;
unsigned long one=1;
struct timeval tv;
struct timezone tz;
struct tm *t;
if (mtp3DebugFull == 1)
return;
if(((one<<n) & debug_mask)==0)
{
if (n != MTP3DB_CMD)
return;
}
va_start(ap,fmt);
vsprintf(info_str, fmt, ap);
va_end(ap);
gettimeofday(&tv,&tz);
t = localtime(&tv.tv_sec);
switch (n)
{
case MTP3DB_EVENT:
strcat(info_str,"\n\r");
mtp_send_ascout(info_str);
break;
case MTP3DB_SNMMSG:
sprintf(tempbuf,"\33[36mSNM(%d:%d:%d.%ld):",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec);
strcat(tempbuf,info_str);
strcat(tempbuf,"\33[0m\n\r");
mtp_send_ascout(tempbuf);
break;
case MTP3DB_SCCPMSG:
sprintf(tempbuf,"\33[36mSCCP(%d:%d:%d.%ld):",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec);
strcat(tempbuf,info_str);
strcat(tempbuf,"\33[0m\n\r\n\r");
mtp_send_ascout(tempbuf);
break;
case MTP3DB_ISUPMSG:
sprintf(tempbuf,"\33[36mISUP(%d:%d:%d.%ld):",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec);
strcat(tempbuf,info_str);
strcat(tempbuf,"\33[0m\n\r");
mtp_send_ascout(tempbuf);
break;
case MTP3DB_TUPMSG:
sprintf(tempbuf,"\33[36mTUP(%d:%d:%d.%ld):",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec);
strcat(tempbuf,info_str);
strcat(tempbuf,"\33[0m\n\r");
mtp_send_ascout(tempbuf);
break;
case MTP3DB_ERROR:
sprintf(tempbuf,"\33[31m(%d:%d:%d.%ld)",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec);
strcat(tempbuf,info_str);
strcat(tempbuf,"\33[0m\n\r");
mtp_send_ascout(tempbuf);
break;
case MTP3DB_PFHB:
sprintf(tempbuf,"(%d:%d:%d.%ld)",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec);
strcat(tempbuf,info_str);
strcat(tempbuf,"\n\r");
mtp_send_ascout(tempbuf);
break;
case MTP3DB_PRIMITIVE_MSG:
sprintf(tempbuf,"(%d:%d:%d.%ld)",t->tm_hour,t->tm_min,t->tm_sec,tv.tv_usec);
strcat(tempbuf,info_str);
strcat(tempbuf,"\n\r");
mtp_send_ascout(tempbuf);
break;
case MTP3DB_CMD:
sprintf(tempbuf,"\33[1;33m(%d:%d:%d)",t->tm_hour,t->tm_min,t->tm_sec);
strcat(tempbuf,info_str);
strcat(tempbuf,"\33[0m\n\r");
mtp_send_ascout(tempbuf);
break;
default:
break;
}
}
void mtp3_list_log_status()
{
int i;
BYTE info_str[80];
mtp_send_ascout("\33[32mmtp3 log status-->\33[0m\n\r");
if ((debug_mask & 2) != 0)
mtp_send_ascout("log snm \33[33mON\33[0m\n\r");
if ((debug_mask & 4) != 0)
mtp_send_ascout("log sccp \33[33mON\33[0m\n\r");
if ((debug_mask & 8) != 0)
mtp_send_ascout("log tup \33[33mON\33[0m\n\r");
if ((debug_mask & 16) != 0)
mtp_send_ascout("log isup \33[33mON\33[0m\n\r");
if ((debug_mask & 32) != 0)
mtp_send_ascout("log error \33[33mON\33[0m\n\r");
if ((debug_mask & 64) != 0)
mtp_send_ascout("log event \33[33mON\33[0m\n\r");
if ((debug_mask & 256) != 0)
mtp_send_ascout("log mtp3hb \33[33mON\33[0m\n\r");
if ((debug_mask & 512) != 0)
mtp_send_ascout("log internal \33[33mON\33[0m\n\r");
if ((debug_mask & 1024) != 0)
mtp_send_ascout("log primitive \33[33mON\33[0m\n\r");
if ((debug_mask & 128) != 0)
{
mtp_send_ascout("log all link \33[33mON\33[0m\n\r");
return;
}
for (i=0;i<256;i++)
{
if (debug_link[i] == MTP3_MSGLOG_ON)
{
sprintf(info_str,"log link=%d \33[33mON\33[0m\n\r",i);
mtp_send_ascout(info_str);
}
}
}
void mtp3_show_routine_status(BYTE nw)
{
int i;
char info_str[4096];
char tempbuf[4096];
nw_para *para;
network *sp;
BYTE current_rt;
BYTE nls;
BYTE als;
static BYTE last_show[4]={0};
BYTE showCount=0;
nw = nw & 3;
para = &mtp3_para->nw[nw];
sp = &mtp3.nw[nw];
switch (nw)
{
case 0:
sprintf(info_str,"\33[33mInternational Network\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m");
break;
case 1:
sprintf(info_str,"\33[33mInternational Network spare\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m");
break;
case 2:
sprintf(info_str,"\33[33mNational Network\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m");
break;
case 3:
sprintf(info_str,"\33[33mNational Network spare\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m");
break;
default:
break;
}
mtp_send_ascout(info_str);
showCount=0;
for (i=last_show[nw];i<256;i++)
{
nls = para->normal_ls[i];
als = para->alternative_ls[i];
if ((para->dpc[i] != 0) &&
(nls < 128) )
{
current_rt = (sp->routine[i] >> 6) & 3;
switch (current_rt)
{
case 0:
if (als < 128)
sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t%02d\n\r",para->dpc[i],nls,nls,als);
else
sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t--\n\r",para->dpc[i],nls,nls);
mtp_send_ascout(tempbuf);
break;
case 1:
if (als < 128)
sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t%02d\n\r",para->dpc[i],als,nls,als);
else
sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t--\n\r",para->dpc[i],als,nls);
mtp_send_ascout(tempbuf);
break;
case 2:
if (als < 128)
sprintf(tempbuf,"%06lx\t\t\33[31mN\33[0m\t\tNo Path\t\t%02d\t%02d\n\r",para->dpc[i],nls,als);
else
sprintf(tempbuf,"%06lx\t\t\33[31mN\33[0m\t\tNo Path\t\t%02d\t--\n\r",para->dpc[i],nls);
mtp_send_ascout(tempbuf);
break;
default:
break;
}
showCount++;
}
if (showCount > 31)
{
last_show[nw] = i+1;
break;
}
}
if (i>=255)
{
last_show[nw] = 0;
}
}
void mtp3_show_routine_status_sorted(BYTE nw)
{
int i;
char info_str[4096];
char tempbuf[4096];
nw_para *para;
network *sp;
mtp3DPCIndex *sort_rec;
BYTE current_rt;
BYTE nls;
BYTE als;
static BYTE last_show[4]={0};
BYTE showCount=0;
int index;
nw = nw & 3;
para = &mtp3_para->nw[nw];
sp = &mtp3.nw[nw];
sort_rec = &mtp3SortRoutine.nw[nw];
switch (nw)
{
case 0:
sprintf(info_str,"\33[33mInternational Network\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m");
break;
case 1:
sprintf(info_str,"\33[33mInternational Network spare\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m");
break;
case 2:
sprintf(info_str,"\33[33mNational Network\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m");
break;
case 3:
sprintf(info_str,"\33[33mNational Network spare\n\rSPC\t\tReachable\tPath\t\tNLS\tALS\n\r\33[0m");
break;
default:
break;
}
mtp_send_ascout(info_str);
showCount=0;
for (i=last_show[nw];i<sort_rec->sortedNum;i++)
{
index = sort_rec->index[i];
nls = para->normal_ls[index];
als = para->alternative_ls[index];
if ((para->dpc[index] != 0) &&
(nls < 128) )
{
current_rt = (sp->routine[index] >> 6) & 3;
switch (current_rt)
{
case 0:
if (als < 128)
sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t%02d\n\r",para->dpc[index],nls,nls,als);
else
sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t--\n\r",para->dpc[index],nls,nls);
mtp_send_ascout(tempbuf);
break;
case 1:
if (als < 128)
sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t%02d\n\r",para->dpc[index],als,nls,als);
else
sprintf(tempbuf,"%06lx\t\t\33[32mY\33[0m\t\tLinkset %02d\t%02d\t--\n\r",para->dpc[index],als,nls);
mtp_send_ascout(tempbuf);
break;
case 2:
if (als < 128)
sprintf(tempbuf,"%06lx\t\t\33[31mN\33[0m\t\tNo Path\t\t%02d\t%02d\n\r",para->dpc[index],nls,als);
else
sprintf(tempbuf,"%06lx\t\t\33[31mN\33[0m\t\tNo Path\t\t%02d\t--\n\r",para->dpc[index],nls);
mtp_send_ascout(tempbuf);
break;
default:
break;
}
showCount++;
}
if (showCount > 31)
{
last_show[nw] = i+1;
break;
}
}
if (i>=sort_rec->sortedNum-1)
{
last_show[nw] = 0;
}
}
int pc_length(BYTE nw);
int mtp3_show_parameter(BYTE option,BYTE index)
{
int i;
char info_str[4096];
int maxindex;
char nw[20];
switch (option)
{
case 0:
mtp_send_ascout("Network\t\t\tSPC Len\t\tOPC\n\r");
if (pc_length(0) == MTP3_24BIT_PC)
sprintf(info_str,"International\t\t24BIT\t\t%06lx\n\r",mtp3_para->nw[0].opc24);
else
sprintf(info_str,"International\t\t14BIT\t\t%06lx\n\r",mtp3_para->nw[0].opc14);
mtp_send_ascout(info_str);
if (pc_length(1) == MTP3_24BIT_PC)
sprintf(info_str,"International(s)\t24BIT\t\t%06lx\n\r",mtp3_para->nw[1].opc24);
else
sprintf(info_str,"International(s)\t14BIT\t\t%06lx\n\r",mtp3_para->nw[1].opc14);
mtp_send_ascout(info_str);
if (pc_length(2) == MTP3_24BIT_PC)
sprintf(info_str,"National\t\t24BIT\t\t%06lx\n\r",mtp3_para->nw[2].opc24);
else
sprintf(info_str,"National\t\t14BIT\t\t%06lx\n\r",mtp3_para->nw[2].opc14);
mtp_send_ascout(info_str);
if (pc_length(3) == MTP3_24BIT_PC)
sprintf(info_str,"National(s)\t\t24BIT\t\t%06lx\n\r",mtp3_para->nw[3].opc24);
else
sprintf(info_str,"National(s)\t\t14BIT\t\t%06lx\n\r",mtp3_para->nw[3].opc14);
mtp_send_ascout(info_str);
sprintf(info_str, "International Dynamic (%d): %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\r\n",
mtp3_opc.opc_num[0], mtp3_opc.opc[0][0], mtp3_opc.opc[0][1], mtp3_opc.opc[0][2],
mtp3_opc.opc[0][3], mtp3_opc.opc[0][4], mtp3_opc.opc[0][5], mtp3_opc.opc[0][6], mtp3_opc.opc[0][7]);
mtp_send_ascout(info_str);
sprintf(info_str, "International(s) Dynamic (%d): %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\r\n",
mtp3_opc.opc_num[1], mtp3_opc.opc[1][0], mtp3_opc.opc[1][1], mtp3_opc.opc[1][2],
mtp3_opc.opc[1][3], mtp3_opc.opc[1][4], mtp3_opc.opc[1][5], mtp3_opc.opc[1][6], mtp3_opc.opc[1][7]);
mtp_send_ascout(info_str);
sprintf(info_str, "National Dynamic (%d): %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\r\n",
mtp3_opc.opc_num[2], mtp3_opc.opc[2][0], mtp3_opc.opc[2][1], mtp3_opc.opc[2][2],
mtp3_opc.opc[2][3], mtp3_opc.opc[2][4], mtp3_opc.opc[2][5], mtp3_opc.opc[2][6], mtp3_opc.opc[2][7]);
mtp_send_ascout(info_str);
sprintf(info_str, "National(s) Dynamic (%d): %ld, %ld, %ld, %ld, %ld, %ld, %ld, %ld\r\n",
mtp3_opc.opc_num[3], mtp3_opc.opc[3][0], mtp3_opc.opc[3][1], mtp3_opc.opc[3][2],
mtp3_opc.opc[3][3], mtp3_opc.opc[3][4], mtp3_opc.opc[3][5], mtp3_opc.opc[3][6], mtp3_opc.opc[3][7]);
mtp_send_ascout(info_str);
break;
case 1:
sprintf(info_str," \33[32mLink Attribute-->\n\r\33[0m");
mtp_send_ascout(info_str);
sprintf(info_str,"\33[32mLink\tLinkset\tSLC\tNormalMTP3\tAlterMTP3\tType\tSG\tCfg\n\r\33[0m");
mtp_send_ascout(info_str);
if (index > 224)
maxindex = 256;
else
maxindex = index+32;
for (i=index; i<maxindex; i++)
{
sprintf(info_str,"%03d\t%02x\t%02x\t%08lx\t%08lx\t%02x\t%02x\t%02x\n\r",i,mtp3_para->lk[i].e1_to_linkset,mtp3_para->lk[i].e1_to_slc,
mtp3_para->lk[i].e1_to_mtp3,mtp3_para->lk[i].e1_to_alterMTP3,mtp3_para->lk[i].e1_lk_type,mtp3_para->lk[i].e1_to_sg,mtp3ObjState.lk_configured[i]);
mtp_send_ascout(info_str);
}
break;
case 2:
sprintf(info_str," \33[32mLinkset Attribute-->\n\r\33[0m");
mtp_send_ascout(info_str);
sprintf(info_str,"\33[32mLinkset\tRemote_SPC\tNetwork\t\tLoopBack\n\r\33[0m");
mtp_send_ascout(info_str);
index = index % 128;
if (index > 96)
maxindex = 128;
else
maxindex = index+32;
for (i=index; i<maxindex; i++)
{
switch (mtp3_para->ls_pro[i] & 3)
{
case 0:
sprintf(nw,"INT");
break;
case 1:
sprintf(nw,"INT(s)");
break;
case 2:
sprintf(nw,"NAT");
break;
case 3:
sprintf(nw,"NAT(s)");
break;
}
if ((mtp3_para->ls_pro[i] & 8) == 0)
sprintf(info_str,"%03d\t%06lx\t\t%s\t\tN\n\r",i,mtp3_para->ls_op_pc[i],nw);
else
sprintf(info_str,"%03d\t%06lx\t\t%s\t\tY\n\r",i,mtp3_para->ls_op_pc[i],nw);
mtp_send_ascout(info_str);
}
break;
case 3:// international routine */
sprintf(info_str," \33[32mInternational Routine\n\r\33[0m");
mtp_send_ascout(info_str);
sprintf(info_str," \33[32m SPC\tNormal LS\tAlternative LS\n\r\33[0m");
mtp_send_ascout(info_str);
if (index > 224)
maxindex = 256;
else
maxindex = index+32;
for (i=index; i<maxindex; i++)
{
sprintf(info_str,"\33[33m%03d\33[0m %06lx\t%02x\t\t%02x\n\r",i,mtp3_para->nw[0].dpc[i],mtp3_para->nw[0].normal_ls[i],mtp3_para->nw[0].alternative_ls[i]);
mtp_send_ascout(info_str);
}
break;
case 4:// international(s) routine
sprintf(info_str," \33[32mInternational(S) Routine\n\r\33[0m");
mtp_send_ascout(info_str);
sprintf(info_str," \33[32m SPC\tNormal LS\tAlternative LS\n\r\33[0m");
mtp_send_ascout(info_str);
if (index > 224)
maxindex = 256;
else
maxindex = index+32;
for (i=index; i<maxindex; i++)
{
sprintf(info_str,"\33[33m%03d\33[0m %06lx\t%02x\t\t%02x\n\r",i,mtp3_para->nw[1].dpc[i],mtp3_para->nw[1].normal_ls[i],mtp3_para->nw[1].alternative_ls[i]);
mtp_send_ascout(info_str);
}
break;
case 5:// national routine
sprintf(info_str," \33[32mNational Routine\n\r\33[0m");
mtp_send_ascout(info_str);
sprintf(info_str," \33[32m SPC\tNormal LS\tAlternative LS\n\r\33[0m");
mtp_send_ascout(info_str);
if (index > 224)
maxindex = 256;
else
maxindex = index+32;
for (i=index; i<maxindex; i++)
{
sprintf(info_str,"\33[33m%03d\33[0m %06lx\t%02x\t\t%02x\n\r",i,mtp3_para->nw[2].dpc[i],mtp3_para->nw[2].normal_ls[i],mtp3_para->nw[2].alternative_ls[i]);
mtp_send_ascout(info_str);
}
break;
case 6:// national(s) routine
sprintf(info_str," \33[32mNational(S) Routine\n\r\33[0m");
mtp_send_ascout(info_str);
sprintf(info_str," \33[32m SPC\tNormal LS\tAlternative LS\n\r\33[0m");
mtp_send_ascout(info_str);
if (index > 224)
maxindex = 256;
else
maxindex = index+32;
for (i=index; i<maxindex; i++)
{
sprintf(info_str,"\33[33m%03d\33[0m %06lx\t%02x\t\t%02x\n\r",i,mtp3_para->nw[3].dpc[i],mtp3_para->nw[3].normal_ls[i],mtp3_para->nw[3].alternative_ls[i]);
mtp_send_ascout(info_str);
}
break;
case 7:// SG Attribute
sprintf(info_str," \33[32mSG Attribute-->\n\r\33[0m");
mtp_send_ascout(info_str);
sprintf(info_str," \33[32mSG Enable\tServer\tACK\tRemoteIP\n\r\33[0m");
mtp_send_ascout(info_str);
if (index > 224)
maxindex = 256;
else
maxindex = index+32;
for (i=index; i<maxindex; i++)
{
sprintf(info_str,"\33[33m%03d\33[0m %02x\t\t%02x\t%02x\t%08lx\n\r",i,mtp3_para->sg[i].enable,mtp3_para->sg[i].server,
mtp3_para->sg[i].data_ack,mtp3_para->sg[i].ip);
mtp_send_ascout(info_str);
}
break;
}
return 1;
}
void mtp3_list_link(BYTE i)
{
char info_str[4096];
sprintf(info_str," \33[32mLink Attribute-->\n\r\33[0m");
mtp_send_ascout(info_str);
sprintf(info_str,"\33[32mLink\tE1_MTP3\t\tNMTP3\tAMTP3\n\r\33[0m");
mtp_send_ascout(info_str);
sprintf(info_str,"%03d\t%08lx\t%02x\t%02x\n\r",i,
mtp3ObjState.lk_mtp3[i],mtp3ObjState.lk_NMTP3_ok[i],mtp3ObjState.lk_AMTP3_ok[i]);
mtp_send_ascout(info_str);
}
/*@end@*/