KiCad PCB EDA Suite
Loading...
Searching...
No Matches
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 The 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, see <https://www.gnu.org/licenses/>.
18*/
19
20#ifndef _PCB_CALCULATOR_SETTINGS_H
21#define _PCB_CALCULATOR_SETTINGS_H
22
23#include <array>
24#include <unordered_map>
26
27// Deafult value for TI LM317
28#define DEFAULT_REGULATOR_RESTOL "1"
29#define DEFAULT_REGULATOR_R1 "0.240"
30#define DEFAULT_REGULATOR_R2 "0.720"
31#define DEFAULT_REGULATOR_VREF_MIN "1.20"
32#define DEFAULT_REGULATOR_VREF_TYP "1.25"
33#define DEFAULT_REGULATOR_VREF_MAX "1.30"
34#define DEFAULT_REGULATOR_VOUT_TYP "5"
35#define DEFAULT_REGULATOR_IADJ_TYP "50"
36#define DEFAULT_REGULATOR_IADJ_MAX "100"
37
39{
40public:
42 {
44 double zin;
45 double zout;
46 };
47
49 {
50 int type;
51 std::unordered_map<std::string, ATTENUATOR> attenuators;
52 };
53
70
72 {
73 wxString resTol;
74 wxString r1;
75 wxString r2;
76 wxString vrefMin;
77 wxString vrefTyp;
78 wxString vrefMax;
79 wxString voutTyp;
80 wxString iadjTyp;
81 wxString iadjMax;
82 wxString data_file;
84 int type;
86 };
87
99
111
128
130 typedef std::map<std::string, double> TL_PARAM_MAP;
131
133 typedef std::map<std::string, int> TL_PARAM_UNITS_MAP;
134
136 {
137 int type = 0;
138
141
143 wxString spec_frequency = wxT( "1" );
144
147
153
155 double soldermask_thickness = 20.0e-6;
156
159
162 double soldermask_tand = 0.025;
163
167
169 std::map<std::string, TL_PARAM_MAP> param_values;
170
172 std::map<std::string, TL_PARAM_UNITS_MAP> param_units;
173 };
174
195
197 {
200 };
201
203
205
206 virtual bool MigrateFromLegacy( wxConfigBase* aLegacyConfig ) override;
207
208protected:
209 virtual std::string getLegacyFrameName() const override { return "pcb_calculator"; }
210
211public:
213
215
217
219
221
223
225
227
229
231
233
235};
236
237#endif
APP_SETTINGS_BASE(const std::string &aFilename, int aSchemaVersion)
std::map< std::string, double > TL_PARAM_MAP
Map of TRANSLINE_PRM id to value.
virtual std::string getLegacyFrameName() const override
virtual bool MigrateFromLegacy(wxConfigBase *aLegacyConfig) override
Migrates from wxConfig to JSON-based configuration.
std::map< std::string, int > TL_PARAM_UNITS_MAP
Map of TRANSLINE_PRM id to units selection.
std::unordered_map< std::string, ATTENUATOR > attenuators
int soldermask_present
Soldermask / LPI overlay correction.
double soldermask_epsilonr
Mask relative permittivity. 3.5 is representative of green LPI.
int spec_frequency_unit
UNIT_SELECTOR_FREQUENCY index: 0 = GHz, 1 = MHz, 2 = kHz, 3 = Hz.
std::map< std::string, TL_PARAM_MAP > param_values
Transline parameters, per transline type.
int dielectric_model
Dielectric dispersion model. 0 = CONSTANT (default), 1 = Djordjevic-Sarkar causal.
wxString spec_frequency
Spec frequency at which EpsilonR and TanD are specified (user-entered text).
double soldermask_thickness
Cured mask thickness in metres. 20 um is typical for modern green LPI.
std::map< std::string, TL_PARAM_UNITS_MAP > param_units
Transline parameter units selections, per transline type.