Skip to content

Commit ceb6ca3

Browse files
committed
feat(vacuum-module): add vacuum module project
1 parent 55f1614 commit ceb6ca3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+5862
-21
lines changed

.github/workflows/stm32-codecov.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ jobs:
4444
cmake --build --preset host --target thermocycler-gen2-build-and-test
4545
cmake --build --preset host --target heater-shaker-build-and-test
4646
cmake --build --preset host --target tempdeck-gen3-build-and-test
47+
cmake --build --preset host --target flex-stacker-build-and-test
48+
cmake --build --preset host --target vacuum-module-build-and-test
4749
- name: 'Generate coverage'
4850
run: cmake --build --preset host --target lcov-geninfo
4951
- name: 'Convert coverage to xml'

.github/workflows/stm32-common.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ on:
1515
paths_ignore:
1616
- 'cmake/Arduino*'
1717
branches:
18-
- '*'
18+
- 'edge'
1919
tags:
2020
- 'thermocycler-refresh@*'
2121
- 'heater-shaker@*'
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: 'Vacuum Module create release from tag'
2+
on:
3+
push:
4+
tags:
5+
- 'vacuum-module@*'
6+
pull_request:
7+
paths:
8+
- '.github/workflows/vacuum-module-create-release.yaml'
9+
workflow_dispatch:
10+
11+
12+
defaults:
13+
run:
14+
shell: bash
15+
16+
17+
jobs:
18+
cross-compile-check-and-release:
19+
name: 'Cross-Compile/Check and Create Release'
20+
runs-on: 'ubuntu-24.04'
21+
timeout-minutes: 10
22+
steps:
23+
- uses: 'actions/checkout@v4'
24+
with:
25+
fetch-depth: 0
26+
- uses: 'actions/cache@v4'
27+
with:
28+
key: stm32-cross-${{ secrets.MODULES_STM32_CACHE_VERSION }}-${{ hashFiles('cmake/*') }}
29+
restore-keys: stm32-cross-${{ secrets.MODULES_STM32_CACHE_VERSION }}-
30+
path: './stm32-tools'
31+
- name: 'Configure'
32+
run: cmake --preset=stm32-cross .
33+
- name: 'Build'
34+
run: cmake --build --preset cross --target vacuum-module-hex
35+
- name: 'Build Combo Image Hex'
36+
run: cmake --build --preset cross --target vacuum-module-image-hex
37+
- name: 'Build Combo Image Binary'
38+
run: cmake --build --preset cross --target vacuum-module-image-bin
39+
- name: 'Build Combo Image Zip'
40+
run: cmake --build --preset cross --target vacuum-module-zip
41+
- name: 'Prep for install'
42+
run: cmake --install ./build-stm32-cross --component vacuum-module
43+
- name: 'Save firmware artifacts'
44+
uses: actions/upload-artifact@v4
45+
with:
46+
name: vacuum-module-build
47+
path: dist/vacuum-module/*.zip
48+
- if: github.event_name != 'pull_request'
49+
name: 'Deploy'
50+
env:
51+
AWS_ACCESS_KEY_ID: ${{ secrets.S3_MODULES_DEPLOY_KEY_ID }}
52+
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_MODULES_DEPLOY_SECRET }}
53+
AWS_DEFAULT_REGION: us-east-2
54+
TRAVIS_TAG: ${{ github.ref_name }}
55+
run: |
56+
. ./scripts/set_build_vars.sh
57+
aws s3 sync --acl=public-read ${RELEASE_LOCAL_DIR} s3://opentrons-modules-builds/${RELEASE_UPLOAD_DIR}
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: 'Vacuum Module build/test'
2+
on:
3+
pull_request:
4+
paths:
5+
- 'stm32-modules/vacuum-module/**/*'
6+
- 'stm32-modules/common/**/*'
7+
- 'stm32-modules/include/common/**/*'
8+
- 'stm32-modules/include/vacuum-module/**/*'
9+
- 'cmake/**/*'
10+
- 'CMakeLists.txt'
11+
- 'stm32-modules/CMakeLists.txt'
12+
- 'CMakePresets.json'
13+
- '.clang-format'
14+
- '.clang-tidy'
15+
- 'cpp-utils/**/*'
16+
paths_ignore:
17+
- 'cmake/Arduino*'
18+
push:
19+
paths:
20+
- 'stm32-modules/vacuum-module/**/*'
21+
- 'stm32-modules/common/**/*'
22+
- 'stm32-modules/include/common/**/*'
23+
- 'stm32-modules/include/vacuum-module/**/*'
24+
- 'cmake/**/*'
25+
- 'CMakeLists.txt'
26+
- 'stm32-modules/CMakeLists.txt'
27+
- 'CMakePresets.json'
28+
- '.clang-format'
29+
- '.clang-tidy'
30+
- '.github/workflows/vacuum-module.yaml'
31+
paths_ignore:
32+
- 'cmake/Arduino*'
33+
branches:
34+
- '*'
35+
tags:
36+
- 'vacuum-module@*'
37+
workflow_dispatch:
38+
39+
40+
defaults:
41+
run:
42+
shell: bash
43+
44+
45+
jobs:
46+
cross-compile-check:
47+
name: 'Cross-Compile/Check'
48+
runs-on: 'ubuntu-24.04'
49+
timeout-minutes: 10
50+
steps:
51+
- uses: 'actions/checkout@v4'
52+
with:
53+
fetch-depth: 0
54+
- uses: 'actions/cache@v4'
55+
with:
56+
key: stm32-cross-${{ secrets.MODULES_STM32_CACHE_VERSION }}-${{ hashFiles('cmake/*') }}
57+
restore-keys: stm32-cross-${{ secrets.MODULES_STM32_CACHE_VERSION }}-
58+
path: './stm32-tools'
59+
- name: 'Configure'
60+
run: cmake --preset=stm32-cross .
61+
- name: 'Format'
62+
run: cmake --build --preset cross --target vacuum-module-format-ci
63+
- name: 'Lint'
64+
run: cmake --build --preset cross --target vacuum-module-lint
65+
- name: 'Build startup app'
66+
run: cmake --build --preset cross --target vacuum-module-startup
67+
- name: 'Build'
68+
run: cmake --build --preset cross --target vacuum-module-hex
69+
- name: 'Build full image'
70+
run: cmake --build --preset cross --target vacuum-module-image-hex
71+
- name: 'Build full image binary'
72+
run: cmake --build --preset cross --target vacuum-module-image-bin
73+
host-compile-test:
74+
name: 'Host-Compile/Test'
75+
runs-on: 'ubuntu-24.04'
76+
timeout-minutes: 10
77+
env:
78+
CC: gcc-13
79+
CXX: g++-13
80+
steps:
81+
- run: |
82+
sudo apt update
83+
sudo apt install gcc-13 g++-13
84+
- uses: 'actions/checkout@v4'
85+
with:
86+
fetch-depth: 0
87+
- uses: 'actions/cache@v4'
88+
with:
89+
path: './stm32-tools'
90+
key: stm32-host-${{ secrets.MODULES_STM32_CACHE_VERSION }}-${{ hashFiles('cmake/*') }}
91+
restore-keys: stm32-host-${{ secrets.MODULES_STM32_CACHE_VERSION }}-
92+
- name: 'Configure'
93+
run: cmake --preset=stm32-host .
94+
- name: 'Build Simulator'
95+
run: cmake --build --preset host --target vacuum-module-simulator
96+
- name: 'Build and Test'
97+
run: cmake --build --preset vacuum-module-tests

