Merged
authorLaurent Bessard
Wed, 05 Dec 2012 15:42:41 +0100
changeset 763 504ce1e3e94a
parent 762 4b60a0d313b0 (current diff)
parent 760 71623bbf8093 (diff)
child 764 d7c015cb0df0
Merged
--- a/drivers/can_multi_peeakwin32/can_multi_peak_win32.c	Tue Dec 04 18:01:47 2012 +0100
+++ b/drivers/can_multi_peeakwin32/can_multi_peak_win32.c	Wed Dec 05 15:42:41 2012 +0100
@@ -20,6 +20,8 @@
 
 UNS8 LIBAPI canSend_driver(CAN_HANDLE fd0, Message const *m);
 
+#define Data data  /* temporary fix */
+
 
 #define VERSION_2
 
@@ -311,6 +313,8 @@
 
 
 /***************************************************************************/
+
+/* return 0 - OK; 1 - failure */
 UNS8 LIBAPI canSend_driver(CAN_HANDLE fd0, Message const *m)
 {
 UNS8 data;
@@ -370,7 +374,7 @@
     MSG("out : ");
     print_message(m);
 #endif
-    return 0;
+    return 0;					// OK
 }
 
 
@@ -383,7 +387,7 @@
 
 
 /***************************************************************************/
-LIBPUBLIC CAN_HANDLE LIBAPI canOpen_driver(s_BOARD * board)
+CAN_HANDLE LIBAPI canOpen_driver(s_BOARD * board)
 {
 int ret;
 int i;
--- a/src/dcf.c	Tue Dec 04 18:01:47 2012 +0100
+++ b/src/dcf.c	Wed Dec 05 15:42:41 2012 +0100
@@ -51,6 +51,11 @@
 UNS8 init_consise_dcf(CO_Data* d,UNS8 nodeId);
 
 
+#ifdef _MSC_VER
+#define inline _inline
+#endif  /* _MSC_VER */
+
+
 inline void start_node(CO_Data* d, UNS8 nodeId){
     /* Ask slave node to go in operational mode */
     masterSendNMTstateChange (d, nodeId, NMT_Start_Node);
--- a/src/emcy.c	Tue Dec 04 18:01:47 2012 +0100
+++ b/src/emcy.c	Wed Dec 05 15:42:41 2012 +0100
@@ -3,6 +3,7 @@
   Stack.
 
   Copyright (C): Edouard TISSERANT and Francis DUPIN
+  Modified by: Jaroslav Fojtik
 
   See COPYING file for copyrights details.
 
@@ -40,7 +41,8 @@
 
 
 UNS32 OnNumberOfErrorsUpdate(CO_Data* d, const indextable * unsused_indextable, UNS8 unsused_bSubindex);
-UNS8 sendEMCY(CO_Data* d, UNS16 errCode, UNS8 errRegister);
+
+#define Data data  /* temporary fix */
 
 
 /*! This is called when Index 0x1003 is updated.
@@ -87,31 +89,41 @@
   
 }
 
-/*!                                                                                                
- **                                                                                                 
- **                                                                                                 
- ** @param d                                                                                        
- ** @param cob_id                                                                                   
- **                                                                                                 
- ** @return                                                                                         
- **/  
-UNS8 sendEMCY(CO_Data* d, UNS16 errCode, UNS8 errRegister)
+
+/*!
+ **
+ ** @param d
+ ** @param cob_id
+ **
+ ** @return
+ **/
+UNS8 sendEMCY(CO_Data* d, UNS16 errCode, UNS8 errRegister, const void *Specific, UNS8 SpecificLength)
 {
 	Message m;
   
 	MSG_WAR(0x3051, "sendEMCY", 0);
   
-	m.cob_id = (UNS16)UNS16_LE(*(UNS32*)d->error_cobid);
-	m.rtr = NOT_A_REQUEST;
-	m.len = 8;
-	m.data[0] = errCode & 0xFF;        /* LSB */
-	m.data[1] = (errCode >> 8) & 0xFF; /* MSB */
-	m.data[2] = errRegister;
-	m.data[3] = 0;		/* Manufacturer specific Error Field still not implemented */
-	m.data[4] = 0;
-	m.data[5] = 0;
-	m.data[6] = 0;
-	m.data[7] = 0;
+	m.cob_id = (UNS16)(*(UNS32*)d->error_cobid);
+	m.rtr = NOT_A_REQUEST;	
+	m.Data[0] = errCode & 0xFF;        /* LSB */
+	m.Data[1] = (errCode >> 8) & 0xFF; /* MSB */
+	m.Data[2] = errRegister;
+
+	if(Specific==NULL)
+	{
+	  m.Data[3] = 0;		/* Manufacturer specific Error Field omitted */
+	  m.Data[4] = 0;
+	  m.Data[5] = 0;
+	  m.Data[6] = 0;
+	  m.Data[7] = 0;
+	  SpecificLength = 5;
+	}
+	else
+	{
+          if(SpecificLength>5) SpecificLength = 5;
+	  memcpy(&m.Data[3],Specific,SpecificLength);	  
+	}
+	m.len = SpecificLength + 3;
   
 	return canSend(d->canHandle,&m);
 }
@@ -171,7 +183,7 @@
 	
 	/* send EMCY message */
 	if (d->CurrentCommunicationState.csEmergency)
-		return sendEMCY(d, errCode, *d->error_register);
+		return sendEMCY(d, errCode, *d->error_register, NULL, 0);
 	else return 1;
 }
 
@@ -209,7 +221,7 @@
 			d->error_state = Error_free;
 			/* send a EMCY message with code "Error Reset or No Error" */
 			if (d->CurrentCommunicationState.csEmergency)
-				sendEMCY(d, 0x0000, 0x00);
+				sendEMCY(d, 0x0000, 0x00, NULL, 0);
 		}
 		*d->error_register = errRegister_tmp;
 	}
@@ -239,9 +251,9 @@
 	}
 	
 	/* post the received EMCY */
-	nodeID = UNS16_LE(m->cob_id) & 0x7F;
-	errCode = m->data[0] | ((UNS16)m->data[1] << 8);
-	errReg = m->data[2];
+	nodeID = m->cob_id & 0x7F;
+	errCode = m->Data[0] | ((UNS16)m->Data[1] << 8);
+	errReg = m->Data[2];
 	(*d->post_emcy)(d, nodeID, errCode, errReg);
 }