Control profiles have schedule points that needs to be executed in the future following a specific timeline.
- All schedule points must have a timestamp and a value.
- The first schedule point must be within a tolerance of the current time.
- All points must be in increasing order.
If a control profile is received and does not follow these rules, the whole message is dropped and a warning is printed in the console.
If a control profile does not contain any scheduled points, then it is executed as is, and no schedule is started.
All the points that are scheduled in the past (before
now) and inside the
tolerance are executed together in a message with the original timestamp and
with all the non-scheduled values.
Then, each point is executed at the provided timestamp. Points share the same timestamp are executed together.
If another valid scheduled control profile is received while a schedule is in progress, it is started in parallel with the first schedule.