📄 co_comm.c
字号:
}
else
// if (COMM_NETCTL_EMCY_TF)
// {
// if (COMM_NETCTL_EMCY_EN)
// {
// if (!COMM_STATE_STOP) {mCANIsPutReady(COMM_MSGGRP_NETCTL | COMM_NETCTL_EMCY); _CO_COMM_EMCY_TXEvent(); mCANSendMessage();}
// }
//
// COMM_NETCTL_EMCY_TF = 0;
// }
// else
//Error, a message was queued in an object that does not exist
{COMM_NETCTL_TF = 0;}
}
else
if (COMM_SDO_TF)
{
if (!COMM_STATE_STOP)
{
if (COMM_SDO_1_TF)
{
if (COMM_SDO_1_EN) {mCANIsPutReady(COMM_MSGGRP_SDO | COMM_SDO_1); _CO_COMM_SDO1_TXEvent(); mCANSendMessage();}
COMM_SDO_1_TF = 0;
}
else
// if (COMM_SDO_2_TF)
// {
// if (COMM_SDO_2_EN) {mCANIsPutReady(COMM_MSGGRP_SDO | COMM_SDO_2); _CO_COMM_SDO2_TXEvent(); mCANSendMessage();}
// COMM_SDO_2_TF = 0;
// }
// else
// if (COMM_SDO_3_TF)
// {
// if (COMM_SDO_3_EN) {mCANIsPutReady(COMM_MSGGRP_SDO | COMM_SDO_3); _CO_COMM_SDO3_TXEvent(); mCANSendMessage();}
// COMM_SDO_3_TF = 0;
// }
// else
// if (COMM_SDO_4_TF)
// {
// if (COMM_SDO_4_EN) {mCANIsPutReady(COMM_MSGGRP_SDO | COMM_SDO_4); _CO_COMM_SDO4_TXEvent(); mCANSendMessage();}
// COMM_SDO_4_TF = 0;
// }
// else
//Error, a message was queued in an object that does not exist
{COMM_SDO_TF = 0;}
}
}
else
if (COMM_PDO_TF)
{
if (COMM_STATE_OPER)
if (!COMM_STATE_STOP)
{
if (COMM_PDO_1_TF)
{
if (COMM_TPDO_1_EN) {mCANIsPutReady(COMM_MSGGRP_PDO | COMM_PDO_1); _CO_COMM_PDO1_TXEvent(); mCANSendMessage();}
COMM_PDO_1_TF = 0;
}
else
#if CO_NUM_OF_PDO > 1
if (COMM_PDO_2_TF)
{
if (COMM_TPDO_2_EN) {mCANIsPutReady(COMM_MSGGRP_PDO | COMM_PDO_2); _CO_COMM_PDO2_TXEvent(); mCANSendMessage();}
COMM_PDO_2_TF = 0;
}
else
#endif
#if CO_NUM_OF_PDO > 2
if (COMM_PDO_3_TF)
{
if (COMM_TPDO_3_EN) {mCANIsPutReady(COMM_MSGGRP_PDO | COMM_PDO_3); _CO_COMM_PDO3_TXEvent(); mCANSendMessage();}
COMM_PDO_3_TF = 0;
}
else
#endif
#if CO_NUM_OF_PDO > 3
if (COMM_PDO_4_TF)
{
if (COMM_TPDO_4_EN) {mCANIsPutReady(COMM_MSGGRP_PDO | COMM_PDO_4); _CO_COMM_PDO4_TXEvent(); mCANSendMessage();}
COMM_PDO_4_TF = 0;
}
else
#endif
// if (COMM_PDO_5_TF)
// {
// if (COMM_PDO_5_EN) {mCANIsPutReady(COMM_MSGGRP_PDO | COMM_PDO_5); _CO_COMM_PDO5_TXEvent(); mCANSendMessage();}
// COMM_PDO_5_TF = 0;
// }
// else
// if (COMM_PDO_6_TF)
// {
// if (COMM_PDO_6_EN) {mCANIsPutReady(COMM_MSGGRP_PDO | COMM_PDO_6); _CO_COMM_PDO6_TXEvent(); mCANSendMessage();}
// COMM_PDO_6_TF = 0;
// }
// else
// if (COMM_PDO_7_TF)
// {
// if (COMM_PDO_7_EN) {mCANIsPutReady(COMM_MSGGRP_PDO | COMM_PDO_7); _CO_COMM_PDO7_TXEvent(); mCANSendMessage();}
// COMM_PDO_7_TF = 0;
// }
// else
// if (COMM_PDO_8_TF)
// {
// if (COMM_PDO_8_EN) {mCANIsPutReady(COMM_MSGGRP_PDO | COMM_PDO_8); _CO_COMM_PDO8_TXEvent(); mCANSendMessage();}
// COMM_PDO_8_TF = 0;
// }
// else
//Error, a message was queued in an object that does not exist
{COMM_PDO_TF = 0;}
}
}
}
}
/*********************************************************************
* Function: void _CO_COMMTXFinEventManager(void)
*
* PreCondition:
*
* Input: none
*
* Output: none
*
* Side Effects: none
*
* Overview: This function dispatches any transmit finish events.
*
* Note:
********************************************************************/
void _CO_COMMTXFinEventManager(void)
{
// Call the driver to determine if a message has been place on the bus
mCANIsPutFin();
// If a message has been placed on the bus, then who's message
// was it and generate an appropriate event
if (COMM_STATE_PREOP)
if (mCANFetchRetHandle())
{
// Test the group of the message
switch(mCANFetchRetHandle() & COMM_MSGGRP_MASK)
{
case COMM_MSGGRP_NETCTL: // Network management
switch(mCANFetchRetHandle() & COMM_MSG_MASK)
{
// case COMM_NETCTL_NMTE:
// if (COMM_NETCTL_NMTE_EN) _CO_COMM_NMTE_TXFinEvent();
// break;
// case COMM_NETCTL_EMCY:
// if (COMM_NETCTL_EMCY_EN) {if (!COMM_STATE_STOP) _CO_COMM_EMCY_TXFinEvent();}
// break;
default:
// Driver error: driver sent a message that has no endpoint
/*call func*/
break;
}
break;
case COMM_MSGGRP_SDO: // Addressed messages
if (!COMM_STATE_STOP)
{
switch(mCANFetchRetHandle() & COMM_MSG_MASK)
{
// case COMM_SDO_1: //SDO1
// if (COMM_SDO_1_EN) _CO_COMM_SDO1_TXFinEvent();
// break;
// case COMM_SDO_2: //SDO1
// if (COMM_SDO_2_EN) _CO_COMM_SDO2_TXFinEvent();
// break;
// case COMM_SDO_3: //SDO1
// if (COMM_SDO_3_EN) _CO_COMM_SDO3_TXFinEvent();
// break;
// case COMM_SDO_4: //SDO1
// if (COMM_SDO_4_EN) _CO_COMM_SDO4_TXFinEvent();
// break;
default:
// not valid, driver error
/*call func*/
break;
}
}
break;
case COMM_MSGGRP_PDO: // Direct messages
if (COMM_STATE_OPER)
if (!COMM_STATE_STOP)
{
switch(mCANFetchRetHandle() & COMM_MSG_MASK)
{
case COMM_PDO_1: //TPDO1
if (COMM_TPDO_1_EN){CO_PDO1TXFinEvent();}
break;
#if CO_NUM_OF_PDO > 1
case COMM_PDO_2: //RPDO1
if (COMM_TPDO_2_EN){CO_PDO2TXFinEvent();}
break;
#endif
#if CO_NUM_OF_PDO > 2
case COMM_PDO_3: //TPDO2
if (COMM_TPDO_3_EN){CO_PDO3TXFinEvent();}
break;
#endif
#if CO_NUM_OF_PDO > 3
case COMM_PDO_4: //RPDO2
if (COMM_TPDO_4_EN){CO_PDO4TXFinEvent();}
break;
#endif
// case COMM_PDO_5: //RPDO2
// if (COMM_PDO_5_EN){CO_PDO5TXFinEvent();}
// break;
// case COMM_PDO_6: //RPDO2
// if (COMM_PDO_6_EN){CO_PDO6TXFinEvent();}
// break;
// case COMM_PDO_7: //RPDO2
// if (COMM_PDO_7_EN){CO_PDO7TXFinEvent();}
// break;
// case COMM_PDO_8: //RPDO2
// if (COMM_PDO_8_EN){CO_PDO8TXFinEvent();}
// break;
default:
// not valid, driver error
/*call func*/
break;
}
}
break;
default:
// not valid, driver error
/*call func*/
break;
}
}
}
/*********************************************************************
* Function: void _CO_COMMLSTimeEventManager(void)
*
* PreCondition:
*
* Input: none
*
* Output: none
*
* Side Effects: none
*
* Overview: This function dispatches any time events.
*
* Note:
********************************************************************/
void _CO_COMMLSTimeEventManager(void)
{
// If in at least a pre-operational state
if (COMM_STATE_PREOP)
{
// PDO object time events
if (COMM_TPDO_EN)
{
if (COMM_TPDO_1_EN){CO_PDO1LSTimerEvent();}
#if CO_NUM_OF_PDO > 1
if (COMM_TPDO_2_EN){CO_PDO2LSTimerEvent();}
#endif
#if CO_NUM_OF_PDO > 2
if (COMM_TPDO_3_EN){CO_PDO3LSTimerEvent();}
#endif
#if CO_NUM_OF_PDO > 3
if (COMM_TPDO_4_EN){CO_PDO4LSTimerEvent();}
#endif
// if (COMM_PDO_5_EN){}
// if (COMM_PDO_6_EN){}
// if (COMM_PDO_7_EN){}
// if (COMM_PDO_8_EN){}
}
// Network related object time events
if (COMM_NETCTL_EN)
{
// if (COMM_NETCTL_NMT_EN){/*call func*/;} // NMT
// if (COMM_NETCTL_SYNC_EN){/*call func*/;} // SYNC
// if (COMM_NETCTL_TMSTP_EN){/*call func*/;} // Time Stamp
if (COMM_NETCTL_NMTE_EN){_CO_COMM_NMTE_LSTimerEvent();} // NMT boot, heartbeat, node guard
// if (COMM_NETCTL_EMCY_EN){/*call func*/;} // Emergency
}
// SDO object time events
if (COMM_SDO_EN)
{
if (COMM_SDO_1_EN){_CO_COMM_SDO1_LSTimerEvent();}
// if (COMM_SDO_2_EN){_CO_COMM_SDO2_LSTimerEvent();}
// if (COMM_SDO_3_EN){_CO_COMM_SDO3_LSTimerEvent();}
// if (COMM_SDO_4_EN){_CO_COMM_SDO4_LSTimerEvent();}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -