De hoofdcontroller van het TLS2 project.
Dependencies: RPCInterface mbed
Revision 7:cb20720dbab9, committed 2016-11-18
- Comitter:
- RichardHoekstra
- Date:
- Fri Nov 18 22:24:17 2016 +0000
- Parent:
- 6:f609257cec0a
- Commit message:
- Cleaned up the ugly function by adding a helper function.
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r f609257cec0a -r cb20720dbab9 main.cpp --- a/main.cpp Fri Nov 18 22:01:22 2016 +0000 +++ b/main.cpp Fri Nov 18 22:24:17 2016 +0000 @@ -74,13 +74,13 @@ motorcontroller_max = 0, motorcontroller_frequency = 0; - RPCVariable<int> motorcontroller_mode(&motorcontroller_mode, "motorcontroller_mode"); - RPCVariable<int> motorcontroller_constant_pressure(&motorcontroller_constant_pressure, "motorcontroller_constant_pressure"); - RPCVariable<int> motorcontroller_constant_flow(&motorcontroller_constant_flow, "motorcontroller_constant_flow"); - RPCVariable<int> motorcontroller_constant_speed(&motorcontroller_constant_speed, "motorcontroller_constant_speed"); - RPCVariable<int> motorcontroller_min(&motorcontroller_min, "motorcontroller_min"); - RPCVariable<int> motorcontroller_max(&motorcontroller_max, "motorcontroller_max"); - RPCVariable<int> motorcontroller_frequency(&motorcontroller_frequency, "motorcontroller_frequency"); + RPCVariable<int> RPCmotorcontroller_mode(&motorcontroller_mode, "motorcontroller_mode"); + RPCVariable<int> RPCmotorcontroller_constant_pressure(&motorcontroller_constant_pressure, "motorcontroller_constant_pressure"); + RPCVariable<int> RPCmotorcontroller_constant_flow(&motorcontroller_constant_flow, "motorcontroller_constant_flow"); + RPCVariable<int> RPCmotorcontroller_constant_speed(&motorcontroller_constant_speed, "motorcontroller_constant_speed"); + RPCVariable<int> RPCmotorcontroller_min(&motorcontroller_min, "motorcontroller_min"); + RPCVariable<int> RPCmotorcontroller_max(&motorcontroller_max, "motorcontroller_max"); + RPCVariable<int> RPCmotorcontroller_frequency(&motorcontroller_frequency, "motorcontroller_frequency"); //UPDATE PERIODS float pressure1_update_period_s = 1; @@ -201,19 +201,39 @@ tick_temperature2, tick_flow; +void update_helper(int addr, command_t cmd, int val){ + char buffer[3] = {0}; + buffer[0] = cmd; + int_to_2char(buffer, val, 1); + master.write(addr, buffer, 3); +} + +//DANGER: WEAR EYE PROTECTION AT ALL TIMES +// THIS FUNCTION IS CLASS 1 UGLY +// POTENTIAL OF EYE BURNING. void updateI2Cstuff(){ - //Only update when the variable has actually changed - static float old_pressure1_update_period_s, - old_pressure2_update_period_s, - old_temperature1_update_period_s, - old_temperature2_update_period_s, - old_flow_update_period_s; - - static int old_druksensor1_mva_elements, - old_druksensor2_mva_elements, - old_tempsensor1_mva_elements, - old_tempsensor2_mva_elements, - old_flowsensor_mva_elements; + //Only updates when the variables has actually changed + + //Sensor controller read rate + static float old_pressure1_update_period_s = 0, + old_pressure2_update_period_s = 0, + old_temperature1_update_period_s = 0, + old_temperature2_update_period_s = 0, + old_flow_update_period_s = 0; + //Sensor controller smoothing factor + static int old_druksensor1_mva_elements = 0, + old_druksensor2_mva_elements = 0, + old_tempsensor1_mva_elements = 0, + old_tempsensor2_mva_elements = 0, + old_flowsensor_mva_elements = 0; + //Motor controller settings + static int old_motorcontroller_mode = 0, + old_motorcontroller_constant_pressure = 0, + old_motorcontroller_constant_flow = 0, + old_motorcontroller_constant_speed = 0, + old_motorcontroller_min = 0, + old_motorcontroller_max = 0, + old_motorcontroller_frequency = 0; if(old_pressure1_update_period_s != pressure1_update_period_s){ tick_pressure1.attach(&updatePressure1,pressure1_update_period_s); @@ -235,104 +255,54 @@ tick_flow.attach(&updateFlow,flow_update_period_s); old_flow_update_period_s = flow_update_period_s; } - static int old_druksensor1_mva_elements, - old_druksensor2_mva_elements, - old_tempsensor1_mva_elements, - old_tempsensor2_mva_elements, - old_flowsensor_mva_elements; - //If LabView has changed variables for the motor or sensor settings - //then send an update over I2C if(old_druksensor1_mva_elements != druksensor1_mva_elements){ - char buffer[3] = {0}; - buffer[0] = SET_SENSOR_PRESSURE_1_MVA; - int_to_2char(buffer, druksensor1_mva_elements, 1); - i2c.write(sensor_addr, buffer, 3); + update_helper(sensor_addr, SET_SENSOR_PRESSURE_1_MVA, druksensor1_mva_elements); old_druksensor1_mva_elements = druksensor1_mva_elements; } if(old_druksensor2_mva_elements != druksensor2_mva_elements){ - char buffer[3] = {0}; - buffer[0] = SET_SENSOR_PRESSURE_2_MVA; - int_to_2char(buffer, druksensor2_mva_elements, 1); - i2c.write(sensor_addr, buffer, 3); + update_helper(sensor_addr, SET_SENSOR_PRESSURE_2_MVA, druksensor2_mva_elements); old_druksensor2_mva_elements = druksensor2_mva_elements; } - if(old_tempsensor1_mva_elements != tempsensor1_mva_elements){ - char buffer[3] = {0}; - buffer[0] = SET_SENSOR_TEMPERATURE_1_MVA; - int_to_2char(buffer, tempsensor1_mva_elements, 1); - i2c.write(sensor_addr, buffer, 3); + if(old_tempsensor1_mva_elements != tempsensor1_mva_elements){ + update_helper(sensor_addr, SET_SENSOR_TEMPERATURE_1_MVA, tempsensor1_mva_elements); old_tempsensor1_mva_elements = tempsensor1_mva_elements; } if(old_tempsensor2_mva_elements != tempsensor2_mva_elements){ - char buffer[3] = {0}; - buffer[0] = SET_SENSOR_TEMPERATURE_2_MVA; - int_to_2char(buffer, tempsensor2_mva_elements, 1); - i2c.write(sensor_addr, buffer, 3); + update_helper(sensor_addr, SET_SENSOR_TEMPERATURE_2_MVA, tempsensor2_mva_elements); old_tempsensor2_mva_elements = tempsensor2_mva_elements; } if(old_flowsensor_mva_elements != flowsensor_mva_elements){ - char buffer[3] = {0}; - buffer[0] = SET_SENSOR_FLOW_MVA; - int_to_2char(buffer, flowsensor_mva_elements, 1); - i2c.write(sensor_addr, buffer, 3); + update_helper(sensor_addr, SET_SENSOR_FLOW_MVA, flowsensor_mva_elements); old_flowsensor_mva_elements = flowsensor_mva_elements; } //Motorcontroller - static int old_motorcontroller_mode = 0, - old_motorcontroller_constant_pressure = 0, - old_motorcontroller_constant_flow = 0, - old_motorcontroller_constant_speed = 0, - old_motorcontroller_min = 0, - old_motorcontroller_max = 0, - old_motorcontroller_frequency = 0; if(old_motorcontroller_mode != motorcontroller_mode){ - char buffer[3] = {0}; - buffer[0] = SET_MODE; - int_to_2char(buffer, motorcontroller_mode, 1); - i2c.write(motor_addr, buffer, 3); + update_helper(motor_addr, SET_MODE, motorcontroller_mode); old_motorcontroller_mode = motorcontroller_mode; } if(old_motorcontroller_constant_pressure != motorcontroller_constant_pressure){ - char buffer[3] = {0}; - buffer[0] = SET_CONSTANT_PRESSURE; - int_to_2char(buffer, motorcontroller_constant_pressure, 1); - i2c.write(motor_addr, buffer, 3); + update_helper(motor_addr, SET_CONSTANT_PRESSURE, motorcontroller_constant_pressure); old_motorcontroller_constant_pressure = motorcontroller_mode; } if(old_motorcontroller_constant_flow != motorcontroller_constant_flow){ - char buffer[3] = {0}; - buffer[0] = SET_CONSTANT_FLOW; - int_to_2char(buffer, motorcontroller_constant_flow, 1); - i2c.write(motor_addr, buffer, 3); + update_helper(motor_addr, SET_CONSTANT_FLOW, motorcontroller_constant_flow); old_motorcontroller_constant_flow = motorcontroller_constant_flow; } if(old_motorcontroller_constant_speed != motorcontroller_constant_speed){ - char buffer[3] = {0}; - buffer[0] = SET_CONSTANT_SPEED; - int_to_2char(buffer, motorcontroller_constant_speed, 1); - i2c.write(motor_addr, buffer, 3); + update_helper(motor_addr, SET_CONSTANT_SPEED, motorcontroller_constant_speed); old_motorcontroller_constant_speed = old_motorcontroller_constant_speed; } if(old_motorcontroller_min != motorcontroller_min){ - char buffer[3] = {0}; - buffer[0] = SET_MIN; - int_to_2char(buffer, motorcontroller_min, 1); - i2c.write(motor_addr, buffer, 3); + update_helper(motor_addr, SET_MIN, motorcontroller_min); old_motorcontroller_min = motorcontroller_min; } if(old_motorcontroller_max != motorcontroller_max){ - char buffer[3] = {0}; - buffer[0] = SET_MAX; - int_to_2char(buffer, motorcontroller_max, 1); - i2c.write(motor_addr, buffer, 3); + update_helper(motor_addr, SET_MAX, motorcontroller_max); old_motorcontroller_max = motorcontroller_max; } if(old_motorcontroller_frequency != motorcontroller_frequency){ - char buffer[3] = {0}; - buffer[0] = SET_FREQUENCY; - int_to_2char(buffer, motorcontroller_frequency, 1); - i2c.write(motor_addr, buffer, 3); + update_helper(motor_addr, SET_FREQUENCY, motorcontroller_frequency); old_motorcontroller_frequency = motorcontroller_frequency; } }