What first sprung to my mind was whether I could use the first thing that mic_array_get_next_time_domain_frame does in a select:
Code: Select all
for(unsigned i=0;i<decimator_count;i++)
schkct(c_from_decimator[i], 8);
Code: Select all
for(unsigned i=1;i<decimator_count;i++)
schkct(c_from_decimator[i], 8);
I don't know if this is a channel input as such (looking into the .build files leaves me with my eyes wide open, but nothing goes from there). And it it were, if I am allowed to input on it. (Update: I know that this channel contains pointers to data from the application to the decimators, used by the decimators to point to frames valid for the application to read from, but still I am in the unclear about this schkct).
The alternative way is to wrap it into an always ready timerafter, which seems to work. From
Code: Select all
while(1) {
mic_array_get_next_time_domain_frame...
...
}
Code: Select all
while(1) {
select {
case tmr when timerafter (timeout_tics) :> void: {
mic_array_get_next_time_domain_frame...
...
tmr :> timeout_tics;
} break;
select some other channel..
}
}
Off Topic
I am trying to discuss this at https://www.teigfam.net/oyvind/home/tec ... and_task_b