Skip to content

Commit 4bef4e9

Browse files
authored
feat(boards): Support board revisions in setup scripts.
* Make setup.sh/ps1 prompt for board revision for boards that have revisions
1 parent fff1cbe commit 4bef4e9

File tree

3 files changed

+78
-1
lines changed

3 files changed

+78
-1
lines changed

docs/src/templates/setup.ps1.mustache

+29
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,19 @@ if ($keyboard_type -eq "shield") {
131131
{{/boards}}
132132
}
133133

134+
$boards_revisions = [ordered]@{
135+
{{#boards}}
136+
{{id}} = @({{#revisions}}
137+
"{{.}}"{{/revisions}});
138+
{{/boards}}
139+
}
140+
141+
$boards_default_revision=[ordered]@{
142+
{{#boards}}
143+
{{id}} = "{{{default_revision}}}";
144+
{{/boards}}
145+
}
146+
134147
Write-Host "$title"
135148
Write-Host ""
136149
Write-Host "MCU Board Selection:"
@@ -145,6 +158,22 @@ if ($keyboard_type -eq "shield") {
145158
$shields = $keyboard_siblings
146159
$board = $($($boards.keys)[$choice])
147160
$boards = ( $board )
161+
162+
if ($($($boards_revisions.values)[$choice]).count -gt 0) {
163+
$valid_revisions = $($($boards_revisions.values)[$choice])
164+
$revision_choices = @() + $valid_revisions
165+
166+
for ($i = 0; $i -lt $valid_revisions.count; $i += 1) {
167+
if ($valid_revisions[$i] -eq $($($boards_default_revision.values)[$choice])) {
168+
$revision_choices[$i] += " (default)"
169+
}
170+
}
171+
172+
$revision_choice = Get-Choice-From-Options -Options $revision_choices -Prompt $prompt
173+
$board = $board + "@" + $valid_revisions[$revision_choice]
174+
$boards = ( $board )
175+
}
176+
148177
} else {
149178
$boards = ( $keyboard_siblings )
150179
$shields = @( )

docs/src/templates/setup.sh.mustache

+35
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ if [ "$keyboard_shield" == "y" ]; then
122122
board_ids=({{#boards}}"{{id}}" {{/boards}})
123123
boards_usb_only=({{#boards}}"{{#usb_only}}y{{/usb_only}}{{^usb_only}}n{{/usb_only}}" {{/boards}})
124124

125+
boards_revisions=({{#boards}}"{{#revisions}}{{.}} {{/revisions}}" {{/boards}})
126+
boards_default_revision=({{#boards}}"{{{default_revision}}}" {{/boards}})
127+
125128
echo ""
126129
echo "MCU Board Selection:"
127130
PS3="$prompt "
@@ -151,6 +154,38 @@ if [ "$keyboard_shield" == "y" ]; then
151154

152155
esac
153156
done
157+
158+
if [ -n "${boards_revisions[$board_index]}" ]; then
159+
read -a _valid_revisions <<< "${boards_revisions[$board_index]}"
160+
161+
_rev_choices=("${_valid_revisions[@]}")
162+
for (( _i=0; _i<${#_valid_revisions}; _i++ )); do
163+
if [ "${boards_default_revision[board_index]}" = "${_valid_revisions[_i]}" ]; then
164+
_rev_choices[_i]+=" (default)"
165+
fi
166+
done
167+
168+
echo ""
169+
echo "MCU Board Revision:"
170+
select opt in "${_rev_choices[@]}" "Quit"; do
171+
case "$REPLY" in
172+
''|*[!0-9]*) echo "Invalid option. Try another one."; continue;;
173+
174+
$(( ${#_valid_revisions[@]}+1 )) ) echo "Goodbye!"; exit 1;;
175+
*)
176+
if [ $REPLY -gt $(( ${#_valid_revisions[@]}+1 )) ] || [ $REPLY -lt 0 ]; then
177+
echo "Invalid option. Try another one."
178+
continue
179+
fi
180+
181+
_rev_index=$(( $REPLY-1 ))
182+
board="${board_ids[$board_index]}@${_valid_revisions[_rev_index]}"
183+
boards=( "${board}" )
184+
break
185+
;;
186+
esac
187+
done
188+
fi
154189
else
155190
board=${keyboard}
156191
boards=$keyboard_siblings

schema/hardware-metadata.schema.json

+14-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616
"$defs": {
1717
"id": {
1818
"type": "string",
19-
"pattern": "^[a-z0-9_]+$"
19+
"pattern": "^[a-z0-9_]+(@([A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})))?$"
20+
},
21+
"revision": {
22+
"type": "string",
23+
"pattern": "[A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})"
2024
},
2125
"keyboard_siblings": {
2226
"type": "array",
@@ -202,6 +206,15 @@
202206
},
203207
"exposes": {
204208
"$ref": "#/$defs/interconnects"
209+
},
210+
"revisions": {
211+
"type": "array",
212+
"items": {
213+
"$ref": "#/$defs/revision"
214+
}
215+
},
216+
"default_revision": {
217+
"$ref": "#/$defs/revision"
205218
}
206219
}
207220
},

0 commit comments

Comments
 (0)