18 You should have received a copy of the GNU Lesser General Public |
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 |
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 |
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 */ |
21 */ |
22 |
22 |
|
23 /* File generated by gen_cfile.py. Should not be modified. */ |
|
24 |
23 #include "objdict.h" |
25 #include "objdict.h" |
24 |
26 |
25 /**************************************************************************/ |
27 /**************************************************************************/ |
26 /* Declaration of the mapped variables */ |
28 /* Declaration of the mapped variables */ |
27 /**************************************************************************/ |
29 /**************************************************************************/ |
|
30 UNS16 acceptanceFilter1 = 0x0; // Mapped at index 0x2015, subindex 0x00 |
|
31 UNS16 acceptanceFilter2 = 0x0; // Mapped at index 0x2016, subindex 0x00 |
|
32 UNS16 acceptanceFilter3 = 0x0; // Mapped at index 0x2017, subindex 0x00 |
|
33 UNS16 acceptanceFilter4 = 0x0; // Mapped at index 0x2018, subindex 0x00 |
|
34 UNS16 mask1 = 0x0; // Mapped at index 0x2019, subindex 0x00 |
|
35 UNS16 mask2 = 0x0; // Mapped at index 0x2020, subindex 0x00 |
|
36 UNS16 mask3 = 0x0; // Mapped at index 0x2021, subindex 0x00 |
|
37 UNS16 mask4 = 0x0; // Mapped at index 0x2022, subindex 0x00 |
|
38 UNS8 applyDownloadedFilters = 0x0; // Mapped at index 0x2023, subindex 0x00 |
28 |
39 |
29 /**************************************************************************/ |
40 /**************************************************************************/ |
30 /* Declaration of the value range types */ |
41 /* Declaration of the value range types */ |
31 /**************************************************************************/ |
42 /**************************************************************************/ |
32 |
43 |
33 |
44 UNS32 gene_SYNC_valueRangeTest (UNS8 typeValue, void * value) |
34 |
|
35 UNS32 gene_SYNC_valueRangeTest (UNS8 typeValue, UNS32 unsValue, REAL32 realValue) |
|
36 { |
45 { |
37 switch (typeValue) { |
46 switch (typeValue) { |
38 } |
47 } |
39 return 0; |
48 return 0; |
40 } |
49 } |
41 |
50 |
42 |
|
43 /**************************************************************************/ |
51 /**************************************************************************/ |
44 /* The node id */ |
52 /* The node id */ |
45 /**************************************************************************/ |
53 /**************************************************************************/ |
46 /* node_id default value. |
54 /* node_id default value.*/ |
47 This default value is deprecated. |
55 UNS8 gene_SYNC_bDeviceNodeId = 0x03; |
48 You should always overwrite this by using the function setNodeId(UNS8 nodeId) in your C code. |
|
49 */ |
|
50 #define NODE_ID 0x03 |
|
51 UNS8 gene_SYNC_bDeviceNodeId = NODE_ID; |
|
52 |
|
53 |
56 |
54 //*****************************************************************************/ |
57 //*****************************************************************************/ |
55 /* Array of message processing information */ |
58 /* Array of message processing information */ |
56 /* Should not be modified */ |
|
57 |
59 |
58 const UNS8 gene_SYNC_iam_a_slave = 1; |
60 const UNS8 gene_SYNC_iam_a_slave = 1; |
59 |
61 |
60 // Macros definition |
62 TIMER_HANDLE gene_SYNC_heartBeatTimers[0]; |
61 |
|
62 /* Beware : |
|
63 index *must* be writen 4 numbers in hexa |
|
64 sub_index *must* be writen 2 numbers in hexa |
|
65 size_variable_in_UNS8 *must* be writen 2 numbers in hexa |
|
66 */ |
|
67 #define PDO_MAP(index, sub_index, size_variable_in_bits)\ |
|
68 0x ## index ## sub_index ## size_variable_in_bits |
|
69 |
|
70 /** This macro helps creating the object dictionary entries. |
|
71 * by calling this macro |
|
72 * it creates an entry in form of: 7 of entries, pointer to the entry. |
|
73 */ |
|
74 #define DeclareIndexTableEntry(entryname, index) { (subindex*)entryname,sizeof(entryname)/sizeof(entryname[0]), index} |
|
75 |
63 |
76 //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |
64 //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |
77 // |
65 // |
78 // OBJECT DICTIONARY |
66 // OBJECT DICTIONARY |
79 // |
67 // |
80 //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |
68 //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |
81 // Make your change, depending of your application |
69 |
82 |
70 /* index 0x1000 : Device Type. */ |
83 |
71 UNS32 gene_SYNC_obj1000 = 0x0; // 0 |
84 /* index 0x1000 : Device type. |
72 subindex gene_SYNC_Index1000[] = |
85 You have to change the value below, so |
73 { |
86 it fits your canopen-slave-module */ |
74 { RO, uint32, sizeof (UNS32), (void*)&gene_SYNC_obj1000 } |
87 |
75 }; |
88 /* Not used, so, should not be modified */ |
76 |
89 |
77 /* index 0x1001 : Error Register. */ |
90 UNS32 gene_SYNC_obj1000 = 0; |
78 UNS8 gene_SYNC_obj1001 = 0x0; // 0 |
91 subindex gene_SYNC_Index1000[] = |
79 subindex gene_SYNC_Index1001[] = |
92 { |
80 { |
93 { RO, uint32, sizeof(UNS32), (void*)&gene_SYNC_obj1000 } |
81 { RO, uint8, sizeof (UNS8), (void*)&gene_SYNC_obj1001 } |
94 }; |
82 }; |
95 |
83 |
96 /* index 0x1001 : Error register. |
84 /* index 0x1005 : SYNC COB ID. */ |
97 Change the entries to fit your application |
85 UNS32 gene_SYNC_obj1005 = 0x40000080; // 1073741952 |
98 Not used, so, should not be modified */ |
86 ODCallback_t gene_SYNC_Index1005_callbacks[] = |
99 UNS8 gene_SYNC_obj1001 = 0x00000000; |
87 { |
100 subindex gene_SYNC_Index1001[] = |
88 NULL, |
101 { |
89 }; |
102 { RO, uint8, sizeof(UNS8), (void*)&gene_SYNC_obj1001 } |
90 subindex gene_SYNC_Index1005[] = |
103 }; |
91 { |
104 |
92 { RW, uint32, sizeof (UNS32), (void*)&gene_SYNC_obj1005 } |
105 /* index 0x1005 : COB_ID SYNC */ |
93 }; |
106 /* Should not be modified */ |
94 |
107 UNS32 gene_SYNC_obj1005 = 0x40000080; // bit 30 = 1 : device can generate a SYNC message |
95 /* index 0x1006 : Communication / Cycle Period. */ |
108 // Beware, it is over written when the node |
96 UNS32 gene_SYNC_obj1006 = 0x2710; // 10000 |
109 // enters in reset mode |
97 ODCallback_t gene_SYNC_Index1006_callbacks[] = |
110 // See initResetMode() in init.c |
98 { |
111 subindex gene_SYNC_Index1005[] = |
99 NULL, |
112 { |
100 }; |
113 { RW, uint32, sizeof(UNS32), (void*)&gene_SYNC_obj1005 } |
101 subindex gene_SYNC_Index1006[] = |
114 }; |
102 { |
115 |
103 { RW, uint32, sizeof (UNS32), (void*)&gene_SYNC_obj1006 } |
116 /* index 0x1006 : SYNC period */ |
104 }; |
117 // For producing the SYNC signal every n micro-seconds. |
105 |
118 // Put 0 to not producing SYNC |
106 /* index 0x1008 : Manufacturer Device Name. */ |
119 UNS32 gene_SYNC_obj1006 = 0x000186A0; |
107 UNS8 gene_SYNC_obj1008[10] = "GENE_SYNC"; |
120 // Default 0 to not produce SYNC // |
108 subindex gene_SYNC_Index1008[] = |
121 // Beware, it is over written when the |
109 { |
122 // node enters in reset mode. |
110 { RO, visible_string, sizeof (gene_SYNC_obj1008), (void*)&gene_SYNC_obj1008 } |
123 // See initResetMode() in init.c |
111 }; |
124 subindex gene_SYNC_Index1006[] = |
112 |
125 { |
113 /* index 0x1016 : Consumer Heartbeat Time */ |
126 { RW, uint32, sizeof(UNS32), (void*)&gene_SYNC_obj1006 } |
114 UNS8 gene_SYNC_highestSubIndex_obj1016 = 0; |
127 }; |
115 UNS32 gene_SYNC_obj1016[0]; |
128 |
|
129 |
|
130 TIMER_HANDLE gene_SYNC_heartBeatTimers[0]; |
|
131 UNS32 gene_SYNC_obj1016[0]; |
|
132 UNS8 gene_SYNC_obj1016_cnt = 0; |
|
133 subindex gene_SYNC_Index1016[0]; |
116 subindex gene_SYNC_Index1016[0]; |
134 |
117 |
135 UNS16 gene_SYNC_obj1017 = 0x0000; |
118 /* index 0x1017 : Producer Heartbeat Time */ |
136 /* index 0x1018 : Identity object */ |
119 UNS16 gene_SYNC_obj1017 = 0x0; // 0 |
137 /** index 1018: identify object. Adjust the entries for your node/company |
120 |
138 */ |
121 /* index 0x1018 : Identity. */ |
139 /* Values can be modified */ |
122 UNS8 gene_SYNC_highestSubIndex_obj1018 = 4; // number of subindex - 1 |
140 |
123 UNS32 gene_SYNC_obj1018_Vendor_ID = 0x0; // 0 |
141 s_identity gene_SYNC_obj1018 = |
124 UNS32 gene_SYNC_obj1018_Product_Code = 0x0; // 0 |
142 { |
125 UNS32 gene_SYNC_obj1018_Revision_Number = 0x0; // 0 |
143 4, // number of supported entries |
126 UNS32 gene_SYNC_obj1018_Serial_Number = 0x0; // 0 |
144 0, // Vendor-ID (given by the can-cia) |
127 subindex gene_SYNC_Index1018[] = |
145 0, // Product Code |
128 { |
146 0, // Revision number |
129 { RO, uint8, sizeof (UNS8), (void*)&gene_SYNC_highestSubIndex_obj1018 }, |
147 0 // serial number |
130 { RO, uint32, sizeof (UNS32), (void*)&gene_SYNC_obj1018_Vendor_ID }, |
148 }; |
131 { RO, uint32, sizeof (UNS32), (void*)&gene_SYNC_obj1018_Product_Code }, |
149 |
132 { RO, uint32, sizeof (UNS32), (void*)&gene_SYNC_obj1018_Revision_Number }, |
150 subindex gene_SYNC_Index1018[] = |
133 { RO, uint32, sizeof (UNS32), (void*)&gene_SYNC_obj1018_Serial_Number } |
151 { |
134 }; |
152 { RO, uint8, sizeof(UNS8), (void*)&gene_SYNC_obj1018.count }, |
135 |
153 { RO, uint32, sizeof(UNS32), (void*)&gene_SYNC_obj1018.vendor_id}, |
136 /* index 0x1200 : Server SDO Parameter. */ |
154 { RO, uint32, sizeof(UNS32), (void*)&gene_SYNC_obj1018.product_code}, |
137 UNS8 gene_SYNC_highestSubIndex_obj1200 = 2; // number of subindex - 1 |
155 { RO, uint32, sizeof(UNS32), (void*)&gene_SYNC_obj1018.revision_number}, |
138 UNS32 gene_SYNC_obj1200_COB_ID_Client_to_Server_Receive_SDO = 0x0; // 0 |
156 { RO, uint32, sizeof(UNS32), (void*)&gene_SYNC_obj1018.serial_number} |
139 UNS32 gene_SYNC_obj1200_COB_ID_Server_to_Client_Transmit_SDO = 0x0; // 0 |
157 }; |
140 subindex gene_SYNC_Index1200[] = |
158 |
141 { |
159 /* index 0x1200 : The SDO Server parameters */ |
142 { RO, uint8, sizeof (UNS8), (void*)&gene_SYNC_highestSubIndex_obj1200 }, |
160 /* BEWARE You cannot define more than one SDO server */ |
143 { RO, uint32, sizeof (UNS32), (void*)&gene_SYNC_obj1200_COB_ID_Client_to_Server_Receive_SDO }, |
161 /* The values should not be modified here, |
144 { RO, uint32, sizeof (UNS32), (void*)&gene_SYNC_obj1200_COB_ID_Server_to_Client_Transmit_SDO } |
162 but can be changed at runtime */ |
145 }; |
163 // Beware that the default values that you could put here |
146 |
164 // will be over written at the initialisation of the node. |
147 /* index 0x2015 : Mapped variable acceptanceFilter1 */ |
165 // See setNodeId() in init.c |
148 subindex gene_SYNC_Index2015[] = |
166 s_sdo_parameter gene_SYNC_obj1200 = |
149 { |
167 { 3, // Number of entries. Always 3 for the SDO |
150 { RW, uint16, sizeof (UNS16), (void*)&acceptanceFilter1 } |
168 0x000, // The cob_id transmited in CAN msg to the server |
151 }; |
169 0x000, // The cob_id received in CAN msg from the server |
152 |
170 0x03 // The node id of the client. Should not be modified |
153 /* index 0x2016 : Mapped variable acceptanceFilter2 */ |
171 }; |
154 subindex gene_SYNC_Index2016[] = |
172 subindex gene_SYNC_Index1200[] = |
155 { |
173 { |
156 { RW, uint16, sizeof (UNS16), (void*)&acceptanceFilter2 } |
174 { RO, uint8, sizeof( UNS8 ), (void*)&gene_SYNC_obj1200.count }, |
157 }; |
175 { RO, uint32, sizeof( UNS32), (void*)&gene_SYNC_obj1200.cob_id_client }, |
158 |
176 { RO, uint32, sizeof( UNS32), (void*)&gene_SYNC_obj1200.cob_id_server }, |
159 /* index 0x2017 : Mapped variable acceptanceFilter3 */ |
177 { RW, uint8, sizeof( UNS8), (void*)&gene_SYNC_obj1200.node_id } |
160 subindex gene_SYNC_Index2017[] = |
178 }; |
161 { |
179 |
162 { RW, uint16, sizeof (UNS16), (void*)&acceptanceFilter3 } |
180 /* index 0x1280 : SDO client parameter */ |
163 }; |
181 s_sdo_parameter gene_SYNC_obj1280 = |
164 |
182 { 3, // Nb of entries |
165 /* index 0x2018 : Mapped variable acceptanceFilter4 */ |
183 0x000, // cobid transmited to the server. The good value should be 0x600 + server nodeId |
166 subindex gene_SYNC_Index2018[] = |
184 0x000, // cobid received from the server. The good value should be 0x580 + server nodeId |
167 { |
185 0x00 // server NodeId |
168 { RW, uint16, sizeof (UNS16), (void*)&acceptanceFilter4 } |
186 }; |
169 }; |
187 subindex gene_SYNC_Index1280[] = |
170 |
188 { |
171 /* index 0x2019 : Mapped variable mask1 */ |
189 { RO, uint8, sizeof( UNS8 ), (void*)&gene_SYNC_obj1280.count }, |
172 subindex gene_SYNC_Index2019[] = |
190 { RW, uint8, sizeof( UNS32 ), (void*)&gene_SYNC_obj1280.cob_id_client }, |
173 { |
191 { RW, uint8, sizeof( UNS32 ), (void*)&gene_SYNC_obj1280.cob_id_server }, |
174 { RW, uint16, sizeof (UNS16), (void*)&mask1 } |
192 { RW, uint8, sizeof( UNS8 ), (void*)&gene_SYNC_obj1280.node_id } |
175 }; |
193 }; |
176 |
194 |
177 /* index 0x2020 : Mapped variable mask2 */ |
|
178 subindex gene_SYNC_Index2020[] = |
|
179 { |
|
180 { RW, uint16, sizeof (UNS16), (void*)&mask2 } |
|
181 }; |
|
182 |
|
183 /* index 0x2021 : Mapped variable mask3 */ |
|
184 subindex gene_SYNC_Index2021[] = |
|
185 { |
|
186 { RW, uint16, sizeof (UNS16), (void*)&mask3 } |
|
187 }; |
|
188 |
|
189 /* index 0x2022 : Mapped variable mask4 */ |
|
190 subindex gene_SYNC_Index2022[] = |
|
191 { |
|
192 { RW, uint16, sizeof (UNS16), (void*)&mask4 } |
|
193 }; |
|
194 |
|
195 /* index 0x2023 : Mapped variable applyDownloadedFilters */ |
|
196 subindex gene_SYNC_Index2023[] = |
|
197 { |
|
198 { RW, uint8, sizeof (UNS8), (void*)&applyDownloadedFilters } |
|
199 }; |
195 |
200 |
196 const indextable gene_SYNC_objdict[] = |
201 const indextable gene_SYNC_objdict[] = |
197 { |
202 { |
198 DeclareIndexTableEntry(gene_SYNC_Index1000, 0x1000), |
203 { (subindex*)gene_SYNC_Index1000,sizeof(gene_SYNC_Index1000)/sizeof(gene_SYNC_Index1000[0]), 0x1000}, |
199 DeclareIndexTableEntry(gene_SYNC_Index1001, 0x1001), |
204 { (subindex*)gene_SYNC_Index1001,sizeof(gene_SYNC_Index1001)/sizeof(gene_SYNC_Index1001[0]), 0x1001}, |
200 DeclareIndexTableEntry(gene_SYNC_Index1005, 0x1005), |
205 { (subindex*)gene_SYNC_Index1005,sizeof(gene_SYNC_Index1005)/sizeof(gene_SYNC_Index1005[0]), 0x1005}, |
201 DeclareIndexTableEntry(gene_SYNC_Index1006, 0x1006), |
206 { (subindex*)gene_SYNC_Index1006,sizeof(gene_SYNC_Index1006)/sizeof(gene_SYNC_Index1006[0]), 0x1006}, |
202 DeclareIndexTableEntry(gene_SYNC_Index1018, 0x1018), |
207 { (subindex*)gene_SYNC_Index1008,sizeof(gene_SYNC_Index1008)/sizeof(gene_SYNC_Index1008[0]), 0x1008}, |
203 DeclareIndexTableEntry(gene_SYNC_Index1200, 0x1200), |
208 { (subindex*)gene_SYNC_Index1018,sizeof(gene_SYNC_Index1018)/sizeof(gene_SYNC_Index1018[0]), 0x1018}, |
204 DeclareIndexTableEntry(gene_SYNC_Index1280, 0x1280), |
209 { (subindex*)gene_SYNC_Index1200,sizeof(gene_SYNC_Index1200)/sizeof(gene_SYNC_Index1200[0]), 0x1200}, |
|
210 { (subindex*)gene_SYNC_Index2015,sizeof(gene_SYNC_Index2015)/sizeof(gene_SYNC_Index2015[0]), 0x2015}, |
|
211 { (subindex*)gene_SYNC_Index2016,sizeof(gene_SYNC_Index2016)/sizeof(gene_SYNC_Index2016[0]), 0x2016}, |
|
212 { (subindex*)gene_SYNC_Index2017,sizeof(gene_SYNC_Index2017)/sizeof(gene_SYNC_Index2017[0]), 0x2017}, |
|
213 { (subindex*)gene_SYNC_Index2018,sizeof(gene_SYNC_Index2018)/sizeof(gene_SYNC_Index2018[0]), 0x2018}, |
|
214 { (subindex*)gene_SYNC_Index2019,sizeof(gene_SYNC_Index2019)/sizeof(gene_SYNC_Index2019[0]), 0x2019}, |
|
215 { (subindex*)gene_SYNC_Index2020,sizeof(gene_SYNC_Index2020)/sizeof(gene_SYNC_Index2020[0]), 0x2020}, |
|
216 { (subindex*)gene_SYNC_Index2021,sizeof(gene_SYNC_Index2021)/sizeof(gene_SYNC_Index2021[0]), 0x2021}, |
|
217 { (subindex*)gene_SYNC_Index2022,sizeof(gene_SYNC_Index2022)/sizeof(gene_SYNC_Index2022[0]), 0x2022}, |
|
218 { (subindex*)gene_SYNC_Index2023,sizeof(gene_SYNC_Index2023)/sizeof(gene_SYNC_Index2023[0]), 0x2023}, |
205 }; |
219 }; |
|
220 |
|
221 const indextable * gene_SYNC_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks) |
|
222 { |
|
223 int i; |
|
224 *callbacks = NULL; |
|
225 switch(wIndex){ |
|
226 case 0x1000: i = 0;break; |
|
227 case 0x1001: i = 1;break; |
|
228 case 0x1005: i = 2;*callbacks = gene_SYNC_Index1005_callbacks; break; |
|
229 case 0x1006: i = 3;*callbacks = gene_SYNC_Index1006_callbacks; break; |
|
230 case 0x1008: i = 4;break; |
|
231 case 0x1018: i = 5;break; |
|
232 case 0x1200: i = 6;break; |
|
233 case 0x2015: i = 7;break; |
|
234 case 0x2016: i = 8;break; |
|
235 case 0x2017: i = 9;break; |
|
236 case 0x2018: i = 10;break; |
|
237 case 0x2019: i = 11;break; |
|
238 case 0x2020: i = 12;break; |
|
239 case 0x2021: i = 13;break; |
|
240 case 0x2022: i = 14;break; |
|
241 case 0x2023: i = 15;break; |
|
242 default: |
|
243 *errorCode = OD_NO_SUCH_OBJECT; |
|
244 return NULL; |
|
245 } |
|
246 *errorCode = OD_SUCCESSFUL; |
|
247 return &gene_SYNC_objdict[i]; |
|
248 } |
206 |
249 |
207 // To count at which received SYNC a PDO must be sent. |
250 // To count at which received SYNC a PDO must be sent. |
208 // Even if no pdoTransmit are defined, at least one entry is computed |
251 // Even if no pdoTransmit are defined, at least one entry is computed |
209 // for compilations issues. |
252 // for compilations issues. |
210 UNS8 gene_SYNC_count_sync[1] = {0, }; |
253 UNS8 gene_SYNC_count_sync[1] = {0,}; |
211 |
254 |
212 quick_index gene_SYNC_firstIndex = { |
255 quick_index gene_SYNC_firstIndex = { |
213 SDO_SVR : 5, |
256 SDO_SVR : 6, |
214 SDO_CLT : 6, |
257 SDO_CLT : 0, |
215 PDO_RCV : 0, |
258 PDO_RCV : 0, |
216 PDO_RCV_MAP : 0, |
259 PDO_RCV_MAP : 0, |
217 PDO_TRS : 0, |
260 PDO_TRS : 0, |
218 PDO_TRS_MAP : 0 |
261 PDO_TRS_MAP : 0 |
219 }; |
262 }; |
220 |
263 |
221 quick_index gene_SYNC_lastIndex = { |
264 quick_index gene_SYNC_lastIndex = { |
222 SDO_SVR : 5, |
265 SDO_SVR : 6, |
223 SDO_CLT : 6, |
266 SDO_CLT : 0, |
224 PDO_RCV : 0, |
267 PDO_RCV : 0, |
225 PDO_RCV_MAP : 0, |
268 PDO_RCV_MAP : 0, |
226 PDO_TRS : 0, |
269 PDO_TRS : 0, |
227 PDO_TRS_MAP : 0 |
270 PDO_TRS_MAP : 0 |
228 }; |
271 }; |
229 |
272 |
230 UNS16 gene_SYNC_ObjdictSize = sizeof(gene_SYNC_objdict)/sizeof(gene_SYNC_objdict[0]); |
273 UNS16 gene_SYNC_ObjdictSize = sizeof(gene_SYNC_objdict)/sizeof(gene_SYNC_objdict[0]); |
231 |
274 |
232 CO_Data gene_SYNC_Data = CANOPEN_NODE_DATA_INITIALIZER(gene_SYNC); |
275 CO_Data gene_SYNC_Data = CANOPEN_NODE_DATA_INITIALIZER(gene_SYNC); |