91 canSend_t canSend; |
91 canSend_t canSend; |
92 scanIndexOD_t scanIndexOD; |
92 scanIndexOD_t scanIndexOD; |
93 }; |
93 }; |
94 |
94 |
95 /* A macro to initialize the data in client app.*/ |
95 /* A macro to initialize the data in client app.*/ |
|
96 /* CO_Data structure */ |
96 #define CANOPEN_NODE_DATA_INITIALIZER(NODE_PREFIX) {\ |
97 #define CANOPEN_NODE_DATA_INITIALIZER(NODE_PREFIX) {\ |
97 /* Object dictionary*/\ |
98 /* Object dictionary*/\ |
98 bDeviceNodeId:& NODE_PREFIX ## _bDeviceNodeId,\ |
99 & NODE_PREFIX ## _bDeviceNodeId, /* bDeviceNodeId */\ |
99 objdict: NODE_PREFIX ## _objdict,\ |
100 NODE_PREFIX ## _objdict, /* objdict */\ |
100 count_sync: NODE_PREFIX ## _count_sync,\ |
101 NODE_PREFIX ## _count_sync, /* count_sync */\ |
101 firstIndex: & NODE_PREFIX ## _firstIndex,\ |
102 & NODE_PREFIX ## _firstIndex, /* firstIndex */\ |
102 lastIndex: & NODE_PREFIX ## _lastIndex,\ |
103 & NODE_PREFIX ## _lastIndex, /* lastIndex */\ |
103 ObjdictSize: & NODE_PREFIX ## _ObjdictSize,\ |
104 & NODE_PREFIX ## _ObjdictSize, /* ObjdictSize */\ |
104 iam_a_slave: & NODE_PREFIX ## _iam_a_slave,\ |
105 & NODE_PREFIX ## _iam_a_slave, /* iam_a_slave */\ |
105 valueRangeTest: NODE_PREFIX ## _valueRangeTest,\ |
106 NODE_PREFIX ## _valueRangeTest, /* valueRangeTest */\ |
106 \ |
107 \ |
107 /* SDO */\ |
108 /* SDO, structure s_transfer */\ |
108 transfers:{{\ |
109 { /* WARNING. Only the first element of the table is well initialized. */\ |
109 nodeId: 0,\ |
110 /* May be problems for "timer". Is it ok ? (FD) */\ |
110 index: 0,\ |
111 {\ |
111 subIndex: 0,\ |
112 0, /* nodeId */\ |
112 state: SDO_RESET,\ |
113 0, /* wohami */\ |
113 toggle: 0,\ |
114 SDO_RESET, /* state */\ |
114 count: 0,\ |
115 0, /* toggle */\ |
115 offset: 0,\ |
116 0, /* abortCode */\ |
116 data: {0,},\ |
117 0, /* index */\ |
117 dataType: 0,\ |
118 0, /* subIndex */\ |
118 timer: -1,\ |
119 0, /* count */\ |
119 Callback: NULL},},\ |
120 0, /* offset */\ |
120 SDOtimeoutError: &NODE_PREFIX ## _SDOtimeoutError,\ |
121 {0}, /* data (static use, so that all the table is initialize at 0)*/\ |
|
122 0, /* dataType */\ |
|
123 -1, /* timer */\ |
|
124 NULL /* Callback */\ |
|
125 }\ |
|
126 },\ |
|
127 &NODE_PREFIX ## _SDOtimeoutError, /* SDOtimeoutError */\ |
121 \ |
128 \ |
122 /* State machine */\ |
129 /* State machine*/\ |
123 nodeState:Unknown_state,\ |
130 Unknown_state, /* nodeState */\ |
124 CurrentCommunicationState:{\ |
131 /* structure s_state_communication */\ |
125 csBoot_Up: 0,\ |
132 {\ |
126 csSDO: 0,\ |
133 0, /* csBoot_Up */\ |
127 csEmergency: 0,\ |
134 0, /* csSDO */\ |
128 csSYNC: 0,\ |
135 0, /* csEmergency */\ |
129 csHeartbeat: 0,\ |
136 0, /* csSYNC */\ |
130 csPDO: 0},\ |
137 0, /* csHeartbeat */\ |
131 initialisation: &NODE_PREFIX ## _initialisation,\ |
138 0 /* csPDO */\ |
132 preOperational: &NODE_PREFIX ## _preOperational,\ |
139 },\ |
133 operational: &NODE_PREFIX ## _operational,\ |
140 &NODE_PREFIX ## _initialisation, /* initialisation */\ |
134 stopped: &NODE_PREFIX ## _stopped,\ |
141 &NODE_PREFIX ## _preOperational, /* preOperational */\ |
|
142 &NODE_PREFIX ## _operational, /* operational */\ |
|
143 &NODE_PREFIX ## _stopped, /* stopped */\ |
135 \ |
144 \ |
136 /* NMT-heartbeat */\ |
145 /* NMT-heartbeat */\ |
137 ConsumerHeartbeatCount: & NODE_PREFIX ## _highestSubIndex_obj1016,\ |
146 & NODE_PREFIX ## _highestSubIndex_obj1016, /* ConsumerHeartbeatCount */\ |
138 ConsumerHeartbeatEntries: NODE_PREFIX ## _obj1016,\ |
147 NODE_PREFIX ## _obj1016, /* ConsumerHeartbeatEntries */\ |
139 ConsumerHeartBeatTimers: NODE_PREFIX ## _heartBeatTimers,\ |
148 NODE_PREFIX ## _heartBeatTimers, /* ConsumerHeartBeatTimers */\ |
140 ProducerHeartBeatTime: & NODE_PREFIX ## _obj1017,\ |
149 & NODE_PREFIX ## _obj1017, /* ProducerHeartBeatTime */\ |
141 ProducerHeartBeatTimer: TIMER_NONE,\ |
150 TIMER_NONE, /* ProducerHeartBeatTimer */\ |
142 heartbeatError: NODE_PREFIX ## _heartbeatError,\ |
151 NODE_PREFIX ## _heartbeatError, /* heartbeatError */\ |
143 NMTable:{Unknown_state,},\ |
152 \ |
|
153 {Unknown_state}, /* NMTable WARNING : Only the first value */\ |
|
154 /* is well initialized at "Unknown_state". Is it ok ? (FD)*/\ |
144 \ |
155 \ |
145 /* SYNC */\ |
156 /* SYNC */\ |
146 syncTimer: TIMER_NONE,\ |
157 TIMER_NONE, /* syncTimer */\ |
147 COB_ID_Sync: & NODE_PREFIX ## _obj1005,\ |
158 & NODE_PREFIX ## _obj1005, /* COB_ID_Sync */\ |
148 Sync_Cycle_Period: & NODE_PREFIX ## _obj1006,\ |
159 & NODE_PREFIX ## _obj1006, /* Sync_Cycle_Period */\ |
149 /*Sync_window_length: & NODE_PREFIX ## _obj1007,*/\ |
160 /*& NODE_PREFIX ## _obj1007, */ /* Sync_window_length */\ |
150 post_sync: NODE_PREFIX ## _post_sync,\ |
161 NODE_PREFIX ## _post_sync, /* post_sync */\ |
151 post_TPDO: NODE_PREFIX ## _post_TPDO,\ |
162 NODE_PREFIX ## _post_TPDO, /* post_TPDO */\ |
152 \ |
163 \ |
153 /* PDO */\ |
164 /* PDO, structure s_process_var */\ |
154 process_var: {\ |
165 {\ |
155 count: 0,\ |
166 0, /* count */\ |
156 data: {0,}},\ |
167 {0} /* data (static use, so that all the table is initialize at 0)*/\ |
157 \ |
168 },\ |
|
169 \ |
158 /* General */\ |
170 /* General */\ |
159 toggle: 0,\ |
171 0, /* toggle */\ |
160 canSend: NODE_PREFIX ## _canSend,\ |
172 NODE_PREFIX ## _canSend, /* canSend */\ |
161 scanIndexOD: NODE_PREFIX ## _scanIndexOD\ |
173 NODE_PREFIX ## _scanIndexOD /* scanIndexOD */\ |
162 } |
174 } |
163 |
175 |
164 #endif /* __data_h__ */ |
176 #endif /* __data_h__ */ |
165 |
177 |
166 |
178 |