API: Add GetNetClassForNets; handle implicit netclasses
This commit is contained in:
@@ -76,6 +76,8 @@ API_HANDLER_PCB::API_HANDLER_PCB( PCB_EDIT_FRAME* aFrame ) :
|
||||
|
||||
registerHandler<InteractiveMoveItems, Empty>( &API_HANDLER_PCB::handleInteractiveMoveItems );
|
||||
registerHandler<GetNets, NetsResponse>( &API_HANDLER_PCB::handleGetNets );
|
||||
registerHandler<GetNetClassForNets, NetClassForNetsResponse>(
|
||||
&API_HANDLER_PCB::handleGetNetClassForNets );
|
||||
registerHandler<RefillZones, Empty>( &API_HANDLER_PCB::handleRefillZones );
|
||||
|
||||
registerHandler<SaveDocumentToString, SavedDocumentResponse>(
|
||||
@@ -830,6 +832,31 @@ HANDLER_RESULT<NetsResponse> API_HANDLER_PCB::handleGetNets( const HANDLER_CONTE
|
||||
}
|
||||
|
||||
|
||||
HANDLER_RESULT<NetClassForNetsResponse> API_HANDLER_PCB::handleGetNetClassForNets(
|
||||
const HANDLER_CONTEXT<GetNetClassForNets>& aCtx )
|
||||
{
|
||||
NetClassForNetsResponse response;
|
||||
|
||||
BOARD* board = frame()->GetBoard();
|
||||
NETINFO_LIST nets = board->GetNetInfo();
|
||||
google::protobuf::Any any;
|
||||
|
||||
for( const board::types::Net& net : aCtx.Request.net() )
|
||||
{
|
||||
NETINFO_ITEM* netInfo = nets.GetNetItem( wxString::FromUTF8( net.name() ) );
|
||||
|
||||
if( !netInfo )
|
||||
continue;
|
||||
|
||||
netInfo->GetNetClass()->Serialize( any );
|
||||
auto [pair, rc] = response.mutable_classes()->insert( { net.name(), {} } );
|
||||
any.UnpackTo( &pair->second );
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
HANDLER_RESULT<Empty> API_HANDLER_PCB::handleRefillZones( const HANDLER_CONTEXT<RefillZones>& aCtx )
|
||||
{
|
||||
if( std::optional<ApiResponseStatus> busy = checkForBusy() )
|
||||
|
||||
Reference in New Issue
Block a user