Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
296dcc6
v0.2.0 mergeback: Fix charge fail issue of hotplug dock on same port …
tullom Dec 11, 2025
7545545
v0.2.0 mergeback: 01-05-2026
tullom Jan 5, 2026
3fe9530
Merge pull request #667 from tullom/v0.2.0
jerrysxie Jan 6, 2026
2e46e77
v0.2.0 mergeback: 01-09-2026 bincode CI regression (#672)
tullom Jan 9, 2026
83b11d5
Rework MCTP/comms to have separate types/messaging crates for each se…
williampMSFT Jan 12, 2026
07d89d1
Refactor MCTP relay boilerplate into macro, clarify result nomenclatu…
williampMSFT Jan 13, 2026
6615aed
Add uart-service (#674)
kurtjd Jan 14, 2026
e2a466f
embedded-services: Add missing serialization to service messages (#679)
kurtjd Jan 20, 2026
0ada106
[v0.2.0 Refactor] [Type-C] Remove static_cell dependency and improve …
tullom Jan 22, 2026
829f5da
Uprev cargo-vet CI job to use cargo-vet@0.10.2 (#681)
tullom Jan 22, 2026
c6f2ee0
Power policy refactor (#688)
tullom Jan 27, 2026
a95d1ae
Fix `cargo test` on Windows (#696)
williampMSFT Jan 28, 2026
f4f3648
Implement ACPI time-alarm device (#683)
williampMSFT Jan 29, 2026
fcb7984
Add pico-de-gallo battery example (#676)
tullom Jan 29, 2026
e2d8d15
v0.2.0 mergeback: 02-02-2026
tullom Feb 2, 2026
424c68a
Merge pull request #700 from tullom/v0.2.0
tullom Feb 3, 2026
b21b275
Battery service refactor (#698)
tullom Feb 3, 2026
99c7023
Thermal service refactor (#701)
tullom Feb 3, 2026
02017d7
Remove deprecated eSPI memory map (#707)
williampMSFT Feb 6, 2026
0038225
Mark thermal service methods pub (#708)
kurtjd Feb 7, 2026
930a97c
CFU Service Refactor (#702)
tullom Feb 10, 2026
97db84a
Add mock battery to battery-service and example demoing use (#709)
tullom Feb 10, 2026
f212195
thermal-service: Add mocks (#710)
kurtjd Feb 10, 2026
16c4364
battery-service: Fix ACPI response (#713)
kurtjd Feb 11, 2026
ef2ed88
Refactor power policy to use direct async calls with power devices (#…
RobertZ2011 Feb 11, 2026
ead4bc8
Add facility for extensible relay services with direct async calls (#…
williampMSFT Feb 19, 2026
963f77c
comms: Update uart, thermal, and battery to use Relay trait (#732)
kurtjd Feb 25, 2026
c78562a
espi-service: Remove legacy comms (#735)
kurtjd Feb 25, 2026
451c75f
power-policy-service: Refactor module structure and renaming (#711)
RobertZ2011 Feb 26, 2026
6163f67
Power policy remove intrusive list (#731)
RobertZ2011 Mar 10, 2026
7f296bd
Uniform service spawning with external 'resources' on time-alarm, esp…
williampMSFT Mar 12, 2026
0ebad07
API guideline fixes (#746)
williampMSFT Mar 12, 2026
663e243
time-alarm-service: Add no_std mock support (#755)
kurtjd Mar 17, 2026
a83424b
power-power-service: Loosen lifetimes
RobertZ2011 Mar 11, 2026
cc1fb48
power-policy-interface: Introduce type-erased service event
RobertZ2011 Mar 11, 2026
f247e27
power-policy-service: Rename existing `D` generics
RobertZ2011 Mar 11, 2026
880a024
power-policy-service: Add event broadcasting back
RobertZ2011 Mar 12, 2026
0fd8aa4
embedded-service: Add `Named` trait
RobertZ2011 Mar 12, 2026
2ccf151
power-policy-service: Add provider tests
RobertZ2011 Mar 12, 2026
cc8f9e8
power-policy-service: Add unconstrained tests
RobertZ2011 Mar 12, 2026
fd3df59
power-policy-service: Create helper functions for service event tests
RobertZ2011 Mar 12, 2026
2456124
power-policy-service: Fix disconnect flow and add tests
RobertZ2011 Mar 16, 2026
9191bd1
embedded-service/event: Remove `DiscardSender` to `NoopSender`
RobertZ2011 Mar 17, 2026
5cf9ab2
power-policy-service: Introduce registration trait
RobertZ2011 Mar 17, 2026
799b585
power-policy-service: Rename EventReceivers
RobertZ2011 Mar 17, 2026
cabc36e
thermal-service: Implement runnable service traits (#758)
kurtjd Mar 20, 2026
71414df
embedded-services: Fix cortex-m dependencies (#760)
kurtjd Mar 23, 2026
295d24f
Merge branch 'v0.2.0' into power-policy-event-refactor
jerrysxie Mar 24, 2026
fe60c6f
Merge pull request #747 from RobertZ2011/power-policy-event-refactor
jerrysxie Mar 24, 2026
1332d70
workflows/check: Add test code coverage report (#764)
RobertZ2011 Mar 26, 2026
5b2f9d8
power-policy-service: Add test coverage for provider power (#762)
RobertZ2011 Mar 27, 2026
114c68c
Battery-service: convert to uniform init / external resources (#759)
williampMSFT Mar 31, 2026
d3347e3
type-c-service: Remove external message types
RobertZ2011 Feb 23, 2026
f98844e
Break-out `type-c-interface` crate
RobertZ2011 Feb 23, 2026
8e582e5
Minor changes and formatting fixes
RobertZ2011 Mar 25, 2026
0ae78a5
Update examples
RobertZ2011 Mar 25, 2026
7c8f528
Minor fixes and improvements
RobertZ2011 Mar 26, 2026
8e0bea5
Fix typo in comment
RobertZ2011 Mar 26, 2026
0ee416e
Merge pull request #757 from RobertZ2011/type-c-refactor-remove-external
jerrysxie Mar 31, 2026
b010625
power-policy-service: Add additional consumer tests (#771)
RobertZ2011 Apr 1, 2026
5d8e146
type-c-service: Fix receiving power policy events
RobertZ2011 Mar 27, 2026
18d4a4f
type-c-service: Remove interior mutability from service
RobertZ2011 Mar 27, 2026
07aa6e3
Restore commented out `opm_task`
RobertZ2011 Apr 1, 2026
5a0ed0d
Merge pull request #766 from RobertZ2011/type-c-refactor-direct-async
jerrysxie Apr 2, 2026
3f3ca6a
Time-alarm service: Split interface and relay handling (#776)
williampMSFT Apr 8, 2026
9989647
Battery service: Split interface and relay logic into separate crates…
williampMSFT Apr 11, 2026
802cd35
thermal-service: Separate interface from implementation (#777)
kurtjd Apr 13, 2026
29433d3
power-policy-service/tests: Introduce dedicated Test trait (#772)
RobertZ2011 Apr 13, 2026
a3c429d
Merge feature/relay-split into v0.2.0 (#785)
jerrysxie Apr 13, 2026
a11dfb5
type-c-service: Migrate to per-port events (#775)
RobertZ2011 Apr 14, 2026
01bc365
Uptake latest embassy-imxrt (#788)
williampMSFT Apr 14, 2026
83646b1
power-policy-service/tests: Add tests for disconnecting other PSU (#794)
RobertZ2011 Apr 17, 2026
73aa208
v0.2.0 mergeback: 04-20-2026
tullom Apr 21, 2026
4087e0e
.github: Pull-in shared copilot instructions (#810)
RobertZ2011 Apr 21, 2026
40d33a1
Fixes on the mergeback
tullom Apr 21, 2026
4e1fa74
Pull in 4087e0e
tullom Apr 21, 2026
0663592
Merge pull request #811 from tullom/v0.2.0
jerrysxie Apr 22, 2026
2a53acb
Update copilot-instructions.md to refer to 1.90 toolchain (#814)
tullom Apr 22, 2026
9299e49
type-c-service/wrapper: Break out event receiver code (#799)
RobertZ2011 Apr 23, 2026
cf169a5
Add cargo deny ignore for deprecated bare-metal dependency (#817)
tullom Apr 24, 2026
681159d
power-policy charger: remove intrusive list and move to array registr…
tullom Apr 24, 2026
238692b
cfu-service: Create basic updater struct (#809)
RobertZ2011 Apr 28, 2026
ab2174d
type-c-service/wrapper: Move remaining message code into bridge struc…
RobertZ2011 Apr 29, 2026
e831384
type-c-service: Migrate code to use `BasicFwUpdate` trait (#808)
RobertZ2011 May 4, 2026
1b4ed11
Add mctp-rs as in-tree workspace member (port of dymk/mctp-rs @ 3d941…
dymk May 6, 2026
77905ee
type-c-service/wrapper: Break-out existing wrapper code into per-port…
RobertZ2011 May 6, 2026
bd46037
Update embedded-io-async to v0.7.0 (#842)
kurtjd May 12, 2026
a6db5b4
Type-C: Trait refactor and clean-up (#821)
RobertZ2011 May 13, 2026
20e86d2
type-c-service: Migrate to async function calls (#833)
RobertZ2011 May 14, 2026
1e820b1
Bump in-tree mctp-rs to dymk/mctp-rs @ 1b8b7f5 (#844)
dymk May 14, 2026
c08c361
Add type-c traits for getting Discovered SVIDs, Discover Identity, ex…
tullom May 19, 2026
2a7d531
v0.2.0 mergeback: 05-19-2026
tullom May 19, 2026
cedb8db
Merge pull request #854 from tullom/v0.2.0
jerrysxie May 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This is an embedded controller (EC) services workspace — a collection of `no_s

## Build, Test, and Lint

Toolchain: Rust 1.88 (`rust-toolchain.toml`), edition 2024. Targets: `x86_64-unknown-linux-gnu` (std/testing) and `thumbv8m.main-none-eabihf` (ARM Cortex-M33).
Toolchain: Rust 1.90 (`rust-toolchain.toml`), edition 2024. Targets: `x86_64-unknown-linux-gnu` (std/testing) and `thumbv8m.main-none-eabihf` (ARM Cortex-M33).

```shell
# Format
Expand Down Expand Up @@ -196,3 +196,13 @@ Basic development tools (git, cargo, editors) should not be listed.
AI agents **must** verify their own identity (agent name and model version) before composing the `Assisted-by` trailer — do not assume or hard-code a model name from a previous session.

AI agents **MUST NOT** add `Signed-off-by` tags. Only humans can certify the Developer Certificate of Origin.

## Rust PR Review Instructions
CI overview:
* CI will build the project and run `cargo test` and `cargo clippy`.
* Feature combinations are checked with `cargo hack`.
* Do not comment on compile errors, compiler warnings, or clippy warnings.

Pay special attention to...
* code that uses async selection APIs such as `select`, `selectN`, `select_array`, `select_slice`, or is marked with a drop safety comment. These functions drop the futures that don't finish. Check that values are not lost when this happens.
* code that could possibly panic or is marked with a panic safety comment.
60 changes: 59 additions & 1 deletion .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
name: check
env:
# Crates that require std and won't build on embedded-targets
STD_CRATES: "fw-update-interface-mocks"
jobs:

fmt:
Expand Down Expand Up @@ -93,6 +96,8 @@ jobs:
# Get early warning of new lints which are regularly introduced in beta channels.
toolchain: [stable, beta]
target: [x86_64-unknown-linux-gnu, thumbv8m.main-none-eabihf]
env:
COMMON_HACK_ARGS: "--feature-powerset --mutually-exclusive-features=log,defmt,defmt-timestamp-uptime"
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -112,7 +117,11 @@ jobs:
# intentionally no target specifier; see https://github.com/jonhoo/rust-ci-conf/pull/4
# --feature-powerset runs for every combination of features
- name: cargo hack
run: cargo hack --feature-powerset --mutually-exclusive-features=log,defmt,defmt-timestamp-uptime clippy --locked --target ${{ matrix.target }}
if: ${{ matrix.target == 'x86_64-unknown-linux-gnu' }}
run: cargo hack $COMMON_HACK_ARGS clippy --locked --target ${{ matrix.target }}
- name: cargo hack
if: ${{ matrix.target != 'x86_64-unknown-linux-gnu' }}
run: cargo hack $COMMON_HACK_ARGS clippy --exclude $STD_CRATES --locked --target ${{ matrix.target }}

deny:
# cargo-deny checks licenses, advisories, sources, and bans for
Expand Down Expand Up @@ -148,17 +157,35 @@ jobs:
submodules: true
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
# For grcov
components: llvm-tools
- name: Download Cargo.lock files
if: ${{ inputs.download-lockfiles }}
uses: actions/download-artifact@v4
with:
name: updated-lock-files
- name: cargo test
run: cargo test --locked
env:
RUSTFLAGS: '-C instrument-coverage'
CARGO_INCREMENTAL: '0'
# After ensuring tests pass, finally ensure the test code itself contains no clippy warnings
- name: cargo clippy
run: |
cargo clippy --locked --tests
# Generate and upload test coverage report
- name: Install grcov
uses: taiki-e/install-action@grcov
- name: Generate test coverage report
run: |
grcov . --binary-path ./target/debug/deps -s . --branch --ignore-not-existing --ignore "/home/runner/*" -t html -o ./target/debug/coverage
grcov . --binary-path ./target/debug/deps -s . --branch --ignore-not-existing --ignore "/home/runner/*" -t markdown >> $GITHUB_STEP_SUMMARY
- name: Upload test coverage report
uses: actions/upload-artifact@v4
with:
name: test-coverage-report
path: ./target/debug/coverage

msrv:
# check that we can build using the minimal rust version that is specified by this crate
Expand All @@ -185,9 +212,15 @@ jobs:
with:
name: updated-lock-files
- name: cargo +${{ matrix.msrv }} check
if: ${{ matrix.target == 'x86_64-unknown-linux-gnu' }}
run: |
cargo check -F log --locked --target ${{ matrix.target }}
cargo check -F defmt --locked --target ${{ matrix.target }}
- name: cargo +${{ matrix.msrv }} check
if: ${{ matrix.target != 'x86_64-unknown-linux-gnu' }}
run: |
cargo check -F log --locked --workspace --exclude $STD_CRATES --target ${{ matrix.target }}
cargo check -F defmt --locked --workspace --exclude $STD_CRATES --target ${{ matrix.target }}

check-arm-examples:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -239,6 +272,31 @@ jobs:
run: |
cargo clippy --locked

check-pico-de-gallo-examples:
runs-on: ubuntu-latest
# we use a matrix here just because env can't be used in job names
# https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
strategy:
fail-fast: false
matrix:
example_directory: ["examples/pico-de-gallo"]
name: ubuntu / check-examples
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install stable
uses: dtolnay/rust-toolchain@stable
- name: Download Cargo.lock files
if: ${{ inputs.download-lockfiles }}
uses: actions/download-artifact@v4
with:
name: updated-lock-files
- name: cargo clippy
working-directory: ${{ matrix.example_directory }}
run: |
cargo clippy --locked

machete:
# cargo-machete checks for unused dependencies in Cargo.toml files
runs-on: ubuntu-latest
Expand Down
5 changes: 3 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"Cargo.toml",
"examples/rt633/Cargo.toml",
"examples/rt685s-evk/Cargo.toml",
"examples/std/Cargo.toml"
"examples/std/Cargo.toml",
"examples/pico-de-gallo/Cargo.toml"
]
}
}
Loading
Loading