Proj 324 Final

Fork of ELEC351_Group_T by Plymouth ELEC351 Group T

Revision:
37:7c4d7f206039
Parent:
36:a0098306fc58
Child:
38:8d86e0d8a816
diff -r a0098306fc58 -r 7c4d7f206039 main.cpp
--- a/main.cpp	Sun Jan 07 16:17:24 2018 +0000
+++ b/main.cpp	Sun Jan 07 19:21:11 2018 +0000
@@ -1,7 +1,7 @@
 /*
 ELEC 351 Group T
 Team Members : Christopher Hills, Thomas Morris
-Current Verision 17
+Current Verision 18
 Overiew: Working Tasks 1,2,3,5,6,7,8,9,10,11,12,13
 
 Last Revision: Added Mail Box to serial
@@ -20,7 +20,7 @@
     while(1)
     {
         Thread::wait(5000);//Waits 5 seconds
-        cout << "In Network Thread" << endl;   
+        if(Log_Value==1){cout << "In Network Thread" << endl;} //Log this  
         
         time_t Time = Data_Active.get_time();
         tm* Time_Pointer = localtime(&Time);
@@ -42,10 +42,12 @@
 void LCD_Write_Year()
 {
         Time_Lock_Main.lock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Year Time lock taken"<<endl;}
         time_t Time = time(NULL);
         tm* Time_Pointer = localtime(&Time);
         int Years = 1900 + Time_Pointer->tm_year;
         Time_Lock_Main.unlock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Year Time lock released"<<endl;}
         stringstream ss;
         ss << Years;
         string Year_String = ss.str();
@@ -58,10 +60,12 @@
 void LCD_Write_Month()
 {
         Time_Lock_Main.lock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Month Time lock taken"<<endl;}
         time_t Time = time(NULL);
         tm* Time_Pointer = localtime(&Time);
         int Months = 1 + Time_Pointer->tm_mon;
         Time_Lock_Main.unlock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Month Time lock released"<<endl;}
         stringstream ss;
         ss << Months;
         string Month_String = ss.str();
@@ -73,10 +77,12 @@
 void LCD_Write_Day()
 {
         Time_Lock_Main.lock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Day Time lock taken"<<endl;}
         time_t Time = time(NULL);
         tm* Time_Pointer = localtime(&Time);
         int Days = Time_Pointer->tm_mday;
         Time_Lock_Main.unlock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Day Time lock released"<<endl;}
         stringstream ss;
         ss << Days;
         string Day_String = ss.str();
@@ -90,10 +96,12 @@
 void LCD_Write_Hour()
 {
         Time_Lock_Main.lock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Hour Time lock taken"<<endl;}
         time_t Time = time(NULL);
         tm* Time_Pointer = localtime(&Time);
         int Hours = Time_Pointer->tm_hour;
         Time_Lock_Main.unlock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Hour Time lock released"<<endl;}
         stringstream ss;
         ss << Hours;
         string Hour_String = ss.str();
@@ -105,10 +113,12 @@
 void LCD_Write_Minute()
 {
         Time_Lock_Main.lock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Minute Time lock taken"<<endl;}
         time_t Time = time(NULL);
         tm* Time_Pointer = localtime(&Time);
         int Minutes = Time_Pointer->tm_min;
         Time_Lock_Main.unlock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Minute Time lock released"<<endl;}
         stringstream ss;
         ss << Minutes;
         string Minute_String = ss.str();
@@ -120,10 +130,12 @@
 void LCD_Write_Seconds()
 {
         Time_Lock_Main.lock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Seconds Time lock taken"<<endl;}
         time_t Time = time(NULL);
         tm* Time_Pointer = localtime(&Time);
         int Seconds = Time_Pointer->tm_sec;
         Time_Lock_Main.unlock();
+        if(Log_Value == 1){cout<<"In LCD_Write_Seconds Time lock released"<<endl;}
         stringstream ss;
         ss << Seconds;
         string Second_String = ss.str();
@@ -140,10 +152,10 @@
         Thread::wait(10);//Dont Delete
         if(mode == 0)//Default mode
         { 
-            if(Log_Value == 1){cout << "In mode 0 " << endl;}
+            if(Log_Value == 1){cout << "In mode 0 " << endl;}//Log this 
             
             Thread::wait(Default_Mode_Toggle_Time);
-    
+            if(Log_Value == 1){cout<<"Writing Data to LCD"<<endl;}
             sprintf (LCD_buffer, "%1.1f %1.1f %1.1f",Data_Active.get_temperature(),Data_Active.get_pressure(),Data_Active.get_light());//Used for converting to a sting  
              
             LCD.DDRAM_Address(0x00);
@@ -152,7 +164,7 @@
             LCD.Write_String(LCD_buffer);
 
             Thread::wait(Default_Mode_Toggle_Time);    
-            
+            if(Log_Value == 1){cout<<"Writing Time and Date to LCD"<<endl;}
             Time_Lock_Main.lock();
             time_t Time = Data_Active.get_time();
             tm* Time_Pointer = localtime(&Time);
@@ -165,6 +177,7 @@
             LCD.DDRAM_Address(0x40);
             LCD.Write_String(LCD_buffer);
             
+            if(Log_Value == 1){cout<<"Checking Switches for next mode"<<endl;}
             if(SW1.read() & SW2.read() == 1)
             {
                 mode = 1;   
@@ -181,14 +194,16 @@
                 LCD.DDRAM_Address(0x40);
                 LCD.Write_String("<              >");
                 Thread::wait(1000);
-                if(SW1.read() == 1)
+                if(Log_Value == 1){cout<<"Checking SW1 to go to Date setting"<<endl;}
+                if(SW1.read() == 1 & SW2.read() == 0)
                 {
-                    mode = 2;
+                    mode = 2;//Date Setting
                     break;   
                 }
-                if(SW2.read() == 1)
+                if(Log_Value == 1){cout<<"Checking SW2 to go to Time setting"<<endl;}
+                if(SW2.read() == 1 & SW1.read() == 0)
                 {
-                    mode = 5;
+                    mode = 5;//Time Setting
                     break;
                 }
             }
@@ -201,15 +216,18 @@
             {          
                 LCD_Write_Year();
                 Thread::wait(1000);
+                 if(Log_Value == 1){cout<<"Checking SW1 and SW2 to go to Month setting"<<endl;}
                 if(SW1.read() & SW2.read() == 1)
                 {
                     mode = 3;
                     break;   
                 }
+                if(Log_Value == 1){cout<<"Checking SW1 to add Year"<<endl;}
                 if(SW1.read() == 1 & SW2.read() == 0)
                 {
                     Add_Year();
                 }
+                if(Log_Value == 1){cout<<"Checking SW2 to subtract Year"<<endl;}
                 else if(SW2.read() == 1 & SW1.read() == 0)
                 {
                     Subtract_Year();   
@@ -225,15 +243,18 @@
             {
                 LCD_Write_Month();
                 Thread::wait(1000);
+                if(Log_Value == 1){cout<<"Checking SW1 and SW2 to go to Day setting"<<endl;}
                 if(SW1.read() & SW2.read() == 1)
                 {
                     mode = 4;
                     break;   
-                }                
+                }
+                if(Log_Value == 1){cout<<"Checking SW1 to add Month"<<endl;}                
                 if(SW1.read() == 1 & SW2.read() == 0)
                 {
                     Add_Month();
                 }
+                if(Log_Value == 1){cout<<"Checking SW2 to subtract Month"<<endl;}  
                 else if(SW2.read() == 1 & SW1.read() == 0)
                 {
                     Subtract_Month();   
@@ -249,15 +270,18 @@
             {      
                 LCD_Write_Day();
                 Thread::wait(1000);
+                if(Log_Value == 1){cout<<"Checking SW1 and SW2 to go Default setting"<<endl;}
                 if(SW1.read() & SW2.read() == 1)
                 {
                     mode = 0;   
                     break;
                 }
+                if(Log_Value == 1){cout<<"Checking SW1 to add Day"<<endl;}
                 if(SW1.read() == 1 & SW2.read() == 0)
                 {
                     Add_Day();
                 }
+                if(Log_Value == 1){cout<<"Checking SW2 to subtract Day"<<endl;}
                 else if(SW2.read() == 1 & SW1.read() == 0)
                 {
                     Subtract_Day();   
@@ -272,15 +296,18 @@
             {
                 LCD_Write_Hour();
                 Thread::wait(1000);
+                if(Log_Value == 1){cout<<"Checking SW1 and SW2 to go Minute setting"<<endl;}
                 if(SW1.read() & SW2.read() == 1)
                 {
                     mode = 6;  
                     break; 
-                }                
+                }
+                if(Log_Value == 1){cout<<"Checking SW1 to add Hour"<<endl;}                
                 if(SW1.read() == 1 & SW2.read() == 0)
                 {
                     Add_Hour();
                 }
+                if(Log_Value == 1){cout<<"Checking SW2 to subtract Hour"<<endl;} 
                 else if(SW2.read() == 1 & SW1.read() == 0)
                 {
                     Subtract_Hour();   
@@ -295,15 +322,18 @@
             {
                 LCD_Write_Minute();
                 Thread::wait(1000);
+                if(Log_Value == 1){cout<<"Checking SW1 and SW2 to go Seconds setting"<<endl;}
                 if(SW1.read() & SW2.read() == 1)
                 {
                     mode = 7;  
                     break; 
                 }                
+                if(Log_Value == 1){cout<<"Checking SW1 to add Minute"<<endl;}
                 if(SW1.read() == 1 & SW2.read() == 0)
                 {
                     Add_Minute();
                 }
+                if(Log_Value == 1){cout<<"Checking SW2 to subtract Minute"<<endl;}
                 else if(SW2.read() == 1 & SW1.read() == 0)
                 {
                     Subtract_Minute();   
@@ -318,15 +348,18 @@
             {
                 LCD_Write_Seconds();
                 Thread::wait(1000);
+                if(Log_Value == 1){cout<<"Checking SW1 and SW2 to go Default setting"<<endl;}
                 if(SW1.read() & SW2.read() == 1)
                 {
                     mode = 0;  
                     break; 
-                }                
+                }
+                if(Log_Value == 1){cout<<"Checking SW1 to add Second"<<endl;}                
                 if(SW1.read() == 1 & SW2.read() == 0)
                 {
                     Add_Second();
                 }
+                if(Log_Value == 1){cout<<"Checking SW1 to subtract Second"<<endl;}   
                 else if(SW2.read() == 1 & SW1.read() == 0)
                 {
                     Subtract_Second();   
@@ -335,17 +368,20 @@
         }
         else
         {
+            if(Log_Value == 1){cout<<"Mode Error occured mode now set to 0"<<endl;}   
             mode = 0;
         }
     }
 }
 void Serial_Commands()//Used for getting input from the user to determine the opperations to perform
 {
+    
     string Serial_Input;
-    int A,B,C;
+    int A,B,C;//Place a thread wait here?
     while(1) {
+        if(Log_Value == 1){cout<<"In Serial_Commands"<<endl;}   
         Serial_Input = "Blank";
-        cout << "Please type in a command" << endl;
+        cout << "Please type in a command" << endl;//Log this 
         
         cin >> Serial_Input >> A >> B >> C;
 
@@ -364,7 +400,7 @@
         {   
             Sampling_Timer.detach();
             Console_Output_Timer.detach();
-            for (int x = 0; x < mailsize; x++)
+            for (int x = 0; x < mailsize; x++)//cout deleted or something
             {
     
             }
@@ -375,7 +411,7 @@
         {
             for (int x = 0; x < A; x++)
             {
-                Serial_Comms_Stealth_Mode();
+                Serial_Comms_Data_Get();
                 if(Log_Value == 1){cout << "Read " << x << " samples" << endl;}
             }
         } 
@@ -412,7 +448,7 @@
         } 
         else if(Serial_Input == "LOGGING")
         {
-            Log_Value = A;
+            Log_Value = A;//Look into a nicer way of doing this
         } 
         else if(Serial_Input == "HELP")// Use this to display all of the availble commands
         { 
@@ -422,18 +458,15 @@
         {
             Console_Output_Timer.detach(); //Stops Sampling   
         }
-         else if(Serial_Input == "Blank Blank")
-        {
-           cout << "Blank Blank complete" << endl;
-        }
         else 
         {
             cout << "Please enter an acceptable command" << endl;
         }
     }
 }
-void Serial_Comms_Stealth_Mode()                                                        //Change this name
+void Serial_Comms_Data_Get()                                                        //Change this name
 {
+    if(Log_Value == 1){cout<<"Getting Data"<<endl;} 
     time_t Time = Data_Active.get_time();
     tm* Time_Pointer = localtime(&Time);
     strftime(scom_time_buffer, 32, "%I:%M %p\t", Time_Pointer);                         //Format time as a string
@@ -448,9 +481,11 @@
 }
 void Serial_Comms()//Thread for Serial Communications
 {
-    while(1) {
+    while(1) 
+    {
         Thread::signal_wait(SerialCommsTime);//Stupid 0 Bug
-        Serial_Comms_Stealth_Mode();
+        Serial_Comms_Data_Get();
+        if(Log_Value == 1){cout<<"In Serial Comms"<<endl;} 
     }
 }
 
@@ -463,7 +498,7 @@
     while(1) 
     {
         Thread::signal_wait(SamplingTime);      //Set the time between samples
-
+        if(Log_Value == 1){cout<<"Sample Time"<<endl;} 
         Data_Active.set_temperature(sensor.getTemperature());   //Read Temperature
         Data_Active.set_pressure(sensor.getPressure());         //Read Pressure
         Data_Active.set_light(adcIn.read());                    //Read Light
@@ -476,15 +511,12 @@
 
         Red_led.Toggle();
         t1.signal_set(NotSamplingTime);
+        if(Log_Value == 1){cout<<"New Sample avaliable"<<endl;} 
     }
 }
 int main()
 {
-    //Greeting
-    pc.printf("Test Start");
-    pc.printf("\n\r");
-
-    set_time(1512940530);               //Set RTC time to December 10 2017
+    set_time(1515352584);               //Set RTC time to December 10 2017
     
     pc.baud(9600);                      //Sets the Serial Comms Baud Rate
 
@@ -508,9 +540,18 @@
     if (fp == NULL) {
         error("Could not open file for write\n");
         LCD.Display_Clear();
-        LCD.Write_String("CANNOT OPEN FILE\n\n");//Change me
+        LCD.Write_String("CANNOT OPEN FILE");
         errorCode(FATAL);
     }
+    int network_temp;
+    network_temp = Network_Init();
+    if(network_temp == 1)//Sets up the network and checks if the network cable is not pluged in
+    {
+        error("Could not access network");
+        LCD.Display_Clear();
+        LCD.Write_String("Could not access network");
+        errorCode(FATAL);   
+    }
     //Last message before sampling begins
     LCD.Display_Clear();
     LCD.Write_String("READY     PLAYER");
@@ -518,7 +559,6 @@
     LCD.Write_String("      One     ");
     LCD.DDRAM_Address(0x00);
 
-    Network_Init();//Sets up the network
     Sample_Rate = TimerInterval;
     //Run interrupt
     Sampling_Timer.attach(&Sampling_ISR,Sample_Rate);