start_section : my_activation_delay : array (tasks_range) of integer; burst_size : integer; delay_between_burst : array (tasks_range) of random; is_in_a_burst : array (tasks_range) of boolean; is_in_a_burst:=true; burst_size := 3; uniform(delay_between_burst, 0,100); end section; priority_section : -- Each time a task ends an activation, -- the activation delay is changed to simulate -- a bursty activation rate -- if tasks.rest_of_capacity(previously_elected) = 1 then if is_in_a_burst(previously_elected) = true then my_activation_delay(previously_elected):= my_activation_delay(previously_elected)+tasks.period; burst_size(previously_elected):=burst_size(previously_elected)-1; if burst_size(previously_elected) = 0 then is_in_a_burst(previously_elected):=false; end if; else my_activation_delay(previously_elected):= my_activation_delay(previously_elected)+random_delay_between_burst(previously_elected); burst_size(previously_elected):=3; is_in_a_burst(previously_elected):=true; end if; end if; end section; election_section : return max_to_index(tasks.priority); end section; : task_activation_section set bursty_task my_activation_delay; end section;