Code: Select all
int main() {
chan c_buttons[BUTTONS_NUM_CLIENTS]; // Individual
chan c_analogue;
i2c_external_commands_if i_i2c_external_commands[I2C_EXTERNAL_NUM_CLIENTS];
i2c_internal_commands_if i_i2c_internal_commands[I2C_INTERNAL_NUM_CLIENTS];
startkit_adc_acquire_if i_startkit_adc_acquire;
lib_startkit_adc_commands_if i_lib_startkit_adc_commands[ADC_STARTKIT_NUM_CLIENTS];
port_heat_light_commands_if i_port_heat_light_commands[PORT_HEAT_LIGHT_SERVER_NUM_CLIENTS];
temperature_heater_commands_if i_temperature_heater_commands[HEATER_CONTROLLER_NUM_CLIENTS];
temperature_water_commands_if i_temperature_water_commands;
#define MAP_CHANENDS_27_A // If MAP_PAR_COMBINE == 0
#if (MAP_PAR_COMBINE == 1)
par {
Port_Pins_Heat_Light_Task (i_port_heat_light_commands);
installExceptionHandler();
My_startKIT_ADC_Task (i_startkit_adc_acquire, i_lib_startkit_adc_commands, NUM_STARTKIT_ADC_NEEDED_DATA_SETS);
startkit_adc (c_analogue); // Declare the ADC service (this is the ADC hardware, not a task)
// ^~~~~~~~~~~~ error: service called in non multi-tile function
[[combine]]
par {
I2C_Internal_Task (i_i2c_internal_commands);
I2C_External_Task (i_i2c_external_commands);
System_Task (i_i2c_internal_commands[0], i_i2c_external_commands[0], i_lib_startkit_adc_commands[0],
i_port_heat_light_commands[0], i_temperature_heater_commands[0], i_temperature_water_commands,
c_buttons);
Temperature_Heater_Task (i_temperature_heater_commands, i_i2c_external_commands[1], i_port_heat_light_commands[1]);
Temperature_Water_Task (i_temperature_water_commands, i_temperature_heater_commands[1]);
Button_Task (IOF_BUTTON_LEFT, inP_button_left, c_buttons[IOF_BUTTON_LEFT]);
Button_Task (IOF_BUTTON_CENTER, inP_button_center, c_buttons[IOF_BUTTON_CENTER]);
Button_Task (IOF_BUTTON_RIGHT, inP_button_right, c_buttons[IOF_BUTTON_RIGHT]);
adc_task (i_startkit_adc_acquire, c_analogue, ADC_PERIOD_TIME_USEC_ZERO_IS_ONY_QUERY_BASED);
}
}
#elif defined MAP_CHANENDS_27_A
// WORKS and LIGHT STABLE
/* Constraint check for tile[0]:
Cores available: 8, used: 7 . OKAY
Timers available: 10, used: 8 . OKAY
Chanends available: 32, used: 27 . OKAY
Memory available: 65536, used: 52772 . OKAY
(Stack: 8212, Code: 38342, Data: 6218)
Constraints checks PASSED.
Build Complete */
par {
on tile[0]: installExceptionHandler();
on tile[0].core[0]: I2C_Internal_Task (i_i2c_internal_commands);
on tile[0].core[4]: I2C_External_Task (i_i2c_external_commands);
on tile[0]: System_Task (i_i2c_internal_commands[0], i_i2c_external_commands[0], i_lib_startkit_adc_commands[0],
i_port_heat_light_commands[0], i_temperature_heater_commands[0], i_temperature_water_commands,
c_buttons);
on tile[0].core[0]: Temperature_Heater_Task (i_temperature_heater_commands, i_i2c_external_commands[1], i_port_heat_light_commands[1]);
on tile[0].core[5]: Temperature_Water_Task (i_temperature_water_commands, i_temperature_heater_commands[1]);
on tile[0].core[1]: Button_Task (IOF_BUTTON_LEFT, inP_button_left, c_buttons[IOF_BUTTON_LEFT]);
on tile[0].core[1]: Button_Task (IOF_BUTTON_CENTER, inP_button_center, c_buttons[IOF_BUTTON_CENTER]);
on tile[0].core[1]: Button_Task (IOF_BUTTON_RIGHT, inP_button_right, c_buttons[IOF_BUTTON_RIGHT]);
on tile[0]: My_startKIT_ADC_Task (i_startkit_adc_acquire, i_lib_startkit_adc_commands, NUM_STARTKIT_ADC_NEEDED_DATA_SETS);
on tile[0].core[5]: Port_Pins_Heat_Light_Task (i_port_heat_light_commands);
on tile[0].core[4]: adc_task (i_startkit_adc_acquire, c_analogue, ADC_PERIOD_TIME_USEC_ZERO_IS_ONY_QUERY_BASED);
startkit_adc (c_analogue); // Declare the ADC service (this is the ADC hardware, not a task)
}
#endif
return 0;
}
However, I am uncertain about the "service" term and how this may be solved above.
I have tried several, but it's difficult when I don't understand the underlying basics. (MAP_CHANENDS_27_A works fine)