Fixes to map pin-to-pin erorrs to new Warning/Error strucutre.
This commit is contained in:
parent
0c20c0b4af
commit
9d6b987ecc
|
@ -29,18 +29,22 @@
|
||||||
|
|
||||||
PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent, RC_ITEM& aDummyItem,
|
PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent, RC_ITEM& aDummyItem,
|
||||||
std::map<int, int>& aSeverities,
|
std::map<int, int>& aSeverities,
|
||||||
int aFirstErrorCode, int aLastErrorCode ) :
|
int aFirstErrorCode, int aLastErrorCode,
|
||||||
|
int aPinMapSpecialCase ) :
|
||||||
wxPanel( aParent->GetTreebook() ),
|
wxPanel( aParent->GetTreebook() ),
|
||||||
m_severities( aSeverities ),
|
m_severities( aSeverities ),
|
||||||
m_firstErrorCode( aFirstErrorCode ),
|
m_firstErrorCode( aFirstErrorCode ),
|
||||||
m_lastErrorCode( aLastErrorCode )
|
m_lastErrorCode( aLastErrorCode ),
|
||||||
|
m_pinMapSpecialCase( aPinMapSpecialCase )
|
||||||
{
|
{
|
||||||
wxString severities[] = { _( "Error" ), _( "Warning" ), _( "Ignore" ) };
|
wxString severities[] = { _( "Error" ), _( "Warning" ), _( "Ignore" ) };
|
||||||
|
int severityCount = sizeof( severities ) / sizeof( wxString );
|
||||||
int baseID = 1000;
|
int baseID = 1000;
|
||||||
wxBoxSizer* panelSizer = new wxBoxSizer( wxVERTICAL );
|
wxBoxSizer* panelSizer = new wxBoxSizer( wxVERTICAL );
|
||||||
wxScrolledWindow* scrollWin = new wxScrolledWindow( this, wxID_ANY,
|
wxScrolledWindow* scrollWin = new wxScrolledWindow( this, wxID_ANY,
|
||||||
wxDefaultPosition, wxDefaultSize,
|
wxDefaultPosition, wxDefaultSize,
|
||||||
wxTAB_TRAVERSAL | wxVSCROLL );
|
wxTAB_TRAVERSAL | wxVSCROLL );
|
||||||
|
|
||||||
scrollWin->SetScrollRate( 0, 5 );
|
scrollWin->SetScrollRate( 0, 5 );
|
||||||
|
|
||||||
wxFlexGridSizer* gridSizer = new wxFlexGridSizer( 0, 2, 0, 5 );
|
wxFlexGridSizer* gridSizer = new wxFlexGridSizer( 0, 2, 0, 5 );
|
||||||
|
@ -63,7 +67,7 @@ PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent, RC_ITEM&
|
||||||
wxPanel* radioPanel = new wxPanel( scrollWin );
|
wxPanel* radioPanel = new wxPanel( scrollWin );
|
||||||
wxBoxSizer* radioSizer = new wxBoxSizer( wxHORIZONTAL );
|
wxBoxSizer* radioSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
for( size_t i = 0; i < sizeof( severities ) / sizeof( wxString ); ++i )
|
for( size_t i = 0; i < severityCount; ++i )
|
||||||
{
|
{
|
||||||
m_buttonMap[ errorCode ][i] = new wxRadioButton( radioPanel,
|
m_buttonMap[ errorCode ][i] = new wxRadioButton( radioPanel,
|
||||||
baseID + errorCode * 10 + i,
|
baseID + errorCode * 10 + i,
|
||||||
|
@ -71,7 +75,7 @@ PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent, RC_ITEM&
|
||||||
wxDefaultPosition,
|
wxDefaultPosition,
|
||||||
wxDefaultSize,
|
wxDefaultSize,
|
||||||
i == 0 ? wxRB_GROUP : 0 );
|
i == 0 ? wxRB_GROUP : 0 );
|
||||||
radioSizer->Add( m_buttonMap[ errorCode ][i], 1, wxRIGHT | wxEXPAND, 25 );
|
radioSizer->Add( m_buttonMap[ errorCode ][i], 0, wxRIGHT | wxEXPAND, 30 );
|
||||||
}
|
}
|
||||||
|
|
||||||
radioPanel->SetSizer( radioSizer );
|
radioPanel->SetSizer( radioSizer );
|
||||||
|
@ -80,6 +84,42 @@ PANEL_SETUP_SEVERITIES::PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent, RC_ITEM&
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( m_pinMapSpecialCase >= 0 )
|
||||||
|
{
|
||||||
|
wxString pinMapSeverities[] = { _( "From Pin Conflicts Map" ), _( "" ), _( "Ignore" ) };
|
||||||
|
int errorCode = m_pinMapSpecialCase;
|
||||||
|
wxString msg = aDummyItem.GetErrorText( errorCode );
|
||||||
|
|
||||||
|
wxStaticText* errorLabel = new wxStaticText( scrollWin, wxID_ANY, msg + wxT( ":" ) );
|
||||||
|
gridSizer->Add( errorLabel, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 4 );
|
||||||
|
|
||||||
|
wxPanel* radioPanel = new wxPanel( scrollWin );
|
||||||
|
wxBoxSizer* radioSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
|
|
||||||
|
for( size_t i = 0; i < 3; ++i )
|
||||||
|
{
|
||||||
|
if( pinMapSeverities[i] == wxT( "" ) )
|
||||||
|
{
|
||||||
|
wxStaticText* spacer = new wxStaticText( radioPanel, wxID_ANY, wxT( "" ) );
|
||||||
|
radioSizer->Add( spacer, 0, wxRIGHT | wxEXPAND, 17 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_buttonMap[ errorCode ][i] = new wxRadioButton( radioPanel,
|
||||||
|
baseID + errorCode * 10 + i,
|
||||||
|
pinMapSeverities[i],
|
||||||
|
wxDefaultPosition,
|
||||||
|
wxDefaultSize,
|
||||||
|
i == 0 ? wxRB_GROUP : 0 );
|
||||||
|
radioSizer->Add( m_buttonMap[ errorCode ][i], 0, wxEXPAND );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
radioPanel->SetSizer( radioSizer );
|
||||||
|
radioPanel->Layout();
|
||||||
|
gridSizer->Add( radioPanel, 0, wxALIGN_CENTER_VERTICAL | wxALL | wxEXPAND, 4 );
|
||||||
|
}
|
||||||
|
|
||||||
scrollWin->SetSizer( gridSizer );
|
scrollWin->SetSizer( gridSizer );
|
||||||
scrollWin->Layout();
|
scrollWin->Layout();
|
||||||
gridSizer->Fit( scrollWin );
|
gridSizer->Fit( scrollWin );
|
||||||
|
@ -106,6 +146,14 @@ void PANEL_SETUP_SEVERITIES::ImportSettingsFrom( std::map<int, int>& aSettings )
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( m_pinMapSpecialCase >= 0 )
|
||||||
|
{
|
||||||
|
int newSeverity = aSettings[ m_pinMapSpecialCase ];
|
||||||
|
|
||||||
|
m_buttonMap[ m_pinMapSpecialCase ][0]->SetValue( newSeverity != RPT_SEVERITY_IGNORE );
|
||||||
|
m_buttonMap[ m_pinMapSpecialCase ][1]->SetValue( newSeverity == RPT_SEVERITY_IGNORE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,7 +161,7 @@ bool PANEL_SETUP_SEVERITIES::TransferDataToWindow()
|
||||||
{
|
{
|
||||||
for( int errorCode = m_firstErrorCode; errorCode <= m_lastErrorCode; ++errorCode )
|
for( int errorCode = m_firstErrorCode; errorCode <= m_lastErrorCode; ++errorCode )
|
||||||
{
|
{
|
||||||
if(! m_buttonMap[ errorCode ][0] ) // this entry does not actually exist
|
if( !m_buttonMap[ errorCode ][0] ) // this entry does not actually exist
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
switch( m_severities[ errorCode ] )
|
switch( m_severities[ errorCode ] )
|
||||||
|
@ -125,27 +173,47 @@ bool PANEL_SETUP_SEVERITIES::TransferDataToWindow()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( m_pinMapSpecialCase >= 0 )
|
||||||
|
{
|
||||||
|
int severity = m_severities[ m_pinMapSpecialCase ];
|
||||||
|
|
||||||
|
m_buttonMap[ m_pinMapSpecialCase ][0]->SetValue( severity != RPT_SEVERITY_IGNORE );
|
||||||
|
m_buttonMap[ m_pinMapSpecialCase ][2]->SetValue( severity == RPT_SEVERITY_IGNORE );
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool PANEL_SETUP_SEVERITIES::TransferDataFromWindow()
|
bool PANEL_SETUP_SEVERITIES::TransferDataFromWindow()
|
||||||
{
|
{
|
||||||
for( auto const& entry : m_buttonMap )
|
for( int errorCode = m_firstErrorCode; errorCode <= m_lastErrorCode; ++errorCode )
|
||||||
{
|
{
|
||||||
if( !entry.second[0] ) // this entry does not actually exist
|
if( !m_buttonMap[ errorCode ][0] ) // this entry does not actually exist
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int severity = RPT_SEVERITY_UNDEFINED;
|
int severity = RPT_SEVERITY_UNDEFINED;
|
||||||
|
|
||||||
if( entry.second[0]->GetValue() )
|
if( m_buttonMap[ errorCode ][0]->GetValue() )
|
||||||
severity = RPT_SEVERITY_ERROR;
|
severity = RPT_SEVERITY_ERROR;
|
||||||
else if( entry.second[1]->GetValue() )
|
else if( m_buttonMap[ errorCode ][1]->GetValue() )
|
||||||
severity = RPT_SEVERITY_WARNING;
|
severity = RPT_SEVERITY_WARNING;
|
||||||
else if( entry.second[2]->GetValue() )
|
else if( m_buttonMap[ errorCode ][2]->GetValue() )
|
||||||
severity = RPT_SEVERITY_IGNORE;
|
severity = RPT_SEVERITY_IGNORE;
|
||||||
|
|
||||||
m_severities[ entry.first ] = severity;
|
m_severities[ errorCode ] = severity;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( m_pinMapSpecialCase >= 0 )
|
||||||
|
{
|
||||||
|
int severity = RPT_SEVERITY_UNDEFINED;
|
||||||
|
|
||||||
|
if( m_buttonMap[ m_pinMapSpecialCase ][0]->GetValue() )
|
||||||
|
severity = RPT_SEVERITY_ERROR;
|
||||||
|
else if( m_buttonMap[ m_pinMapSpecialCase ][2]->GetValue() )
|
||||||
|
severity = RPT_SEVERITY_IGNORE;
|
||||||
|
|
||||||
|
m_severities[ m_pinMapSpecialCase ] = severity;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -37,15 +37,17 @@ class wxRadioBox;
|
||||||
class PANEL_SETUP_SEVERITIES : public wxPanel
|
class PANEL_SETUP_SEVERITIES : public wxPanel
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
std::map<int, int>& m_severities;
|
std::map<int, int>& m_severities;
|
||||||
int m_firstErrorCode;
|
int m_firstErrorCode;
|
||||||
int m_lastErrorCode;
|
int m_lastErrorCode;
|
||||||
|
int m_pinMapSpecialCase;
|
||||||
|
|
||||||
std::map<int, wxRadioButton*[4]> m_buttonMap; // map from DRC error code to button group
|
std::map<int, wxRadioButton*[4]> m_buttonMap; // map from DRC error code to button group
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent, RC_ITEM& aDummyItem,
|
PANEL_SETUP_SEVERITIES( PAGED_DIALOG* aParent, RC_ITEM& aDummyItem,
|
||||||
std::map<int, int>& aSeverities, int aFirstError, int aLastError );
|
std::map<int, int>& aSeverities, int aFirstError, int aLastError,
|
||||||
|
int aPinMapSpecialCase = -1 );
|
||||||
|
|
||||||
void ImportSettingsFrom( std::map<int, int>& aSettings );
|
void ImportSettingsFrom( std::map<int, int>& aSettings );
|
||||||
|
|
||||||
|
|
|
@ -416,29 +416,40 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||||
|
|
||||||
menu.AppendSeparator();
|
menu.AppendSeparator();
|
||||||
|
|
||||||
if( GetSeverity( rcItem->GetErrorCode() ) == RPT_SEVERITY_WARNING )
|
if( rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_WARNING
|
||||||
|
|| rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_ERROR )
|
||||||
{
|
{
|
||||||
msg.Printf( _( "Change severity to Error for all '%s' violations" ),
|
// Pin to pin severities edited through pin conflict map
|
||||||
rcItem->GetErrorText( rcItem->GetErrorCode() ),
|
}
|
||||||
_( "Violation severities can also be edited in the Board Setup... dialog" ) );
|
else if( GetSeverity( rcItem->GetErrorCode() ) == RPT_SEVERITY_WARNING )
|
||||||
menu.Append( 3, msg );
|
{
|
||||||
|
menu.Append( 4, wxString::Format( _( "Change severity to Error for all '%s' violations" ),
|
||||||
|
rcItem->GetErrorText( rcItem->GetErrorCode() ) ),
|
||||||
|
_( "Violation severities can also be edited in the Board Setup... dialog" ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
msg.Printf( _( "Change severity to Warning for all '%s' violations" ),
|
menu.Append( 5, wxString::Format( _( "Change severity to Warning for all '%s' violations" ),
|
||||||
rcItem->GetErrorText( rcItem->GetErrorCode() ),
|
rcItem->GetErrorText( rcItem->GetErrorCode() ) ),
|
||||||
_( "Violation severities can also be edited in the Board Setup... dialog" ) );
|
_( "Violation severities can also be edited in the Board Setup... dialog" ) );
|
||||||
menu.Append( 4, msg );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
msg.Printf( _( "Ignore all '%s' violations" ),
|
menu.Append( 6, wxString::Format( _( "Ignore all '%s' violations" ),
|
||||||
rcItem->GetErrorText( rcItem->GetErrorCode() ),
|
rcItem->GetErrorText( rcItem->GetErrorCode() ) ),
|
||||||
_( "Violations will not be checked or reported" ) );
|
_( "Violations will not be checked or reported" ) );
|
||||||
menu.Append( 5, msg );
|
|
||||||
|
|
||||||
menu.AppendSeparator();
|
menu.AppendSeparator();
|
||||||
|
|
||||||
menu.Append( 6, _( "Edit violation severities..." ), _( "Open the Schematic Setup... dialog" ) );
|
if( rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_WARNING
|
||||||
|
|| rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_ERROR )
|
||||||
|
{
|
||||||
|
menu.Append( 7, _( "Edit pin-to-pin conflict map..." ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
menu.Append( 8, _( "Edit violation severities..." ),
|
||||||
|
_( "Open the Schematic Setup... dialog" ) );
|
||||||
|
}
|
||||||
|
|
||||||
switch( GetPopupMenuSelectionFromUser( menu ) )
|
switch( GetPopupMenuSelectionFromUser( menu ) )
|
||||||
{
|
{
|
||||||
|
@ -462,7 +473,7 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||||
updateDisplayedCounts();
|
updateDisplayedCounts();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 4:
|
||||||
SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_ERROR );
|
SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_ERROR );
|
||||||
|
|
||||||
// Rebuild model and view
|
// Rebuild model and view
|
||||||
|
@ -470,7 +481,7 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||||
updateDisplayedCounts();
|
updateDisplayedCounts();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 5:
|
||||||
SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_WARNING );
|
SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_WARNING );
|
||||||
|
|
||||||
// Rebuild model and view
|
// Rebuild model and view
|
||||||
|
@ -478,10 +489,13 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||||
updateDisplayedCounts();
|
updateDisplayedCounts();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 6:
|
||||||
{
|
{
|
||||||
SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_IGNORE );
|
SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_IGNORE );
|
||||||
|
|
||||||
|
if( rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_ERROR )
|
||||||
|
SetSeverity( ERCE_PIN_TO_PIN_WARNING, RPT_SEVERITY_IGNORE );
|
||||||
|
|
||||||
SCH_SCREENS ScreenList;
|
SCH_SCREENS ScreenList;
|
||||||
ScreenList.DeleteMarkers( MARKER_BASE::MARKER_ERC, rcItem->GetErrorCode() );
|
ScreenList.DeleteMarkers( MARKER_BASE::MARKER_ERC, rcItem->GetErrorCode() );
|
||||||
|
|
||||||
|
@ -491,7 +505,11 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 7:
|
||||||
|
m_parent->DoShowSchematicSetupDialog( _( "Pin Conflicts Map" ) );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 8:
|
||||||
m_parent->DoShowSchematicSetupDialog( _( "Violation Severity" ) );
|
m_parent->DoShowSchematicSetupDialog( _( "Violation Severity" ) );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -606,7 +624,7 @@ bool DIALOG_ERC::writeReport( const wxString& aFullFileName )
|
||||||
|
|
||||||
total_count++;
|
total_count++;
|
||||||
|
|
||||||
switch( g_ErcSettings->m_Severities[ marker->GetRCItem()->GetErrorCode() ] )
|
switch( GetSeverity( marker->GetRCItem()->GetErrorCode() ) )
|
||||||
{
|
{
|
||||||
case RPT_SEVERITY_ERROR: err_count++; break;
|
case RPT_SEVERITY_ERROR: err_count++; break;
|
||||||
case RPT_SEVERITY_WARNING: warn_count++; break;
|
case RPT_SEVERITY_WARNING: warn_count++; break;
|
||||||
|
|
|
@ -42,7 +42,7 @@ DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP( SCH_EDIT_FRAME* aFrame ) :
|
||||||
|
|
||||||
ERC_ITEM dummyItem( 0 );
|
ERC_ITEM dummyItem( 0 );
|
||||||
m_severities = new PANEL_SETUP_SEVERITIES( this, dummyItem, g_ErcSettings->m_Severities,
|
m_severities = new PANEL_SETUP_SEVERITIES( this, dummyItem, g_ErcSettings->m_Severities,
|
||||||
ERCE_FIRST, ERCE_LAST );
|
ERCE_FIRST, ERCE_LAST, ERCE_PIN_TO_PIN_WARNING );
|
||||||
|
|
||||||
m_textVars = new PANEL_TEXT_VARIABLES( m_treebook, &Prj() );
|
m_textVars = new PANEL_TEXT_VARIABLES( m_treebook, &Prj() );
|
||||||
|
|
||||||
|
@ -55,8 +55,8 @@ DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP( SCH_EDIT_FRAME* aFrame ) :
|
||||||
m_treebook->AddSubPage( m_fieldNameTemplates, _( "Field Name Templates" ) );
|
m_treebook->AddSubPage( m_fieldNameTemplates, _( "Field Name Templates" ) );
|
||||||
|
|
||||||
m_treebook->AddPage( new wxPanel( this ), _( "Electrical Rules" ) );
|
m_treebook->AddPage( new wxPanel( this ), _( "Electrical Rules" ) );
|
||||||
m_treebook->AddSubPage( m_pinMap, _( "Pin Conflicts Map" ) );
|
|
||||||
m_treebook->AddSubPage( m_severities, _( "Violation Severity" ) );
|
m_treebook->AddSubPage( m_severities, _( "Violation Severity" ) );
|
||||||
|
m_treebook->AddSubPage( m_pinMap, _( "Pin Conflicts Map" ) );
|
||||||
|
|
||||||
m_treebook->AddPage( new wxPanel( this ), _( "Project" ) );
|
m_treebook->AddPage( new wxPanel( this ), _( "Project" ) );
|
||||||
m_treebook->AddSubPage( m_textVars, _( "Text Variables" ) );
|
m_treebook->AddSubPage( m_textVars, _( "Text Variables" ) );
|
||||||
|
|
|
@ -209,6 +209,24 @@ public:
|
||||||
|
|
||||||
int GetSeverity( int aErrorCode )
|
int GetSeverity( int aErrorCode )
|
||||||
{
|
{
|
||||||
|
// Special-case pin-to-pin errors:
|
||||||
|
// Ignore-or-not is controlled by ERCE_PIN_TO_PIN_WARNING (for both)
|
||||||
|
// Warning-or-error is controlled by which errorCode it is
|
||||||
|
if( aErrorCode == ERCE_PIN_TO_PIN_ERROR )
|
||||||
|
{
|
||||||
|
if( g_ErcSettings->m_Severities[ ERCE_PIN_TO_PIN_WARNING ] == RPT_SEVERITY_IGNORE )
|
||||||
|
return RPT_SEVERITY_IGNORE;
|
||||||
|
else
|
||||||
|
return RPT_SEVERITY_ERROR;
|
||||||
|
}
|
||||||
|
else if( aErrorCode == ERCE_PIN_TO_PIN_WARNING )
|
||||||
|
{
|
||||||
|
if( g_ErcSettings->m_Severities[ ERCE_PIN_TO_PIN_WARNING ] == RPT_SEVERITY_IGNORE )
|
||||||
|
return RPT_SEVERITY_IGNORE;
|
||||||
|
else
|
||||||
|
return RPT_SEVERITY_WARNING;
|
||||||
|
}
|
||||||
|
|
||||||
return g_ErcSettings->m_Severities[ aErrorCode ];
|
return g_ErcSettings->m_Severities[ aErrorCode ];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -427,6 +427,15 @@ void TestOthersItems( NETLIST_OBJECT_LIST* aList, unsigned aNetItemRef, unsigned
|
||||||
if( aNetItemRef == netItemTst )
|
if( aNetItemRef == netItemTst )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if( netItemTst < aList->size() )
|
||||||
|
{
|
||||||
|
ELECTRICAL_PINTYPE test_elect_type = aList->GetItem( netItemTst )->m_ElectricalPinType;
|
||||||
|
erc = PinMap[static_cast<int>( ref_elect_type )][static_cast<int>(test_elect_type )];
|
||||||
|
}
|
||||||
|
|
||||||
|
if( erc != OK )
|
||||||
|
Diagnose( aList->GetItem( aNetItemRef ), aList->GetItem( netItemTst ), 1, erc );
|
||||||
|
|
||||||
// We examine only a given net. We stop the search if the net changes
|
// We examine only a given net. We stop the search if the net changes
|
||||||
if( ( netItemTst >= aList->size() ) // End of list
|
if( ( netItemTst >= aList->size() ) // End of list
|
||||||
|| ( aList->GetItemNet( aNetItemRef ) !=
|
|| ( aList->GetItemNet( aNetItemRef ) !=
|
||||||
|
@ -528,8 +537,6 @@ void TestOthersItems( NETLIST_OBJECT_LIST* aList, unsigned aNetItemRef, unsigned
|
||||||
{
|
{
|
||||||
if( aList->GetConnectionType( netItemTst ) == NET_CONNECTION::UNCONNECTED )
|
if( aList->GetConnectionType( netItemTst ) == NET_CONNECTION::UNCONNECTED )
|
||||||
{
|
{
|
||||||
Diagnose( aList->GetItem( aNetItemRef ), aList->GetItem( netItemTst ),
|
|
||||||
0, erc );
|
|
||||||
aList->SetConnectionType( netItemTst,
|
aList->SetConnectionType( netItemTst,
|
||||||
NET_CONNECTION::NOCONNECT_SYMBOL_PRESENT );
|
NET_CONNECTION::NOCONNECT_SYMBOL_PRESENT );
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,8 +56,6 @@ enum ERCE_T
|
||||||
ERCE_DUPLICATE_SHEET_NAME = ERCE_FIRST, // duplicate sheet names within a given sheet
|
ERCE_DUPLICATE_SHEET_NAME = ERCE_FIRST, // duplicate sheet names within a given sheet
|
||||||
ERCE_PIN_NOT_CONNECTED, // pin not connected and not no connect symbol
|
ERCE_PIN_NOT_CONNECTED, // pin not connected and not no connect symbol
|
||||||
ERCE_PIN_NOT_DRIVEN, // pin connected to some others pins but no pin to drive it
|
ERCE_PIN_NOT_DRIVEN, // pin connected to some others pins but no pin to drive it
|
||||||
ERCE_PIN_TO_PIN_WARNING, // pin connected to an other pin: warning level
|
|
||||||
ERCE_PIN_TO_PIN_ERROR, // pin connected to an other pin: error level
|
|
||||||
ERCE_HIERACHICAL_LABEL, // mismatch between hierarchical labels and pins sheets
|
ERCE_HIERACHICAL_LABEL, // mismatch between hierarchical labels and pins sheets
|
||||||
ERCE_NOCONNECT_CONNECTED, // a no connect symbol is connected to more than 1 pin
|
ERCE_NOCONNECT_CONNECTED, // a no connect symbol is connected to more than 1 pin
|
||||||
ERCE_NOCONNECT_NOT_CONNECTED, // a no connect symbol is not connected to anything
|
ERCE_NOCONNECT_NOT_CONNECTED, // a no connect symbol is not connected to anything
|
||||||
|
@ -73,7 +71,12 @@ enum ERCE_T
|
||||||
ERCE_BUS_TO_NET_CONFLICT, // a bus wire is graphically connected to a net port/pin (or vice versa)
|
ERCE_BUS_TO_NET_CONFLICT, // a bus wire is graphically connected to a net port/pin (or vice versa)
|
||||||
ERCE_GLOBLABEL, // a global label is unique
|
ERCE_GLOBLABEL, // a global label is unique
|
||||||
ERCE_UNRESOLVED_VARIABLE,
|
ERCE_UNRESOLVED_VARIABLE,
|
||||||
ERCE_LAST = ERCE_UNRESOLVED_VARIABLE
|
ERCE_LAST = ERCE_UNRESOLVED_VARIABLE,
|
||||||
|
|
||||||
|
// Errors after this point will not automatically appear in the Severities Panel
|
||||||
|
|
||||||
|
ERCE_PIN_TO_PIN_WARNING, // pin connected to an other pin: warning level
|
||||||
|
ERCE_PIN_TO_PIN_ERROR, // pin connected to an other pin: error level
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Minimal connection table */
|
/* Minimal connection table */
|
||||||
|
|
|
@ -46,9 +46,9 @@ wxString ERC_ITEM::GetErrorText( int aErrorCode ) const
|
||||||
case ERCE_PIN_NOT_DRIVEN:
|
case ERCE_PIN_NOT_DRIVEN:
|
||||||
return wxString( _( "Pin connected to other pins, but not driven by any pin" ) );
|
return wxString( _( "Pin connected to other pins, but not driven by any pin" ) );
|
||||||
case ERCE_PIN_TO_PIN_WARNING:
|
case ERCE_PIN_TO_PIN_WARNING:
|
||||||
return wxString( _("Conflict problem between pins. Severity: warning") );
|
KI_FALLTHROUGH; // Must share text with ERCE_PIN_TO_PIN_ERROR
|
||||||
case ERCE_PIN_TO_PIN_ERROR:
|
case ERCE_PIN_TO_PIN_ERROR:
|
||||||
return wxString( _("Conflict problem between pins. Severity: error") );
|
return wxString( _("Conflict problem between pins") );
|
||||||
case ERCE_HIERACHICAL_LABEL:
|
case ERCE_HIERACHICAL_LABEL:
|
||||||
return wxString( _("Mismatch between hierarchical labels and pins sheets") );
|
return wxString( _("Mismatch between hierarchical labels and pins sheets") );
|
||||||
case ERCE_NOCONNECT_CONNECTED:
|
case ERCE_NOCONNECT_CONNECTED:
|
||||||
|
@ -81,6 +81,6 @@ wxString ERC_ITEM::GetErrorText( int aErrorCode ) const
|
||||||
return wxString( _( "Unresolved text variable" ) );
|
return wxString( _( "Unresolved text variable" ) );
|
||||||
default:
|
default:
|
||||||
wxFAIL_MSG( "Missing ERC error description" );
|
wxFAIL_MSG( "Missing ERC error description" );
|
||||||
return wxString( wxT("Unknown.") );
|
return wxString( wxT( "Unknown" ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,7 @@ void SCH_MARKER::ViewGetLayers( int aLayers[], int& aCount ) const
|
||||||
{
|
{
|
||||||
aCount = 2;
|
aCount = 2;
|
||||||
|
|
||||||
switch( g_ErcSettings->m_Severities[ m_rcItem->GetErrorCode() ] )
|
switch( GetSeverity( m_rcItem->GetErrorCode() ) )
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case SEVERITY::RPT_SEVERITY_ERROR: aLayers[0] = LAYER_ERC_ERR; break;
|
case SEVERITY::RPT_SEVERITY_ERROR: aLayers[0] = LAYER_ERC_ERR; break;
|
||||||
|
@ -93,7 +93,7 @@ SCH_LAYER_ID SCH_MARKER::GetColorLayer() const
|
||||||
if( IsExcluded() )
|
if( IsExcluded() )
|
||||||
return LAYER_HIDDEN;
|
return LAYER_HIDDEN;
|
||||||
|
|
||||||
switch( g_ErcSettings->m_Severities[ m_rcItem->GetErrorCode() ] )
|
switch( GetSeverity( m_rcItem->GetErrorCode() ) )
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case SEVERITY::RPT_SEVERITY_ERROR: return LAYER_ERC_ERR;
|
case SEVERITY::RPT_SEVERITY_ERROR: return LAYER_ERC_ERR;
|
||||||
|
|
Loading…
Reference in New Issue