CMakePresets.json

Lines changed: 56 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,12 @@
7676
"configurePreset": "stm32-cross",
7777
"jobs": 8,
7878
"targets": [
79+
"reference-module",
7980
"thermocycler-gen2",
8081
"heater-shaker",
8182
"tempdeck-gen3",
8283
"flex-stacker",
83-
"reference-module"
84+
"vacuum-module"
8485
]
8586
},
8687
{
@@ -90,11 +91,32 @@
9091
"configurePreset": "stm32-host",
9192
"jobs": 8,
9293
"targets": [
94+
"reference-module-build-and-test",
9395
"thermocycler-gen2-build-and-test",
9496
"heater-shaker-build-and-test",
9597
"tempdeck-gen3-build-and-test",
9698
"flex-stacker-build-and-test",
97-
"reference-module-build-and-test"
99+
"vacuum-module-build-and-test"
100+
]
101+
},
102+
{
103+
"name": "reference-module-binary",
104+
"displayName": "reference-module binary",
105+
"description": "Build the reference-module cross binary",
106+
"configurePreset": "stm32-cross",
107+
"jobs": 4,
108+
"targets": [
109+
"reference-module"
110+
]
111+
},
112+
{
113+
"name": "reference-module-debug",
114+
"displayName": "reference-module debug",
115+
"description": "Build the reference-module cross debug",
116+
"configurePreset": "stm32-cross",
117+
"jobs": 4,
118+
"targets": [
119+
"reference-module-debug"
98120
]
99121
},
100122
{
@@ -177,23 +199,23 @@
177199
]
178200
},
179201
{
180-
"name": "reference-module-binary",
181-
"displayName": "reference-module binary",
182-
"description": "Build the reference-module cross binary",
202+
"name": "vacuum-module-binary",
203+
"displayName": "vacuum-module binary",
204+
"description": "Build the vacuum-module cross binary",
183205
"configurePreset": "stm32-cross",
184206
"jobs": 4,
185207
"targets": [
186-
"reference-module"
208+
"vacuum-module"
187209
]
188210
},
189211
{
190-
"name": "reference-module-debug",
191-
"displayName": "reference-module debug",
192-
"description": "Build the reference-module cross debug",
212+
"name": "vacuum-module-debug",
213+
"displayName": "vacuum-module debug",
214+
"description": "Build the vacuum-module cross debug",
193215
"configurePreset": "stm32-cross",
194216
"jobs": 4,
195217
"targets": [
196-
"reference-module-debug"
218+
"vacuum-module-debug"
197219
]
198220
},
199221
{
@@ -203,12 +225,13 @@
203225
"configurePreset": "stm32-cross",
204226
"jobs": 4,
205227
"targets": [
228+
"reference-module-lint",
206229
"heater-shaker-lint",
207230
"common-lint",
208231
"thermocycler-gen2-lint",
209232
"tempdeck-gen3-lint",
210233
"flex-stacker-lint",
211-
"reference-module-lint"
234+
"vacuum-module-lint"
212235
]
213236
},
214237
{
@@ -218,12 +241,13 @@
218241
"configurePreset": "stm32-cross",
219242
"jobs": 4,
220243
"targets": [
244+
"reference-module-format",
221245
"heater-shaker-format",
222246
"common-format",
223247
"thermocycler-gen2-format",
224248
"tempdeck-gen3-format",
225249
"flex-stacker-format",
226-
"reference-module-format"
250+
"vacuum-module-format"
227251
]
228252
},
229253
{
@@ -233,12 +257,13 @@
233257
"configurePreset": "stm32-host",
234258
"jobs": 4,
235259
"targets": [
260+
"reference-module-format",
236261
"heater-shaker-format",
237262
"common-format",
238263
"thermocycler-gen2-format",
239264
"tempdeck-gen3-format",
240265
"flex-stacker-format",
241-
"reference-module-format"
266+
"vacuum-module-format"
242267
]
243268
},
244269
{
@@ -248,11 +273,12 @@
248273
"configurePreset": "stm32-host",
249274
"jobs": 4,
250275
"targets": [
276+
"reference-module-simulator",
251277
"heater-shaker-simulator",
252278
"thermocycler-gen2-simulator",
253279
"tempdeck-gen3-simulator",
254280
"flex-stacker-simulator",
255-
"reference-module-simulator"
281+
"vacuum-module-simulator"
256282
]
257283
},
258284
{
@@ -262,11 +288,11 @@
262288
"configurePreset": "stm32-host-gcc10",
263289
"jobs": 4,
264290
"targets": [
291+
"reference-module-simulator",
265292
"heater-shaker-simulator",
266293
"thermocycler-gen2-simulator",
267294
"tempdeck-gen3-simulator",
268-
"flex-stacker-simulator",
269-
"reference-module-simulator"
295+
"vacuum-module-simulator"
270296
]
271297
},
272298
{
@@ -276,11 +302,22 @@
276302
"configurePreset": "stm32-host",
277303
"jobs": 4,
278304
"targets": [
305+
"reference-module-build-and-test",
279306
"heater-shaker-build-and-test",
280307
"common-build-and-test",
281308
"thermocycler-gen2-build-and-test",
282309
"tempdeck-gen3-build-and-test",
283310
"flex-stacker-build-and-test",
311+
"vacuum-module-build-and-test"
312+
]
313+
},
314+
{
315+
"name": "reference-module-tests",
316+
"displayName": "tests",
317+
"description": "Runs build-and-test target for reference-module",
318+
"configurePreset": "stm32-host",
319+
"jobs": 4,
320+
"targets": [
284321
"reference-module-build-and-test"
285322
]
286323
},
@@ -325,13 +362,13 @@
325362
]
326363
},
327364
{
328-
"name": "reference-module-tests",
365+
"name": "vacuum-module-tests",
329366
"displayName": "tests",
330-
"description": "Runs build-and-test target for reference-module",
367+
"description": "Runs build-and-test target for vacuum-module",
331368
"configurePreset": "stm32-host",
332369
"jobs": 4,
333370
"targets": [
334-
"reference-module-build-and-test"
371+
"vacuum-module-build-and-test"
335372
]
336373
},
337374
{

stm32-modules/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,11 @@ execute_process(COMMAND
4646
)
4747

4848
add_subdirectory(common)
49+
add_subdirectory(reference-module)
4950
add_subdirectory(heater-shaker)
5051
add_subdirectory(thermocycler-gen2)
5152
add_subdirectory(tempdeck-gen3)
5253
add_subdirectory(flex-stacker)
53-
add_subdirectory(reference-module)
54+
add_subdirectory(vacuum-module)
5455

5556
coverage_evaluate()

stm32-modules/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,9 @@ All the CMake stuff in here should be done according to https://cliutils.gitlab.
99
- `./heater-shaker` contains all of the code specific to the heater/shaker module
1010
- `./thermocycler-gen2` contains all of the code specific to the thermocycler-gen2 module
1111
- `./include` contains all the headers, sorted by subdirectory - e.g. `include/common/` is where include files common to all modules live. Within each base `include/` directory, files are sorted into further subdirectories based off of their use - for example, `include/heater-shaker/firmware` contains files specific to the heater/shaker cross-compile build. This is done (rather than the reverse, `firmware/include`) so that code can have liens like `#include "firmware/whatever.hpp"`, which makes it apparent in the code itself what domain the header is in.
12+
13+
## Reference Module
14+
15+
The `./reference-module` is a barebones implementation of an stm32 module that is used
16+
as a starting point when adding new modules. It sets up the bootloader, main application,
17+
usb connectivity, status LED, and i2c.

0 commit comments

Comments
 (0)