pub trait CuSrcTask<'cl>: Freezable {
type Output: CuMsgPack<'cl>;
// Required methods
fn new(_config: Option<&ComponentConfig>) -> Result<Self, CuError>
where Self: Sized;
fn process(
&mut self,
clock: &RobotClock,
new_msg: Self::Output,
) -> Result<(), CuError>;
// Provided methods
fn start(&mut self, _clock: &RobotClock) -> Result<(), CuError> { ... }
fn preprocess(&mut self, _clock: &RobotClock) -> Result<(), CuError> { ... }
fn postprocess(&mut self, _clock: &RobotClock) -> Result<(), CuError> { ... }
fn stop(&mut self, _clock: &RobotClock) -> Result<(), CuError> { ... }
}
Expand description
A Src Task is a task that only produces messages. For example drivers for sensors are Src Tasks. They are in push mode from the runtime. To set the frequency of the pulls and align them to any hw, see the runtime configuration. Note: A source has the priviledge to have a clock passed to it vs a frozen clock.
Required Associated Types§
Required Methods§
Provided Methods§
Sourcefn start(&mut self, _clock: &RobotClock) -> Result<(), CuError>
fn start(&mut self, _clock: &RobotClock) -> Result<(), CuError>
Start is called between the creation of the task and the first call to pre/process.
Sourcefn preprocess(&mut self, _clock: &RobotClock) -> Result<(), CuError>
fn preprocess(&mut self, _clock: &RobotClock) -> Result<(), CuError>
This is a method called by the runtime before “process”. This is a kind of best effort, as soon as possible call to give a chance for the task to do some work before to prepare to make “process” as short as possible.
Sourcefn postprocess(&mut self, _clock: &RobotClock) -> Result<(), CuError>
fn postprocess(&mut self, _clock: &RobotClock) -> Result<(), CuError>
This is a method called by the runtime after “process”. It is best effort a chance for the task to update some state after process is out of the way. It can be use for example to maintain statistics etc. that are not time-critical for the robot.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.