CECS 490B RTOS / Mbed 2 deprecated LOC_master_firmware_042416

Dependencies:   mbed-rtos mbed

Revision:
1:32ac32201889
Parent:
0:da6d7d20a81a
Child:
2:b258510a2573
--- a/main.cpp	Sun Apr 24 20:15:26 2016 +0000
+++ b/main.cpp	Mon Apr 25 01:32:33 2016 +0000
@@ -4,6 +4,7 @@
 #include <stdio.h>
 #include <iostream>
 #include <string>
+#include <ctype.h>
 
 /*
 Master firmware
@@ -20,10 +21,10 @@
 RawSerial pc(USBTX,USBRX); //UART monitor from pc
 RawSerial wifi(p9, p10); // master to wifi UART
 
-AnalogIn m_pot(p15);
+AnalogIn mPot(p15);
 
-float m_pot_val = 0.0;
-float s_pot_val = 0.0;
+float mPot_val = 0.0;
+float sPot_val = 0.0;
 
 PwmOut pwm(p27);
 
@@ -35,11 +36,16 @@
 string feather_receive = ""; //data recieved from Feather
 string feather_sent = ""; //data sent to the Feather
 
+string mDimStr = "";
+string mTempStr = "";
+string sTempStr = "";
+string sDimStr = "";
+
 int convert_val = 0;
-int s_dim_amt = 0;
-int m_dim_amt = 0;
-int s_temp = 0;
-int m_temp = 0;
+int sDimAmt = 0;
+int mDimAmt = 0;
+int sTemp = 0;
+int mTemp = 0;
 float dim_percent = 0.0;
 
 int i = 0; //intialize
@@ -51,7 +57,7 @@
     while(1){
         // Data frame[18]: G S | M A | 000 | 000 | S | A | 000 | 000 
         // 'GWDM' 0-100 Master Light Level, OR 'GWDS' 0-100 Slave Light Level
-        char wifi_message [18] = {'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'};
+        char wifi_message [18] = {};
         string message = ""; // Empty Message String
         int i = 0; // Iterator
         
@@ -66,58 +72,90 @@
         i = 0; // Reset the iterator
         // ------------------------------Data parsing --------------------------------------------------------
         
-        if ( toupper(wifi_message [0]) == "G" && wifi_message [2] == "M" && wifi_message [10] == "S" )
+        if ( toupper(wifi_message [0]) == 'G' && toupper(wifi_message[2]) == 'M' && toupper(wifi_message[10]) == 'S')
         {
-            m_dim_amt = atoi(wifi_message[4:6]);
-            m_temp = atoi(wifi_message[7:9]);
-            s_dim_amt = atoi(wifi_message[12:14]);
-            s_temp = aoti(wifi_message[15:17]);
-            
-            if (wifi_message [1] == "S") //Print status
+            int data [12] = {};
+            for(int i = 0; i < 7; i++) // Parsing master and slave dim and temp values as int array
+            {
+                data[i] = (int)wifi_message[i+4]-48; // first 6 values are in char, subtracting 48 gives raw int
+                data[i+6] = (int)wifi_message[i+12]-48; // second 6 values are for slave values
+            }
+                       
+            if (toupper(wifi_message [1]) == 'S') //Print status
             {
-                pc.printf(wifi_message); //Echo to terminal
+                for(int i = 0; i < 3; i++) // Convert integer array to string
+                {
+                    mDimStr += data[i+4];
+                    mTempStr += data[i+7];
+                    sDimStr += data[i+12];
+                    sTempStr += data[i+15];
+                }
+                pc.printf("Master Dim: %s\n", mDimStr); // Print to terminal, NOTICE: weird warning
+                pc.printf("Master Temp: %s\n", mTempStr);
+                pc.printf("Slave Dim: %s\n", sDimStr);
+                pc.printf("Slave Temp: %s\n", sTempStr);
             }
             
-            else if (wifi_message [1] == "D") //Dim
+            else if (toupper(wifi_message [1]) == 'D') //Dim
             {
-              m_dim_amt = atoi(wifi_message[4:6]);
-              m_temp = atoi(wifi_message[7:9]);
-              s_dim_amt = atoi(wifi_message[12:14]);
-              s_temp = aoti(wifi_message[15:17]);
+              for(int i = 0; i < 3; i++) // Grab master and slave dim values
+              {
+                    mDimAmt += data[i];
+                    //mTemp += data[i+3];
+                    sDimAmt += data[i+6];
+                    //sTemp += data[i+9];
+              }
                     
-            }           
-                    
+            }
+            
+            /* IGNORE THIS
+            int md1, md2, md3, mt1, mt2, mt3; // Master dim and temp values
+            int sd1, sd2, sd3, st1, st2, st3; // Slave dim and temp values
+            md1 = (int)wifi_message[4]-48;
+            md2 = (int)wifi_message[5]-48;
+            md3 = (int)wifi_message[6]-48;
+            mt1 = (int)wifi_message[7]-48;
+            mt2 = (int)wifi_message[8]-48;
+            mt3 = (int)wifi_message[9]-48;
+            sd1 = (int)wifi_message[12]-48;
+            sd2 = (int)wifi_message[13]-48;
+            sd3 = (int)wifi_message[14]-48;
+            st1 = (int)wifi_message[15]-48;
+            st2 = (int)wifi_message[16]-48;
+            st3 = (int)wifi_message[17]-48;
+            */
+            
         }         
         
         // ----------------------------- Prioritize Wireless/Manual Mode -----------------------------------
         
-        if ( m_pot.read() > 0.0 )
+        if ( mPot.read() > 0.0 )
         {
-            if (wifi_message [3] == "0" ) // Check: Manual mode for Master
+            if (wifi_message [3] == '0' ) // Check: Manual mode for Master
             {
                 master_manual = true;
-                m_pot_val = m_pot.read(); //read in value from potentiometer
-                pwm.write(m_pot_val); //output potentiometer value to pwm
+                mPot_val = mPot.read(); //read in value from potentiometer
+                pwm.write(mPot_val); //output potentiometer value to pwm
             } 
         
             else if (wifi_message [3] == "1" ) //Check: Wireless for master
             {
-                pwm.write((float)(m_dim_amt/100)); //Send out dim value from parsed data wirelessly    
+                pwm.write((float)(mDimAmt/100)); //Send out dim value from parsed data wirelessly    
             
             }
         }
           
-        if ( s_pot.read() > 0.0)
+        if ( sPot.read() > 0.0)
         {  
             if (wifi_message [11] == "0") // Check: Manual mode for Slave
             {
                 slave_manual = true;
-                s_pot_val = s_pot.read();
-                pwm.write(s_pot_val);
+                sPot_val = sPot.read();
+                pwm.write(sPot_val);
             }   
             else if (wifi_message [11] == "1" ) //Check: Wireless for slave
             {
-                pwm.write((float)(s_dim_amt/100)); //Send out dim value from parsed data wirelessly    
+                pwm.write((float)(sDimAmt/100)); //Send out dim value from parsed data wirelessly    
                         
             }
         }