equal
deleted
inserted
replaced
103 #------------------------------------------------------------------------------- |
103 #------------------------------------------------------------------------------- |
104 # Declaration of the value range types |
104 # Declaration of the value range types |
105 #------------------------------------------------------------------------------- |
105 #------------------------------------------------------------------------------- |
106 |
106 |
107 valueRangeContent = "" |
107 valueRangeContent = "" |
108 strDefine = "" |
108 strDefine = "\n#define valueRange_EMC 0x9F /* Type for index 0x1003 subindex 0x00 (only set of value 0 is possible) */" |
109 strSwitch = "" |
109 strSwitch = """ case valueRange_EMC: |
|
110 if (*(UNS8*)Value < (UNS8)0) return OD_VALUE_TOO_LOW; |
|
111 if (*(UNS8*)Value > (UNS8)0) return OD_VALUE_TOO_HIGH; |
|
112 break;\n""" |
|
113 internal_types["valueRange_EMC"] = ("UNS8", "", "valueRange_EMC") |
110 num = 0 |
114 num = 0 |
111 for index in rangelist: |
115 for index in rangelist: |
112 rangename = Node.GetEntryName(index) |
116 rangename = Node.GetEntryName(index) |
113 result = range_model.match(rangename) |
117 result = range_model.match(rangename) |
114 if result: |
118 if result: |
179 values = [values] |
183 values = [values] |
180 else: |
184 else: |
181 subentry_infos = Node.GetSubentryInfos(index, 0) |
185 subentry_infos = Node.GetSubentryInfos(index, 0) |
182 typename = Node.GetTypeName(subentry_infos["type"]) |
186 typename = Node.GetTypeName(subentry_infos["type"]) |
183 typeinfos = GetValidTypeInfos(typename) |
187 typeinfos = GetValidTypeInfos(typename) |
184 texts["value"] = values[0] |
188 if index == 0x1003: |
|
189 texts["value"] = 0 |
|
190 else: |
|
191 texts["value"] = values[0] |
185 texts["subIndexType"] = typeinfos[0] |
192 texts["subIndexType"] = typeinfos[0] |
186 strIndex += " %(subIndexType)s %(NodeName)s_highestSubIndex_obj%(index)04X = %(value)d; /* number of subindex - 1*/\n"%texts |
193 strIndex += " %(subIndexType)s %(NodeName)s_highestSubIndex_obj%(index)04X = %(value)d; /* number of subindex - 1*/\n"%texts |
187 |
194 |
188 # Entry type is RECORD |
195 # Entry type is RECORD |
189 if entry_infos["struct"] & OD_IdenticalSubindexes: |
196 if entry_infos["struct"] & OD_IdenticalSubindexes: |
282 else: |
289 else: |
283 sep = "" |
290 sep = "" |
284 typename = Node.GetTypeName(subentry_infos["type"]) |
291 typename = Node.GetTypeName(subentry_infos["type"]) |
285 typeinfos = GetValidTypeInfos(typename) |
292 typeinfos = GetValidTypeInfos(typename) |
286 if subIndex == 0: |
293 if subIndex == 0: |
|
294 if index == 0x1003: |
|
295 typeinfos = GetValidTypeInfos("valueRange_EMC") |
287 if entry_infos["struct"] & OD_MultipleSubindexes: |
296 if entry_infos["struct"] & OD_MultipleSubindexes: |
288 name = "%(NodeName)s_highestSubIndex_obj%(index)04X"%texts |
297 name = "%(NodeName)s_highestSubIndex_obj%(index)04X"%texts |
289 elif index in variablelist: |
298 elif index in variablelist: |
290 name = FormatName(subentry_infos["name"]) |
299 name = FormatName(subentry_infos["name"]) |
291 else: |
300 else: |
331 NULL, |
340 NULL, |
332 NULL, |
341 NULL, |
333 }; |
342 }; |
334 subindex %(NodeName)s_Index1003[] = |
343 subindex %(NodeName)s_Index1003[] = |
335 { |
344 { |
336 { RW, uint8, sizeof (UNS8), (void*)&%(NodeName)s_highestSubIndex_obj1003 }, |
345 { RW, valueRange_EMC, sizeof (UNS8), (void*)&%(NodeName)s_highestSubIndex_obj1003 }, |
337 { RO, uint32, sizeof (UNS32), (void*)&%(NodeName)s_obj1003[0] } |
346 { RO, uint32, sizeof (UNS32), (void*)&%(NodeName)s_obj1003[0] } |
338 }; |
347 }; |
339 """%texts |
348 """%texts |
340 |
349 |
341 if 0x1005 not in communicationlist: |
350 if 0x1005 not in communicationlist: |