2 This file is part of CanFestival, a library implementing CanOpen Stack.
4 Copyright (C): Edouard TISSERANT and Francis DUPIN
6 See COPYING file for copyrights details.
8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Lesser General Public
10 License as published by the Free Software Foundation; either
11 version 2.1 of the License, or (at your option) any later version.
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #ifndef __objdictdef_h__
24 #define __objdictdef_h__
26 /************************* CONSTANTES **********************************/
27 /** this are static defined datatypes taken fCODE the canopen standard. They
28 * are located at index 0x0001 to 0x001B. As described in the standard, they
29 * are in the object dictionary for definition purpose only. a device does not
30 * to support all of this datatypes.
40 #define visible_string 0x09
41 #define octet_string 0x0A
42 #define unicode_string 0x0B
43 #define time_of_day 0x0C
44 #define time_difference 0x0D
60 #define pdo_communication_parameter 0x20
61 #define pdo_mapping 0x21
62 #define sdo_parameter 0x22
65 // CanFestival is using 0x24 to 0xFF to define some types containing a
66 // value range (See how it works in objdict.c)
70 /** definitions of the different types of PDOs' transmission
72 * SYNCHRO(n) means that the PDO will be transmited every n SYNC signal.
74 #define TRANS_EVERY_N_SYNC(n) (n) /*n = 1 to 240 */
75 #define TRANS_SYNC_MIN 1 /* Trans after reception of n SYNC. n = 1 to 240 */
76 #define TRANS_SYNC_MAX 240 /* Trans after reception of n SYNC. n = 1 to 240 */
77 #define TRANS_RTR_SYNC 252 /* Transmission on request */
78 #define TRANS_RTR 253 /* Transmission on request */
79 #define TRANS_EVENT 255 /* Transmission on event */
81 /** Each entry of the object dictionary can be READONLY (RO), READ/WRITE (RW),
88 #define TO_BE_SAVED 0x04
90 /************************ STRUCTURES ****************************/
91 /** This are some structs which are neccessary for creating the entries
92 * of the object dictionary.
94 typedef struct td_subindex
97 UNS8 bDataType; // Defines of what datatype the entry is
98 UNS8 size; // The size (in Byte) of the variable
99 void* pObject; // This is the pointer of the Variable
102 /** Struct for creating entries in the communictaion profile
104 typedef struct td_indextable
106 subindex* pSubindex; // Pointer to the subindex
107 UNS8 bSubCount; // the count of valid entries for this subindex
108 // This count here defines how many memory has been
109 // allocated. this memory does not have to be used.
113 typedef struct s_quick_index{
123 //typedef struct struct_CO_Data CO_Data;
124 typedef UNS32 (*ODCallback_t)(CO_Data* d, const indextable *, UNS8 bSubindex);
125 typedef const indextable * (*scanIndexOD_t)(UNS16 wIndex, UNS32 * errorCode, ODCallback_t **Callback);
127 /************************** MACROS *********************************/
129 ///CANopen usefull helpers
130 #define GET_NODE_ID(m) (m.cob_id.w & 0x7f)
131 #define GET_FUNCTION_CODE(m) (m.cob_id.w >> 7)
133 #endif // __objdictdef_h__