76 const std::array<std::string, 4> att_names = {
"att_pi",
"att_tee",
77 "att_bridge",
"att_splitter" };
79 for(
const auto& att_name : att_names )
81 std::string path =
"attenuators." + att_name;
82 m_Attenuators.attenuators[ att_name ] = ATTENUATOR();
83 ATTENUATOR* att = &m_Attenuators.attenuators[ att_name ];
85 m_params.emplace_back( new PARAM<double>( path +
".attenuation", &att->attenuation, 6.0 ) );
86 m_params.emplace_back( new PARAM<double>( path +
".zin", &att->zin, 50.0 ) );
87 m_params.emplace_back( new PARAM<double>( path +
".zout", &att->zout, 50.0 ) );
248 const std::array<std::string, 9> transline_names = {
"MicroStrip",
"CoPlanar",
"GrCoPlanar",
249 "RectWaveGuide",
"Coax",
"Coupled_MicroStrip",
"Coupled_Stripline",
"StripLine",
252 for(
const auto&
name : transline_names )
254 m_TransLine.param_values[ name ] = TL_PARAM_MAP();
255 m_TransLine.param_units[ name ] = TL_PARAM_UNITS_MAP();
257 std::string path =
"trans_line." + name +
".";
259 m_params.emplace_back( new PARAM_MAP<double>( path +
"values",
260 &m_TransLine.param_values.at( name ), {} ) );
268 &m_ViaSize.hole_diameter,
"0.4" ) );
270 m_params.emplace_back(
new PARAM<int>(
"via_size.hole_diameter_units",
271 &m_ViaSize.hole_diameter_units, 0 ) );
274 &m_ViaSize.thickness,
"0.035" ) );
276 m_params.emplace_back(
new PARAM<int>(
"via_size.thickness_units",
277 &m_ViaSize.thickness_units, 0 ) );
280 &m_ViaSize.length,
"1.6" ) );
282 m_params.emplace_back(
new PARAM<int>(
"via_size.length_units", &m_ViaSize.length_units, 0 ) );
285 &m_ViaSize.pad_diameter,
"0.6" ) );
287 m_params.emplace_back(
new PARAM<int>(
"via_size.pad_diameter_units",
288 &m_ViaSize.pad_diameter_units, 0 ) );
290 m_params.emplace_back(
new PARAM<wxString>(
"via_size.clearance_diameter",
291 &m_ViaSize.clearance_diameter,
"1.0" ) );
293 m_params.emplace_back(
new PARAM<int>(
"via_size.clearance_diameter_units",
294 &m_ViaSize.clearance_diameter_units, 0 ) );
296 m_params.emplace_back(
new PARAM<wxString>(
"via_size.characteristic_impedance",
297 &m_ViaSize.characteristic_impedance,
"50" ) );
299 m_params.emplace_back(
new PARAM<int>(
"via_size.characteristic_impedance_units",
300 &m_ViaSize.characteristic_impedance_units, 0 ) );
302 m_params.emplace_back(
new PARAM<wxString>(
"via_size.applied_current",
303 &m_ViaSize.applied_current,
"1" ) );
305 m_params.emplace_back(
new PARAM<wxString>(
"via_size.plating_resistivity",
306 &m_ViaSize.plating_resistivity,
"1.72e-8" ) );
309 &m_ViaSize.permittivity,
"4.5" ) );
312 &m_ViaSize.temp_rise,
"10" ) );
314 m_params.emplace_back(
new PARAM<wxString>(
"via_size.pulse_rise_time",
315 &m_ViaSize.pulse_rise_time,
"1" ) );
317 m_params.emplace_back(
new PARAM<wxString>(
"corrosion_table.threshold_voltage",
318 &m_CorrosionTable.threshold_voltage,
"0" ) );
320 m_params.emplace_back(
new PARAM<bool>(
"corrosion_table.show_symbols",
321 &m_CorrosionTable.show_symbols,
true ) );
329 ret &=
fromLegacy<int>( aCfg,
"BrdClass_selection",
"board_class_units" );
330 ret &=
fromLegacy<int>( aCfg,
"CC_selection",
"color_code_tolerance" );
336 nlohmann::json::json_pointer ptr =
339 const std::array<std::string, 4> att_names = {
"att_pi",
"att_tee",
340 "att_bridge",
"att_splitter" };
343 for(
const auto& att : att_names )
345 aCfg->SetPath(
"Attenuators/" + att );
346 ptr.push_back( att );
348 if( aCfg->Read(
"Attenuation", &val ) )
349 ( *m_internals )[ptr][
"attenuation"] = val;
351 if( aCfg->Read(
"Zin", &val ) )
352 ( *m_internals )[ptr][
"zin"] = val;
354 if( aCfg->Read(
"Zout", &val ) )
355 ( *m_internals )[ptr][
"zout"] = val;
358 aCfg->SetPath(
"../.." );
362 ret &=
fromLegacy<int>( aCfg,
"ElectSpacing_selection",
"electrical.spacing_units" );
363 ret &=
fromLegacyString( aCfg,
"ElectSpacing_voltage",
"electrical.spacing_voltage" );
370 ret &=
fromLegacyString( aCfg,
"RegulName",
"regulators.selected_regulator" );
372 ret &=
fromLegacy<int>( aCfg,
"RegulLastParam",
"regulators.last_param" );
377 ret &=
fromLegacy<int>( aCfg,
"TW_Track_Len_Unit",
"track_width.track_len_units" );
378 ret &=
fromLegacyString( aCfg,
"TW_Resistivity",
"track_width.resistivity" );
379 ret &=
fromLegacyString( aCfg,
"TW_ExtTrack_Width",
"track_width.ext_track_width" );
380 ret &=
fromLegacy<int>( aCfg,
"TW_ExtTrack_Width_Unit",
"track_width.ext_track_width_units" );
381 ret &=
fromLegacyString( aCfg,
"TW_ExtTrack_Thickness",
"track_width.ext_track_thickness" );
383 "track_width.ext_track_thickness_units" );
384 ret &=
fromLegacyString( aCfg,
"TW_IntTrack_Width",
"track_width.int_track_width" );
385 ret &=
fromLegacy<int>( aCfg,
"TW_IntTrack_Width_Unit",
"track_width.int_track_width_units" );
386 ret &=
fromLegacyString( aCfg,
"TW_IntTrack_Thickness",
"track_width.int_track_thickness" );
388 "track_width.int_track_thickness_units" );
390 ret &=
fromLegacy<int>( aCfg,
"Transline_selection",
"trans_line.selection" );
393 nlohmann::json::json_pointer ptr =
400 const std::array<std::string, 9> transline_names = {
"MicroStrip",
"CoPlanar",
"GrCoPlanar",
401 "RectWaveGuide",
"Coax",
"Coupled_MicroStrip",
"Coupled_Stripline",
"StripLine",
404 for(
const auto&
name : transline_names )
407 aCfg->SetPath(
name );
408 ptr.push_back(
name );
410 while( aCfg->GetNextEntry( key,
index ) )
414 dest.Replace(
"translineprm", wxEmptyString );
416 if( dest.EndsWith(
"unit" ) )
418 dest.Replace(
"unit", wxEmptyString );
419 aCfg->Read( key, &units );
420 ptr.push_back(
"units" );
422 ( *m_internals )[ptr].push_back( { { dest.ToStdString(), units } } );
428 aCfg->Read( key, &value );
429 ptr.push_back(
"values" );
431 ( *m_internals )[ptr].push_back( { { dest.ToStdString(), value } } );
438 aCfg->SetPath(
".." );
443 ret &=
fromLegacy<int>( aCfg,
"VS_Hole_Dia_Unit",
"via_size.hole_diameter_units" );
444 ret &=
fromLegacyString( aCfg,
"VS_Plating_Thickness",
"via_size.thickness" );
445 ret &=
fromLegacy<int>( aCfg,
"VS_Plating_Thickness_Unit",
"via_size.thickness_units" );
447 ret &=
fromLegacy<int>( aCfg,
"VS_Via_Length_Unit",
"via_size.length_units" );
449 ret &=
fromLegacy<int>( aCfg,
"VS_Pad_Dia_Unit",
"via_size.pad_diameter_units" );
450 ret &=
fromLegacyString( aCfg,
"VS_Clearance_Dia",
"via_size.clearance_diameter" );
452 "via_size.clearance_diameter_units" );
454 "via_size.characteristic_impedance" );
456 "via_size.characteristic_impedance_units" );
458 ret &=
fromLegacyString( aCfg,
"VS_Resistivity",
"via_size.plating_resistivity" );
459 ret &=
fromLegacyString( aCfg,
"VS_Permittivity",
"via_size.permittivity" );
460 ret &=
fromLegacyString( aCfg,
"VS_Temperature_Differential",
"via_size.temp_rise" );
461 ret &=
fromLegacyString( aCfg,
"VS_Pulse_Rise_Time",
"via_size.pulse_rise_time" );