refactor: source KiCad proto files from submodule
This commit is contained in:
parent
54ff957ab5
commit
358b27e0ff
|
|
@ -0,0 +1,3 @@
|
|||
[submodule "kicad"]
|
||||
path = kicad
|
||||
url = https://gitlab.com/kicad/code/kicad.git
|
||||
|
|
@ -11,7 +11,8 @@ keywords = ["kicad", "eda", "pcb", "ipc"]
|
|||
categories = ["api-bindings", "asynchronous"]
|
||||
include = [
|
||||
"/src/**",
|
||||
"/proto/**",
|
||||
"/kicad/api/proto/**",
|
||||
"/.gitmodules",
|
||||
"/build.rs",
|
||||
"/README.md",
|
||||
"/LICENSE",
|
||||
|
|
|
|||
18
README.md
18
README.md
|
|
@ -13,6 +13,22 @@ Alpha. `v0.1.0` release candidate.
|
|||
- Real-world user testing: still limited.
|
||||
- Issues and PRs welcome.
|
||||
|
||||
## Build Inputs
|
||||
|
||||
This crate compiles protobuf definitions from a KiCad git submodule:
|
||||
|
||||
```bash
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
Default proto root: `kicad/api/proto`
|
||||
|
||||
Optional override:
|
||||
|
||||
```bash
|
||||
KICAD_PROTO_ROOT=/absolute/path/to/api/proto cargo build
|
||||
```
|
||||
|
||||
## Local Testing
|
||||
|
||||
- CLI runbook: `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/docs/TEST_CLI.md`
|
||||
|
|
@ -130,7 +146,7 @@ Legend:
|
|||
|
||||
| Item | Value |
|
||||
| --- | --- |
|
||||
| Dedicated commands in `proto/schematic/schematic_commands.proto` | None in current proto snapshot |
|
||||
| Dedicated commands in `kicad/api/proto/schematic/schematic_commands.proto` | None in current proto snapshot |
|
||||
| Coverage | n/a |
|
||||
|
||||
### Symbol editor
|
||||
|
|
|
|||
20
build.rs
20
build.rs
|
|
@ -20,12 +20,26 @@ fn collect_proto_files(root: &Path, out: &mut Vec<PathBuf>) -> io::Result<()> {
|
|||
}
|
||||
|
||||
fn main() {
|
||||
let proto_root = PathBuf::from("proto");
|
||||
let proto_root = std::env::var_os("KICAD_PROTO_ROOT")
|
||||
.map(PathBuf::from)
|
||||
.unwrap_or_else(|| PathBuf::from("kicad/api/proto"));
|
||||
|
||||
if !proto_root.exists() {
|
||||
panic!(
|
||||
"KiCad proto root not found at '{}'. Initialize submodule with `git submodule update --init --recursive` or set KICAD_PROTO_ROOT.",
|
||||
proto_root.display()
|
||||
);
|
||||
}
|
||||
|
||||
println!("cargo:rerun-if-changed={}", proto_root.display());
|
||||
|
||||
let mut proto_files = Vec::new();
|
||||
collect_proto_files(&proto_root, &mut proto_files)
|
||||
.expect("failed to enumerate proto files under ./proto");
|
||||
collect_proto_files(&proto_root, &mut proto_files).unwrap_or_else(|err| {
|
||||
panic!(
|
||||
"failed to enumerate proto files under {}: {err}",
|
||||
proto_root.display()
|
||||
)
|
||||
});
|
||||
|
||||
proto_files.sort();
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit b512143573edd2f5814ed1dc1a46a37f6c76be19
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
# KiCad IPC Protocol Buffer Definitions
|
||||
|
||||
These `.proto` files are copied from the official KiCad source tree:
|
||||
|
||||
- https://gitlab.com/kicad/code/kicad/-/tree/master/api/proto
|
||||
|
||||
Rules for this repository:
|
||||
|
||||
1. Keep copied files verbatim when possible.
|
||||
2. Preserve original upstream copyright/license headers.
|
||||
3. Use these files for build-time code generation.
|
||||
4. Do not commit generated Rust protobuf output.
|
||||
|
||||
Crate licensing:
|
||||
|
||||
- Hand-written Rust code in this repository is MIT licensed.
|
||||
- Upstream `.proto` files retain their original upstream licensing/headers.
|
||||
|
|
@ -1,146 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 Jon Evans <jon@craftyjon.com>
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.board;
|
||||
|
||||
import "common/types/base_types.proto";
|
||||
import "board/board_types.proto";
|
||||
|
||||
message BoardFinish
|
||||
{
|
||||
string type_name = 1;
|
||||
}
|
||||
|
||||
message BoardImpedanceControl
|
||||
{
|
||||
bool is_controlled = 1;
|
||||
}
|
||||
|
||||
message BoardEdgeConnector
|
||||
{
|
||||
}
|
||||
|
||||
message Castellation
|
||||
{
|
||||
bool has_castellated_pads = 1;
|
||||
}
|
||||
|
||||
message EdgePlating
|
||||
{
|
||||
bool has_edge_plating = 1;
|
||||
}
|
||||
|
||||
message BoardEdgeSettings
|
||||
{
|
||||
BoardEdgeConnector connector = 1;
|
||||
Castellation castellation = 2;
|
||||
EdgePlating plating = 3;
|
||||
}
|
||||
|
||||
message BoardStackupCopperLayer
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
enum BoardStackupLayerType
|
||||
{
|
||||
BSLT_UNKNOWN = 0;
|
||||
BSLT_COPPER = 1;
|
||||
BSLT_DIELECTRIC = 2;
|
||||
BSLT_SILKSCREEN = 3;
|
||||
BSLT_SOLDERMASK = 4;
|
||||
BSLT_SOLDERPASTE = 5;
|
||||
BSLT_UNDEFINED = 7;
|
||||
}
|
||||
|
||||
message BoardStackupDielectricProperties
|
||||
{
|
||||
double epsilon_r = 1;
|
||||
double loss_tangent = 2;
|
||||
string material_name = 3;
|
||||
kiapi.common.types.Distance thickness = 4;
|
||||
}
|
||||
|
||||
message BoardStackupDielectricLayer
|
||||
{
|
||||
// A single dielectric slot (between copper layers) can be made up of multiple physical layers
|
||||
repeated BoardStackupDielectricProperties layer = 1;
|
||||
}
|
||||
|
||||
message BoardStackupLayer
|
||||
{
|
||||
kiapi.common.types.Distance thickness = 1;
|
||||
kiapi.board.types.BoardLayer layer = 2;
|
||||
bool enabled = 3;
|
||||
BoardStackupLayerType type = 4;
|
||||
BoardStackupDielectricLayer dielectric = 5;
|
||||
kiapi.common.types.Color color = 6;
|
||||
string material_name = 7;
|
||||
|
||||
// The name of the layer shown in the KiCad GUI, which may be a default value like "F.Cu" or may
|
||||
// have been customized by the user. This field does not apply to dielectric layers.
|
||||
string user_name = 8;
|
||||
}
|
||||
|
||||
message BoardStackup
|
||||
{
|
||||
BoardFinish finish = 1;
|
||||
BoardImpedanceControl impedance = 2;
|
||||
// NOTE: m_HasThicknessConstrains appears to be unused
|
||||
BoardEdgeSettings edge = 3;
|
||||
repeated BoardStackupLayer layers = 4;
|
||||
}
|
||||
|
||||
// LAYER_CLASS_* in BOARD_DESIGN_SETTINGS -- needs to become an enum class
|
||||
enum BoardLayerClass
|
||||
{
|
||||
BLC_UNKNOWN = 0;
|
||||
BLC_SILKSCREEN = 1;
|
||||
BLC_COPPER = 2;
|
||||
BLC_EDGES = 3;
|
||||
BLC_COURTYARD = 4;
|
||||
BLC_FABRICATION = 5;
|
||||
BLC_OTHER = 6;
|
||||
}
|
||||
|
||||
message BoardLayerGraphicsDefaults
|
||||
{
|
||||
BoardLayerClass layer = 1;
|
||||
kiapi.common.types.TextAttributes text = 2;
|
||||
kiapi.common.types.Distance line_thickness = 3;
|
||||
}
|
||||
|
||||
message GraphicsDefaults
|
||||
{
|
||||
repeated BoardLayerGraphicsDefaults layers = 1;
|
||||
}
|
||||
|
||||
// Anything that isn't stackup or design rules
|
||||
message BoardSettings
|
||||
{
|
||||
GraphicsDefaults graphics_defaults = 1;
|
||||
// Dimension default settings
|
||||
}
|
||||
|
||||
message BoardDesignRules
|
||||
{
|
||||
}
|
||||
|
|
@ -1,412 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 Jon Evans <jon@craftyjon.com>
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.board.commands;
|
||||
|
||||
import "common/types/base_types.proto";
|
||||
import "common/types/enums.proto";
|
||||
import "common/types/project_settings.proto";
|
||||
import "board/board.proto";
|
||||
import "board/board_types.proto";
|
||||
|
||||
/*
|
||||
* Board stackup and properties
|
||||
*/
|
||||
|
||||
message GetBoardStackup
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
}
|
||||
|
||||
message BoardStackupResponse
|
||||
{
|
||||
kiapi.board.BoardStackup stackup = 1;
|
||||
}
|
||||
|
||||
// Changes the stackup for the given board according to the contents of the message (**not yet implemented**)
|
||||
// WARNING: any existing content on layers that are removed by this call is deleted. This operation cannot be undone.
|
||||
// Returns BoardStackupResponse with the updated stackup, in normalized form
|
||||
message UpdateBoardStackup
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
kiapi.board.BoardStackup stackup = 2;
|
||||
}
|
||||
|
||||
message GetBoardEnabledLayers
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
}
|
||||
|
||||
message BoardEnabledLayersResponse
|
||||
{
|
||||
// The number of copper layers enabled in this board.
|
||||
uint32 copper_layer_count = 1;
|
||||
|
||||
// A list of all layers enabled in this board, including copper layers and ones which cannot be disabled.
|
||||
repeated kiapi.board.types.BoardLayer layers = 2;
|
||||
}
|
||||
|
||||
// Changes which layers are enabled in the board stackup
|
||||
// WARNING: any existing content on layers that are removed by this call is deleted. This operation cannot be undone.
|
||||
// Returns BoardEnabledLayersResponse with the updated layer set.
|
||||
message SetBoardEnabledLayers
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
// The number of copper layers to enable in the board. Currently, this must be an even number >= 2.
|
||||
uint32 copper_layer_count = 2;
|
||||
|
||||
// The non-copper layers to enable. Note that any copper layers in this list are ignored; copper layers are enabled
|
||||
// by setting copper_layer_count. Note that the F/B.Courtyard, Edge.Cuts, and Margin layers cannot be disabled and
|
||||
// will be present in the board even if they are omitted from this list.
|
||||
repeated kiapi.board.types.BoardLayer layers = 3;
|
||||
}
|
||||
|
||||
message GetGraphicsDefaults
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
}
|
||||
|
||||
message GraphicsDefaultsResponse
|
||||
{
|
||||
kiapi.board.GraphicsDefaults defaults = 1;
|
||||
}
|
||||
|
||||
enum BoardOriginType
|
||||
{
|
||||
BOT_UNKNOWN = 0;
|
||||
BOT_GRID = 1;
|
||||
BOT_DRILL = 2;
|
||||
}
|
||||
|
||||
// Returns a Vector2 with the specified origin point
|
||||
message GetBoardOrigin
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
BoardOriginType type = 2;
|
||||
}
|
||||
|
||||
message SetBoardOrigin
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
BoardOriginType type = 2;
|
||||
|
||||
kiapi.common.types.Vector2 origin = 3;
|
||||
}
|
||||
|
||||
/*
|
||||
* Net management
|
||||
*/
|
||||
|
||||
message GetNets
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
// If provided, will only return nets that belong to the given netclass.
|
||||
// If more than one netclass_filter is given, nets belonging to any of the given classes will
|
||||
// be returned.
|
||||
repeated string netclass_filter = 2;
|
||||
}
|
||||
|
||||
message NetsResponse
|
||||
{
|
||||
repeated kiapi.board.types.Net nets = 1;
|
||||
}
|
||||
|
||||
// Retrieve all the copper items belonging to a certain net or set of nets
|
||||
// returns kiapi.common.commands.GetItemsResponse
|
||||
message GetItemsByNet
|
||||
{
|
||||
// Specifies which document to query, which fields to return, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// List of one or more types of items to retreive
|
||||
repeated kiapi.common.types.KiCadObjectType types = 2;
|
||||
|
||||
// A list of net codes to filter items by
|
||||
repeated kiapi.board.types.NetCode net_codes = 3;
|
||||
}
|
||||
|
||||
// Retrieve all the copper items belonging to a certain net class or set of net classes
|
||||
// returns kiapi.common.commands.GetItemsResponse
|
||||
message GetItemsByNetClass
|
||||
{
|
||||
// Specifies which document to query, which fields to return, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// List of one or more types of items to retreive
|
||||
repeated kiapi.common.types.KiCadObjectType types = 2;
|
||||
|
||||
// A list of net class names to filter items by
|
||||
repeated string net_classes = 3;
|
||||
}
|
||||
|
||||
// A net may be part of multiple classes that have a priority ordering, which will result in a
|
||||
// composite "effective" netclass containing the merged/overridden properties of all the constituent
|
||||
// netclasses it contains. This message retrieves this effective netclass for a net or list of
|
||||
// nets.
|
||||
// Returns NetClassForNetsResponse
|
||||
message GetNetClassForNets
|
||||
{
|
||||
repeated kiapi.board.types.Net net = 1;
|
||||
}
|
||||
|
||||
message NetClassForNetsResponse
|
||||
{
|
||||
// Map of net name to netclass info
|
||||
map<string, kiapi.common.project.NetClass> classes = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Blocking operations
|
||||
*/
|
||||
|
||||
// Refills some or all zones on the board.
|
||||
// This is a blocking operation; it will return Empty immediately, but KiCad will return
|
||||
// ApiStatusCode.AS_BUSY to all future API requests until the zone fill has completed.
|
||||
message RefillZones
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
// A list of zones to refill. If empty, all zones are refilled.
|
||||
repeated kiapi.common.types.KIID zones = 2;
|
||||
}
|
||||
|
||||
/*
|
||||
* Utilities
|
||||
*/
|
||||
|
||||
// Computes the polygon representation of a pad, merging any custom shapes together.
|
||||
// This representation will approximate curves as a series of segments.
|
||||
message GetPadShapeAsPolygon
|
||||
{
|
||||
// The board to process
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
// A list of one or more pads to process
|
||||
repeated kiapi.common.types.KIID pads = 2;
|
||||
|
||||
// The layer to process
|
||||
kiapi.board.types.BoardLayer layer = 3;
|
||||
}
|
||||
|
||||
// Returned from GetPadShapeAsPolygon. The pads and polygons repeated fields will have the same length
|
||||
// and can be treated as a list of tuples.
|
||||
message PadShapeAsPolygonResponse
|
||||
{
|
||||
// The pads that were processed
|
||||
repeated kiapi.common.types.KIID pads = 1;
|
||||
|
||||
// The polygon representation of each pad
|
||||
repeated kiapi.common.types.PolygonWithHoles polygons = 2;
|
||||
}
|
||||
|
||||
// Tests if the given set of items with padstacks (pads or vias) has content on the given set of layers.
|
||||
// This is a dynamic call rather than a property of the padstack because pads and vias can be set to only include
|
||||
// shapes on connected copper layers, and whether or not the pad is connected can't be determined in isolation.
|
||||
// To optimize API call performance, multiple items and multiple layers to test may be passed in with this
|
||||
// command message. The return will include the results for each valid item on each valid layer.
|
||||
// Note that not all layers make sense for a given item (for example, testing against BL_UNDEFINED never makes
|
||||
// sense). In general, the internal KiCad APIs will not return an error when testing non-sensical layers for a given
|
||||
// item, and instead will return a default of "true" for any such layers.
|
||||
message CheckPadstackPresenceOnLayers
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
repeated kiapi.common.types.KIID items = 2;
|
||||
|
||||
repeated kiapi.board.types.BoardLayer layers = 3;
|
||||
}
|
||||
|
||||
enum PadstackPresence
|
||||
{
|
||||
PSP_UNKNOWN = 0;
|
||||
PSP_PRESENT = 1; // The padstack has a shape on a given layer (is flashed)
|
||||
PSP_NOT_PRESENT = 2; // The padstack has no shape on a given layer (is not flashed)
|
||||
}
|
||||
|
||||
message PadstackPresenceEntry
|
||||
{
|
||||
kiapi.common.types.KIID item = 1;
|
||||
kiapi.board.types.BoardLayer layer = 2;
|
||||
PadstackPresence presence = 3;
|
||||
}
|
||||
|
||||
message PadstackPresenceResponse
|
||||
{
|
||||
repeated PadstackPresenceEntry entries = 1;
|
||||
}
|
||||
|
||||
// DRC markers
|
||||
|
||||
enum DrcSeverity // Since 10.0
|
||||
{
|
||||
DRS_UNKNOWN = 0;
|
||||
DRS_WARNING = 1;
|
||||
DRS_ERROR = 2;
|
||||
DRS_EXCLUSION = 3;
|
||||
DRS_IGNORE = 4;
|
||||
DRS_INFO = 5;
|
||||
DRS_ACTION = 6;
|
||||
DRS_DEBUG = 7;
|
||||
DRS_UNDEFINED = 8;
|
||||
}
|
||||
|
||||
// Returns InjectDrcErrorResponse
|
||||
message InjectDrcError
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
DrcSeverity severity = 2;
|
||||
|
||||
string message = 3;
|
||||
|
||||
kiapi.common.types.Vector2 position = 4;
|
||||
|
||||
repeated kiapi.common.types.KIID items = 5;
|
||||
}
|
||||
|
||||
message InjectDrcErrorResponse
|
||||
{
|
||||
kiapi.common.types.KIID marker = 1;
|
||||
}
|
||||
|
||||
// PCB editor commands
|
||||
|
||||
// returns BoardLayers
|
||||
message GetVisibleLayers
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
}
|
||||
|
||||
message BoardLayerResponse
|
||||
{
|
||||
kiapi.board.types.BoardLayer layer = 1;
|
||||
}
|
||||
|
||||
message BoardLayers
|
||||
{
|
||||
repeated kiapi.board.types.BoardLayer layers = 1;
|
||||
}
|
||||
|
||||
message SetVisibleLayers
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
repeated kiapi.board.types.BoardLayer layers = 2;
|
||||
}
|
||||
|
||||
// returns BoardLayerResponse
|
||||
message GetActiveLayer
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
}
|
||||
|
||||
message SetActiveLayer
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
kiapi.board.types.BoardLayer layer = 2;
|
||||
}
|
||||
|
||||
enum InactiveLayerDisplayMode
|
||||
{
|
||||
ILDM_UNKNOWN = 0;
|
||||
// Inactive layers are shown
|
||||
ILDM_NORMAL = 1;
|
||||
// Inactive layers are shown with dimmed colors
|
||||
ILDM_DIMMED = 2;
|
||||
// Inactive layers are hidden
|
||||
ILDM_HIDDEN = 3;
|
||||
}
|
||||
|
||||
enum NetColorDisplayMode
|
||||
{
|
||||
NCDM_UNKNOWN = 0;
|
||||
// Net and netclass colors are shown in the ratsnest and on all copper items
|
||||
NCDM_ALL = 1;
|
||||
// Net and netclass colors are shown in the ratsnest only
|
||||
NCDM_RATSNEST = 2;
|
||||
// Net and netclass colors are not shown
|
||||
NCDM_OFF = 3;
|
||||
}
|
||||
|
||||
enum BoardFlipMode
|
||||
{
|
||||
BFM_UNKNOWN = 0;
|
||||
// Normal ("non-flipped") mode
|
||||
BFM_NORMAL = 1;
|
||||
// "Flipped" mode, viewed from the back and mirrored around the X axis
|
||||
BFM_FLIPPED_X = 2;
|
||||
}
|
||||
|
||||
enum RatsnestDisplayMode
|
||||
{
|
||||
RDM_UNKNOWN = 0;
|
||||
// Ratsnest lines are drawn to objects even if they are on hidden layers
|
||||
RDM_ALL_LAYERS = 1;
|
||||
// Ratsnest lines are hidden when at least one endpoint is an item on a hidden layer
|
||||
RDM_VISIBLE_LAYERS = 2;
|
||||
}
|
||||
|
||||
message BoardEditorAppearanceSettings
|
||||
{
|
||||
InactiveLayerDisplayMode inactive_layer_display = 1;
|
||||
|
||||
NetColorDisplayMode net_color_display = 2;
|
||||
|
||||
BoardFlipMode board_flip = 3;
|
||||
|
||||
RatsnestDisplayMode ratsnest_display = 4;
|
||||
}
|
||||
|
||||
// Returns BoardEditorAppearanceSettings
|
||||
message GetBoardEditorAppearanceSettings
|
||||
{
|
||||
}
|
||||
|
||||
message SetBoardEditorAppearanceSettings
|
||||
{
|
||||
BoardEditorAppearanceSettings settings = 1;
|
||||
}
|
||||
|
||||
//// Interactive commands ////
|
||||
// These commands begin an interactive operation in the editor.
|
||||
// They return a response immediately, but the editor will become busy
|
||||
// and will not reply to further API commands until the user has finished
|
||||
// the operation.
|
||||
// These commands will return an error if received in a non-interactive context.
|
||||
|
||||
// Selects and begins an interactive move of the given item(s).
|
||||
// NOTE: Takes ownership of the active commit, if one exists:
|
||||
// the move tool will push the commit when the user confirms the move,
|
||||
// or roll back the commit if the user cancels the move. Keep this in
|
||||
// mind if using this command in combination with commands that create
|
||||
// or modify items using an explicit commit.
|
||||
message InteractiveMoveItems
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier board = 1;
|
||||
|
||||
repeated kiapi.common.types.KIID items = 2;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,103 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.common.commands;
|
||||
|
||||
import "common/types/base_types.proto";
|
||||
|
||||
message GetVersion
|
||||
{
|
||||
}
|
||||
|
||||
message GetVersionResponse
|
||||
{
|
||||
kiapi.common.types.KiCadVersion version = 1;
|
||||
}
|
||||
|
||||
// A command to check if the connection to KiCad is OK
|
||||
message Ping
|
||||
{
|
||||
}
|
||||
|
||||
// Returns the full path to the given KiCad binary
|
||||
message GetKiCadBinaryPath
|
||||
{
|
||||
// The short name of the binary, such as `kicad-cli` or `kicad-cli.exe`. If on Windows, an `.exe`
|
||||
// extension will be assumed if not present.
|
||||
string binary_name = 1;
|
||||
}
|
||||
|
||||
message PathResponse
|
||||
{
|
||||
string path = 1;
|
||||
}
|
||||
|
||||
// returns kiapi.common.types.Box2
|
||||
message GetTextExtents
|
||||
{
|
||||
// A temporary text item to calculate the bounding box for
|
||||
kiapi.common.types.Text text = 1;
|
||||
}
|
||||
|
||||
message TextOrTextBox
|
||||
{
|
||||
oneof inner {
|
||||
kiapi.common.types.Text text = 1;
|
||||
kiapi.common.types.TextBox textbox = 2;
|
||||
}
|
||||
}
|
||||
|
||||
// Render the given text object(s) as shapes. Depending on whether the text is using
|
||||
// the KiCad stroke font or a custom font, the response will be a compound shape containing
|
||||
// a set of polygons or a set of segments.
|
||||
message GetTextAsShapes
|
||||
{
|
||||
repeated TextOrTextBox text = 1;
|
||||
}
|
||||
|
||||
message TextWithShapes
|
||||
{
|
||||
TextOrTextBox text = 1;
|
||||
|
||||
kiapi.common.types.CompoundShape shapes = 2;
|
||||
}
|
||||
|
||||
message GetTextAsShapesResponse
|
||||
{
|
||||
repeated TextWithShapes text_with_shapes = 1;
|
||||
}
|
||||
|
||||
// Return a writeable path that a plugin can use for storing persistent data such as configuration
|
||||
// files, etc. This path may not yet exist; actual creation of the directory for a given plugin is
|
||||
// up to the plugin itself. Files in this path will not be modified if the plugin is uninstalled or
|
||||
// upgraded.
|
||||
//
|
||||
// Returns StringResponse
|
||||
message GetPluginSettingsPath
|
||||
{
|
||||
// The identifier of the plugin
|
||||
string identifier = 1;
|
||||
}
|
||||
|
||||
message StringResponse
|
||||
{
|
||||
string response = 1;
|
||||
}
|
||||
|
|
@ -1,440 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Commands and responses related to manipulating editor windows
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.common.commands;
|
||||
|
||||
import "google/protobuf/any.proto";
|
||||
import "common/types/base_types.proto";
|
||||
import "common/types/enums.proto";
|
||||
|
||||
// Refreshes the given frame, if that frame is open
|
||||
message RefreshEditor
|
||||
{
|
||||
kiapi.common.types.FrameType frame = 1;
|
||||
}
|
||||
|
||||
// Retrieves a list of open documents of the given type
|
||||
message GetOpenDocuments
|
||||
{
|
||||
// Which type of documents to query
|
||||
kiapi.common.types.DocumentType type = 1;
|
||||
}
|
||||
|
||||
message GetOpenDocumentsResponse
|
||||
{
|
||||
repeated kiapi.common.types.DocumentSpecifier documents = 1;
|
||||
}
|
||||
|
||||
message SaveDocument
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
}
|
||||
|
||||
// Saves the given document to a new location and opens the new copy
|
||||
// Note, this is not going to be implemented anytime soon as we don't currently
|
||||
// want to allow API access to changing which project is open
|
||||
//message SaveDocumentAs
|
||||
//{
|
||||
// kiapi.common.types.DocumentSpecifier document = 1;
|
||||
//
|
||||
// string path = 2;
|
||||
//}
|
||||
|
||||
message SaveOptions
|
||||
{
|
||||
// Overwrite destination file(s) if they exist
|
||||
bool overwrite = 1;
|
||||
|
||||
// If the file being saved normally requires a project (for example, a board or schematic),
|
||||
// this flag will cause a new project to be saved alongside the new file
|
||||
bool include_project = 2;
|
||||
}
|
||||
|
||||
// Saves the given document to a new location and does not open the new copy
|
||||
message SaveCopyOfDocument
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
|
||||
string path = 2;
|
||||
|
||||
SaveOptions options = 3;
|
||||
}
|
||||
|
||||
message RevertDocument
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Runs a TOOL_ACTION using the TOOL_MANAGER of a given frame.
|
||||
* WARNING: The TOOL_ACTIONs are specifically *not* an API.
|
||||
* Command names may change as code is refactored, and commands may disappear.
|
||||
* This API method is provided for low-level prototyping purposes only.
|
||||
*/
|
||||
message RunAction
|
||||
{
|
||||
string action = 1; // Action name, like "eeschema.InteractiveSelection.ClearSelection"
|
||||
}
|
||||
|
||||
enum RunActionStatus
|
||||
{
|
||||
RAS_UNKNOWN = 0;
|
||||
RAS_OK = 1; // The action was submitted successfully.
|
||||
RAS_INVALID = 2; // The action was unknown for the targeted frame.
|
||||
RAS_FRAME_NOT_OPEN = 3; // The targeted frame was not open when the call was submitted.
|
||||
}
|
||||
|
||||
/*
|
||||
* NOTE: At the moment, RAS_FRAME_NOT_OPEN won't be returned as the handler is inside the frame.
|
||||
*/
|
||||
message RunActionResponse
|
||||
{
|
||||
RunActionStatus status = 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Begins a staged set of changes. Any modifications made to a document through the API after this
|
||||
* call will be saved to a pending commit, and will not appear in KiCad until a matching call to
|
||||
* END_COMMIT.
|
||||
*/
|
||||
message BeginCommit
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
message BeginCommitResponse
|
||||
{
|
||||
// Opaque identifier tracking a commit
|
||||
kiapi.common.types.KIID id = 1;
|
||||
}
|
||||
|
||||
|
||||
enum CommitAction
|
||||
{
|
||||
CMA_UNKNOWN = 0;
|
||||
CMA_COMMIT = 1; // Commit the changes to the design
|
||||
CMA_DROP = 2; // Cancel this commit
|
||||
}
|
||||
|
||||
|
||||
message EndCommit
|
||||
{
|
||||
// The ID that was given by BeginCommit
|
||||
kiapi.common.types.KIID id = 1;
|
||||
|
||||
// What to do with this commit
|
||||
CommitAction action = 2;
|
||||
|
||||
// Optional message describing this changeset
|
||||
string message = 3;
|
||||
}
|
||||
|
||||
|
||||
message EndCommitResponse
|
||||
{
|
||||
}
|
||||
|
||||
// Creates new items on a given document
|
||||
message CreateItems
|
||||
{
|
||||
// Specifies which document to create on, which fields are included, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// List of items to create
|
||||
repeated google.protobuf.Any items = 2;
|
||||
|
||||
// Items may be created on a top-level document (sheet, board, etc) or inside a container
|
||||
// (symbol, footprint). If this field is not empty, it holds the ID of a symbol or footprint
|
||||
// that the items should be added to. This ID must be an existing symbol (for schematic
|
||||
// documents) or footprint (for board documents). If the given container does not exist or is
|
||||
// not the correct item type, the CreateItems call will fail.
|
||||
kiapi.common.types.KIID container = 3;
|
||||
}
|
||||
|
||||
enum ItemStatusCode
|
||||
{
|
||||
ISC_UNKNOWN = 0;
|
||||
ISC_OK = 1; // The item was created or updated
|
||||
ISC_INVALID_TYPE = 2; // The item's type is not valid for the given document
|
||||
ISC_EXISTING = 3; // The item to be created had a specified KIID and that KIID was already in use
|
||||
ISC_NONEXISTENT = 4; // The item to be updated did not exist in the given document
|
||||
ISC_IMMUTABLE = 5; // The item to be updated is not allowed to be modified by the API
|
||||
ISC_INVALID_DATA = 7; // The item to be created does not have valid data for the given document
|
||||
}
|
||||
|
||||
// Per-item status feedback for creation and update calls
|
||||
message ItemStatus
|
||||
{
|
||||
ItemStatusCode code = 1;
|
||||
|
||||
string error_message = 2;
|
||||
}
|
||||
|
||||
message ItemCreationResult
|
||||
{
|
||||
ItemStatus status = 1;
|
||||
|
||||
// The created version of the item, including an updated KIID as applicable
|
||||
google.protobuf.Any item = 2;
|
||||
}
|
||||
|
||||
message CreateItemsResponse
|
||||
{
|
||||
// Specifies which document was modified, which fields are included in created_items, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// Status of the overall request; may return IRS_OK even if no items were created
|
||||
kiapi.common.types.ItemRequestStatus status = 2;
|
||||
|
||||
// Status of each item to be created
|
||||
repeated ItemCreationResult created_items = 3;
|
||||
}
|
||||
|
||||
message GetItems
|
||||
{
|
||||
// Specifies which document to query, which fields to return, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// List of one or more types of items to retreive
|
||||
repeated kiapi.common.types.KiCadObjectType types = 2;
|
||||
}
|
||||
|
||||
message GetItemsById
|
||||
{
|
||||
// Specifies which document to query, which fields to return, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
repeated kiapi.common.types.KIID items = 2;
|
||||
}
|
||||
|
||||
message GetItemsResponse
|
||||
{
|
||||
// Specifies which document was modified, which fields are included in items, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// Status of the overall request; may return IRS_OK even if no items were retrieved
|
||||
kiapi.common.types.ItemRequestStatus status = 2;
|
||||
|
||||
repeated google.protobuf.Any items = 3;
|
||||
}
|
||||
|
||||
// Updates items in a given document
|
||||
message UpdateItems
|
||||
{
|
||||
// Specifies which document to modify, which fields are included, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// List of items to modify
|
||||
repeated google.protobuf.Any items = 2;
|
||||
}
|
||||
|
||||
|
||||
message ItemUpdateResult
|
||||
{
|
||||
ItemStatus status = 1;
|
||||
|
||||
// The update version of the item
|
||||
google.protobuf.Any item = 2;
|
||||
}
|
||||
|
||||
message UpdateItemsResponse
|
||||
{
|
||||
// Specifies which document was modified, which fields are included in updated_items, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// Status of the overall request; may return IRS_OK even if no items were modified
|
||||
kiapi.common.types.ItemRequestStatus status = 2;
|
||||
|
||||
// Status of each item to be created
|
||||
repeated ItemUpdateResult updated_items = 3;
|
||||
}
|
||||
|
||||
// Deletes items in a given document
|
||||
message DeleteItems
|
||||
{
|
||||
// Specifies which document to modify
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// List of item KIIDs to delete
|
||||
repeated kiapi.common.types.KIID item_ids = 2;
|
||||
}
|
||||
|
||||
enum ItemDeletionStatus
|
||||
{
|
||||
IDS_UNKNOWN = 0;
|
||||
IDS_OK = 1;
|
||||
IDS_NONEXISTENT = 2; // The item did not exist in the given document
|
||||
IDS_IMMUTABLE = 3; // The item is not allowed to be modified by the API
|
||||
}
|
||||
|
||||
message ItemDeletionResult
|
||||
{
|
||||
kiapi.common.types.KIID id = 1;
|
||||
|
||||
ItemDeletionStatus status = 2;
|
||||
}
|
||||
|
||||
message DeleteItemsResponse
|
||||
{
|
||||
// Specifies which document was modified, etc.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// Status of the overall request; may return IRS_OK even if no items were deleted
|
||||
kiapi.common.types.ItemRequestStatus status = 2;
|
||||
|
||||
// Status of each item requested to be deleted
|
||||
repeated ItemDeletionResult deleted_items = 3;
|
||||
}
|
||||
|
||||
enum BoundingBoxMode
|
||||
{
|
||||
BBM_UNKNOWN = 0;
|
||||
BBM_ITEM_ONLY = 1;
|
||||
BBM_ITEM_AND_CHILD_TEXT = 2;
|
||||
}
|
||||
|
||||
message GetBoundingBox
|
||||
{
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
repeated kiapi.common.types.KIID items = 2;
|
||||
|
||||
// Some item types can have independently-movable text as children (e.g. footprints)
|
||||
// This mode controls whether or not these are included in the box
|
||||
BoundingBoxMode mode = 3;
|
||||
}
|
||||
|
||||
message GetBoundingBoxResponse
|
||||
{
|
||||
repeated kiapi.common.types.KIID items = 1;
|
||||
|
||||
repeated kiapi.common.types.Box2 boxes = 2;
|
||||
}
|
||||
|
||||
// Retrieves a list of items. Returns SelectionResponse
|
||||
message GetSelection
|
||||
{
|
||||
// Specifies which document to query for selected items.
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// An optional list of types to filter on.
|
||||
// If none are provided, all selected items will be returned.
|
||||
repeated kiapi.common.types.KiCadObjectType types = 2;
|
||||
}
|
||||
|
||||
// The set of currently selected items
|
||||
message SelectionResponse
|
||||
{
|
||||
repeated google.protobuf.Any items = 1;
|
||||
}
|
||||
|
||||
// Adds the given items to the selection. Returns SelectionResponse
|
||||
message AddToSelection
|
||||
{
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// The items to select
|
||||
repeated kiapi.common.types.KIID items = 2;
|
||||
}
|
||||
|
||||
// Removes the given items to the selection. Returns SelectionResponse
|
||||
message RemoveFromSelection
|
||||
{
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
// The items to deselect
|
||||
repeated kiapi.common.types.KIID items = 2;
|
||||
}
|
||||
|
||||
// Removes all items from selection
|
||||
message ClearSelection
|
||||
{
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
}
|
||||
|
||||
// Tests if a certain point falls within tolerance of an item's geometry
|
||||
message HitTest
|
||||
{
|
||||
kiapi.common.types.ItemHeader header = 1;
|
||||
|
||||
kiapi.common.types.KIID id = 2;
|
||||
|
||||
kiapi.common.types.Vector2 position = 3;
|
||||
|
||||
int32 tolerance = 4;
|
||||
}
|
||||
|
||||
enum HitTestResult
|
||||
{
|
||||
HTR_UNKNOWN = 0;
|
||||
HTR_NO_HIT = 1;
|
||||
HTR_HIT = 2;
|
||||
}
|
||||
|
||||
message HitTestResponse
|
||||
{
|
||||
HitTestResult result = 1;
|
||||
}
|
||||
|
||||
// returns common.types.TitleBlockInfo
|
||||
message GetTitleBlockInfo
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
}
|
||||
|
||||
message SaveDocumentToString
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
}
|
||||
|
||||
message SavedDocumentResponse
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
|
||||
string contents = 2;
|
||||
}
|
||||
|
||||
message SaveSelectionToString
|
||||
{
|
||||
}
|
||||
|
||||
message SavedSelectionResponse
|
||||
{
|
||||
repeated kiapi.common.types.KIID ids = 1;
|
||||
|
||||
string contents = 2;
|
||||
}
|
||||
|
||||
// Attempts to parse the given string as a s-expression formatted container with items,
|
||||
// similar to how the Paste action inside the KiCad editor works. If the parse is successful,
|
||||
// the items will be created and inserted into the editor.
|
||||
// Returns CreateItemsResponse
|
||||
message ParseAndCreateItemsFromString
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
|
||||
string contents = 2;
|
||||
}
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.common.commands;
|
||||
|
||||
import "common/types/base_types.proto";
|
||||
import "common/types/project_settings.proto";
|
||||
|
||||
|
||||
message GetNetClasses
|
||||
{
|
||||
}
|
||||
|
||||
message NetClassesResponse
|
||||
{
|
||||
repeated kiapi.common.project.NetClass net_classes = 1;
|
||||
}
|
||||
|
||||
|
||||
message SetNetClasses
|
||||
{
|
||||
repeated kiapi.common.project.NetClass net_classes = 1;
|
||||
|
||||
// Whether to merge or replace the existing netclasses with the contents of this message
|
||||
// Note that this only happens at the level of netclass name: for example, if merge_mode is set to
|
||||
// MMM_MERGE, the design has netclasses ["Default", "HV"], and this message has netclasses
|
||||
// ["Default", "LV"], the resulting set will be ["Default", "HV", "LV"] -- the Default netclass
|
||||
// will have its properties replaced with those in this message, the "LV" netclass will be added,
|
||||
// and the "HV" netclass will be left alone. If merge_mode is set to MMM_REPLACE, the "HV" class
|
||||
// will be erased. Note that there must always be a "Default" netclass, so it will not be erased
|
||||
// even if merge_mode is MMM_REPLACE and there is no "Default" class specified in this message.
|
||||
kiapi.common.types.MapMergeMode merge_mode = 3;
|
||||
}
|
||||
|
||||
|
||||
message ExpandTextVariables
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
|
||||
repeated string text = 2;
|
||||
}
|
||||
|
||||
|
||||
message ExpandTextVariablesResponse
|
||||
{
|
||||
repeated string text = 1;
|
||||
}
|
||||
|
||||
|
||||
// returns kiapi.common.project.TextVariables
|
||||
message GetTextVariables
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
}
|
||||
|
||||
|
||||
message SetTextVariables
|
||||
{
|
||||
kiapi.common.types.DocumentSpecifier document = 1;
|
||||
|
||||
kiapi.common.project.TextVariables variables = 2;
|
||||
// Whether to merge or replace the existing text variables map with the contents of this message
|
||||
kiapi.common.types.MapMergeMode merge_mode = 3;
|
||||
}
|
||||
|
|
@ -1,92 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.common;
|
||||
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
enum ApiStatusCode
|
||||
{
|
||||
AS_UNKNOWN = 0;
|
||||
AS_OK = 1; // Request succeeded
|
||||
AS_TIMEOUT = 2; // Request timed out
|
||||
AS_BAD_REQUEST = 3; // The request had invalid parameters or otherwise was illegal
|
||||
AS_NOT_READY = 4; // KiCad has recently started and cannot handle API requests yet
|
||||
AS_UNHANDLED = 5; // The request was not handled by KiCad
|
||||
AS_TOKEN_MISMATCH = 6; // The kicad_token in the request didn't match this KiCad's token
|
||||
AS_BUSY = 7; // KiCad is busy performing an operation and can't accept API commands
|
||||
AS_UNIMPLEMENTED = 8; // The requested API call has not yet been implemented
|
||||
}
|
||||
|
||||
/*
|
||||
* For future expansion: any header fields that should be sent with a request
|
||||
*/
|
||||
message ApiRequestHeader
|
||||
{
|
||||
// An opaque string identifying a running instance of KiCad. If this is set to a non-empty
|
||||
// string in an API request, KiCad will reject the request if the value doesn't match its own
|
||||
// token. This can be used to let API clients make sure they are still talking to the same
|
||||
// instance of KiCad if they are long-running.
|
||||
string kicad_token = 1;
|
||||
|
||||
// A string identifying an API client. Should be set by the client to a value that is unique
|
||||
// to a specific instance of a client, for example the package name of the client plus its
|
||||
// process ID or a random string, e.g. "com.github.me.my_awesome_plugin-73951". The main purpose
|
||||
// of this name is to identify the client in debug logs.
|
||||
string client_name = 2;
|
||||
}
|
||||
|
||||
/*
|
||||
* The top-level envelope container for an API request (message from a client to the KiCad API server)
|
||||
*/
|
||||
message ApiRequest
|
||||
{
|
||||
ApiRequestHeader header = 1;
|
||||
|
||||
google.protobuf.Any message = 2;
|
||||
}
|
||||
|
||||
/*
|
||||
* For future expansion: any header fields that should be sent with a response
|
||||
*/
|
||||
message ApiResponseHeader
|
||||
{
|
||||
/// An opaque string identifying a running instance of KiCad.
|
||||
string kicad_token = 1;
|
||||
}
|
||||
|
||||
message ApiResponse
|
||||
{
|
||||
ApiResponseHeader header = 1;
|
||||
|
||||
ApiResponseStatus status = 2;
|
||||
|
||||
google.protobuf.Any message = 3;
|
||||
}
|
||||
|
||||
message ApiResponseStatus
|
||||
{
|
||||
/// A code describing the category of error (or AS_OK if no error)
|
||||
ApiStatusCode status = 1;
|
||||
|
||||
/// A human-readable description of the error, if any
|
||||
string error_message = 2;
|
||||
}
|
||||
|
|
@ -1,482 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* base_types.proto
|
||||
* Includes types used in many parts of the API
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.common.types;
|
||||
|
||||
import "google/protobuf/field_mask.proto";
|
||||
import "common/types/enums.proto";
|
||||
|
||||
enum CommandStatus
|
||||
{
|
||||
CS_UNKNOWN = 0;
|
||||
CS_OK = 1; // Command succeeded
|
||||
CS_FAILED = 2; // Command failed
|
||||
}
|
||||
|
||||
message CommandStatusResponse
|
||||
{
|
||||
CommandStatus status = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes a particular version of KiCad
|
||||
*/
|
||||
message KiCadVersion
|
||||
{
|
||||
uint32 major = 1;
|
||||
uint32 minor = 2;
|
||||
uint32 patch = 3;
|
||||
|
||||
// Full identifier string, potentially containing git hashes, packager-added info, etc.
|
||||
string full_version = 4;
|
||||
}
|
||||
|
||||
/**
|
||||
* Some commands are specific to a KiCad window (frame). This list contains all addressable frames.
|
||||
*/
|
||||
enum FrameType
|
||||
{
|
||||
FT_UNKNOWN = 0;
|
||||
FT_PROJECT_MANAGER = 1;
|
||||
FT_SCHEMATIC_EDITOR = 2;
|
||||
FT_PCB_EDITOR = 3;
|
||||
FT_SPICE_SIMULATOR = 4;
|
||||
FT_SYMBOL_EDITOR = 5;
|
||||
FT_FOOTPRINT_EDITOR = 6;
|
||||
FT_DRAWING_SHEET_EDITOR = 7;
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes a KIID, or UUID of an object in a KiCad editor model.
|
||||
*/
|
||||
message KIID
|
||||
{
|
||||
// The KIID's value in standard UUID format, stored as a string for easy portability
|
||||
string value = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Identifier for the type of document being targeted by a request
|
||||
*/
|
||||
enum DocumentType
|
||||
{
|
||||
DOCTYPE_UNKNOWN = 0;
|
||||
DOCTYPE_SCHEMATIC = 1;
|
||||
DOCTYPE_SYMBOL = 2;
|
||||
DOCTYPE_PCB = 3;
|
||||
DOCTYPE_FOOTPRINT = 4;
|
||||
DOCTYPE_DRAWING_SHEET = 5;
|
||||
DOCTYPE_PROJECT = 6;
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes a KiCad LIB_ID; a unique identifier for a loaded symbol or footprint
|
||||
*/
|
||||
message LibraryIdentifier
|
||||
{
|
||||
// The library portion of the LIB_ID
|
||||
string library_nickname = 1;
|
||||
|
||||
// The symbol or footprint name
|
||||
string entry_name = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes a unique sheet in a schematic
|
||||
*/
|
||||
message SheetPath
|
||||
{
|
||||
// The canonical path to the sheet. The first KIID will be the root sheet, etc.
|
||||
repeated KIID path = 1;
|
||||
|
||||
// The path converted to a human readable form such as "/", "/child", or "/child/grandchild"
|
||||
string path_human_readable = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes a KiCad project
|
||||
*/
|
||||
message ProjectSpecifier
|
||||
{
|
||||
// The name of the project (without the kicad_pro extension)
|
||||
string name = 1;
|
||||
|
||||
// The path to the project directory
|
||||
string path = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes a document that will be the target of a request
|
||||
*/
|
||||
message DocumentSpecifier
|
||||
{
|
||||
DocumentType type = 1;
|
||||
|
||||
oneof identifier
|
||||
{
|
||||
// If type == DT_SYMBOL or DT_FOOTPRINT, identifies a certain library entry
|
||||
LibraryIdentifier lib_id = 2;
|
||||
|
||||
// If type == DT_SCHEMATIC, identifies a sheet with a given path
|
||||
SheetPath sheet_path = 3;
|
||||
|
||||
// If type == DT_PCB, identifies a PCB with a given filename, e.g. "board.kicad_pcb"
|
||||
string board_filename = 4;
|
||||
}
|
||||
|
||||
ProjectSpecifier project = 5;
|
||||
}
|
||||
|
||||
/**
|
||||
* This header is included in requests and responses about item(s) in a document
|
||||
*/
|
||||
message ItemHeader
|
||||
{
|
||||
// Which document is this request targeting?
|
||||
DocumentSpecifier document = 1;
|
||||
|
||||
// Which container within the document is this request targeting?
|
||||
// If container is omitted or empty, the document is used as the container.
|
||||
KIID container = 2;
|
||||
|
||||
// Which fields on the item(s) are included with this request or response
|
||||
google.protobuf.FieldMask field_mask = 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* Status of a request that included an ItemHeader
|
||||
*/
|
||||
enum ItemRequestStatus
|
||||
{
|
||||
IRS_UNKNOWN = 0;
|
||||
IRS_OK = 1;
|
||||
IRS_DOCUMENT_NOT_FOUND = 2; // The given document is not open in KiCad
|
||||
IRS_FIELD_MASK_INVALID = 3; // The given field_mask contains invalid specifiers
|
||||
}
|
||||
|
||||
// Describes a point or distance in 2D space. All coordinates are in nanometers.
|
||||
message Vector2
|
||||
{
|
||||
int64 x_nm = 1;
|
||||
int64 y_nm = 2;
|
||||
}
|
||||
|
||||
// Describes a point or distance in 3D space. All coordinates are in nanometers.
|
||||
message Vector3
|
||||
{
|
||||
int64 x_nm = 1;
|
||||
int64 y_nm = 2;
|
||||
int64 z_nm = 3;
|
||||
}
|
||||
|
||||
message Vector3D
|
||||
{
|
||||
double x_nm = 1;
|
||||
double y_nm = 2;
|
||||
double z_nm = 3;
|
||||
}
|
||||
|
||||
message Box2
|
||||
{
|
||||
kiapi.common.types.Vector2 position = 1;
|
||||
kiapi.common.types.Vector2 size = 2;
|
||||
}
|
||||
|
||||
// Describes a quantity of distance (size, length, etc). All coordinates are in nanometers.
|
||||
message Distance
|
||||
{
|
||||
int64 value_nm = 1;
|
||||
}
|
||||
|
||||
// Corresponds to EDA_ANGLE, where the underlying storage is degrees
|
||||
message Angle
|
||||
{
|
||||
double value_degrees = 1;
|
||||
}
|
||||
|
||||
// Represents a value from 0.0 to 1.0
|
||||
message Ratio
|
||||
{
|
||||
double value = 1;
|
||||
}
|
||||
|
||||
// Represents a time delay in attoseconds. Since 10.0.0.
|
||||
message Time
|
||||
{
|
||||
int64 value_as = 1;
|
||||
}
|
||||
|
||||
// Corresponds to COLOR4D. Each color channel is a double from 0.0 to 1.0.
|
||||
message Color
|
||||
{
|
||||
double r = 1;
|
||||
double g = 2;
|
||||
double b = 3;
|
||||
double a = 4;
|
||||
}
|
||||
|
||||
// The formulation of arc that is used in KiCad core geometry code.
|
||||
// Start, midpoint (on the arc) and end are stored. Angle, center point, etc are calculated.
|
||||
message ArcStartMidEnd
|
||||
{
|
||||
Vector2 start = 1;
|
||||
Vector2 mid = 2;
|
||||
Vector2 end = 3;
|
||||
}
|
||||
|
||||
message PolyLineNode
|
||||
{
|
||||
oneof geometry {
|
||||
Vector2 point = 1;
|
||||
ArcStartMidEnd arc = 2;
|
||||
}
|
||||
}
|
||||
|
||||
// Corresponds to class SHAPE_LINE_CHAIN: A closed or open polyline that can include arcs.
|
||||
// For non-arc cases, each node is a point along the line. An implicit line segment exists
|
||||
// between the last and first node if closed is true. When arcs are present, the arc start and
|
||||
// end points are not duplicated by point nodes (meaning, for example, a rectangle with rounded
|
||||
// corners could be represented with four arc nodes and no point nodes).
|
||||
message PolyLine
|
||||
{
|
||||
repeated PolyLineNode nodes = 1;
|
||||
bool closed = 2;
|
||||
}
|
||||
|
||||
message PolygonWithHoles
|
||||
{
|
||||
PolyLine outline = 1;
|
||||
repeated PolyLine holes = 2;
|
||||
}
|
||||
|
||||
// Corresponds to SHAPE_POLY_SET: a set of polygons or polylines
|
||||
message PolySet
|
||||
{
|
||||
repeated PolygonWithHoles polygons = 1;
|
||||
}
|
||||
|
||||
// Describes whether or not an item is locked for editing or movement
|
||||
enum LockedState
|
||||
{
|
||||
LS_UNKNOWN = 0;
|
||||
LS_UNLOCKED = 1;
|
||||
LS_LOCKED = 2;
|
||||
}
|
||||
|
||||
message TextAttributes
|
||||
{
|
||||
string font_name = 1;
|
||||
HorizontalAlignment horizontal_alignment = 2;
|
||||
VerticalAlignment vertical_alignment = 3;
|
||||
kiapi.common.types.Angle angle = 4;
|
||||
double line_spacing = 5;
|
||||
kiapi.common.types.Distance stroke_width = 6;
|
||||
bool italic = 7;
|
||||
bool bold = 8;
|
||||
bool underlined = 9;
|
||||
|
||||
// Deprecated since 9.0.1 (text items are now always visible, only Fields can be hidden)
|
||||
bool visible = 10;
|
||||
|
||||
bool mirrored = 11;
|
||||
bool multiline = 12;
|
||||
bool keep_upright = 13;
|
||||
kiapi.common.types.Vector2 size = 14;
|
||||
}
|
||||
|
||||
message Text
|
||||
{
|
||||
// Reserved for future use; base text objects don't have IDs right now
|
||||
// kiapi.common.types.KIID id = 1;
|
||||
kiapi.common.types.Vector2 position = 2;
|
||||
kiapi.common.types.TextAttributes attributes = 3;
|
||||
|
||||
// Reserved for future use; base objects don't support locking right now
|
||||
//kiapi.common.types.LockedState locked = 4;
|
||||
|
||||
string text = 5;
|
||||
string hyperlink = 6;
|
||||
}
|
||||
|
||||
message TextBox
|
||||
{
|
||||
kiapi.common.types.Vector2 top_left = 2;
|
||||
kiapi.common.types.Vector2 bottom_right = 3;
|
||||
kiapi.common.types.TextAttributes attributes = 4;
|
||||
|
||||
// Reserved for future use; base objects don't support locking right now
|
||||
//kiapi.common.types.LockedState locked = 5;
|
||||
|
||||
string text = 6;
|
||||
}
|
||||
|
||||
message StrokeAttributes
|
||||
{
|
||||
Distance width = 1;
|
||||
StrokeLineStyle style = 2;
|
||||
Color color = 3;
|
||||
}
|
||||
|
||||
enum GraphicFillType
|
||||
{
|
||||
GFT_UNKNOWN = 0;
|
||||
GFT_UNFILLED = 1;
|
||||
GFT_FILLED = 2;
|
||||
}
|
||||
|
||||
message GraphicFillAttributes
|
||||
{
|
||||
GraphicFillType fill_type = 1;
|
||||
|
||||
// Color of the fill (not used in board and footprints)
|
||||
Color color = 2;
|
||||
}
|
||||
|
||||
message GraphicAttributes
|
||||
{
|
||||
StrokeAttributes stroke = 1;
|
||||
GraphicFillAttributes fill = 2;
|
||||
}
|
||||
|
||||
message GraphicSegmentAttributes
|
||||
{
|
||||
kiapi.common.types.Vector2 start = 1;
|
||||
kiapi.common.types.Vector2 end = 2;
|
||||
}
|
||||
|
||||
message GraphicRectangleAttributes
|
||||
{
|
||||
kiapi.common.types.Vector2 top_left = 1;
|
||||
kiapi.common.types.Vector2 bottom_right = 2;
|
||||
kiapi.common.types.Distance corner_radius = 3;
|
||||
}
|
||||
|
||||
message GraphicArcAttributes
|
||||
{
|
||||
kiapi.common.types.Vector2 start = 1;
|
||||
kiapi.common.types.Vector2 mid = 2;
|
||||
kiapi.common.types.Vector2 end = 3;
|
||||
}
|
||||
|
||||
message GraphicCircleAttributes
|
||||
{
|
||||
kiapi.common.types.Vector2 center = 1;
|
||||
|
||||
// A point on the radius of the circle. This is stored instead of just a radius so that the point
|
||||
// by which the user can adjust the circle radius is persisted.
|
||||
kiapi.common.types.Vector2 radius_point = 2;
|
||||
}
|
||||
|
||||
message GraphicBezierAttributes
|
||||
{
|
||||
kiapi.common.types.Vector2 start = 1;
|
||||
kiapi.common.types.Vector2 control1 = 2;
|
||||
kiapi.common.types.Vector2 control2 = 3;
|
||||
kiapi.common.types.Vector2 end = 4;
|
||||
}
|
||||
|
||||
message GraphicShape
|
||||
{
|
||||
// Reserved for future use; base EDA_SHAPE doesn't have an ID or locked state right now
|
||||
// KIID id = 1;
|
||||
// LockedState locked = 2;
|
||||
GraphicAttributes attributes = 3;
|
||||
|
||||
oneof geometry {
|
||||
GraphicSegmentAttributes segment = 4;
|
||||
GraphicRectangleAttributes rectangle = 5;
|
||||
GraphicArcAttributes arc = 6;
|
||||
GraphicCircleAttributes circle = 7;
|
||||
PolySet polygon = 8;
|
||||
GraphicBezierAttributes bezier = 9;
|
||||
}
|
||||
}
|
||||
|
||||
// A SHAPE_COMPOUND in KiCad
|
||||
message CompoundShape
|
||||
{
|
||||
repeated GraphicShape shapes = 1;
|
||||
}
|
||||
|
||||
// The text strings that can be set in a drawing sheet for the title block
|
||||
message TitleBlockInfo
|
||||
{
|
||||
string title = 1;
|
||||
string date = 2;
|
||||
string revision = 3;
|
||||
string company = 4;
|
||||
|
||||
// Note: not a repeated string; there can be gaps and the UI limits the count to 9
|
||||
|
||||
string comment1 = 5;
|
||||
string comment2 = 6;
|
||||
string comment3 = 7;
|
||||
string comment4 = 8;
|
||||
string comment5 = 9;
|
||||
string comment6 = 10;
|
||||
string comment7 = 11;
|
||||
string comment8 = 12;
|
||||
string comment9 = 13;
|
||||
}
|
||||
|
||||
enum AxisAlignment
|
||||
{
|
||||
AA_UNKNOWN = 0;
|
||||
AA_X_AXIS = 1;
|
||||
AA_Y_AXIS = 2;
|
||||
}
|
||||
|
||||
enum MapMergeMode
|
||||
{
|
||||
MMM_UNKNOWN = 0;
|
||||
// The existing map will be merged with the incoming map; keys that are not present in the
|
||||
// incoming map will be preserved with their original values
|
||||
MMM_MERGE = 1;
|
||||
// The existing map will be cleared and replaced with the incoming map
|
||||
MMM_REPLACE = 2;
|
||||
}
|
||||
|
||||
enum ElectricalPinType
|
||||
{
|
||||
EPT_UNKNOWN = 0;
|
||||
EPT_INPUT = 1;
|
||||
EPT_OUTPUT = 2;
|
||||
EPT_BIDIRECTIONAL = 3;
|
||||
EPT_TRISTATE = 4;
|
||||
EPT_PASSIVE = 5;
|
||||
|
||||
// A free pin is not internally connected and may connect to any net (route-through)
|
||||
EPT_FREE = 6;
|
||||
|
||||
EPT_UNSPECIFIED = 7;
|
||||
EPT_POWER_INPUT = 8;
|
||||
EPT_POWER_OUTPUT = 9;
|
||||
EPT_OPEN_COLLECTOR = 10;
|
||||
EPT_OPEN_EMITTER = 11;
|
||||
|
||||
// A no-connect pin should not be connected to any net
|
||||
EPT_NO_CONNECT = 12;
|
||||
}
|
||||
|
|
@ -1,122 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* enums.proto
|
||||
* Includes protobuf versions of common KiCad enums
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.common.types;
|
||||
|
||||
// The set of object types (from KICAD_T) that are exposed to the API.
|
||||
enum KiCadObjectType
|
||||
{
|
||||
KOT_UNKNOWN = 0;
|
||||
|
||||
KOT_PCB_FOOTPRINT = 1;
|
||||
KOT_PCB_PAD = 2;
|
||||
KOT_PCB_SHAPE = 3;
|
||||
KOT_PCB_REFERENCE_IMAGE = 4;
|
||||
KOT_PCB_FIELD = 5;
|
||||
KOT_PCB_GENERATOR = 6;
|
||||
KOT_PCB_TEXT = 7;
|
||||
KOT_PCB_TEXTBOX = 8;
|
||||
KOT_PCB_TABLE = 9;
|
||||
KOT_PCB_TABLECELL = 10;
|
||||
KOT_PCB_TRACE = 11;
|
||||
KOT_PCB_VIA = 12;
|
||||
KOT_PCB_ARC = 13;
|
||||
KOT_PCB_MARKER = 14;
|
||||
KOT_PCB_DIMENSION = 15;
|
||||
KOT_PCB_ZONE = 16;
|
||||
KOT_PCB_GROUP = 17;
|
||||
|
||||
KOT_SCH_MARKER = 18;
|
||||
KOT_SCH_JUNCTION = 19;
|
||||
KOT_SCH_NO_CONNECT = 20;
|
||||
KOT_SCH_BUS_WIRE_ENTRY = 21;
|
||||
KOT_SCH_BUS_BUS_ENTRY = 22;
|
||||
KOT_SCH_LINE = 23;
|
||||
KOT_SCH_SHAPE = 24;
|
||||
KOT_SCH_BITMAP = 25;
|
||||
KOT_SCH_TEXTBOX = 26;
|
||||
KOT_SCH_TEXT = 27;
|
||||
KOT_SCH_TABLE = 28;
|
||||
KOT_SCH_TABLECELL = 29;
|
||||
KOT_SCH_LABEL = 30;
|
||||
KOT_SCH_GLOBAL_LABEL = 31;
|
||||
KOT_SCH_HIER_LABEL = 32;
|
||||
KOT_SCH_DIRECTIVE_LABEL = 33;
|
||||
KOT_SCH_FIELD = 34;
|
||||
KOT_SCH_SYMBOL = 35;
|
||||
KOT_SCH_SHEET_PIN = 36;
|
||||
KOT_SCH_SHEET = 37;
|
||||
KOT_SCH_PIN = 38;
|
||||
|
||||
KOT_LIB_SYMBOL = 39;
|
||||
// KOT_LIB_SHAPE = 40;
|
||||
// KOT_LIB_TEXT = 41;
|
||||
// KOT_LIB_TEXTBOX = 42;
|
||||
// KOT_LIB_PIN = 43;
|
||||
// KOT_LIB_FIELD = 44;
|
||||
|
||||
KOT_WSG_LINE = 45;
|
||||
KOT_WSG_RECT = 46;
|
||||
KOT_WSG_POLY = 47;
|
||||
KOT_WSG_TEXT = 48;
|
||||
KOT_WSG_BITMAP = 49;
|
||||
KOT_WSG_PAGE = 50;
|
||||
|
||||
KOT_SCH_GROUP = 51;
|
||||
KOT_PCB_BARCODE = 52;
|
||||
}
|
||||
|
||||
// Mapped to GR_TEXT_H_ALIGN_T
|
||||
enum HorizontalAlignment
|
||||
{
|
||||
HA_UNKNOWN = 0;
|
||||
HA_LEFT = 1;
|
||||
HA_CENTER = 2;
|
||||
HA_RIGHT = 3;
|
||||
HA_INDETERMINATE = 4;
|
||||
}
|
||||
|
||||
// Mapped to GR_TEXT_V_ALIGN_T
|
||||
enum VerticalAlignment
|
||||
{
|
||||
VA_UNKNOWN = 0;
|
||||
VA_TOP = 1;
|
||||
VA_CENTER = 2;
|
||||
VA_BOTTOM = 3;
|
||||
VA_INDETERMINATE = 4;
|
||||
}
|
||||
|
||||
// Mapped to LINE_STYLE
|
||||
enum StrokeLineStyle
|
||||
{
|
||||
SLS_UNKNOWN = 0;
|
||||
SLS_DEFAULT = 1;
|
||||
SLS_SOLID = 2;
|
||||
SLS_DASH = 3;
|
||||
SLS_DOT = 4;
|
||||
SLS_DASHDOT = 5;
|
||||
SLS_DASHDOTDOT = 6;
|
||||
}
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* project_settings.proto
|
||||
* Messages that describes project settings shared between schematics and boards
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.common.project;
|
||||
|
||||
import "common/types/base_types.proto";
|
||||
import "common/types/enums.proto";
|
||||
import "board/board_types.proto";
|
||||
|
||||
message NetClassBoardSettings
|
||||
{
|
||||
optional kiapi.common.types.Distance clearance = 1;
|
||||
optional kiapi.common.types.Distance track_width = 2;
|
||||
optional kiapi.common.types.Distance diff_pair_track_width = 3;
|
||||
optional kiapi.common.types.Distance diff_pair_gap = 4;
|
||||
optional kiapi.common.types.Distance diff_pair_via_gap = 5;
|
||||
|
||||
// The default padstack to use for vias belonging to this netclass
|
||||
// Currently KiCad only supports specifying the drill diameter and annular size on all layers for
|
||||
// netclass via stacks. Complex padstacks and other via features cannot be specified here.
|
||||
optional kiapi.board.types.PadStack via_stack = 6;
|
||||
|
||||
// The default padstack to use for microvias belonging to this netclass
|
||||
// Currently KiCad only supports specifying the drill diameter and annular size on all layers for
|
||||
// netclass via stacks. Complex padstacks and other via features cannot be specified here.
|
||||
optional kiapi.board.types.PadStack microvia_stack = 7;
|
||||
|
||||
optional kiapi.common.types.Color color = 8;
|
||||
|
||||
// Since 10.0.0
|
||||
optional string tuning_profile = 9;
|
||||
}
|
||||
|
||||
message NetClassSchematicSettings
|
||||
{
|
||||
optional kiapi.common.types.Distance wire_width = 1;
|
||||
optional kiapi.common.types.Distance bus_width = 2;
|
||||
optional kiapi.common.types.Color color = 3;
|
||||
optional kiapi.common.types.StrokeLineStyle line_style = 4;
|
||||
}
|
||||
|
||||
enum NetClassType
|
||||
{
|
||||
NCT_UNKNOWN = 0;
|
||||
// An explicitly-defined netclass, created by the user and saved in the project file
|
||||
NCT_EXPLICIT = 1;
|
||||
// An implicit (effective) netclass, made up of multiple explicit netclasses
|
||||
NCT_IMPLICIT = 2;
|
||||
}
|
||||
|
||||
message NetClass
|
||||
{
|
||||
// The name of the netclass (the literal string "Default" for the default netclass)
|
||||
// May be empty for composite netclasses
|
||||
string name = 1;
|
||||
|
||||
optional int32 priority = 2;
|
||||
|
||||
optional NetClassBoardSettings board = 3;
|
||||
optional NetClassSchematicSettings schematic = 4;
|
||||
|
||||
NetClassType type = 5;
|
||||
|
||||
// If this is a composite netclass, a list of the names of the "real" netclasses that make it up
|
||||
repeated string constituents = 6;
|
||||
}
|
||||
|
||||
message TextVariables
|
||||
{
|
||||
map<string, string> variables = 1;
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.schematic.types;
|
||||
|
||||
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package kiapi.schematic.types;
|
||||
|
||||
import "common/types/base_types.proto";
|
||||
|
||||
enum SchematicLayer
|
||||
{
|
||||
SL_UNKNOWN = 0;
|
||||
}
|
||||
|
||||
/// Represents a schematic line segment, which may be a wire, bus, or graphical line
|
||||
message Line
|
||||
{
|
||||
kiapi.common.types.KIID id = 1;
|
||||
kiapi.common.types.Vector2 start = 2;
|
||||
kiapi.common.types.Vector2 end = 3;
|
||||
|
||||
/**
|
||||
* One of: LAYER_BUS, LAYER_WIRE, LAYER_NOTES
|
||||
*/
|
||||
SchematicLayer layer = 4;
|
||||
}
|
||||
|
||||
message Text
|
||||
{
|
||||
kiapi.common.types.Text text = 1;
|
||||
}
|
||||
|
||||
message LocalLabel
|
||||
{
|
||||
kiapi.common.types.KIID id = 1;
|
||||
kiapi.common.types.Vector2 position = 2;
|
||||
Text text = 3;
|
||||
}
|
||||
|
||||
message GlobalLabel
|
||||
{
|
||||
kiapi.common.types.KIID id = 1;
|
||||
kiapi.common.types.Vector2 position = 2;
|
||||
Text text = 3;
|
||||
}
|
||||
|
||||
message HierarchicalLabel
|
||||
{
|
||||
kiapi.common.types.KIID id = 1;
|
||||
kiapi.common.types.Vector2 position = 2;
|
||||
Text text = 3;
|
||||
}
|
||||
|
||||
message DirectiveLabel
|
||||
{
|
||||
kiapi.common.types.KIID id = 1;
|
||||
kiapi.common.types.Vector2 position = 2;
|
||||
Text text = 3;
|
||||
}
|
||||
Loading…
Reference in New Issue