Version 8, working version with Alix, sams and ollies code. Displays time, date and sensor info onto terminal, LCD and networking, and saves onto SD card.

Dependencies:   BMP280 ELEC350-Practicals-FZ429 TextLCD BME280 ntp-client

Revision:
9:f5eae5211225
Parent:
6:b7f6e0c0f646
Child:
10:eea19f8e6122
--- a/LCD.hpp	Fri Nov 30 13:15:30 2018 +0000
+++ b/LCD.hpp	Fri Dec 07 13:24:50 2018 +0000
@@ -3,14 +3,24 @@
 #include "mbed.h"
 #include "messageStruct.hpp"
 #include "sample_hardware.hpp"
+#include "Network.hpp"
+
+
 class LCD_Data
     {
-     private:  //private variables can only be changed via functions in this function
+     friend class Network;
+     
+     private:  //private variables can only be changed via functions in this class
          float temp;       //current temperature of sensor, updated every 15 seconds
          float pressure;  //current pressure of sensor, updated every 15 seconds
          float fLDR;      //current light level from LDR, updated every 15 seconds
          int flip;
          
+
+     private:
+         struct tm Time_Date; //decale instance Time_Date of structure tm which is defined by mbed / C
+        
+         
          void update_temp(double t) //use this function to update the current temperature value
             {
                 temp = t;
@@ -24,24 +34,43 @@
                 fLDR = L;   
             }
     
+    
+    
     public:
+    
     EventQueue LCD_Queue;  //create an event queue for main
+    time_t timestamp; //current time in format of unix time, can be converted to DAY_OF_WEEK MONTH DAY HOUR:MINUTE:SECOND YEAR using ctime(&timestamp);
+    
+    
+    
     LCD_Data(){ //constructor, initializes the FLIP variable for use in toggling the bottom line of the LCD
         flip = 1;
         temp = 0;
         pressure = 0; 
         fLDR = 0;
+
+
     }   
+    
+    
+    
     void update_sensor_info(sample_message msg) //updates all current sensor information, this is called by a ticker every 5 seconds to read from the mailbox
     {
          update_temp(msg.temp);    // Include message class passing of data
          update_pressure(msg.pressure);
          update_LDR(msg.ldr);
     }
+    
+    
+    
+    
     void display_LCD() //updates the current LCD display with the new sensor information
         {
          lcd.cls(); //clear current LCD display
+         
          lcd.printf("%4.2fC", temp); //print temperature to the top line of LCD, 2dp celcius
+         
+         
          switch(flip){
          case 1: 
             lcd.printf("\n%4.2f mbar", pressure); //print pressure to bottom line of LCD, 2dp mbar
@@ -50,13 +79,34 @@
          case 2:
              lcd.printf("\n%4.2f Lux", fLDR); //print pressure to bottom line of LCD, 2dp mbar
              flip = 1;   
-            break;           
+            break;  
+         case 3: //only ever called when the interupt button is pressed to update time
+             lcd.printf("\nTime updated"); //informs the user the current time has been set
+             printf("Current time is %s\r\n", ctime(&timestamp)); //prints current time and date in human readable time to terminal
+             flip = 1;
+            break;         
         default: 
             printf("Error in LCD flip function");
             break;
          }
        } 
-    }; 
+       
+       
+       
+       void update_time_date (){
+        timestamp = ntp.get_timestamp();
+       //timestamp = Network::ntp.get_timestamp(); //gets current time and date from NTP server in unix format
+      // timestamp = m_oNet.ntp.get_timestamp(); //gets current time and date from NTP server in unix format
+       
+       flip = 3; //will tell the user that the time has been updated on next FLIP instance
+       
+       }
+       
+       
+    };  //end of LCD class
+    
+    
+    
 // Define the member object for the LCD
 LCD_Data m_oDisplay;
 #endif
\ No newline at end of file