Files
svc.ems/plat/8ecp/src/8ecp_debug.c
2024-09-27 15:39:34 +08:00

353 lines
7.6 KiB
C

#include "./include/8ecp.h"
#define _8ECP_DEBUG_ID 20
#define _8ECP_VER_DEBUG "R9V0_01p1"
BYTE _8ecp_asciin_buf[MAX_ASCIIIN_LEN];
BYTE _8ecp_asciout_buf[MAX_ASCIIOUT_LEN];
WORD monitor_flag;
BYTE _8ecp_sg_mon_flag[MAX_MG_NO];
BYTE _8ecp_trk_mon_flag[MAX_TRK_NO];
BYTE _8ecp_chl_mon_flag[MAX_CHL_NO];
BYTE tempstr[128];
BYTE tempstr1[256];
static BYTE log_help[] = {"8ECP Debug Monitor Help:\n\r\
1.[help]\n\r\
2.[log all/none]\n\r\
3.[log error on/off]\n\r\
4.[log mg -mg_no on/off]\n\r\
5.[log trk -mg_no -trk_no on/off]\n\r\
6.[log chl -mg_no -trk_no -chnl_no on/off]\n\r\n\r"};
static WORD disp_page[128];
static BYTE *disp_ptr = (BYTE *) disp_page;
static DWORD debug_status_id[20] =
{1,3,6,1,4,1,1373,1,1,2,3,1,2, _8ECP_DEBUG_ID + 2, 1};
static BYTE debug_status = 1;
static DWORD debug_name_id[20] =
{1,3,6,1,4,1,1373,1,1,2,3,1,2,_8ECP_DEBUG_ID + 2,2};
static DWORD debug_ascin_id[20] =
{1, 3, 6, 1, 4, 1, 1373, 1, 1, 2, 3, 1, 2, _8ECP_DEBUG_ID + 2, 3};
static DWORD debug_ascout_id[20] =
{1, 3, 6, 1, 4, 1, 1373, 1, 1, 2, 3, 1, 2, _8ECP_DEBUG_ID + 2, 4};
static DWORD debug_page_title[20] =
{1,3,6,1,4,1,1373,1,1,2,3,1,2,_8ECP_DEBUG_ID + 2,1,1};
static DWORD debug_page_line[20] =
{1,3,6,1,4,1,1373,1,1,2,3,1,2,_8ECP_DEBUG_ID + 2, 1,2,1};
static BYTE title1_p[] =
{
" 8ECP Page\n\r\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n\r\
Message Info\n\r\
"};
BYTE _8ecp_disp_line(BYTE page, BYTE line)
{
BYTE disp_length;
disp_length = 16;
disp_ptr = (BYTE *) disp_page;
switch (page)
{
case 1:
if (line == 0)
{
disp_ptr = (BYTE *) &disp_page[page];
disp_length = 2;
}
else
{
if(tempstr != NULL)
disp_ptr = (BYTE *)tempstr;
}
break;
default:
disp_length = 0;
break;
}
return disp_length;
}
void _8ecp_disp_page(BYTE page)
{
BYTE disp_line;
BYTE disp_length;
debug_page_line[PAGE_POINT] = page + 5;
for (disp_line = 0; disp_line < 22; disp_line++)
{
disp_length = _8ecp_disp_line(page, disp_line);
debug_page_line[LINE_POINT] = disp_line + 2;
debug_page_line[LINE_POINT + 1] = 2; // Data Pointer
debug_set_response(BASE_ID_LEN + 2, debug_page_line, disp_ptr, disp_length);
}
}
int _8ecp_asciout_proc (BYTE * out_ptr)
{
int out_len;
out_len = strlen (out_ptr);
if (out_len + strlen (_8ecp_asciout_buf) > MAX_ASCIIOUT_LEN - 2)
{
strcpy (_8ecp_asciout_buf, out_ptr);
}
else
{
strcat (_8ecp_asciout_buf, out_ptr);
}
return 1;
}
int _8ecp_debug_set (void)
{
BYTE page;
BYTE data[10];
BYTE *ptr;
bzero(disp_page,128);
ptr = data;
bzero(_8ecp_sg_mon_flag,MAX_MG_NO);
bzero(_8ecp_trk_mon_flag,MAX_TRK_NO);
bzero(_8ecp_chl_mon_flag,MAX_CHL_NO);
bzero(tempstr, 40);
debug_set_response(BASE_ID_LEN, debug_status_id, &debug_status, 1);
debug_set_response(BASE_ID_LEN, debug_name_id, _8ECP_VER_DEBUG, 10);
debug_set_response (BASE_ID_LEN, debug_ascin_id, _8ecp_asciin_buf, 4096);
debug_set_response (BASE_ID_LEN, debug_ascout_id, _8ecp_asciout_buf, 4096);
for (page = 1; page < 2; page++)
{
switch (page)
{
case 1: //page 1
ptr = title1_p;
break;
default:
break;
}
debug_page_title[PAGE_POINT] = 5 + page;
debug_set_response(BASE_ID_LEN + 1, debug_page_title, ptr, strlen(ptr));
_8ecp_disp_page(page);
}
return 1;
}
void log_procedure(BYTE flag, BYTE* tempstr)
{
int i;
if(flag == 0)
{
for(i = 0; i < 15; i ++)
sprintf(&tempstr1[3*i], " %02x",tempstr[i]);
}
else if(flag == 1)
{
for(i = 0; i < 41; i ++)
sprintf(&tempstr1[3*i], " %02x",tempstr[i]);
}
if(monitor_flag == MONITOR_ALL)
{
if(flag == 0)
{
_8ecp_asciout_proc("\33[32mSend:\33[0m");
_8ecp_asciout_proc(tempstr1);
_8ecp_asciout_proc("\n");
}
else if(flag == 1)
{
_8ecp_asciout_proc("\33[33mReceive:\33[0m");
_8ecp_asciout_proc(tempstr1);
_8ecp_asciout_proc("\n");
}
}
else
{
if(flag == 1)
{
for(i = 0; i < MAX_MG_NO; i ++)
{
if(_8ecp_sg_mon_flag[i] == 1)
{
if(tempstr[11] == i)
_8ecp_asciout_proc(tempstr);
}
}
for(i = 0; i < MAX_TRK_NO; i++)
{
if(_8ecp_trk_mon_flag[i] == 1)
if(tempstr[12] / 32 == i)
_8ecp_asciout_proc(tempstr);
}
for(i = 0; i < MAX_CHL_NO; i++)
{
if(_8ecp_chl_mon_flag[i] == 1)
if(tempstr[12] == i)
_8ecp_asciout_proc(tempstr);
}
}
}
}
void _8ecp_mon (void)
{
WORD str_len;
BYTE * ascii_in_ptr = NULL;
BYTE * tmpStr;
DWORD mgNo = 0, trkNo = 0, chlNo = 0;
BYTE error_flag = 0;
if ((str_len = strlen (_8ecp_asciin_buf)) > 0)
{
ascii_in_ptr = _8ecp_asciin_buf + 1;
if (strcmp (ascii_in_ptr, "log all") == 0)
{
monitor_flag = MONITOR_ALL;
}
else if (strcmp (ascii_in_ptr, "log none") == 0)
{
monitor_flag = MONITOR_NONE;
}
else if (strcmp (ascii_in_ptr, "help") == 0)
{
_8ecp_asciout_proc (log_help);
}
else if (strcmp (ascii_in_ptr, "log error on") == 0)
{
monitor_flag = MONITOR_ERROR_ON;
}
else if (strcmp (ascii_in_ptr, "log error off") == 0)
{
monitor_flag = MONITOR_ERROR_OFF;
}
else if ((strstr (ascii_in_ptr, "log mg")) != NULL)
{
if ((tmpStr = strstr (ascii_in_ptr, "-")) != NULL)
{
mgNo = strtoul (tmpStr + 1, NULL, 10);
if (mgNo >= 0 && mgNo <= 31)
{
if (strstr (ascii_in_ptr, "on") != NULL)
{
_8ecp_sg_mon_flag[mgNo] = 1;
}
else if (strstr (ascii_in_ptr, "off") != NULL)
{
_8ecp_sg_mon_flag[mgNo] = 0;
}
}
else
error_flag = 1; //the format of command is error
}
else
error_flag = 1;
}
else if (strstr (ascii_in_ptr, "log trk"))
{
if ((tmpStr = strstr (ascii_in_ptr, "-")) != NULL)
{
mgNo = strtoul (tmpStr + 1, NULL, 10);
if (mgNo >= 0 && mgNo <= 31)
{
while (*++tmpStr != '\0') //get the next char '-'
{
if (*tmpStr == '-')
{
trkNo = strtoul (tmpStr + 1, NULL, 10);
if (trkNo >= 0 && trkNo <= 7)
{
if (strstr (tmpStr, "on") != NULL)
{
_8ecp_trk_mon_flag[mgNo * 8 + trkNo] = 1;
}
else if (strstr (tmpStr, "off") != NULL)
{
_8ecp_trk_mon_flag[mgNo * 8 + trkNo] = 0;
}
}
else
error_flag = 1;
break;
}
}
}
else
error_flag = 1;
}
else
error_flag = 1;
}
else if (strstr (ascii_in_ptr, "log chl"))
{
if ((tmpStr = strstr (ascii_in_ptr, "-")) != NULL)
{
mgNo = strtoul (tmpStr + 1, NULL, 10);
if (mgNo >= 0 && mgNo <= 31)
{
while (*++tmpStr != '\0') //get the next char '-'
{
if (*tmpStr == '-')
{
trkNo = strtoul (tmpStr + 1, NULL, 10);
if (trkNo >= 0 && trkNo <= 7)
{
while (*++tmpStr != '\0') //get the next char '-'
{
if (*tmpStr == '-')
{
chlNo = strtoul (tmpStr + 1, NULL, 10);
if (chlNo >= 0 && chlNo <= 31)
{
if (strstr (tmpStr, "on") != NULL)
{
_8ecp_chl_mon_flag[mgNo * 8 * 32 + chlNo] = 1;
}
else if (strstr (tmpStr, "off") != NULL)
{
_8ecp_chl_mon_flag[mgNo * 8 * 32 + chlNo] = 0;
}
}
else
error_flag = 1;
break;
}
}
break;
}
else
error_flag = 1;
}
}
}
else
error_flag = 1;
}
else
{
error_flag = 1;
}
}
else
error_flag = 1;
if (error_flag == 0)
_8ecp_asciout_proc("Command OK!\n\r");
else
_8ecp_asciout_proc("Command Error!\n\r");
strcpy (_8ecp_asciin_buf, "\0");
}
}