28 #include <wx/config.h> 54 const std::array<std::string, 4> att_names = {
"att_pi",
"att_tee",
55 "att_bridge",
"att_splitter" };
57 for(
const auto& att_name : att_names )
59 std::string path =
"attenuators." + att_name;
132 const std::array<std::string, 8> transline_names = {
"MicroStrip",
"CoPlanar",
"GrCoPlanar",
133 "RectWaveGuide",
"Coax",
"Coupled_MicroStrip",
"StripLine",
"TwistedPair" };
135 for(
const auto&
name : transline_names )
140 std::string path =
"trans_line." +
name +
".";
206 ret &= fromLegacy<int>( aCfg,
"BrdClass_selection",
"board_class_units" );
207 ret &= fromLegacy<int>( aCfg,
"CC_selection",
"color_code_tolerance" );
208 ret &= fromLegacy<int>( aCfg,
"Page_selection",
"last_page" );
210 ret &= fromLegacy<int>( aCfg,
"Att_selection",
"attenuators.type" );
214 const std::array<std::string, 4> att_names = {
"att_pi",
"att_tee",
215 "att_bridge",
"att_splitter" };
218 for(
const auto& att : att_names )
220 aCfg->SetPath(
"Attenuators/" + att );
221 ptr.push_back( att );
223 if( aCfg->Read(
"Attenuation", &val ) )
224 ( *
this )[ptr][
"attenuation"] = val;
226 if( aCfg->Read(
"Zin", &val ) )
227 ( *
this )[ptr][
"zin"] = val;
229 if( aCfg->Read(
"Zout", &val ) )
230 ( *
this )[ptr][
"zout"] = val;
233 aCfg->SetPath(
"../.." );
237 ret &= fromLegacy<int>( aCfg,
"ElectSpacing_selection",
"electrical.spacing_units" );
238 ret &=
fromLegacyString( aCfg,
"ElectSpacing_voltage",
"electrical.spacing_voltage" );
245 ret &=
fromLegacyString( aCfg,
"RegulName",
"regulators.selected_regulator" );
246 ret &= fromLegacy<int>( aCfg,
"RegulType",
"regulators.type" );
247 ret &= fromLegacy<int>( aCfg,
"RegulLastParam",
"regulators.last_param" );
252 ret &= fromLegacy<int>( aCfg,
"TW_Track_Len_Unit",
"track_width.track_len_units" );
253 ret &=
fromLegacyString( aCfg,
"TW_Resistivity",
"track_width.resistivity" );
254 ret &=
fromLegacyString( aCfg,
"TW_ExtTrack_Width",
"track_width.ext_track_width" );
255 ret &= fromLegacy<int>( aCfg,
"TW_ExtTrack_Width_Unit",
"track_width.ext_track_width_units" );
256 ret &=
fromLegacyString( aCfg,
"TW_ExtTrack_Thickness",
"track_width.ext_track_thickness" );
257 ret &= fromLegacy<int>( aCfg,
"TW_ExtTrack_Thickness_Unit",
258 "track_width.ext_track_thickness_units" );
259 ret &=
fromLegacyString( aCfg,
"TW_IntTrack_Width",
"track_width.int_track_width" );
260 ret &= fromLegacy<int>( aCfg,
"TW_IntTrack_Width_Unit",
"track_width.int_track_width_units" );
261 ret &=
fromLegacyString( aCfg,
"TW_IntTrack_Thickness",
"track_width.int_track_thickness" );
262 ret &= fromLegacy<int>( aCfg,
"TW_IntTrack_Thickness_Unit",
263 "track_width.int_track_thickness_units" );
265 ret &= fromLegacy<int>( aCfg,
"Transline_selection",
"trans_line.selection" );
273 const std::array<std::string, 8> transline_names = {
"MicroStrip",
"CoPlanar",
"GrCoPlanar",
274 "RectWaveGuide",
"Coax",
"Coupled_MicroStrip",
"StripLine",
"TwistedPair" };
276 for(
const auto&
name : transline_names )
279 aCfg->SetPath(
name );
280 ptr.push_back(
name );
282 while( aCfg->GetNextEntry( key, index ) )
286 dest.Replace(
"translineprm", wxEmptyString );
288 if( dest.EndsWith(
"unit" ) )
290 dest.Replace(
"unit", wxEmptyString );
291 aCfg->Read( key, &units );
292 ptr.push_back(
"units" );
294 ( *this )[ptr].push_back( { { dest.ToStdString(), units } } );
300 aCfg->Read( key, &value );
301 ptr.push_back(
"values" );
303 ( *this )[ptr].push_back( { { dest.ToStdString(), value } } );
310 aCfg->SetPath(
".." );
315 ret &= fromLegacy<int>( aCfg,
"VS_Hole_Dia_Unit",
"via_size.hole_diameter_units" );
316 ret &=
fromLegacyString( aCfg,
"VS_Plating_Thickness",
"via_size.thickness" );
317 ret &= fromLegacy<int>( aCfg,
"VS_Plating_Thickness_Unit",
"via_size.thickness_units" );
319 ret &= fromLegacy<int>( aCfg,
"VS_Via_Length_Unit",
"via_size.length_units" );
321 ret &= fromLegacy<int>( aCfg,
"VS_Pad_Dia_Unit",
"via_size.pad_diameter_units" );
322 ret &=
fromLegacyString( aCfg,
"VS_Clearance_Dia",
"via_size.clearance_diameter" );
323 ret &= fromLegacy<int>( aCfg,
"VS_Clearance_Dia_Unit",
324 "via_size.clearance_diameter_units" );
326 "via_size.characteristic_impedance" );
327 ret &= fromLegacy<int>( aCfg,
"VS_Characteristic_Impedance_Unit",
328 "via_size.characteristic_impedance_units" );
330 ret &=
fromLegacyString( aCfg,
"VS_Resistivity",
"via_size.plating_resistivity" );
331 ret &=
fromLegacyString( aCfg,
"VS_Permittivity",
"via_size.permittivity" );
332 ret &=
fromLegacyString( aCfg,
"VS_Temperature_Differential",
"via_size.temp_rise" );
333 ret &=
fromLegacyString( aCfg,
"VS_Pulse_Rise_Time",
"via_size.pulse_rise_time" );
std::vector< PARAM_BASE * > m_params
The list of parameters (owned by this object)
int ext_track_thickness_units
virtual bool MigrateFromLegacy(wxConfigBase *aCfg) override
Migrates from wxConfig to JSON-based configuration.
std::map< std::string, TL_PARAM_MAP > param_values
Transline parameters, per transline type.
Represents a map of <std::string, Value>.
wxString clearance_diameter
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.
wxString selected_regulator
int int_track_width_units
std::map< std::string, TL_PARAM_UNITS_MAP > param_units
Transline parameter units selections, per transline type.
PCB_CALCULATOR_SETTINGS()
wxString ext_track_thickness
wxString plating_resistivity
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
const int pcbCalculatorSchemaVersion
! Update the schema version whenever a migration is required
ATTENUATORS m_Attenuators
int characteristic_impedance_units
std::unordered_map< std::string, ATTENUATOR > attenuators
wxString int_track_thickness
std::map< std::string, int > TL_PARAM_UNITS_MAP
Map of TRANSLINE_PRM id to units selection.
int int_track_thickness_units
bool fromLegacyString(wxConfigBase *aConfig, const std::string &aKey, const std::string &aDest)
Translates a legacy wxConfig string value to a given JSON pointer value.
wxString characteristic_impedance
int ext_track_width_units
int clearance_diameter_units
TRANSMISSION_LINE m_TransLine
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.