Sam Grove
/
canopen_slavenode
CANfestival - an open source CANopen framework
framework/include/data.h@0:6219434a0cb5, 2011-05-30 (annotated)
- Committer:
- sam_grove
- Date:
- Mon May 30 07:14:41 2011 +0000
- Revision:
- 0:6219434a0cb5
Initial public release of slave node framework port
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sam_grove |
0:6219434a0cb5 | 1 | /* |
sam_grove |
0:6219434a0cb5 | 2 | This file is part of CanFestival, a library implementing CanOpen Stack. |
sam_grove |
0:6219434a0cb5 | 3 | |
sam_grove |
0:6219434a0cb5 | 4 | Copyright (C): Edouard TISSERANT and Francis DUPIN |
sam_grove |
0:6219434a0cb5 | 5 | |
sam_grove |
0:6219434a0cb5 | 6 | See COPYING file for copyrights details. |
sam_grove |
0:6219434a0cb5 | 7 | |
sam_grove |
0:6219434a0cb5 | 8 | This library is free software; you can redistribute it and/or |
sam_grove |
0:6219434a0cb5 | 9 | modify it under the terms of the GNU Lesser General Public |
sam_grove |
0:6219434a0cb5 | 10 | License as published by the Free Software Foundation; either |
sam_grove |
0:6219434a0cb5 | 11 | version 2.1 of the License, or (at your option) any later version. |
sam_grove |
0:6219434a0cb5 | 12 | |
sam_grove |
0:6219434a0cb5 | 13 | This library is distributed in the hope that it will be useful, |
sam_grove |
0:6219434a0cb5 | 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
sam_grove |
0:6219434a0cb5 | 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
sam_grove |
0:6219434a0cb5 | 16 | Lesser General Public License for more details. |
sam_grove |
0:6219434a0cb5 | 17 | |
sam_grove |
0:6219434a0cb5 | 18 | You should have received a copy of the GNU Lesser General Public |
sam_grove |
0:6219434a0cb5 | 19 | License along with this library; if not, write to the Free Software |
sam_grove |
0:6219434a0cb5 | 20 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
sam_grove |
0:6219434a0cb5 | 21 | */ |
sam_grove |
0:6219434a0cb5 | 22 | |
sam_grove |
0:6219434a0cb5 | 23 | #ifndef __data_h__ |
sam_grove |
0:6219434a0cb5 | 24 | #define __data_h__ |
sam_grove |
0:6219434a0cb5 | 25 | |
sam_grove |
0:6219434a0cb5 | 26 | #ifdef __cplusplus |
sam_grove |
0:6219434a0cb5 | 27 | extern "C" { |
sam_grove |
0:6219434a0cb5 | 28 | #endif |
sam_grove |
0:6219434a0cb5 | 29 | |
sam_grove |
0:6219434a0cb5 | 30 | /* declaration of CO_Data type let us include all necessary headers |
sam_grove |
0:6219434a0cb5 | 31 | struct struct_CO_Data can then be defined later |
sam_grove |
0:6219434a0cb5 | 32 | */ |
sam_grove |
0:6219434a0cb5 | 33 | typedef struct struct_CO_Data CO_Data; |
sam_grove |
0:6219434a0cb5 | 34 | |
sam_grove |
0:6219434a0cb5 | 35 | #include "applicfg.h" |
sam_grove |
0:6219434a0cb5 | 36 | #include "def.h" |
sam_grove |
0:6219434a0cb5 | 37 | #include "canopen_can.h" |
sam_grove |
0:6219434a0cb5 | 38 | #include "objdictdef.h" |
sam_grove |
0:6219434a0cb5 | 39 | #include "objacces.h" |
sam_grove |
0:6219434a0cb5 | 40 | #include "sdo.h" |
sam_grove |
0:6219434a0cb5 | 41 | #include "pdo.h" |
sam_grove |
0:6219434a0cb5 | 42 | #include "states.h" |
sam_grove |
0:6219434a0cb5 | 43 | #include "lifegrd.h" |
sam_grove |
0:6219434a0cb5 | 44 | #include "sync.h" |
sam_grove |
0:6219434a0cb5 | 45 | #include "nmtSlave.h" |
sam_grove |
0:6219434a0cb5 | 46 | #include "nmtMaster.h" |
sam_grove |
0:6219434a0cb5 | 47 | #include "emcy.h" |
sam_grove |
0:6219434a0cb5 | 48 | #ifdef CO_ENABLE_LSS |
sam_grove |
0:6219434a0cb5 | 49 | #include "lss.h" |
sam_grove |
0:6219434a0cb5 | 50 | #endif |
sam_grove |
0:6219434a0cb5 | 51 | |
sam_grove |
0:6219434a0cb5 | 52 | /** |
sam_grove |
0:6219434a0cb5 | 53 | * @ingroup od |
sam_grove |
0:6219434a0cb5 | 54 | * @brief This structure contains all necessary informations to define a CANOpen node |
sam_grove |
0:6219434a0cb5 | 55 | */ |
sam_grove |
0:6219434a0cb5 | 56 | struct struct_CO_Data { |
sam_grove |
0:6219434a0cb5 | 57 | /* Object dictionary */ |
sam_grove |
0:6219434a0cb5 | 58 | UNS8 *bDeviceNodeId; |
sam_grove |
0:6219434a0cb5 | 59 | const indextable *objdict; |
sam_grove |
0:6219434a0cb5 | 60 | s_PDO_status *PDO_status; |
sam_grove |
0:6219434a0cb5 | 61 | const quick_index *firstIndex; |
sam_grove |
0:6219434a0cb5 | 62 | const quick_index *lastIndex; |
sam_grove |
0:6219434a0cb5 | 63 | const UNS16 *ObjdictSize; |
sam_grove |
0:6219434a0cb5 | 64 | const UNS8 *iam_a_slave; |
sam_grove |
0:6219434a0cb5 | 65 | valueRangeTest_t valueRangeTest; |
sam_grove |
0:6219434a0cb5 | 66 | |
sam_grove |
0:6219434a0cb5 | 67 | /* SDO */ |
sam_grove |
0:6219434a0cb5 | 68 | s_transfer transfers[SDO_MAX_SIMULTANEOUS_TRANSFERTS]; |
sam_grove |
0:6219434a0cb5 | 69 | /* s_sdo_parameter *sdo_parameters; */ |
sam_grove |
0:6219434a0cb5 | 70 | |
sam_grove |
0:6219434a0cb5 | 71 | /* State machine */ |
sam_grove |
0:6219434a0cb5 | 72 | e_nodeState nodeState; |
sam_grove |
0:6219434a0cb5 | 73 | s_state_communication CurrentCommunicationState; |
sam_grove |
0:6219434a0cb5 | 74 | initialisation_t initialisation; |
sam_grove |
0:6219434a0cb5 | 75 | preOperational_t preOperational; |
sam_grove |
0:6219434a0cb5 | 76 | operational_t operational; |
sam_grove |
0:6219434a0cb5 | 77 | stopped_t stopped; |
sam_grove |
0:6219434a0cb5 | 78 | void (*NMT_Slave_Node_Reset_Callback)(CO_Data*); |
sam_grove |
0:6219434a0cb5 | 79 | void (*NMT_Slave_Communications_Reset_Callback)(CO_Data*); |
sam_grove |
0:6219434a0cb5 | 80 | |
sam_grove |
0:6219434a0cb5 | 81 | /* NMT-heartbeat */ |
sam_grove |
0:6219434a0cb5 | 82 | UNS8 *ConsumerHeartbeatCount; |
sam_grove |
0:6219434a0cb5 | 83 | UNS32 *ConsumerHeartbeatEntries; |
sam_grove |
0:6219434a0cb5 | 84 | TIMER_HANDLE *ConsumerHeartBeatTimers; |
sam_grove |
0:6219434a0cb5 | 85 | UNS16 *ProducerHeartBeatTime; |
sam_grove |
0:6219434a0cb5 | 86 | TIMER_HANDLE ProducerHeartBeatTimer; |
sam_grove |
0:6219434a0cb5 | 87 | heartbeatError_t heartbeatError; |
sam_grove |
0:6219434a0cb5 | 88 | e_nodeState NMTable[NMT_MAX_NODE_ID]; |
sam_grove |
0:6219434a0cb5 | 89 | |
sam_grove |
0:6219434a0cb5 | 90 | /* SYNC */ |
sam_grove |
0:6219434a0cb5 | 91 | TIMER_HANDLE syncTimer; |
sam_grove |
0:6219434a0cb5 | 92 | UNS32 *COB_ID_Sync; |
sam_grove |
0:6219434a0cb5 | 93 | UNS32 *Sync_Cycle_Period; |
sam_grove |
0:6219434a0cb5 | 94 | /*UNS32 *Sync_window_length;;*/ |
sam_grove |
0:6219434a0cb5 | 95 | post_sync_t post_sync; |
sam_grove |
0:6219434a0cb5 | 96 | post_TPDO_t post_TPDO; |
sam_grove |
0:6219434a0cb5 | 97 | post_SlaveBootup_t post_SlaveBootup; |
sam_grove |
0:6219434a0cb5 | 98 | post_SlaveStateChange_t post_SlaveStateChange; |
sam_grove |
0:6219434a0cb5 | 99 | |
sam_grove |
0:6219434a0cb5 | 100 | /* General */ |
sam_grove |
0:6219434a0cb5 | 101 | UNS8 toggle; |
sam_grove |
0:6219434a0cb5 | 102 | CAN_PORT canHandle; |
sam_grove |
0:6219434a0cb5 | 103 | scanIndexOD_t scanIndexOD; |
sam_grove |
0:6219434a0cb5 | 104 | storeODSubIndex_t storeODSubIndex; |
sam_grove |
0:6219434a0cb5 | 105 | |
sam_grove |
0:6219434a0cb5 | 106 | /* DCF concise */ |
sam_grove |
0:6219434a0cb5 | 107 | const indextable* dcf_odentry; |
sam_grove |
0:6219434a0cb5 | 108 | UNS8* dcf_cursor; |
sam_grove |
0:6219434a0cb5 | 109 | UNS32 dcf_entries_count; |
sam_grove |
0:6219434a0cb5 | 110 | UNS8 dcf_request; |
sam_grove |
0:6219434a0cb5 | 111 | |
sam_grove |
0:6219434a0cb5 | 112 | /* EMCY */ |
sam_grove |
0:6219434a0cb5 | 113 | e_errorState error_state; |
sam_grove |
0:6219434a0cb5 | 114 | UNS8 error_history_size; |
sam_grove |
0:6219434a0cb5 | 115 | UNS8* error_number; |
sam_grove |
0:6219434a0cb5 | 116 | UNS32* error_first_element; |
sam_grove |
0:6219434a0cb5 | 117 | UNS8* error_register; |
sam_grove |
0:6219434a0cb5 | 118 | UNS32* error_cobid; |
sam_grove |
0:6219434a0cb5 | 119 | s_errors error_data[EMCY_MAX_ERRORS]; |
sam_grove |
0:6219434a0cb5 | 120 | post_emcy_t post_emcy; |
sam_grove |
0:6219434a0cb5 | 121 | |
sam_grove |
0:6219434a0cb5 | 122 | #ifdef CO_ENABLE_LSS |
sam_grove |
0:6219434a0cb5 | 123 | /* LSS */ |
sam_grove |
0:6219434a0cb5 | 124 | lss_transfer_t lss_transfer; |
sam_grove |
0:6219434a0cb5 | 125 | lss_StoreConfiguration_t lss_StoreConfiguration; |
sam_grove |
0:6219434a0cb5 | 126 | #endif |
sam_grove |
0:6219434a0cb5 | 127 | }; |
sam_grove |
0:6219434a0cb5 | 128 | |
sam_grove |
0:6219434a0cb5 | 129 | #define NMTable_Initializer Unknown_state, |
sam_grove |
0:6219434a0cb5 | 130 | |
sam_grove |
0:6219434a0cb5 | 131 | #ifdef SDO_DYNAMIC_BUFFER_ALLOCATION |
sam_grove |
0:6219434a0cb5 | 132 | #define s_transfer_Initializer {\ |
sam_grove |
0:6219434a0cb5 | 133 | 0, /* nodeId */\ |
sam_grove |
0:6219434a0cb5 | 134 | 0, /* wohami */\ |
sam_grove |
0:6219434a0cb5 | 135 | SDO_RESET, /* state */\ |
sam_grove |
0:6219434a0cb5 | 136 | 0, /* toggle */\ |
sam_grove |
0:6219434a0cb5 | 137 | 0, /* abortCode */\ |
sam_grove |
0:6219434a0cb5 | 138 | 0, /* index */\ |
sam_grove |
0:6219434a0cb5 | 139 | 0, /* subIndex */\ |
sam_grove |
0:6219434a0cb5 | 140 | 0, /* count */\ |
sam_grove |
0:6219434a0cb5 | 141 | 0, /* offset */\ |
sam_grove |
0:6219434a0cb5 | 142 | {0}, /* data (static use, so that all the table is initialize at 0)*/\ |
sam_grove |
0:6219434a0cb5 | 143 | NULL, /* dynamicData */ \ |
sam_grove |
0:6219434a0cb5 | 144 | 0, /* dynamicDataSize */ \ |
sam_grove |
0:6219434a0cb5 | 145 | 0, /* dataType */\ |
sam_grove |
0:6219434a0cb5 | 146 | -1, /* timer */\ |
sam_grove |
0:6219434a0cb5 | 147 | NULL /* Callback */\ |
sam_grove |
0:6219434a0cb5 | 148 | }, |
sam_grove |
0:6219434a0cb5 | 149 | #else |
sam_grove |
0:6219434a0cb5 | 150 | #define s_transfer_Initializer {\ |
sam_grove |
0:6219434a0cb5 | 151 | 0, /* nodeId */\ |
sam_grove |
0:6219434a0cb5 | 152 | 0, /* wohami */\ |
sam_grove |
0:6219434a0cb5 | 153 | SDO_RESET, /* state */\ |
sam_grove |
0:6219434a0cb5 | 154 | 0, /* toggle */\ |
sam_grove |
0:6219434a0cb5 | 155 | 0, /* abortCode */\ |
sam_grove |
0:6219434a0cb5 | 156 | 0, /* index */\ |
sam_grove |
0:6219434a0cb5 | 157 | 0, /* subIndex */\ |
sam_grove |
0:6219434a0cb5 | 158 | 0, /* count */\ |
sam_grove |
0:6219434a0cb5 | 159 | 0, /* offset */\ |
sam_grove |
0:6219434a0cb5 | 160 | {0}, /* data (static use, so that all the table is initialize at 0)*/\ |
sam_grove |
0:6219434a0cb5 | 161 | 0, /* dataType */\ |
sam_grove |
0:6219434a0cb5 | 162 | -1, /* timer */\ |
sam_grove |
0:6219434a0cb5 | 163 | NULL /* Callback */\ |
sam_grove |
0:6219434a0cb5 | 164 | }, |
sam_grove |
0:6219434a0cb5 | 165 | #endif //SDO_DYNAMIC_BUFFER_ALLOCATION |
sam_grove |
0:6219434a0cb5 | 166 | |
sam_grove |
0:6219434a0cb5 | 167 | #define ERROR_DATA_INITIALIZER \ |
sam_grove |
0:6219434a0cb5 | 168 | {\ |
sam_grove |
0:6219434a0cb5 | 169 | 0, /* errCode */\ |
sam_grove |
0:6219434a0cb5 | 170 | 0, /* errRegMask */\ |
sam_grove |
0:6219434a0cb5 | 171 | 0 /* active */\ |
sam_grove |
0:6219434a0cb5 | 172 | }, |
sam_grove |
0:6219434a0cb5 | 173 | |
sam_grove |
0:6219434a0cb5 | 174 | #ifdef CO_ENABLE_LSS |
sam_grove |
0:6219434a0cb5 | 175 | |
sam_grove |
0:6219434a0cb5 | 176 | #ifdef CO_ENABLE_LSS_FS |
sam_grove |
0:6219434a0cb5 | 177 | #define lss_fs_Initializer \ |
sam_grove |
0:6219434a0cb5 | 178 | ,0, /* IDNumber */\ |
sam_grove |
0:6219434a0cb5 | 179 | 128, /* BitChecked */\ |
sam_grove |
0:6219434a0cb5 | 180 | 0, /* LSSSub */\ |
sam_grove |
0:6219434a0cb5 | 181 | 0, /* LSSNext */\ |
sam_grove |
0:6219434a0cb5 | 182 | 0, /* LSSPos */\ |
sam_grove |
0:6219434a0cb5 | 183 | LSS_FS_RESET, /* FastScan_SM */\ |
sam_grove |
0:6219434a0cb5 | 184 | -1, /* timerFS */\ |
sam_grove |
0:6219434a0cb5 | 185 | {{0,0,0,0},{0,0,0,0}} /* lss_fs_transfer */ |
sam_grove |
0:6219434a0cb5 | 186 | #else |
sam_grove |
0:6219434a0cb5 | 187 | #define lss_fs_Initializer |
sam_grove |
0:6219434a0cb5 | 188 | #endif |
sam_grove |
0:6219434a0cb5 | 189 | |
sam_grove |
0:6219434a0cb5 | 190 | #define lss_Initializer {\ |
sam_grove |
0:6219434a0cb5 | 191 | LSS_RESET, /* state */\ |
sam_grove |
0:6219434a0cb5 | 192 | 0, /* command */\ |
sam_grove |
0:6219434a0cb5 | 193 | LSS_WAITING_MODE, /* mode */\ |
sam_grove |
0:6219434a0cb5 | 194 | 0, /* dat1 */\ |
sam_grove |
0:6219434a0cb5 | 195 | 0, /* dat2 */\ |
sam_grove |
0:6219434a0cb5 | 196 | 0, /* NodeID */\ |
sam_grove |
0:6219434a0cb5 | 197 | 0, /* addr_sel_match */\ |
sam_grove |
0:6219434a0cb5 | 198 | 0, /* addr_ident_match */\ |
sam_grove |
0:6219434a0cb5 | 199 | "none", /* BaudRate */\ |
sam_grove |
0:6219434a0cb5 | 200 | 0, /* SwitchDelay */\ |
sam_grove |
0:6219434a0cb5 | 201 | SDELAY_OFF, /* SwitchDelayState */\ |
sam_grove |
0:6219434a0cb5 | 202 | NULL, /* canHandle_t */\ |
sam_grove |
0:6219434a0cb5 | 203 | -1, /* TimerMSG */\ |
sam_grove |
0:6219434a0cb5 | 204 | -1, /* TimerSDELAY */\ |
sam_grove |
0:6219434a0cb5 | 205 | NULL, /* Callback */\ |
sam_grove |
0:6219434a0cb5 | 206 | 0 /* LSSanswer */\ |
sam_grove |
0:6219434a0cb5 | 207 | lss_fs_Initializer /*FastScan service initialization */\ |
sam_grove |
0:6219434a0cb5 | 208 | },\ |
sam_grove |
0:6219434a0cb5 | 209 | NULL /* _lss_StoreConfiguration*/ |
sam_grove |
0:6219434a0cb5 | 210 | #else |
sam_grove |
0:6219434a0cb5 | 211 | #define lss_Initializer |
sam_grove |
0:6219434a0cb5 | 212 | #endif |
sam_grove |
0:6219434a0cb5 | 213 | |
sam_grove |
0:6219434a0cb5 | 214 | |
sam_grove |
0:6219434a0cb5 | 215 | /* A macro to initialize the data in client app.*/ |
sam_grove |
0:6219434a0cb5 | 216 | /* CO_Data structure */ |
sam_grove |
0:6219434a0cb5 | 217 | #define CANOPEN_NODE_DATA_INITIALIZER(NODE_PREFIX) {\ |
sam_grove |
0:6219434a0cb5 | 218 | /* Object dictionary*/\ |
sam_grove |
0:6219434a0cb5 | 219 | & NODE_PREFIX ## _bDeviceNodeId, /* bDeviceNodeId */\ |
sam_grove |
0:6219434a0cb5 | 220 | NODE_PREFIX ## _objdict, /* objdict */\ |
sam_grove |
0:6219434a0cb5 | 221 | NODE_PREFIX ## _PDO_status, /* PDO_status */\ |
sam_grove |
0:6219434a0cb5 | 222 | & NODE_PREFIX ## _firstIndex, /* firstIndex */\ |
sam_grove |
0:6219434a0cb5 | 223 | & NODE_PREFIX ## _lastIndex, /* lastIndex */\ |
sam_grove |
0:6219434a0cb5 | 224 | & NODE_PREFIX ## _ObjdictSize, /* ObjdictSize */\ |
sam_grove |
0:6219434a0cb5 | 225 | & NODE_PREFIX ## _iam_a_slave, /* iam_a_slave */\ |
sam_grove |
0:6219434a0cb5 | 226 | NODE_PREFIX ## _valueRangeTest, /* valueRangeTest */\ |
sam_grove |
0:6219434a0cb5 | 227 | \ |
sam_grove |
0:6219434a0cb5 | 228 | /* SDO, structure s_transfer */\ |
sam_grove |
0:6219434a0cb5 | 229 | {\ |
sam_grove |
0:6219434a0cb5 | 230 | REPEAT_SDO_MAX_SIMULTANEOUS_TRANSFERTS_TIMES(s_transfer_Initializer)\ |
sam_grove |
0:6219434a0cb5 | 231 | },\ |
sam_grove |
0:6219434a0cb5 | 232 | \ |
sam_grove |
0:6219434a0cb5 | 233 | /* State machine*/\ |
sam_grove |
0:6219434a0cb5 | 234 | Unknown_state, /* nodeState */\ |
sam_grove |
0:6219434a0cb5 | 235 | /* structure s_state_communication */\ |
sam_grove |
0:6219434a0cb5 | 236 | {\ |
sam_grove |
0:6219434a0cb5 | 237 | 0, /* csBoot_Up */\ |
sam_grove |
0:6219434a0cb5 | 238 | 0, /* csSDO */\ |
sam_grove |
0:6219434a0cb5 | 239 | 0, /* csEmergency */\ |
sam_grove |
0:6219434a0cb5 | 240 | 0, /* csSYNC */\ |
sam_grove |
0:6219434a0cb5 | 241 | 0, /* csHeartbeat */\ |
sam_grove |
0:6219434a0cb5 | 242 | 0, /* csPDO */\ |
sam_grove |
0:6219434a0cb5 | 243 | 0 /* csLSS */\ |
sam_grove |
0:6219434a0cb5 | 244 | },\ |
sam_grove |
0:6219434a0cb5 | 245 | _initialisation, /* initialisation */\ |
sam_grove |
0:6219434a0cb5 | 246 | _preOperational, /* preOperational */\ |
sam_grove |
0:6219434a0cb5 | 247 | _operational, /* operational */\ |
sam_grove |
0:6219434a0cb5 | 248 | _stopped, /* stopped */\ |
sam_grove |
0:6219434a0cb5 | 249 | NULL, /* NMT node reset callback */\ |
sam_grove |
0:6219434a0cb5 | 250 | NULL, /* NMT communications reset callback */\ |
sam_grove |
0:6219434a0cb5 | 251 | \ |
sam_grove |
0:6219434a0cb5 | 252 | /* NMT-heartbeat */\ |
sam_grove |
0:6219434a0cb5 | 253 | & NODE_PREFIX ## _highestSubIndex_obj1016, /* ConsumerHeartbeatCount */\ |
sam_grove |
0:6219434a0cb5 | 254 | NODE_PREFIX ## _obj1016, /* ConsumerHeartbeatEntries */\ |
sam_grove |
0:6219434a0cb5 | 255 | NODE_PREFIX ## _heartBeatTimers, /* ConsumerHeartBeatTimers */\ |
sam_grove |
0:6219434a0cb5 | 256 | & NODE_PREFIX ## _obj1017, /* ProducerHeartBeatTime */\ |
sam_grove |
0:6219434a0cb5 | 257 | TIMER_NONE, /* ProducerHeartBeatTimer */\ |
sam_grove |
0:6219434a0cb5 | 258 | _heartbeatError, /* heartbeatError */\ |
sam_grove |
0:6219434a0cb5 | 259 | \ |
sam_grove |
0:6219434a0cb5 | 260 | {REPEAT_NMT_MAX_NODE_ID_TIMES(NMTable_Initializer)},\ |
sam_grove |
0:6219434a0cb5 | 261 | /* is well initialized at "Unknown_state". Is it ok ? (FD)*/\ |
sam_grove |
0:6219434a0cb5 | 262 | \ |
sam_grove |
0:6219434a0cb5 | 263 | /* SYNC */\ |
sam_grove |
0:6219434a0cb5 | 264 | TIMER_NONE, /* syncTimer */\ |
sam_grove |
0:6219434a0cb5 | 265 | & NODE_PREFIX ## _obj1005, /* COB_ID_Sync */\ |
sam_grove |
0:6219434a0cb5 | 266 | & NODE_PREFIX ## _obj1006, /* Sync_Cycle_Period */\ |
sam_grove |
0:6219434a0cb5 | 267 | /*& NODE_PREFIX ## _obj1007, */ /* Sync_window_length */\ |
sam_grove |
0:6219434a0cb5 | 268 | _post_sync, /* post_sync */\ |
sam_grove |
0:6219434a0cb5 | 269 | _post_TPDO, /* post_TPDO */\ |
sam_grove |
0:6219434a0cb5 | 270 | _post_SlaveBootup, /* post_SlaveBootup */\ |
sam_grove |
0:6219434a0cb5 | 271 | _post_SlaveStateChange, /* post_SlaveStateChange */\ |
sam_grove |
0:6219434a0cb5 | 272 | \ |
sam_grove |
0:6219434a0cb5 | 273 | /* General */\ |
sam_grove |
0:6219434a0cb5 | 274 | 0, /* toggle */\ |
sam_grove |
0:6219434a0cb5 | 275 | NULL, /* canSend */\ |
sam_grove |
0:6219434a0cb5 | 276 | NODE_PREFIX ## _scanIndexOD, /* scanIndexOD */\ |
sam_grove |
0:6219434a0cb5 | 277 | _storeODSubIndex, /* storeODSubIndex */\ |
sam_grove |
0:6219434a0cb5 | 278 | /* DCF concise */\ |
sam_grove |
0:6219434a0cb5 | 279 | NULL, /*dcf_odentry*/\ |
sam_grove |
0:6219434a0cb5 | 280 | NULL, /*dcf_cursor*/\ |
sam_grove |
0:6219434a0cb5 | 281 | 1, /*dcf_entries_count*/\ |
sam_grove |
0:6219434a0cb5 | 282 | 0, /* dcf_request*/\ |
sam_grove |
0:6219434a0cb5 | 283 | \ |
sam_grove |
0:6219434a0cb5 | 284 | /* EMCY */\ |
sam_grove |
0:6219434a0cb5 | 285 | Error_free, /* error_state */\ |
sam_grove |
0:6219434a0cb5 | 286 | sizeof(NODE_PREFIX ## _obj1003) / sizeof(NODE_PREFIX ## _obj1003[0]), /* error_history_size */\ |
sam_grove |
0:6219434a0cb5 | 287 | & NODE_PREFIX ## _highestSubIndex_obj1003, /* error_number */\ |
sam_grove |
0:6219434a0cb5 | 288 | & NODE_PREFIX ## _obj1003[0], /* error_first_element */\ |
sam_grove |
0:6219434a0cb5 | 289 | & NODE_PREFIX ## _obj1001, /* error_register */\ |
sam_grove |
0:6219434a0cb5 | 290 | & NODE_PREFIX ## _obj1014, /* error_cobid */\ |
sam_grove |
0:6219434a0cb5 | 291 | /* error_data: structure s_errors */\ |
sam_grove |
0:6219434a0cb5 | 292 | {\ |
sam_grove |
0:6219434a0cb5 | 293 | REPEAT_EMCY_MAX_ERRORS_TIMES(ERROR_DATA_INITIALIZER)\ |
sam_grove |
0:6219434a0cb5 | 294 | },\ |
sam_grove |
0:6219434a0cb5 | 295 | _post_emcy, /* post_emcy */\ |
sam_grove |
0:6219434a0cb5 | 296 | /* LSS */\ |
sam_grove |
0:6219434a0cb5 | 297 | lss_Initializer\ |
sam_grove |
0:6219434a0cb5 | 298 | } |
sam_grove |
0:6219434a0cb5 | 299 | |
sam_grove |
0:6219434a0cb5 | 300 | #ifdef __cplusplus |
sam_grove |
0:6219434a0cb5 | 301 | }; |
sam_grove |
0:6219434a0cb5 | 302 | #endif |
sam_grove |
0:6219434a0cb5 | 303 | |
sam_grove |
0:6219434a0cb5 | 304 | #endif /* __data_h__ */ |
sam_grove |
0:6219434a0cb5 | 305 | |
sam_grove |
0:6219434a0cb5 | 306 |