beremiz

d071efd2a94b
Parents ab7916df0de7
Children 6bd3f220b886
Move init code from variable to module
  • +23 -14
    LPCBeremiz.py
  • --- a/LPCBeremiz.py Fri Jun 04 13:09:35 2010 +0200
    +++ b/LPCBeremiz.py Fri Jun 04 13:47:02 2010 +0200
    @@ -144,13 +144,15 @@
    #include "iec_std_lib.h"
    #endif
    +%(declare_code)s
    +
    /* LPCBus plugin user variables definition */
    %(var_decl)s
    /* LPCBus plugin functions */
    int __init_%(location_str)s(int argc,char **argv)
    {
    -%(declare_code)s
    +%(init_code)s
    return 0;
    }
    @@ -288,13 +290,14 @@
    code_str = {"location_str": location_str,
    "var_decl": "",
    "declare_code": "",
    + "init_code": "",
    "retrieve_code": "",
    "publish_code": "",
    }
    - for variable in _GetVariables(self):
    - if variable["declare"] != "":
    - code_str["declare_code"] += " %s\n" % variable["declare"]
    + for module in _GetModuleChildren(self):
    + if module["init"] != "":
    + code_str["init_code"] += " %s\n" % module["init"]
    # Adding variables
    vars = []
    @@ -337,7 +340,7 @@
    if var["Publish"] != "":
    code_str["publish_code"] += " " + var["Publish"] % ("*" + var["location"]) + "\n"
    - Gen_Module_path = os.path.join(buildpath, "Module_%s.c"%location_str)
    + Gen_Module_path = os.path.join(buildpath, "Bus_%s.c"%location_str)
    module = open(Gen_Module_path,'w')
    module.write(BUS_TEXT % code_str)
    module.close()
    @@ -1232,7 +1235,7 @@
    self.PluginRoot.PluggedChilds["LPCBus"].remove(bus)
    self.RestartTimer()
    - def AddModule(self, parent, iec_channel, name, icon=None):
    + def AddModule(self, parent, iec_channel, name, icode, icon=None):
    module = self.PluginRoot.GetChildByIECLocation(parent)
    if module is None:
    return "Error: No parent found\n"
    @@ -1245,6 +1248,7 @@
    "type": LOCATION_MODULE,
    "IEC_Channel": iec_channel,
    "icon": icon,
    + "init": icode,
    "children": []})
    self.RestartTimer()
    @@ -1276,7 +1280,13 @@
    self.PluginRoot.UpdateProjectVariableLocation(".".join(map(str, old_iec_location)), ".".join(map(str, old_iec_location[:1] + (new_iec_channel,))))
    module["IEC_Channel"] = new_iec_channel
    self.RestartTimer()
    -
    +
    + def ChangeModuleInitCode(self, iec_location, icode):
    + module = self.PluginRoot.GetChildByIECLocation(iec_location)
    + if module is None:
    + return "Error: No module found\n"
    + module["init"] = icode
    +
    def RemoveModule(self, parent, iec_channel):
    module = self.PluginRoot.GetChildByIECLocation(parent)
    if module is None:
    @@ -1301,7 +1311,7 @@
    "children": []})
    self.RestartTimer()
    - def AddVariable(self, parent, location, name, direction, type, dcode, rcode, pcode, description=""):
    + def AddVariable(self, parent, location, name, direction, type, rcode, pcode, description=""):
    module = self.PluginRoot.GetChildByIECLocation(parent)
    if module is None:
    return "Error: No parent found\n"
    @@ -1315,12 +1325,11 @@
    "type": LOCATION_TYPES[direction],
    "IEC_type": type,
    "description": description,
    - "declare": dcode,
    "retrieve": rcode,
    "publish": pcode})
    self.RestartTimer()
    - def ChangeVariableParams(self, parent, location, new_name, new_direction, new_type, new_dcode, new_rcode, new_pcode, new_description=None):
    + def ChangeVariableParams(self, parent, location, new_name, new_direction, new_type, new_rcode, new_pcode, new_description=None):
    module = self.PluginRoot.GetChildByIECLocation(parent)
    if module is None:
    return "Error: No parent found\n"
    @@ -1337,7 +1346,6 @@
    variable["name"] = new_name
    variable["type"] = LOCATION_TYPES[new_direction]
    variable["IEC_type"] = new_type
    - variable["declare"] = new_dcode
    variable["retrieve"] = new_rcode
    variable["publish"] = new_pcode
    if new_description is not None:
    @@ -1434,13 +1442,14 @@
    "RenameBus": ([int, str], 0),
    "ChangeBusIECChannel": ([int, int], 0),
    "RemoveBus": ([int], 0),
    - "AddModule": ([location, int, str, str], 1),
    + "AddModule": ([location, int, str, str, str], 1),
    "RenameModule": ([location, str], 0),
    "ChangeModuleIECChannel": ([location, int], 0),
    + "ChangeModuleInitCode": ([location, str], 0),
    "RemoveModule": ([location, int], 0),
    "StartGroup": ([location, str, str], 1),
    - "AddVariable": ([location, location, str, str, str, str, str, str, str], 1),
    - "ChangeVariableParams": ([location, location, str, str, str, str, str, str, str], 1),
    + "AddVariable": ([location, location, str, str, str, str, str, str], 1),
    + "ChangeVariableParams": ([location, location, str, str, str, str, str, str], 1),
    "RemoveVariable": ([location, location], 0)}.iteritems():
    setattr(LPCBeremiz_Cmd, "do_%s" % function, GetCmdFunction(function, arg_types, opt))