Thomas Morris
/
PROJ324_Final
Proj 324 Final
Fork of ELEC351_Group_T by
Diff: main.cpp
- Revision:
- 40:d04aec00504f
- Parent:
- 39:5c499989d2b9
--- a/main.cpp Sun Jan 07 23:01:38 2018 +0000 +++ b/main.cpp Mon Jan 08 00:21:35 2018 +0000 @@ -49,7 +49,6 @@ } void Delete_Data(int Delete_Pointer) { - Thread::signal_wait(Do_Delete_Data); Data_Buffer_Lock.lock(); Data_Buffer[Delete_Pointer].set_all_zero(); Data_Buffer_Lock.unlock(); @@ -440,31 +439,43 @@ if(x_Read_All < 0){x_Read_All = x_Read_All + mailsize;} else {x_Read_All = x_Read_All;} - DATA Serial_Read_Data = Read_Data(x_Read_All); + DATA Serial_Read_All_Data = Read_Data(x_Read_All); - time_t Time = Serial_Read_Data.get_time(); + time_t Time = Serial_Read_All_Data.get_time(); tm* Time_Pointer = localtime(&Time); strftime(scom_time_buffer, 32, "%I:%M %p\t", Time_Pointer); //Format time as a string pc.printf("Date = %d %d %d\t", Time_Pointer->tm_mday, (Time_Pointer->tm_mon+1),(Time_Pointer->tm_year+1900)); pc.printf("Time = %s", scom_time_buffer); //Print the string formatted time - pc.printf("Temperature = %f\t", Serial_Read_Data.get_temperature()); //Print Temperature - pc.printf("Pressure = %f\t", Serial_Read_Data.get_pressure()); //Print Pressure - pc.printf("Light = %f\n\r", Serial_Read_Data.get_light()); //Print Light + pc.printf("Temperature = %f\t", Serial_Read_All_Data.get_temperature()); //Print Temperature + pc.printf("Pressure = %f\t", Serial_Read_All_Data.get_pressure()); //Print Pressure + pc.printf("Light = %f\n\r", Serial_Read_All_Data.get_light()); //Print Light if(x_Read_All == mailsize - 1){x_Read_All = 0;} else {x_Read_All = x_Read_All + 1;} } } - //DELETE ALL FIX THIS - else if(input[0] == 'D' & input[1] == 'E' & input[2] == 'L' & input[3] == 'E' & input[4] == 'T' & input[5] == 'E' & input[6] == ' ' & input[7] == 'A' & input[8] == 'L' & input[9] == 'L' & input[10] == ' ') + //DELETE - Might have to disable sampling during this + else if(input[0] == 'D' & input[1] == 'E' & input[2] == 'L' & input[3] == 'E' & input[4] == 'T' & input[5] == 'E' & input[6] == ' ' & input[7] == 'A' & input[8] == 'L' & input[9] == 'L') { - Sampling_Timer.detach(); - Console_Output_Timer.detach(); - Sampling_Timer.attach(&Sampling_ISR,Sample_Rate); - cout << "Sampling Restarted" << endl; if(Log_Value == 1){cout<<"DELETE ALL Confirmed"<<endl;} + + Data_Buffer_Lock.lock(); + int Start_Address = Write_Pointer; + Data_Buffer_Lock.unlock(); + + for(int x_Delete_All = (Start_Address - mailsize); x_Delete_All != Start_Address; x_Delete_All = x_Delete_All) + { + if(x_Delete_All < 0){x_Delete_All = x_Delete_All + mailsize;} + else {x_Delete_All = x_Delete_All;} + + Delete_Data(x_Delete_All); + + if(x_Delete_All == mailsize - 1){x_Delete_All = 0;} + else {x_Delete_All = x_Delete_All + 1;} + + } } //READ look into this @@ -472,23 +483,22 @@ { int NumberOfChars = 0; int ArrayAddress = 0; string ReadNumber; int NumberToRead; while(input[ArrayAddress] != '\0'){NumberOfChars++; ArrayAddress++;} - for(int x=5; x < NumberOfChars; x++){ReadNumber += input[x];} + for(int x_Read=5; x_Read < NumberOfChars; x_Read++){ReadNumber += input[x_Read];} stringstream Number(ReadNumber); Number >> NumberToRead; - if(Log_Value == 1){cout<<"Getting Data"<<endl;} Data_Buffer_Lock.lock(); int Start_Address = Write_Pointer; Data_Buffer_Lock.unlock(); - for(int x = (Start_Address - NumberToRead); x != Start_Address; x = x ) + for(int x_Read = (Start_Address - NumberToRead); x_Read != Start_Address; x_Read = x_Read ) { - if(x < 0){x = x + mailsize;} - else {x = x;} + if(x_Read < 0) {x_Read = x_Read + mailsize;} + else {x_Read = x_Read;} - DATA Serial_Read_Data = Read_Data(x); + DATA Serial_Read_Data = Read_Data(x_Read); time_t Time = Serial_Read_Data.get_time(); tm* Time_Pointer = localtime(&Time); @@ -500,8 +510,8 @@ pc.printf("Pressure = %f\t", Serial_Read_Data.get_pressure()); //Print Pressure pc.printf("Light = %f\n\r", Serial_Read_Data.get_light()); //Print Light - if(x == mailsize - 1){x = 0;} - else {x = x + 1;} + if(x_Read == mailsize - 1) {x_Read = 0;} + else {x_Read = x_Read + 1;} Green_led.Toggle(); } @@ -510,13 +520,9 @@ } - //DELETE look into this + //DELETE - Might have to disable sampling during this else if(input[0] == 'D' & input[1] == 'E' & input[2] == 'L' & input[3] == 'E' & input[4] == 'T' & input[5] == 'E' & input[6] == ' ') { - Sampling_Timer.detach(); - Console_Output_Timer.detach(); - - int NumberOfChars = 0; int ArrayAddress = 0; string DeleteNumber; int NumberToDelete; while(input[ArrayAddress] != '\0'){NumberOfChars++; ArrayAddress++;} for(int x=7; x < NumberOfChars; x++){DeleteNumber += input[x];} @@ -525,8 +531,24 @@ if(Log_Value == 1){cout << "Deleted " << NumberToDelete << " samples" << endl;} - Sampling_Timer.attach(&Sampling_ISR,Sample_Rate); - cout << "Sampling Restarted" << endl; + Data_Buffer_Lock.lock(); + int Start_Address = Write_Pointer; + Data_Buffer_Lock.unlock(); + + for(int x_Delete = (Start_Address - NumberToDelete); x_Delete != Start_Address; x_Delete = x_Delete ) + { + if(x_Delete < 0){x_Delete = x_Delete + mailsize;} + else {x_Delete = x_Delete;} + + Delete_Data(x_Delete); + + if(x_Delete == mailsize - 1){x_Delete = 0;} + else {x_Delete = x_Delete + 1;} + + } + //Serial_Comms_Data_Get(); + if(Log_Value == 1){cout << "Deleted " << NumberToDelete << " samples" << endl;} + } //STATE @@ -538,7 +560,7 @@ stringstream Number(StateNumber); Number >> NumberToState; - if(NumberToState==0){Sampling_Timer.detach(); Console_Output_Timer.detach();} + if(NumberToState==0){Sampling_Timer.detach();} if(NumberToState==1){Sampling_Timer.attach(&Sampling_ISR,Sample_Rate);} } @@ -596,10 +618,9 @@ stringstream Number(SettNumber); Number >> NumberToSett; - if(NumberToSett >= 1){Sample_Rate = NumberToSett;} + if(NumberToSett >= 0.1){Sample_Rate = NumberToSett;} Sampling_Timer.detach(); - Console_Output_Timer.detach(); Sampling_Timer.attach(&Sampling_ISR,Sample_Rate); } @@ -623,11 +644,6 @@ HELP(); } - //STOP - else if(input[0] == 'S' & input[1] == 'T' & input[2] == 'O' & input[3] == 'P') - { - Console_Output_Timer.detach(); //Stops Sampling - } else { cout << "Please enter an acceptable command" << endl;