objdictgen/gen_cfile.py
changeset 286 85d5361179f3
parent 284 24bf3d692993
child 287 fa4df65d0683
equal deleted inserted replaced
285:dbf7695290ae 286:85d5361179f3
   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: