⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ge_cmddispatch.c

📁 程序是一个vxworks下对PMC公司3386千兆MAC芯片的驱动和配置
💻 C
📖 第 1 页 / 共 2 页
字号:
/**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-**-
*	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 + -