Proj 324 Final

Fork of ELEC351_Group_T by Plymouth ELEC351 Group T

Revision:
17:37d883f40c3d
Parent:
16:067916791a25
Child:
18:194a606ccd47
--- a/main.cpp	Sun Dec 24 15:23:14 2017 +0000
+++ b/main.cpp	Sun Dec 24 15:43:08 2017 +0000
@@ -62,14 +62,14 @@
 
 char buffer[32];
 char scom_time_buffer[32];
-        
+char msel_time_buffer[32];
 
 void SW1FallingEdge();
 void SW1TimeOutHandler();
 
 int mode = 0;
 
-Mail<DATA, mailsize> mail_box;       //Mail Queue, Type DATA, Capacity 120, name mail_box
+Mail<DATA, mailsize> mail_box;       //Mail Queue, Type DATA, Capacity mailsize(defined above), name mail_box
 
 void Network()                                  //Interrupt service routine for handling the timeout
 {
@@ -77,15 +77,14 @@
         
     if (evt_network.status == osEventMail)
     {
-        DATA *Rec_Data_Network = (DATA*)evt_network.value.p;
-        DATA msg_network;
+        DATA *Rec_Data_Network = (DATA*)evt_network.value.p;                    //Create pointer to mailbox
+        DATA msg_network;                                                       //Create temporary instance of DATA class
             
-        msg_network.set_time(Rec_Data_Network->get_time());
-        msg_network.set_temperature(Rec_Data_Network->get_temperature());
-        msg_network.set_pressure(Rec_Data_Network->get_pressure());
-        msg_network.set_light(Rec_Data_Network->get_light());
-        
-        mail_box.free(Rec_Data_Network);
+        msg_network.set_time(Rec_Data_Network->get_time());                     //Copy time from mailbox to temporary instance
+        msg_network.set_temperature(Rec_Data_Network->get_temperature());       //Copy temperature from mailbox to temporary instance
+        msg_network.set_pressure(Rec_Data_Network->get_pressure());             //Copy pressure from mailbox to temporary instance
+        msg_network.set_light(Rec_Data_Network->get_light());                   //Copy light from mailbox to temporary instance   
+        mail_box.free(Rec_Data_Network);                                        //Free space in the mailbox (delete earliest sample taken)
     
         //NETWORK_Print();     //Runs the network
     }                                                
@@ -102,15 +101,14 @@
         
     if (evt_sd.status == osEventMail)
     {
-        DATA *Rec_Data_SD = (DATA*)evt_sd.value.p;
-        DATA msg_sd;
+        DATA *Rec_Data_SD = (DATA*)evt_sd.value.p;                      //Create pointer to mailbox
+        DATA msg_sd;                                                    //Create temporary instance of DATA class
             
-        msg_sd.set_time(Rec_Data_SD->get_time());
-        msg_sd.set_temperature(Rec_Data_SD->get_temperature());
-        msg_sd.set_pressure(Rec_Data_SD->get_pressure());
-        msg_sd.set_light(Rec_Data_SD->get_light());
-        
-        mail_box.free(Rec_Data_SD);
+        msg_sd.set_time(Rec_Data_SD->get_time());                       //Copy time from mailbox to temporary instance
+        msg_sd.set_temperature(Rec_Data_SD->get_temperature());         //Copy temperature from mailbox to temporary instance
+        msg_sd.set_pressure(Rec_Data_SD->get_pressure());               //Copy pressure from mailbox to temporary instance
+        msg_sd.set_light(Rec_Data_SD->get_light());                     //Copy light from mailbox to temporary instance
+        mail_box.free(Rec_Data_SD);                                     //Free space in the mailbox (delete earliest sample taken)
     }    
 }
 //Interrupt service routive for SW1 falling edge (release)
