Can_open_masternode

Dependencies:   mbed

Revision:
0:9dd7c6129683
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/framework/include/objdictdef.h	Mon May 30 07:36:47 2011 +0000
@@ -0,0 +1,124 @@
+/*
+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 __objdictdef_h__
+#define __objdictdef_h__
+
+/************************* CONSTANTES **********************************/
+/** this are static defined datatypes taken fCODE the canopen standard. They
+ *  are located at index 0x0001 to 0x001B. As described in the standard, they
+ *  are in the object dictionary for definition purpose only. a device does not
+ *  to support all of this datatypes.
+ */
+#define boolean         0x01
+#define int8            0x02
+#define int16           0x03
+#define int32           0x04
+#define uint8           0x05
+#define uint16          0x06
+#define uint32          0x07
+#define real32          0x08
+#define visible_string  0x09
+#define octet_string    0x0A
+#define unicode_string  0x0B
+#define time_of_day     0x0C
+#define time_difference 0x0D
+
+#define domain          0x0F
+#define int24           0x10
+#define real64          0x11
+#define int40           0x12
+#define int48           0x13
+#define int56           0x14
+#define int64           0x15
+#define uint24          0x16
+
+#define uint40          0x18
+#define uint48          0x19
+#define uint56          0x1A
+#define uint64          0x1B
+
+#define pdo_communication_parameter 0x20
+#define pdo_mapping                 0x21
+#define sdo_parameter               0x22
+#define identity                    0x23
+
+/* CanFestival is using 0x24 to 0xFF to define some types containing a 
+ value range (See how it works in objdict.c)
+ */
+
+
+/** Each entry of the object dictionary can be READONLY (RO), READ/WRITE (RW),
+ *  WRITE-ONLY (WO)
+ */
+#define RW     0x00  
+#define WO     0x01
+#define RO     0x02
+
+#define TO_BE_SAVE  0x04
+#define DCF_TO_SEND 0x08
+
+/************************ STRUCTURES ****************************/
+/** This are some structs which are neccessary for creating the entries
+ *  of the object dictionary.
+ */
+typedef struct td_subindex
+{
+    UNS8                    bAccessType;
+    UNS8                    bDataType; /* Defines of what datatype the entry is */
+    UNS32                   size;      /* The size (in Byte) of the variable */
+    void*                   pObject;   /* This is the pointer of the Variable */
+} subindex;
+
+/** Struct for creating entries in the communictaion profile
+ */
+typedef struct td_indextable
+{
+    subindex*   pSubindex;   /* Pointer to the subindex */
+    UNS8   bSubCount;   /* the count of valid entries for this subindex
+                         * This count here defines how many memory has been
+                         * allocated. this memory does not have to be used.
+                         */
+    UNS16   index;
+} indextable;
+
+typedef struct s_quick_index{
+	UNS16 SDO_SVR;
+	UNS16 SDO_CLT;
+	UNS16 PDO_RCV;
+	UNS16 PDO_RCV_MAP;
+	UNS16 PDO_TRS;
+	UNS16 PDO_TRS_MAP;
+}quick_index;
+
+
+/*typedef struct struct_CO_Data CO_Data; */
+typedef UNS32 (*ODCallback_t)(CO_Data* d, const indextable *, UNS8 bSubindex);
+typedef const indextable * (*scanIndexOD_t)(UNS16 wIndex, UNS32 * errorCode, ODCallback_t **Callback);
+
+/************************** MACROS *********************************/
+
+/* CANopen usefull helpers */
+#define GET_NODE_ID(m)         (UNS16_LE(m.cob_id) & 0x7f)
+#define GET_FUNCTION_CODE(m)   (UNS16_LE(m.cob_id) >> 7)
+
+#endif /* __objdictdef_h__ */