Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 |
--- 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;
}
}
