KiCad PCB EDA Suite
pcb_calculator_settings.h
Go to the documentation of this file.
1 /*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23 
24 #ifndef _PCB_CALCULATOR_SETTINGS_H
25 #define _PCB_CALCULATOR_SETTINGS_H
26 
27 #include <array>
28 #include <unordered_map>
29 #include <settings/app_settings.h>
30 
32 {
33 public:
34  struct ATTENUATOR
35  {
36  double attenuation;
37  double zin;
38  double zout;
39  };
40 
41  struct ATTENUATORS
42  {
43  int type;
44  std::unordered_map<std::string, ATTENUATOR> attenuators;
45  };
46 
47  struct ELECTRICAL
48  {
50  wxString spacing_voltage;
51  };
52 
53  struct REGULATORS
54  {
55  wxString r1;
56  wxString r2;
57  wxString vref;
58  wxString vout;
59  wxString data_file;
61  int type;
63  };
64 
65  struct TRACK_WIDTH
66  {
67  wxString current;
68  wxString delta_tc;
69  wxString track_len;
71  wxString resistivity;
72  wxString ext_track_width;
76  wxString int_track_width;
80  };
81 
83  typedef std::map<std::string, double> TL_PARAM_MAP;
84 
86  typedef std::map<std::string, int> TL_PARAM_UNITS_MAP;
87 
89  {
90  int type;
91 
93  std::map<std::string, TL_PARAM_MAP> param_values;
94 
96  std::map<std::string, TL_PARAM_UNITS_MAP> param_units;
97  };
98 
99  struct VIA_SIZE
100  {
101  wxString hole_diameter;
103  wxString thickness;
105  wxString length;
107  wxString pad_diameter;
113  wxString applied_current;
115  wxString permittivity;
116  wxString temp_rise;
117  wxString pulse_rise_time;
118  };
119 
121 
123 
124  virtual bool MigrateFromLegacy( wxConfigBase* aLegacyConfig ) override;
125 
126 protected:
127  virtual std::string getLegacyFrameName() const override { return "pcb_calculator"; }
128 
129 public:
131 
133 
135 
137 
139 
141 
143 
145 
147 };
148 
149 #endif
std::map< std::string, TL_PARAM_MAP > param_values
Transline parameters, per transline type.
virtual bool MigrateFromLegacy(wxConfigBase *aLegacyConfig) override
Migrates from wxConfig to JSON-based configuration.
std::map< std::string, double > TL_PARAM_MAP
Map of TRANSLINE_PRM id to value.
std::map< std::string, TL_PARAM_UNITS_MAP > param_units
Transline parameter units selections, per transline type.
virtual std::string getLegacyFrameName() const override
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
std::unordered_map< std::string, ATTENUATOR > attenuators
std::map< std::string, int > TL_PARAM_UNITS_MAP
Map of TRANSLINE_PRM id to units selection.