I tried to use the `RgMaxTime` telemetry channel provided by `ActiveRateGroup`. The comment for this channel is "Max execution time rate group", so I assumed it tracked the most time spent running that specific rate group in any cycle.
However, this does not seem to be the case. Tracing the timer values used, I see that a `cycleStart` timer value is passed into the `RateGroupDriver`. The driver then loops through all RateGroup outputs and calls the `CycleOut` port for each RateGroup where currentTick % rgDivider == 0. That same `cycleStart` timer value is passed into each RateGroup's `CycleIn` port where it is used to calculate the `RgMaxTime`.
This means that `RgMaxTime` for one RateGroup actually depends on the execution time of any other RateGroups with lower port numbers that happen to fire during the same cycle (i.e. a RateGroup with Divider=5 and a lower port number would always fire in the same cycle as a RateGroup with Divider=10, and the RGDiv5 execution time would be included in the RGDiv10 calculated execution time).
Is that expected behavior, or maybe I'm misunderstanding something? Should the channel description be changed to account for this?
Otherwise, as long as it's being denoted "rate group execution time" I think the counter should only compare start and end time within each RateGroup's `CycleIn` port, instead of using the upstream `cycleStart` time.