Skip to content

feat(uds_services)!: a session change prepares, or is refused, before its response - #94

Draft
FelicianoAngulo2 wants to merge 1 commit into
feat/uds-services-mut-accessfrom
feat/session-prepare
Draft

FelicianoAngulo2 wants to merge 1 commit into
feat/uds-services-mut-accessfrom
feat/session-prepare

Conversation

@FelicianoAngulo2

Copy link
Copy Markdown

A session change asks the application to prepare it before the positive response, and the application can refuse it or answer pending; MAY_RESPOND_PENDING becomes required, so this is a breaking change for implementers of DiagnosticSessionControl.

Depends on #93.

Issue URL

Towards https://github.com/luminartech/halo/issues/5100

Testing

Run on this branch with the commits of the PRs below it, each commit alone and on the stack's top:

  • tool self-tests, validate, governance, the Sphinx needs build, and prose (plain and CI's --strict crates/uds_c)
  • cargo test --workspace --all-features; clippy on the host and for thumbv7em-none-eabihf
  • just embedded builds on 1.91 for both targets and the size check (matches the baseline)
  • cargo doc with -D warnings; pre-commit run --all-files
  • On the stack's top also the uds_c Miri job from ci.yml and cargo package -p uds_c --no-verify

… its response

DiagnosticSessionControl gains a required async prepare, awaited once a change is admitted and before its positive response, and a required MAY_RESPOND_PENDING saying whether 0x78 answers while it runs. A refusal is the request's negative response, conditionsNotCorrect say. The session is still entered only on the positive response's confirmation, and a link closed while prepare runs drops it with nothing sent. UDSSVC_ARCH_0046 places the stage, and UDSSVC_ARCH_0033 says why the service carries the constant. Breaking: every implementation adds both, as the changelog shows. On the embedded probe text falls 1348 bytes and main's frame grows from 1552 to 3320 bytes. No future changes size (-Zprint-type-sizes), but LLVM now inlines the poll of Server::handle, a separate 2232-byte frame before, into main, and keeps serve's poll, 832 bytes, apart; the deepest call chain from main, summed over the image's call graph, falls from 5180 to 5084 bytes. The baseline records it.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant