52 const std::array<std::string, 4> att_names = {
"att_pi",
"att_tee",
53 "att_bridge",
"att_splitter" };
55 for(
const auto& att_name : att_names )
57 std::string path =
"attenuators." + att_name;
58 m_Attenuators.attenuators[ att_name ] = ATTENUATOR();
59 ATTENUATOR* att = &m_Attenuators.attenuators[ att_name ];
61 m_params.emplace_back( new PARAM<double>( path +
".attenuation", &att->attenuation, 6.0 ) );
62 m_params.emplace_back( new PARAM<double>( path +
".zin", &att->zin, 50.0 ) );
63 m_params.emplace_back( new PARAM<double>( path +
".zout", &att->zout, 50.0 ) );
224 const std::array<std::string, 8> transline_names = {
"MicroStrip",
"CoPlanar",
"GrCoPlanar",
225 "RectWaveGuide",
"Coax",
"Coupled_MicroStrip",
"StripLine",
"TwistedPair" };
227 for(
const auto&
name : transline_names )
229 m_TransLine.param_values[ name ] = TL_PARAM_MAP();
230 m_TransLine.param_units[ name ] = TL_PARAM_UNITS_MAP();
232 std::string path =
"trans_line." + name +
".";
234 m_params.emplace_back( new PARAM_MAP<double>( path +
"values",
235 &m_TransLine.param_values.at( name ), {} ) );
243 &m_ViaSize.hole_diameter,
"0.4" ) );
245 m_params.emplace_back(
new PARAM<int>(
"via_size.hole_diameter_units",
246 &m_ViaSize.hole_diameter_units, 0 ) );
249 &m_ViaSize.thickness,
"0.035" ) );
251 m_params.emplace_back(
new PARAM<int>(
"via_size.thickness_units",
252 &m_ViaSize.thickness_units, 0 ) );
255 &m_ViaSize.length,
"1.6" ) );
257 m_params.emplace_back(
new PARAM<int>(
"via_size.length_units", &m_ViaSize.length_units, 0 ) );
260 &m_ViaSize.pad_diameter,
"0.6" ) );
262 m_params.emplace_back(
new PARAM<int>(
"via_size.pad_diameter_units",
263 &m_ViaSize.pad_diameter_units, 0 ) );
265 m_params.emplace_back(
new PARAM<wxString>(
"via_size.clearance_diameter",
266 &m_ViaSize.clearance_diameter,
"1.0" ) );
268 m_params.emplace_back(
new PARAM<int>(
"via_size.clearance_diameter_units",
269 &m_ViaSize.clearance_diameter_units, 0 ) );
271 m_params.emplace_back(
new PARAM<wxString>(
"via_size.characteristic_impedance",
272 &m_ViaSize.characteristic_impedance,
"50" ) );
274 m_params.emplace_back(
new PARAM<int>(
"via_size.characteristic_impedance_units",
275 &m_ViaSize.characteristic_impedance_units, 0 ) );
277 m_params.emplace_back(
new PARAM<wxString>(
"via_size.applied_current",
278 &m_ViaSize.applied_current,
"1" ) );
280 m_params.emplace_back(
new PARAM<wxString>(
"via_size.plating_resistivity",
281 &m_ViaSize.plating_resistivity,
"1.72e-8" ) );
284 &m_ViaSize.permittivity,
"4.5" ) );
287 &m_ViaSize.temp_rise,
"10" ) );
289 m_params.emplace_back(
new PARAM<wxString>(
"via_size.pulse_rise_time",
290 &m_ViaSize.pulse_rise_time,
"1" ) );
292 m_params.emplace_back(
new PARAM<wxString>(
"corrosion_table.threshold_voltage",
293 &m_CorrosionTable.threshold_voltage,
"0" ) );
295 m_params.emplace_back(
new PARAM<bool>(
"corrosion_table.show_symbols",
296 &m_CorrosionTable.show_symbols,
true ) );
304 ret &=
fromLegacy<int>( aCfg,
"BrdClass_selection",
"board_class_units" );
305 ret &=
fromLegacy<int>( aCfg,
"CC_selection",
"color_code_tolerance" );
311 nlohmann::json::json_pointer ptr =
314 const std::array<std::string, 4> att_names = {
"att_pi",
"att_tee",
315 "att_bridge",
"att_splitter" };
318 for(
const auto& att : att_names )
320 aCfg->SetPath(
"Attenuators/" + att );
321 ptr.push_back( att );
323 if( aCfg->Read(
"Attenuation", &val ) )
324 ( *m_internals )[ptr][
"attenuation"] = val;
326 if( aCfg->Read(
"Zin", &val ) )
327 ( *m_internals )[ptr][
"zin"] = val;
329 if( aCfg->Read(
"Zout", &val ) )
330 ( *m_internals )[ptr][
"zout"] = val;
333 aCfg->SetPath(
"../.." );
337 ret &=
fromLegacy<int>( aCfg,
"ElectSpacing_selection",
"electrical.spacing_units" );
338 ret &=
fromLegacyString( aCfg,
"ElectSpacing_voltage",
"electrical.spacing_voltage" );
345 ret &=
fromLegacyString( aCfg,
"RegulName",
"regulators.selected_regulator" );
347 ret &=
fromLegacy<int>( aCfg,
"RegulLastParam",
"regulators.last_param" );
352 ret &=
fromLegacy<int>( aCfg,
"TW_Track_Len_Unit",
"track_width.track_len_units" );
353 ret &=
fromLegacyString( aCfg,
"TW_Resistivity",
"track_width.resistivity" );
354 ret &=
fromLegacyString( aCfg,
"TW_ExtTrack_Width",
"track_width.ext_track_width" );
355 ret &=
fromLegacy<int>( aCfg,
"TW_ExtTrack_Width_Unit",
"track_width.ext_track_width_units" );
356 ret &=
fromLegacyString( aCfg,
"TW_ExtTrack_Thickness",
"track_width.ext_track_thickness" );
358 "track_width.ext_track_thickness_units" );
359 ret &=
fromLegacyString( aCfg,
"TW_IntTrack_Width",
"track_width.int_track_width" );
360 ret &=
fromLegacy<int>( aCfg,
"TW_IntTrack_Width_Unit",
"track_width.int_track_width_units" );
361 ret &=
fromLegacyString( aCfg,
"TW_IntTrack_Thickness",
"track_width.int_track_thickness" );
363 "track_width.int_track_thickness_units" );
365 ret &=
fromLegacy<int>( aCfg,
"Transline_selection",
"trans_line.selection" );
368 nlohmann::json::json_pointer ptr =
375 const std::array<std::string, 8> transline_names = {
"MicroStrip",
"CoPlanar",
"GrCoPlanar",
376 "RectWaveGuide",
"Coax",
"Coupled_MicroStrip",
"StripLine",
"TwistedPair" };
378 for(
const auto&
name : transline_names )
381 aCfg->SetPath(
name );
382 ptr.push_back(
name );
384 while( aCfg->GetNextEntry( key, index ) )
388 dest.Replace(
"translineprm", wxEmptyString );
390 if( dest.EndsWith(
"unit" ) )
392 dest.Replace(
"unit", wxEmptyString );
393 aCfg->Read( key, &units );
394 ptr.push_back(
"units" );
396 ( *m_internals )[ptr].push_back( { { dest.ToStdString(), units } } );
402 aCfg->Read( key, &value );
403 ptr.push_back(
"values" );
405 ( *m_internals )[ptr].push_back( { { dest.ToStdString(), value } } );
412 aCfg->SetPath(
".." );
417 ret &=
fromLegacy<int>( aCfg,
"VS_Hole_Dia_Unit",
"via_size.hole_diameter_units" );
418 ret &=
fromLegacyString( aCfg,
"VS_Plating_Thickness",
"via_size.thickness" );
419 ret &=
fromLegacy<int>( aCfg,
"VS_Plating_Thickness_Unit",
"via_size.thickness_units" );
421 ret &=
fromLegacy<int>( aCfg,
"VS_Via_Length_Unit",
"via_size.length_units" );
423 ret &=
fromLegacy<int>( aCfg,
"VS_Pad_Dia_Unit",
"via_size.pad_diameter_units" );
424 ret &=
fromLegacyString( aCfg,
"VS_Clearance_Dia",
"via_size.clearance_diameter" );
426 "via_size.clearance_diameter_units" );
428 "via_size.characteristic_impedance" );
430 "via_size.characteristic_impedance_units" );
432 ret &=
fromLegacyString( aCfg,
"VS_Resistivity",
"via_size.plating_resistivity" );
433 ret &=
fromLegacyString( aCfg,
"VS_Permittivity",
"via_size.permittivity" );
434 ret &=
fromLegacyString( aCfg,
"VS_Temperature_Differential",
"via_size.temp_rise" );
435 ret &=
fromLegacyString( aCfg,
"VS_Pulse_Rise_Time",
"via_size.pulse_rise_time" );