Esempio n. 1
0
/*!                                                                                                
**                                                                                                 
**                                                                                                 
** @param d                                                                                        
** @param cob_id                                                                                   
**                                                                                                 
** @return                                                                                         
**/  
UNS8 sendSYNC(CO_Data* d)
{
  UNS8 res;
  res = sendSYNCMessage(d);
  proceedSYNC(d) ; 
  return res ;
}
Esempio n. 2
0
/*!
**
**
** @param d
** @param m
**/
void canDispatch(CO_Data* d, Message *m)
{
	UNS16 cob_id = UNS16_LE(m->cob_id);
	switch (cob_id >> 7) {
	case SYNC:		/* can be a SYNC or a EMCY message */
		if (cob_id == 0x080) {	/* SYNC */
			if (d->CurrentCommunicationState.csSYNC)
				proceedSYNC(d);
		} else 		/* EMCY */
			if (d->CurrentCommunicationState.csEmergency)
				proceedEMCY(d, m);
		break;
	/* case TIME_STAMP: */
	case PDO1tx:
	case PDO1rx:
	case PDO2tx:
	case PDO2rx:
	case PDO3tx:
	case PDO3rx:
	case PDO4tx:
	case PDO4rx:
		if (d->CurrentCommunicationState.csPDO)
			proceedPDO(d, m);
		break;
	case SDOtx:
	case SDOrx:
		if (d->CurrentCommunicationState.csSDO)
			proceedSDO(d, m);
		break;
	case NODE_GUARD:
		if (d->CurrentCommunicationState.csHeartbeat)
			proceedNODE_GUARD(d, m);
		break;
	case NMT:
		if (*(d->iam_a_slave)) {
			proceedNMTstateChange(d, m);
		}
#ifdef CO_ENABLE_LSS
	case LSS:
		if (!d->CurrentCommunicationState.csLSS)break;
		if ((*(d->iam_a_slave)) && cob_id == MLSS_ADRESS) {
			proceedLSS_Slave(d, m);
		} else if (!(*(d->iam_a_slave)) && cob_id == SLSS_ADRESS) {
			proceedLSS_Master(d, m);
		}
		break;
#endif
	}
}