105 #------------------------------------------------------------------------------- |
105 #------------------------------------------------------------------------------- |
106 |
106 |
107 valueRangeContent = "" |
107 valueRangeContent = "" |
108 strDefine = "\n#define valueRange_EMC 0x9F /* Type for index 0x1003 subindex 0x00 (only set of value 0 is possible) */" |
108 strDefine = "\n#define valueRange_EMC 0x9F /* Type for index 0x1003 subindex 0x00 (only set of value 0 is possible) */" |
109 strSwitch = """ case valueRange_EMC: |
109 strSwitch = """ case valueRange_EMC: |
110 if (*(UNS8*)Value < (UNS8)0) return OD_VALUE_TOO_LOW; |
110 if (*(UNS8*)value < (UNS8)0) return OD_VALUE_TOO_LOW; |
111 if (*(UNS8*)Value > (UNS8)0) return OD_VALUE_TOO_HIGH; |
111 if (*(UNS8*)value > (UNS8)0) return OD_VALUE_TOO_HIGH; |
112 break;\n""" |
112 break;\n""" |
113 internal_types["valueRange_EMC"] = ("UNS8", "", "valueRange_EMC") |
113 internal_types["valueRange_EMC"] = ("UNS8", "", "valueRange_EMC") |
114 num = 0 |
114 num = 0 |
115 for index in rangelist: |
115 for index in rangelist: |
116 rangename = Node.GetEntryName(index) |
116 rangename = Node.GetEntryName(index) |
123 internal_types[rangename] = (typeinfos[0], typeinfos[1], "valueRange_%d"%num) |
123 internal_types[rangename] = (typeinfos[0], typeinfos[1], "valueRange_%d"%num) |
124 minvalue = str(Node.GetEntry(index, 2)) |
124 minvalue = str(Node.GetEntry(index, 2)) |
125 maxvalue = str(Node.GetEntry(index, 3)) |
125 maxvalue = str(Node.GetEntry(index, 3)) |
126 strDefine += "\n#define valueRange_%d 0x%02X /* Type %s, %s < value < %s */"%(num,index,typeinfos[0],minvalue,maxvalue) |
126 strDefine += "\n#define valueRange_%d 0x%02X /* Type %s, %s < value < %s */"%(num,index,typeinfos[0],minvalue,maxvalue) |
127 strSwitch += """ case valueRange_%d: |
127 strSwitch += """ case valueRange_%d: |
128 if (*(%s*)Value < (%s)%s) return OD_VALUE_TOO_LOW; |
128 if (*(%s*)value < (%s)%s) return OD_VALUE_TOO_LOW; |
129 if (*(%s*)Value > (%s)%s) return OD_VALUE_TOO_HIGH; |
129 if (*(%s*)value > (%s)%s) return OD_VALUE_TOO_HIGH; |
130 break;\n"""%(num,typeinfos[0],typeinfos[0],minvalue,typeinfos[0],typeinfos[0],maxvalue) |
130 break;\n"""%(num,typeinfos[0],typeinfos[0],minvalue,typeinfos[0],typeinfos[0],maxvalue) |
131 |
131 |
132 valueRangeContent += strDefine |
132 valueRangeContent += strDefine |
133 valueRangeContent += "\nUNS32 %(NodeName)s_valueRangeTest (UNS8 typeValue, void * value)\n{"%texts |
133 valueRangeContent += "\nUNS32 %(NodeName)s_valueRangeTest (UNS8 typeValue, void * value)\n{"%texts |
134 valueRangeContent += "\n switch (typeValue) {\n" |
134 valueRangeContent += "\n switch (typeValue) {\n" |