Initial mw::com-based implementation of ilmcontrol interface - #478
Initial mw::com-based implementation of ilmcontrol interface#478NicolasFussberger wants to merge 44 commits into
Conversation
License Check Results🚀 The license check job ran with the Bazel command: bazel run --lockfile_mode=error //:license-checkStatus: Click to expand output |
1c88cfc to
faa5d86
Compare
|
The created documentation from the pull request is available at: docu-html |
Hi @hskang-amelia, yes this is a fair point. We briefly discussed this use case before and there was no great solution that came up immediately and no strong opinion that it needs to be available in the first version. That's why it is not part of this initial PR. We were not sure what kind of error reporting is the best approach as there may be multiple errors that lead to the final RunTarget activation.
In the current interface design, StateManager is informed that "fallback run target" has been successfully activated with kRecoveryAction activation source. Based on the feedback in SCore, these intermediate transitions were not required to be communicated so only the final RunTarget activation is communicated. I think it would be a good idea to track this in a separate issue as you suggested. |
I am collecting any open points regarding control API here #509 and I have created a subissue for the error information #511 |
da973b1 to
fcf90ad
Compare
| "instances": [ | ||
| { | ||
| "instanceId": 1, | ||
| "asil-level": "QM", |
There was a problem hiding this comment.
Should this instance set permission-checks and allowedConsumer? With both absent, SkeletonMemoryManager falls back to WorldWritable for the control channel, so any local process can attach a proxy and call ActivateRunTarget. The old ControlClient path restricted this by only handing the channel FD to processes marked StateManager in the manifest.
I know this is a test config, but it’s the only mw::com configuration in the repo so it’s what integrators will copy.
| /// @param[in] activationSource What caused the activation to occur. | ||
| /// @param[in] activatedRunTarget The Run Target that was activated - may | ||
| /// differ from the one originally requested. | ||
| using ActivationCallback = |
There was a problem hiding this comment.
RunTargetActivationSource only has kStateManagerRequest/kRecoveryAction, but the very first Run Target activation — the one Launch Manager performs on its own at boot, before any State Manager has connected or requested anything — is neither of those. It's not a State Manager request (no State Manager exists yet to make one), and it's not a recovery action either.
Does register_run_target_activation_callback's callback fire for that initial activation at all? The doc comment above says "the subscriber sees every settling," which reads as yes. If so, what RunTargetActivationSource value does it carry?
This matters for a State Manager that starts up after boot and wants to confirm the initial transition already happened correctly (rather than assuming success) — it needs a way to distinguish "this is the boot activation" from the two documented sources. Worth adding a third value (e.g. kInitialActivation), or is there a reason to fold it into one of the existing two?
There was a problem hiding this comment.
I agree we should add a separate value for this. Since the daemon side is being implemented separately in #489, this had not been clarified yet.
There was a problem hiding this comment.
I found that the score repo also has documentation on public APIs for features, so I made a task to update this once everything is public.
#536
Initial implementation of the ilm_control interface using mw::com as the underlying communication framework.
This PR only implements the library-side.
Follow up PR will adapt the launch_manager daemon code to interact with the library via mw::com.
Closes: #480