etherlab/etherlab.py
changeset 2138 79dc2d15c580
parent 2137 b65abacdbdf9
child 2139 1565239349a8
equal deleted inserted replaced
2137:b65abacdbdf9 2138:79dc2d15c580
   234 
   234 
   235 class ModulesLibrary:
   235 class ModulesLibrary:
   236 
   236 
   237     MODULES_EXTRA_PARAMS = [
   237     MODULES_EXTRA_PARAMS = [
   238         ("pdo_alignment", {
   238         ("pdo_alignment", {
   239             "column_label": _("PDO alignment (bits)"), 
   239             "column_label": _("PDO alignment"), 
   240             "default": 8}),
   240             "column_size": 150,
       
   241             "default": 8,
       
   242             "description": _(
       
   243 "Minimal size in bits between 2 pdo entries")}),
   241         ("max_pdo_size", {
   244         ("max_pdo_size", {
   242             "column_label": _("Max entries by PDO (-1=unbounded)"), 
   245             "column_label": _("Max entries by PDO"),
   243             "default": -1}),
   246             "column_size": 150,
       
   247             "default": -1,
       
   248             "description": _(
       
   249 """Maximal number of entries mapped in a PDO
       
   250 including empty entries used for PDO alignment
       
   251 (-1=unbounded)""")}),
   244         ("add_pdo", {
   252         ("add_pdo", {
   245             "column_label": _("Creating new PDO (1=possible)"), 
   253             "column_label": _("Creating new PDO"), 
   246             "default": 0})
   254             "column_size": 150,
       
   255             "default": 0,
       
   256             "description": _(
       
   257 """Adding a PDO not defined in default configuration
       
   258 for mapping needed location variables
       
   259 (1 if possible)""")})
   247     ]
   260     ]
   248     
   261     
   249     def __init__(self, path, parent_library=None):
   262     def __init__(self, path, parent_library=None):
   250         self.Path = path
   263         self.Path = path
   251         if not os.path.exists(self.Path):
   264         if not os.path.exists(self.Path):
   386             reader = csv.reader(csvfile, dialect)
   399             reader = csv.reader(csvfile, dialect)
   387             for row in reader:
   400             for row in reader:
   388                 if has_header:
   401                 if has_header:
   389                     has_header = False
   402                     has_header = False
   390                 else:
   403                 else:
   391                     try:
   404                     params_values = {}
   392                         self.ModulesExtraParams[tuple(map(int, row[:3]))] = dict(
   405                     for (param, param_infos), value in zip(
   393                             zip([param for param, params_infos in self.MODULES_EXTRA_PARAMS], 
   406                         self.MODULES_EXTRA_PARAMS, row[3:]):
   394                                 int(row[3])))
   407                         if value != "":
   395                     except:
   408                             params_values[param] = int(value)
   396                         pass
   409                     self.ModulesExtraParams[
       
   410                         tuple(map(int, row[:3]))] = params_values
   397             csvfile.close()
   411             csvfile.close()
   398     
   412     
   399     def SaveModulesExtraParams(self):
   413     def SaveModulesExtraParams(self):
   400         csvfile = open(self.GetModulesExtraParamsFilePath(), "wb")
   414         csvfile = open(self.GetModulesExtraParamsFilePath(), "wb")
   401         extra_params = [param for param, params_infos in self.MODULES_EXTRA_PARAMS]
   415         extra_params = [param for param, params_infos in self.MODULES_EXTRA_PARAMS]
   410     def SetModuleExtraParam(self, vendor, product_code, revision_number, param, value):
   424     def SetModuleExtraParam(self, vendor, product_code, revision_number, param, value):
   411         vendor = ExtractHexDecValue(vendor)
   425         vendor = ExtractHexDecValue(vendor)
   412         product_code = ExtractHexDecValue(product_code)
   426         product_code = ExtractHexDecValue(product_code)
   413         revision_number = ExtractHexDecValue(revision_number)
   427         revision_number = ExtractHexDecValue(revision_number)
   414         
   428         
   415         self.ModulesExtraParams[tuple([vendor, product_code, revision_number])][param] = value
   429         module_infos = (vendor, product_code, revision_number)
       
   430         self.ModulesExtraParams.setdefault(module_infos, {})
       
   431         self.ModulesExtraParams[module_infos][param] = value
       
   432         
   416         self.SaveModulesExtraParams()
   433         self.SaveModulesExtraParams()
   417     
   434     
   418     def GetModuleExtraParams(self, vendor, product_code, revision_number):
   435     def GetModuleExtraParams(self, vendor, product_code, revision_number):
   419         vendor = ExtractHexDecValue(vendor)
   436         vendor = ExtractHexDecValue(vendor)
   420         product_code = ExtractHexDecValue(product_code)
   437         product_code = ExtractHexDecValue(product_code)
   423         if self.ParentLibrary is not None:
   440         if self.ParentLibrary is not None:
   424             extra_params = self.ParentLibrary.GetModuleExtraParams(vendor, product_code, revision_number)
   441             extra_params = self.ParentLibrary.GetModuleExtraParams(vendor, product_code, revision_number)
   425         else:
   442         else:
   426             extra_params = {}
   443             extra_params = {}
   427         
   444         
   428         extra_params.update(self.ModulesExtraParams.get(tuple([vendor, product_code, revision_number]), {}))
   445         extra_params.update(self.ModulesExtraParams.get((vendor, product_code, revision_number), {}))
   429         
   446         
   430         for param, param_infos in self.MODULES_EXTRA_PARAMS:
   447         for param, param_infos in self.MODULES_EXTRA_PARAMS:
   431             extra_params.setdefault(param, param_infos["default"])
   448             extra_params.setdefault(param, param_infos["default"])
   432         
   449         
   433         return extra_params
   450         return extra_params