Plymouth ELEC351 Group T / Mbed OS ELEC351

Dependencies:   BME280 BMP280 TextLCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /*
00002 ELEC 351 Group T
00003 Team Members : Christopher Hills, Thomas Morris
00004 Current Verision 22
00005 Overiew: Working Tasks 1,2,3,5,6,7,8,9,10,11,12,13,14,15
00006 
00007 Last Revision: Added Mail Box to serial
00008 Todo:
00009 Commnet code
00010 Check for race conditions
00011 Other fixes
00012 */
00013 
00014 #include "SETUP.hpp"
00015 #include "NETWORK.hpp"
00016 #include "FIFO.hpp"
00017 #include "SD_CARD.hpp"
00018 #include "SERIAL_COMMANDS.hpp"
00019 #include "SAMPLE.hpp"
00020 #include "THREADS.hpp"
00021 void SD_Card()//Writes data to the SD card
00022 {
00023     while(1)
00024     {
00025         Thread::signal_wait(1);
00026         Thread::wait(Sample_Rate*1000); //Waits until a new is taken before checking again
00027         SD_Card_Write();
00028     }
00029 }
00030 void Network()
00031 {
00032     while(1)
00033     {
00034         Thread::wait(NetworkWaitTime);//Waits Network Wait amount of time
00035         Networking();
00036     }
00037 }
00038 void LCD_Output()
00039 {
00040     while(1)
00041     {
00042         Thread::wait(10);//Small wait
00043         LCD_Print_Output();
00044     }
00045 }
00046 void Serial_Commands()
00047 {
00048     while(1)
00049     {
00050         Serial_Commands_Output();   
00051     }
00052 
00053 }
00054 void LED_Logging()
00055 {
00056     while(1)
00057     {
00058         if(Log_Value == 0)
00059         {
00060             Thread::wait(3000);
00061         }
00062         else if(Log_Value == 1)
00063         {
00064             Yellow_led.flash(0.2);
00065             Thread::wait(2800);
00066         }
00067         else if(Log_Value == 2)
00068         {
00069             Yellow_led.flash(0.2);
00070             Thread::wait(200);
00071             Yellow_led.flash(0.2);
00072             Thread::wait(2400);
00073         } 
00074         else if(Log_Value == 3)
00075         {
00076             Yellow_led.flash(0.2);
00077             Thread::wait(200);
00078             Yellow_led.flash(0.2);
00079             Thread::wait(200);
00080             Yellow_led.flash(0.2);
00081             Thread::wait(2000);
00082         } 
00083         else if(Log_Value == 4)
00084         {
00085             Yellow_led.flash(0.2);
00086             Thread::wait(200);
00087             Yellow_led.flash(0.2);
00088             Thread::wait(200);
00089             Yellow_led.flash(0.2);
00090             Thread::wait(200);
00091             Yellow_led.flash(0.2);
00092             Thread::wait(1600);
00093         } 
00094         else if(Log_Value == 5)
00095         {
00096             Yellow_led.flash(0.2);
00097             Thread::wait(200);
00098             Yellow_led.flash(0.2);
00099             Thread::wait(200);
00100             Yellow_led.flash(0.2);
00101             Thread::wait(200);
00102             Yellow_led.flash(0.2);
00103             Thread::wait(200);
00104             Yellow_led.flash(0.2);
00105             Thread::wait(1200);
00106         } 
00107         else
00108         {
00109             Log_Value = 0;   
00110         }
00111     }
00112 }
00113 void Sample()
00114 {
00115     Sample_Event();   
00116 }
00117 int main()
00118 {
00119     set_time(1515352584);               //Set RTC time to December 10 2017
00120     
00121     pc.baud(9600);                      //Sets the Serial Comms Baud Rate
00122 
00123     LCD.Initialise();
00124     LCD.DDRAM_Address(0x00);
00125  
00126     post();     //Power on Self Test
00127 
00128     Sample_Rate = TimerInterval;
00129     //Run interrupt
00130     Sampling_Timer.attach(&Sampling_ISR,Sample_Rate);
00131 
00132     t1.start(Sample);
00133     t2.start(SD_Card);
00134     t3.start(LCD_Output);
00135     t4.start(Network);
00136     t5.start(Serial_Commands);
00137     t6.start(LED_Logging);
00138     //Main thread ID
00139 
00140     idMain = osThreadGetId();   //CMSIS RTOS call
00141 
00142     //Thread ID
00143     id1 = t1.gettid();
00144     id2 = t2.gettid();
00145     id3 = t3.gettid();
00146     id4 = t4.gettid();
00147     id5 = t5.gettid();
00148     id6 = t6.gettid();
00149 
00150     while(true) 
00151     {
00152         if(SD_CARD_DETECT.read() == 1)
00153         {
00154             t2.signal_set(DONT_WRITE_TO_SD_CARD);
00155             errorCode(SD_CARD_REMOVED);
00156         } 
00157         else if(SD_CARD_DETECT.read() == 0)
00158         {
00159             t2.signal_set(SD_CARD_WRITE);
00160         }
00161         else
00162         {
00163             t2.signal_set(SD_CARD_WRITE);   
00164         }
00165         if(onBoardSwitch == 1)
00166         {   
00167             SD_Card_Eject();
00168             Green_led.switchOn();
00169         }
00170     }
00171 }