objdictgen/gen_cfile.py
changeset 287 fa4df65d0683
parent 286 85d5361179f3
child 288 26015ee2c2c9
equal deleted inserted replaced
286:85d5361179f3 287:fa4df65d0683
   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"