]> rtime.felk.cvut.cz Git - CanFestival-3.git/blobdiff - include/can_driver.h
Re-write doxygen tags in headers files to generate User API documentation
[CanFestival-3.git] / include / can_driver.h
index 2ac03a780fbcf5840326b164eea8a3070169f63e..16c5098b527cdedcdb68531a8c0e1486a5d9f359 100644 (file)
@@ -23,33 +23,110 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #ifndef __can_driver_h__
 #define __can_driver_h__
 
-#include "timerscfg.h"
-
 struct struct_s_BOARD;
 
 typedef struct struct_s_BOARD s_BOARD;
 
+#include "applicfg.h"
 #include "can.h"
 
-UNS8 canReceive(CAN_HANDLE fd0, Message *m);
-UNS8 canSend(CAN_HANDLE fd0, Message *m);
-CAN_HANDLE canOpen(s_BOARD *board);
-int canClose(CAN_HANDLE fd0);
-void canReceiveLoop(CAN_HANDLE fd0);
+/** 
+ * @brief The CAN board configuration 
+ * @ingroup can
+ * @{
+ */
+struct struct_s_BOARD {
+  char * busname;
+  char * baudrate;
+};
+/** @} */
+
+#ifndef DLL_CALL
+#define DLL_CALL(funcname) funcname##_driver
+#endif
 
-#include "data.h"
+#ifndef FCT_PTR_INIT
+#define FCT_PTR_INIT
+#endif
 
-void led_set_redgreen(CO_Data *d, unsigned char bits);
 
-int nvram_open(void);
-void nvram_close(void);
-char nvram_write(int type, int access_attr, void *data);
-char nvram_read(int type, int access_attr, void *data);
+UNS8 DLL_CALL(canReceive)(CAN_HANDLE, Message *)FCT_PTR_INIT;
+UNS8 DLL_CALL(canSend)(CAN_HANDLE, Message *)FCT_PTR_INIT;
+CAN_HANDLE DLL_CALL(canOpen)(s_BOARD *)FCT_PTR_INIT;
+int DLL_CALL(canClose)(CAN_HANDLE)FCT_PTR_INIT;
+UNS8 DLL_CALL(canChangeBaudRate)(CAN_HANDLE, char *)FCT_PTR_INIT;
+
+#if defined DEBUG_MSG_CONSOLE_ON || defined NEED_PRINT_MESSAGE
+#include "def.h"
+
+#define _P(fc) case fc: MSG(#fc" ");break;
+
+static inline void print_message(Message *m)
+{
+    int i;
+    UNS8 fc;
+    MSG("id:%02x ", m->cob_id & 0x7F);
+    fc = m->cob_id >> 7;
+    switch(fc)
+    {
+        case SYNC: 
+            if(m->cob_id == 0x080)
+                MSG("SYNC ");
+            else
+                MSG("EMCY ");
+        break;
+#ifdef CO_ENABLE_LSS
+        case LSS:
+               if(m->cob_id == 0x7E5)
+                MSG("MLSS ");
+            else
+                MSG("SLSS ");
+        break;
+#endif
+        _P(TIME_STAMP)
+        _P(PDO1tx)
+        _P(PDO1rx)
+        _P(PDO2tx)
+        _P(PDO2rx)
+        _P(PDO3tx)
+        _P(PDO3rx)
+        _P(PDO4tx)
+        _P(PDO4rx)
+        _P(SDOtx)
+        _P(SDOrx)
+        _P(NODE_GUARD)
+        _P(NMT)
+    }
+    if( fc == SDOtx)
+    {
+        switch(m->data[0] >> 5)
+        {
+            /* scs: server command specifier */
+            _P(UPLOAD_SEGMENT_RESPONSE)
+            _P(DOWNLOAD_SEGMENT_RESPONSE)
+            _P(INITIATE_DOWNLOAD_RESPONSE)
+            _P(INITIATE_UPLOAD_RESPONSE)
+            _P(ABORT_TRANSFER_REQUEST)
+        }
+    }else if( fc == SDOrx)
+    {
+        switch(m->data[0] >> 5)
+        {
+            /* ccs: client command specifier */
+            _P(DOWNLOAD_SEGMENT_REQUEST)
+            _P(INITIATE_DOWNLOAD_REQUEST)
+            _P(INITIATE_UPLOAD_REQUEST)
+            _P(UPLOAD_SEGMENT_REQUEST)
+            _P(ABORT_TRANSFER_REQUEST)
+        }
+    }
+    MSG(" rtr:%d", m->rtr);
+    MSG(" len:%d", m->len);
+    for (i = 0 ; i < m->len ; i++)
+        MSG(" %02x", m->data[i]);
+    MSG("\n");
+}
 
-struct struct_s_BOARD {
-  char * busname;
-  int baudrate;
-  CO_Data * d;
-};
+#endif
 
 #endif