65 size = max(size, len(item)) |
65 size = max(size, len(item)) |
66 if values[1] != "": |
66 if values[1] != "": |
67 size = max(size, int(values[1])) |
67 size = max(size, int(values[1])) |
68 typeinfos = ("UNS8", size, "visible_string", False) |
68 typeinfos = ("UNS8", size, "visible_string", False) |
69 elif values[0] == "DOMAIN": |
69 elif values[0] == "DOMAIN": |
70 size = 0 |
70 size = default_string_size |
71 for item in items: |
71 for item in items: |
72 size = max(size, len(item)) |
72 size = max(size, len(item)) |
73 typeinfos = ("UNS8*", size, "domain", False) |
73 typeinfos = ("UNS8", size, "domain", False) |
74 elif values[0] == "BOOLEAN": |
74 elif values[0] == "BOOLEAN": |
75 typeinfos = ("UNS8", None, "boolean", False) |
75 typeinfos = ("UNS8", None, "boolean", False) |
76 else: |
76 else: |
77 raise ValueError, """!!! %s isn't a valid type for CanFestival."""%typename |
77 raise ValueError, """!!! %s isn't a valid type for CanFestival."""%typename |
78 internal_types[typename] = typeinfos |
78 if typeinfos[2] not in ["visible_string", "domain"]: |
|
79 internal_types[typename] = typeinfos |
79 else: |
80 else: |
80 raise ValueError, """!!! %s isn't a valid type for CanFestival."""%typename |
81 raise ValueError, """!!! %s isn't a valid type for CanFestival."""%typename |
81 return typeinfos |
82 return typeinfos |
82 |
83 |
83 def ComputeValue(type, value): |
84 def ComputeValue(type, value): |
217 typename = Node.GetTypeName(subentry_infos["type"]) |
218 typename = Node.GetTypeName(subentry_infos["type"]) |
218 typeinfos = GetValidTypeInfos(typename, values[1:]) |
219 typeinfos = GetValidTypeInfos(typename, values[1:]) |
219 texts["subIndexType"] = typeinfos[0] |
220 texts["subIndexType"] = typeinfos[0] |
220 if typeinfos[1] is not None: |
221 if typeinfos[1] is not None: |
221 texts["suffixe"] = "[%d]"%typeinfos[1] |
222 texts["suffixe"] = "[%d]"%typeinfos[1] |
|
223 texts["type_suffixe"] = "*" |
222 else: |
224 else: |
223 texts["suffixe"] = "" |
225 texts["suffixe"] = "" |
|
226 texts["type_suffixe"] = "" |
224 texts["length"] = values[0] |
227 texts["length"] = values[0] |
225 if index in variablelist: |
228 if index in variablelist: |
226 texts["name"] = FormatName(entry_infos["name"]) |
229 texts["name"] = FormatName(entry_infos["name"]) |
227 strDeclareHeader += "extern %(subIndexType)s %(name)s[%(length)d]%(suffixe)s;\t\t/* Mapped at index 0x%(index)04X, subindex 0x01 - 0x%(length)02X */\n"%texts |
230 strDeclareHeader += "extern %(subIndexType)s%(type_suffixe)s %(name)s[];\t\t/* Mapped at index 0x%(index)04X, subindex 0x01 - 0x%(length)02X */\n"%texts |
228 mappedVariableContent += "%(subIndexType)s %(name)s[] =\t\t/* Mapped at index 0x%(index)04X, subindex 0x01 - 0x%(length)02X */\n {\n"%texts |
231 mappedVariableContent += "%(subIndexType)s%(type_suffixe)s %(name)s[] =\t\t/* Mapped at index 0x%(index)04X, subindex 0x01 - 0x%(length)02X */\n {\n"%texts |
229 for subIndex, value in enumerate(values): |
232 for subIndex, value in enumerate(values): |
230 sep = "," |
233 sep = "," |
231 if subIndex > 0: |
234 if subIndex > 0: |
232 if subIndex == len(values)-1: |
235 if subIndex == len(values)-1: |
233 sep = "" |
236 sep = "" |
234 value, comment = ComputeValue(typeinfos[2], value) |
237 value, comment = ComputeValue(typeinfos[2], value) |
235 mappedVariableContent += " %s%s%s\n"%(value, sep, comment) |
238 mappedVariableContent += " %s%s%s\n"%(value, sep, comment) |
236 mappedVariableContent += " };\n" |
239 mappedVariableContent += " };\n" |
237 else: |
240 else: |
238 strIndex += " %(subIndexType)s %(NodeName)s_obj%(index)04X[] = \n {\n"%texts |
241 strIndex += " %(subIndexType)s%(type_suffixe)s %(NodeName)s_obj%(index)04X[] = \n {\n"%texts |
239 for subIndex, value in enumerate(values): |
242 for subIndex, value in enumerate(values): |
240 sep = "," |
243 sep = "," |
241 if subIndex > 0: |
244 if subIndex > 0: |
242 if subIndex == len(values)-1: |
245 if subIndex == len(values)-1: |
243 sep = "" |
246 sep = "" |
287 sep = "," |
290 sep = "," |
288 else: |
291 else: |
289 sep = "" |
292 sep = "" |
290 typename = Node.GetTypeName(subentry_infos["type"]) |
293 typename = Node.GetTypeName(subentry_infos["type"]) |
291 if entry_infos["struct"] & OD_IdenticalSubindexes: |
294 if entry_infos["struct"] & OD_IdenticalSubindexes: |
292 typeinfos = GetValidTypeInfos(typename, values) |
295 typeinfos = GetValidTypeInfos(typename, values[1:]) |
293 else: |
296 else: |
294 typeinfos = GetValidTypeInfos(typename, [values[subIndex]]) |
297 typeinfos = GetValidTypeInfos(typename, [values[subIndex]]) |
295 if subIndex == 0: |
298 if subIndex == 0: |
296 if index == 0x1003: |
299 if index == 0x1003: |
297 typeinfos = GetValidTypeInfos("valueRange_EMC") |
300 typeinfos = GetValidTypeInfos("valueRange_EMC") |