From a84a95b77d478b28a3bca98dc1fe2f8ad70e2f5f Mon Sep 17 00:00:00 2001 From: Florian Dobisch Date: Sun, 21 Jan 2024 18:33:58 +0100 Subject: [PATCH] add rust-enum generator --- pinout_generator_result.py | 2 +- pinout_plugin.py | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/pinout_generator_result.py b/pinout_generator_result.py index 484bac8..1a59267 100644 --- a/pinout_generator_result.py +++ b/pinout_generator_result.py @@ -40,7 +40,7 @@ def __init__( self, parent ): bSizer4.Add( self.m_staticText11, 0, wx.ALIGN_CENTER|wx.ALL, 5 ) - output_formatChoices = [ u"List", u"CSV", u"HTML table", u"Markdown table", u"C/C++ code (#define)", u"C/C++ code (enum)", u"Python (dict)", u"WireViz ", u"FPGA (XDC format)", u"FPGA (PDC format)" ] + output_formatChoices = [ u"List", u"CSV", u"HTML table", u"Markdown table", u"C/C++ code (#define)", u"C/C++ code (enum)", u"Python (dict)", u"WireViz ", u"FPGA (XDC format)", u"FPGA (PDC format)", u"Rust (enum)" ] self.output_format = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, output_formatChoices, 0 ) self.output_format.SetSelection( 0 ) bSizer4.Add( self.output_format, 0, wx.ALL, 5 ) diff --git a/pinout_plugin.py b/pinout_plugin.py index 8a56366..bd9cb29 100644 --- a/pinout_plugin.py +++ b/pinout_plugin.py @@ -18,7 +18,8 @@ 'python_dict':6, 'wireviz':7, 'fpga_xdc':8, - 'fpga_pdc':9 + 'fpga_pdc':9, + 'rust':10 } class PinoutDialog(pinout_generator_result.PinoutDialog): @@ -128,6 +129,8 @@ def set_output(self, selection): output_formater = self.xdc_format elif selection == SELECTOR['fpga_pdc']: output_formater = self.pdc_format + elif selection == SELECTOR['rust']: + output_formater = self.rust_format # checks for format n for component in self.footprint_selection: @@ -270,6 +273,21 @@ def pdc_format(self, component): output += "set_io "+var_name+" -pinname "+pad.GetNumber()+" -fixed yes"+"\n" return output + def rust_format(self, component): + added_vars = [] + output = "// Pinout generated for "+component.GetReference()+" ("+component.GetValue()+")\n" + output = "pub enum " + component.GetReference() + " {\n" + pinout = get_pins(component) + for pad in pinout: + var_name = str_to_C_variable("pin_" + pad.GetNetname()) + if var_name in added_vars: + output += "//" + if pad_is_connected(pad) and not (pad_is_power(pad) or pad_is_passive(pad)): + output += "\t" + var_name+" = "+pad.GetNumber()+",\n" + added_vars.append(var_name) + output += "}\n" + return output + def Run(self): # Look for selected FP