@@ -137,15 +135,14 @@
         
         if (evt_lcd.status == osEventMail)
         {
-            DATA *Rec_Data_LCD = (DATA*)evt_lcd.value.p;
-            DATA msg_lcd;
+            DATA *Rec_Data_LCD = (DATA*)evt_lcd.value.p;                    //Create pointer to mailbox
+            DATA msg_lcd;                                                   //Create temporary instance of DATA class
             
-            msg_lcd.set_time(Rec_Data_LCD->get_time());
-            msg_lcd.set_temperature(Rec_Data_LCD->get_temperature());
-            msg_lcd.set_pressure(Rec_Data_LCD->get_pressure());
-            msg_lcd.set_light(Rec_Data_LCD->get_light());
-
-            mail_box.free(Rec_Data_LCD);
+            msg_lcd.set_time(Rec_Data_LCD->get_time());                     //Copy time from mailbox to temporary instance
+            msg_lcd.set_temperature(Rec_Data_LCD->get_temperature());       //Copy temperature from mailbox to temporary instance
+            msg_lcd.set_pressure(Rec_Data_LCD->get_pressure());             //Copy pressure from mailbox to temporary instance
+            msg_lcd.set_light(Rec_Data_LCD->get_light());                   //Copy light from mailbox to temporary instance
+            mail_box.free(Rec_Data_LCD);                                    //Free space in the mailbox (delete earliest sample taken)
             
             if(mode == 0)//Print values to the LCD
             {
@@ -158,7 +155,9 @@
             }
             else if(mode == 1)//Print the Time to the LCD
             {
-                lcd.cls();                              //Write new data to LCD (not fast!)
+                time_t msel_time = msg_lcd.get_time();                                  //Declare local variable for time
+                strftime(scom_time_buffer, 32, "%I:%M %p\t", localtime(&msel_time));     //Format time as a string
+                lcd.cls();                                                              //Write new data to LCD (not fast!)
                 lcd.printf("Current Time:%s", buffer);
             }
             else
@@ -177,19 +176,18 @@
         
         if (evt_serial.status == osEventMail)
         {
-            DATA *Rec_Data_Serial = (DATA*)evt_serial.value.p;
-            DATA msg_serial;
+            DATA *Rec_Data_Serial = (DATA*)evt_serial.value.p;                      //Create pointer to mailbox
+            DATA msg_serial;                                                        //Create temporary instance of DATA class
             
-            msg_serial.set_time(Rec_Data_Serial->get_time());
-            msg_serial.set_temperature(Rec_Data_Serial->get_temperature());
-            msg_serial.set_pressure(Rec_Data_Serial->get_pressure());
-            msg_serial.set_light(Rec_Data_Serial->get_light());  
+            msg_serial.set_time(Rec_Data_Serial->get_time());                       //Copy time from mailbox to temporary instance
+            msg_serial.set_temperature(Rec_Data_Serial->get_temperature());         //Copy teperature from mailbox to temporary instance
+            msg_serial.set_pressure(Rec_Data_Serial->get_pressure());               //Copy pressure from mailbox to temporary instance
+            msg_serial.set_light(Rec_Data_Serial->get_light());                     //Copy light from mailbox to temporary instance
+            mail_box.free(Rec_Data_Serial);                                         //Free space in the mailbox (delete earliest sample taken)
             
-            mail_box.free(Rec_Data_Serial);
-            
-            time_t scom_time = msg_serial.get_time();
-            strftime(scom_time_buffer, 32, "%I:%M %p\t", localtime(&scom_time));
-            pc.printf("Time = %s", scom_time_buffer);
+            time_t scom_time = msg_serial.get_time();                               //Declare local variable for time
+            strftime(scom_time_buffer, 32, "%I:%M %p\t", localtime(&scom_time));    //Format time as a string
+            pc.printf("Time = %s", scom_time_buffer);                               //Print the string formatted time
             
             pc.printf("Temperature = %f\t", msg_serial.get_temperature());     //Print Temperature
             pc.printf("Pressure = %f\t", msg_serial.get_pressure());           //Print Pressure