📄 ge_cmddispatch.c
字号:
/**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-
* GE_MainCommand.c - Ethernet 100M code. .
*
* Copyright 2001-12 by GDT, Inc
*
* modification history
* --------------------
* 2001-12-14,xinyan yang created.
*
* all message is :
*
* SYS_INITCOMMAND
* SYS_SHUTDOWN
* RESET_COMMAND
* IP_PKT
* MPLS_PKT
* SYS_MGMT_REQ:
* SYS_ARP_ENTRY_REQUEST
* SYS_EVENT_REPORT
* BDCOM_LINK_DOWN:
*
*/
#include <stdlib.h>
#include <msgQlib.h>
#include <errno.h>
#include <assert.h>
#include <taskLib.h>
#include "GE_Global.h"
#include "GE_CmdDispatch.h"
#include "GE_GlobalP.h"
#include "global.h"
#include "SBSL_Monitor.h"
#include "bdcom_860.h"
#include "GE_Utility.h"
unsigned int GE_MESSAGE_DEBUG=1;
STATUS GE_cmdDispatch ( unsigned int bufLen,
unsigned char *pBuf,
unsigned int offset,
unsigned int dataLen )
{
TASK_MSG TaskMsg;
char subType;
MSG_STRUCTURE *GenMsg;
if( pBuf == NULL )
{ if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch:pBuf==NULL,ERROR!\n");
return ERROR;
}
GenMsg = (MSG_STRUCTURE *)pBuf;
switch (GenMsg->type)
{
case SYS_INITCOMMAND:
TaskMsg.taskCode = BDCOM_TX_TASK_CODE;
TaskMsg.type = GenMsg->type;
TaskMsg.length = GenMsg->length;
memset(TaskMsg.msgBuf, 0, 128);
if (BOARD_STATE == BOARD_STATE_NORMAL)
{
if ((msgQSend ( SBSL_TaskMsgIdGet(GE_MAINCMD_TASK_CODE),
(char *)(&TaskMsg),
140,
NO_WAIT,
MSG_PRI_NORMAL )) == ERROR)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch: sending SYS_INITCOMMAND to MainCommand failed!\n");
free(pBuf);
return OK;
}
else
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_EVENT,"GE_cmdDispatch: sending SYS_INITCOMMAND to MainCommand succeed!\n");
free(pBuf);
return OK;
}
if (BOARD_STATE == BOARD_STATE_INITLIZE)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch:in init state,SYS_INITCOMMAND message should be dealt by SBSL\n ");
free(pBuf);
return OK;
}
}
break;
case SYS_SOFTWARE_LD_REQ:
if(GE_MESSAGE_DEBUG)
GE_printf(GE_EVENT,"GE_cmdDispatch:Receive SYS_SOFTWARE_LD_REQ!\n");
free(pBuf);
return OK;
break;
case SYS_PORT_STAT_REQUEST:
if(GE_MESSAGE_DEBUG)
GE_printf(GE_EVENT,"GE_cmdDispatch:Receive PORT_STAT_REQUEST!\n");
TaskMsg.taskCode =BDCOM_TX_TASK_CODE;
TaskMsg.type = SYS_PORT_STAT_REQUEST;
TaskMsg.length = 0;
memset(TaskMsg.msgBuf, 0, 128);
if (BOARD_STATE == BOARD_STATE_NORMAL)
{
if ((msgQSend ( SBSL_TaskMsgIdGet(GE_EVENTSTATIC_TASK_CODE),
(char *)(&TaskMsg),
140,
NO_WAIT,
MSG_PRI_NORMAL )) == ERROR)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch:BDCOM sending PORT_STAT_REQUEST to tEventStatistic failed!\n");
free(pBuf);
return OK;
}
else
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_EVENT,"GE_cmdDispatch:BDCOM sending PORT_STAT_REQUEST to tEventStatistic succeed!\n");
free(pBuf);
return OK;
}
}
if (BOARD_STATE == BOARD_STATE_INITLIZE)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch:Can't deal with in initlize mode!\n");
free(pBuf);
return OK;
}
break;
case SYS_MGMT_REQ:
subType=GenMsg->data[0];
TaskMsg.taskCode = BDCOM_TX_TASK_CODE;
TaskMsg.type = GenMsg->type;
TaskMsg.length = GenMsg->length;
memset(TaskMsg.msgBuf, 0, 128);
TaskMsg.msgBuf[0]=subType;
if (BOARD_STATE == BOARD_STATE_INITLIZE)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch: in init state,SYS_MGMT_REQ message should be dealt!\n ");
free(pBuf);
return OK;
}
if (BOARD_STATE == BOARD_STATE_NORMAL)
{
if(subType==MGMT_SELF_TEST_REQ)
{
TaskMsg.msgBuf[1]=0;
if (msgQSend ( SBSL_TaskMsgIdGet(GE_MAINCMD_TASK_CODE),
(char *)(&TaskMsg),
140,
NO_WAIT,
MSG_PRI_NORMAL )== ERROR)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch: sending MGMT_SELF_TEST_REQ to MainCommand failed!\n");
free(pBuf);
return OK;
}
else
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_EVENT,"GE_cmdDispatch:sending MGMT_SELF_TEST_REQ to MainCommand succeed!\n");
free(pBuf);
return OK;
}
}
if(subType==MGMT_STAT_FREQ_REQ)
{
bcopy(GenMsg->data,TaskMsg.msgBuf, GenMsg->length);
if (msgQSend ( SBSL_TaskMsgIdGet( GE_MAINCMD_TASK_CODE),
(char *)(&TaskMsg),
140,
NO_WAIT,
MSG_PRI_NORMAL )== ERROR)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch: sending MGMT_STAT_FREQ_REQ to MainCommand failed!\n");
free(pBuf);
return OK;
}
else
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_EVENT,"GE_cmdDispatch:sending MGMT_STAT_FREQ_REQ to MainCommand succeed!\n");
free(pBuf);
return OK;
}
}
if(subType==MGMT_LINE_IP_REQ)
{
bcopy(GenMsg->data, TaskMsg.msgBuf, GenMsg->length);
if (msgQSend ( SBSL_TaskMsgIdGet( GE_MAINCMD_TASK_CODE),
(char *)(&TaskMsg),
140,
NO_WAIT,
MSG_PRI_NORMAL )== ERROR)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch: sending MGMT_LINE_IP_REQ to MainCommand failed!\n");
free(pBuf);
return OK;
}
else
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_EVENT,"GE_cmdDispatch:sending MGMT_LINE_IP_REQ to MainCommand succeed!\n");
free(pBuf);
return OK;
}
}
if(subType==MGMT_ARP_FRE_REQ)
{
bcopy(GenMsg->data,TaskMsg.msgBuf, GenMsg->length);
if (msgQSend ( SBSL_TaskMsgIdGet( GE_MAINCMD_TASK_CODE),
(char *)(&TaskMsg),
140,
NO_WAIT,
MSG_PRI_NORMAL )== ERROR)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch: sending MGMT_ARP_FREQ_REQ to MainCommand failed!\n");
free(pBuf);
return OK;
}
else
{
GE_printf(GE_EVENT,"GE_cmdDispatch:sending MGMT_ARP_FREQ_REQ to MainCommand succeed!\n");
free(pBuf);
return OK;
}
}
if(subType==MGMT_LINE_STATE_REQ)
{
bcopy(GenMsg->data, TaskMsg.msgBuf, GenMsg->length);
if (msgQSend ( SBSL_TaskMsgIdGet( GE_MAINCMD_TASK_CODE),
(char *)(&TaskMsg),
140,
NO_WAIT,
MSG_PRI_NORMAL )== ERROR)
{
if(GE_MESSAGE_DEBUG)
GE_printf(GE_ALARM,"GE_cmdDispatch: sending MGMT_LINE_STATE_REQ to MainCommand failed!\n");
free(pBuf);
return OK;
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -