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

📄 general.c

📁 This library is Copyright (c) Raphael Zulliger <zulli@gmx.net>. It is licensed under the GNU L
💻 C
字号:
/***************************************************************************
                         general.c  -  description
                             -------------------
    begin                : Fri May 17 2002
    copyright            : (C) 2002 by Raphael Zulliger
    email                : zulli@hsr.ch
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This library is Copyright (c) Raphael Zulliger <zulli@gmx.net>.       *
 *   It is licensed under the GNU Library General Public License (LGPL).   *
 *                                                                         *
 ***************************************************************************/


#include <def.h>
#include <canop.h>
#include <general.h>
#include <nmt.h>
#include <pdo.h>
#include <sdoc.h>
#include <basiccan.h>
#include <emgcy.h>
#include <lifegrd.h>


void proccessRxCanMessages( void )
{
	BYTE prcm_i;
	
	// read all received messages and copy it into the appropriate array
	if( readRxBuffer( ) == TRUE )
    { // new message were received
        // now go through every possibly received can-message
    	for( prcm_i=0; (prcm_i<(BYTE)RX_CAN_BUFFER_SIZE) && (prcm_i<(BYTE)MAX_CAN_MESSAGE_ANALYSE); prcm_i++ )
        {   // checks if the actual (possibly) received can-message is valid
        	// the PDOs communication
        	if( ( canMessageRxBuffer[prcm_i].valid == TRUE ) )
        	{	// this message is a valid message. this means: we have to process this message
        		// and eventually delete it, if we are not interested in it
        		
       	    	if( (WORD)(canMessageRxBuffer[prcm_i].m.cob_id.w) == (WORD)0x00 )
       	    	{	// wouln't it be enough, if we just check the range from 0x601 to 0x67F? (receive SDO)
       	    		processReceivedNMT( &canMessageRxBuffer[prcm_i] );
       	    	}
       	    	if( ( (WORD)(canMessageRxBuffer[prcm_i].m.cob_id.w) >= (WORD)0x80 ) && ( (WORD)(canMessageRxBuffer[prcm_i].m.cob_id.w) <= (WORD)0xFF ) )
       	    	{	// this message seams to be an emergency message.
    				processReceivedEmergency( &canMessageRxBuffer[prcm_i] );
    			}
        		// check wheter this message is a PDO
       	    	if( ( (WORD)(canMessageRxBuffer[prcm_i].m.cob_id.w) >= (WORD)0x180 ) && ( (WORD)(canMessageRxBuffer[prcm_i].m.cob_id.w) <= (WORD)0x57F ) )
       	    	{ // this message is a PDO
    	   	    	processReceivedPDO( &canMessageRxBuffer[prcm_i] );
       	    	}
       	    	if( ( (WORD)(canMessageRxBuffer[prcm_i].m.cob_id.w) >= (WORD)0x580 ) && ( (WORD)(canMessageRxBuffer[prcm_i].m.cob_id.w) <= (WORD)0x67F ) )
       	    	{	// wouln't it be enough, if we just check the range from 0x601 to 0x67F? (receive SDO)
       	    		processReceivedSDO( &canMessageRxBuffer[prcm_i] );
       	    	}
       	    	if( ( (WORD)(canMessageRxBuffer[prcm_i].m.cob_id.w) >= (WORD)0x700 ) && ( (WORD)(canMessageRxBuffer[prcm_i].m.cob_id.w) <= (WORD)0x77F ) )
       	    	{	// this seams to be a heartbeat or nodeguard message.
       	    		processReceivedNMTErrorControl( &canMessageRxBuffer[prcm_i] );
       	    	}
        	
    			canMessageRxBuffer[prcm_i].valid = FALSE;
        	} // end if: the checked message was valid
    	} // end for( every buffer of canMessageRxBuffer )
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -