30#define PNSLOGINFO PNS::DEBUG_DECORATOR::SRC_LOCATION_INFO( __FILE__, __FUNCTION__, __LINE__ )
57 m_router->Sizes().SetTrackWidth( 250000 );
68 std::vector<PNS::ITEM*> added, removed, heads;
69 m_router->GetUpdatedItems( removed, added, heads );
72 for(
auto item : removed )
80 for(
auto item : added )
87 for(
auto head : heads )
94 bool aUpdateExpectedResult )
103 int totalEvents = aLog->
Events().size();
105 for(
auto evt : aLog->
Events() )
107 if( eventIdx < aFrom || ( aTo >= 0 && eventIdx > aTo ) )
111 ITEM* ritem = item ?
m_router->GetWorld()->FindItemByParent( item ) :
nullptr;
121 m_iface->SetStartLayer( routingLayer );
122 m_iface->ImportSizes( sizes, ritem,
nullptr );
128 auto msg = wxString::Format(
"event [%d/%d]: route-start (%d, %d)", eventIdx,
129 totalEvents, evt.p.x, evt.p.y );
134 m_router->StartRouting( evt.p, ritem, routingLayer );
141 m_iface->SetStartLayer( routingLayer );
142 m_iface->ImportSizes( sizes, ritem,
nullptr );
148 auto msg = wxString::Format(
"event [%d/%d]: drag-start (%d, %d)", eventIdx,
149 totalEvents, evt.p.x, evt.p.y );
154 bool rv =
m_router->StartDragging( evt.p, ritem, 0 );
163 bool rv =
m_router->FixRoute( evt.p, ritem,
false,
false );
164 printf(
" fix -> (%d, %d) ret %d\n", evt.p.x, evt.p.y, rv ? 1 : 0 );
173 printf(
" unfix\n" );
183 auto msg = wxString::Format(
"event [%d/%d]: move (%d, %d)", eventIdx, totalEvents, evt.p.x, evt.p.y );
188 bool ret =
m_router->Move( evt.p, ritem );
197 auto msg = wxString::Format(
"event [%d/%d]: toggle-via", eventIdx, totalEvents );
217 auto traces =
m_router->Placer()->Traces();
219 for(
const auto& t : traces.CItems() )
221 const LINE *l =
static_cast<LINE*
>(t.item);
222 const auto& sh = l->
CLine();
229 node =
m_router->Placer()->CurrentNode(
true );
233 node =
m_router->GetDragger()->CurrentNode();
242 if( ! added.empty() )
247 for(
auto t : added )
257 wxASSERT_MSG(
m_router->Mode() == aLog->
GetMode(),
"didn't set the router mode correctly?" );
259 if( aUpdateExpectedResult )
261 std::vector<PNS::ITEM*> added, removed, heads;
262 m_router->GetUpdatedItems( removed, added, heads );
264 std::set<KIID> removedKIIDs;
266 for(
auto item : removed )
268 wxASSERT_MSG( item->Parent() !=
nullptr,
"removed an item with no parent uuid?" );
271 removedKIIDs.insert( item->Parent()->m_Uuid );
274 std::vector<std::unique_ptr<PNS::ITEM>> myOwnedItems;
278 routerCommitState.
m_heads = heads;
281 myOwnedItems.emplace_back( head );
294 printf(
"Comparing %zu added/%zu removed items\n", cstate.m_addedItems.size(), cstate.m_removedIds.size() );
300 m_viewTracker( aViewTracker )
334 return static_cast<NETINFO_ITEM*
>( aNet )->GetNetname();
336 return wxEmptyString;
Handle the data for a net.
static REPORTER & GetInstance()
Base class for PNS router board items.
virtual ITEM * Clone() const =0
Return a deep copy of the item.
const LAYER_RANGE & Layers() const
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
const SHAPE_LINE_CHAIN & CLine() const
Keep the router "world" - i.e.
std::vector< ITEM * > ITEM_VECTOR
void GetUpdatedItems(ITEM_VECTOR &aRemoved, ITEM_VECTOR &aAdded)
Return the list of items removed and added in this branch with respect to the root branch.
Contain all persistent settings of the router, such as the mode, optimization effort,...
BOARD_CONNECTED_ITEM * ItemById(const PNS::LOGGER::EVENT_ENTRY &evt)
void SetExpectedResult(const COMMIT_STATE &aCommitState, std::vector< std::unique_ptr< PNS::ITEM > > aParsedItems)
const COMMIT_STATE & GetExpectedResult() const
PNS::ROUTING_SETTINGS * GetRoutingSettings() const
PNS::ROUTER_MODE GetMode() const
std::vector< PNS::LOGGER::EVENT_ENTRY > & Events()
std::shared_ptr< BOARD > GetBoard() const
int GetNetCode(PNS::NET_HANDLE aNet) const override
PNS_LOG_PLAYER_KICAD_IFACE(PNS_LOG_VIEW_TRACKER *aViewTracker)
PNS_LOG_VIEW_TRACKER * m_viewTracker
void HideItem(PNS::ITEM *aItem) override
void DisplayItem(const PNS::ITEM *aItem, int aClearance, bool aEdit=false, int aFlags=0) override
~PNS_LOG_PLAYER_KICAD_IFACE() override
wxString GetNetName(PNS::NET_HANDLE aNet) const override
PNS_TEST_DEBUG_DECORATOR * m_debugDecorator
std::unique_ptr< PNS::ROUTING_SETTINGS > m_routingSettings
std::shared_ptr< BOARD > m_board
const PNS_LOG_FILE::COMMIT_STATE GetRouterUpdatedItems()
bool CompareResults(PNS_LOG_FILE *aLog)
std::unique_ptr< PNS::ROUTER > m_router
void ReplayLog(PNS_LOG_FILE *aLog, int aStartEventIndex=0, int aFrom=0, int aTo=-1, bool aUpdateExpectedResult=false)
std::shared_ptr< PNS_LOG_VIEW_TRACKER > m_viewTracker
std::unique_ptr< PNS_LOG_PLAYER_KICAD_IFACE > m_iface
void SetReporter(REPORTER *aReporter)
std::map< int, VIEW_ENTRIES > m_vitems
void DisplayItem(const PNS::ITEM *aItem)
void HideItem(PNS::ITEM *aItem)
std::vector< ENTRY > VIEW_ENTRIES
void SetStage(int aStage)
int GetStageCount() const
virtual void AddItem(const PNS::ITEM *aItem, const KIGFX::COLOR4D &aColor, int aOverrideWidth=0, const wxString &aName=wxT(""), const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void Message(const wxString &msg, const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void BeginGroup(const wxString &name, int aLevel=0, const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void EndGroup(const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void NewStage(const wxString &name, int iter, const SRC_LOCATION_INFO &aSrcLoc=SRC_LOCATION_INFO()) override
virtual void Clear() override
void SetCurrentStageStatus(bool stat)
virtual REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)=0
Report a string with a given severity.
Push and Shove diff pair dimensions (gap) settings dialog.
@ RM_Walkaround
Only walk around.
std::set< KIID > m_removedIds
std::vector< PNS::ITEM * > m_addedItems
std::vector< PNS::ITEM * > m_heads
std::unique_ptr< const PNS::ITEM > m_ownedItem