📄 general.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 + -