-
-
Notifications
You must be signed in to change notification settings - Fork 398
/
Copy pathboard.proto
238 lines (211 loc) · 7.3 KB
/
board.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
// This file is part of arduino-cli.
//
// Copyright 2020 ARDUINO SA (http://www.arduino.cc/)
//
// This software is released under the GNU General Public License version 3,
// which covers the main part of arduino-cli.
// The terms of this license can be found at:
// https://www.gnu.org/licenses/gpl-3.0.en.html
//
// You can be released from the requirements of the above licenses by purchasing
// a commercial license. Buying such a license is mandatory if you want to
// modify or otherwise use the software for commercial activities involving the
// Arduino software without disclosing the source code of your own applications.
// To purchase a commercial license, send an email to [email protected].
syntax = "proto3";
package cc.arduino.cli.commands;
option go_package = "github.com/arduino/arduino-cli/rpc/commands";
import "commands/common.proto";
message BoardDetailsReq {
// Arduino Core Service instance from the `Init` response.
Instance instance = 1;
// The fully qualified board name of the board you want information about
// (e.g., `arduino:avr:uno`).
string fqbn = 2;
}
message BoardDetailsResp {
// The fully qualified board name of the board.
string fqbn = 1;
// Name used to identify the board to humans (e.g., Arduino Uno).
string name = 2;
// Installed version of the board's platform.
string version = 3;
// The board ID component of the FQBN (e.g., `uno`).
string propertiesId = 4;
// Board alias that can be used as a more user friendly alternative to the
// FQBN.
string alias = 5;
// Whether this is an official or 3rd party board.
bool official = 6;
// URL of the board's pinout documentation.
string pinout = 7;
// Data about the package that contains the board's platform.
Package package = 8;
// Data about the board's platform.
BoardPlatform platform = 9;
// Tool dependencies of the board.
repeated ToolsDependencies toolsDependencies = 10;
// The board's custom configuration options.
repeated ConfigOption config_options = 11;
// Identifying information for the board (e.g., USB VID/PID).
repeated IdentificationPref identification_pref = 12;
// List of programmers supported by the board
repeated Programmer programmers = 13;
// Set to true if the board supports debugging
bool debugging_supported = 14;
}
message IdentificationPref {
// Identifying information for USB-connected boards.
USBID usbID = 1;
}
message USBID {
// USB vendor ID.
string VID = 1;
// USB product ID.
string PID = 2;
}
message Package {
// Maintainer of the package.
string maintainer = 1;
// The URL of the platforms index file
// (e.g., https://downloads.arduino.cc/packages/package_index.json).
string url = 2;
// A URL provided by the package author, intended to point to their website.
string websiteURL = 3;
// Email address of the package maintainer.
string email = 4;
// Package vendor name.
string name = 5;
// Resources for getting help about using the package.
Help help = 6;
}
message Help {
// URL for getting online help.
string online = 1;
}
message BoardPlatform {
// Architecture of the platform (e.g., `avr`).
string architecture = 1;
// Category of the platform. Set to `Contributed` for 3rd party platforms.
string category = 2;
// Download URL of the platform archive file.
string url = 3;
// File name of the platform archive.
string archiveFileName = 4;
// Checksum of the platform archive.
string checksum = 5;
// File size of the platform archive.
int64 size = 6;
// Name used to identify the platform to humans.
string name = 7;
}
message ToolsDependencies {
// Vendor name of the package containing the tool definition.
string packager = 1;
// Tool name.
string name = 2;
// Tool version.
string version = 3;
// Data for the operating system-specific builds of the tool.
repeated Systems systems = 4;
}
message Systems {
// Checksum of the tool archive.
string checksum = 1;
// Operating system identifier.
string host = 2;
// File name of the tool archive.
string archiveFileName = 3;
// Download URL of the tool archive.
string url = 4;
// File size of the tool archive.
int64 size = 5;
}
message ConfigOption {
// ID of the configuration option. For identifying the option to machines.
string option = 1;
// Name of the configuration option for identifying the option to humans.
string option_label = 2;
// Possible values of the configuration option.
repeated ConfigValue values = 3;
}
message ConfigValue {
// The configuration option value.
string value = 1;
// Label to identify the configuration option to humans.
string value_label = 2;
// Whether the configuration option is selected.
bool selected = 3;
}
message BoardAttachReq {
// Arduino Core Service instance from the `Init` response.
Instance instance = 1;
// The board's URI (e.g., /dev/ttyACM0).
string board_uri = 2;
// Path of the sketch to attach the board to. The board attachment
// metadata will be saved to `{sketch_path}/sketch.json`.
string sketch_path = 3;
// Duration in seconds to search the given URI for a connected board before
// timing out. The default value is 5 seconds.
string search_timeout = 4;
}
message BoardAttachResp {
// Description of the current stage of the board attachment.
TaskProgress task_progress = 1;
}
message BoardListReq {
// Arduino Core Service instance from the `Init` response.
Instance instance = 1;
}
message BoardListResp {
// List of ports and the boards detected on those ports.
repeated DetectedPort ports = 1;
}
message DetectedPort {
// Address of the port (e.g., `serial:///dev/ttyACM0`).
string address = 1;
// Protocol of the port (e.g., `serial`).
string protocol = 2;
// A human friendly description of the protocol (e.g., "Serial Port (USB)").
string protocol_label = 3;
// The boards attached to the port.
repeated BoardListItem boards = 4;
}
message BoardListAllReq {
// Arduino Core Service instance from the `Init` response.
Instance instance = 1;
// The search query to filter the board list by.
repeated string search_args = 2;
// Set to true to get also the boards marked as "hidden" in the platform
bool include_hidden_boards = 3;
}
message BoardListAllResp {
// List of installed boards.
repeated BoardListItem boards = 1;
}
message BoardListWatchReq {
// Arduino Core Service instance from the `Init` response.
Instance instance = 1;
// Set this to true to stop the discovery process
bool interrupt = 2;
}
message BoardListWatchResp {
// Event type as received from the serial discovery tool
string event_type = 1;
// Information about the port
DetectedPort port = 2;
// Eventual errors when detecting connected boards
string error = 3;
}
message BoardListItem {
// The name for use when identifying the board to a human.
string name = 1;
// The fully qualified board name. Used to identify the board to a machine.
string FQBN = 2;
// If the board is marked as "hidden" in the platform
bool is_hidden = 3;
// Vendor ID
string VID = 4;
// Product ID
string PID = 5;
}