Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: framework/include/can_driver.h
- Revision:
- 0:9dd7c6129683
- Child:
- 6:ec29c552a054
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/framework/include/can_driver.h Mon May 30 07:36:47 2011 +0000
@@ -0,0 +1,141 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#ifndef __can_driver_h__
+#define __can_driver_h__
+
+struct struct_s_BOARD;
+
+typedef struct struct_s_BOARD s_BOARD;
+
+#include "applicfg.h"
+#include "can.h"
+
+/**
+ * @brief The CAN board configuration
+ * @ingroup can
+ */
+
+//struct struct_s_BOARD {
+// char busname[100]; /**< The bus name on which the CAN board is connected */
+// char baudrate[4]; /**< The board baudrate */
+//};
+
+struct struct_s_BOARD {
+ char * busname; /**< The bus name on which the CAN board is connected */
+ char * baudrate; /**< The board baudrate */
+};
+
+#ifndef DLL_CALL
+#if !defined(WIN32) || defined(__CYGWIN__)
+#define DLL_CALL(funcname) funcname##_driver
+#else
+//Windows was missing the definition of the calling convention
+#define DLL_CALL(funcname) __stdcall funcname##_driver
+#endif
+#endif //DLL_CALL
+
+#ifndef FCT_PTR_INIT
+#define FCT_PTR_INIT
+#endif
+
+
+UNS8 DLL_CALL(canReceive)(CAN_HANDLE, Message *)FCT_PTR_INIT;
+UNS8 DLL_CALL(canSend)(CAN_HANDLE, Message const *)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 const *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");
+}
+
+#endif
+
+#endif