How to use a select function
version
1.1.0
scope
Example.
This code is provided as example code for a user to base their code on.
description
How to use a select function
boards
Unless otherwise specified, this example runs on the SliceKIT Core Board, but can easily be run on any XMOS device by using a different XN file.
Select statements can be implemented as functions, allowing their reuse in different contexts.
The declaration
select channel_input(chanend c_a, chanend c_b)
declares channel_input to be a select function that takes two arguments c_a and c_b. The body of the select function adheres to the same rules as the select statement.
{
case c_a :> int chnl_input_a :
printstr("Channel Input A Received ");
printintln(chnl_input_a);
break;
case c_b :> int chnl_input_b :
printstr("Channel Input B Received ");
printintln(chnl_input_b);
break;
}
You can call the select function from the relevant location in the program. In this example the select function is nested within a select statement where it is inputting data from either one of the two channel ends c_a, c_b or from the input port port_in
select {
case channel_input(c_a, c_b);
case port_in when pinsneq(port_input_data) :> port_input_data :
do_port_input(port_input_data);
break;
}