De hoofdcontroller van het TLS2 project.

Dependencies:   RPCInterface mbed

Files at this revision

API Documentation at this revision

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;
     }                         
 }