Flying Sea Glider / Mbed 2 deprecated 2019_13sep_jcw_nosd

Dependencies:   mbed MODSERIAL FATFileSystem

Revision:
102:0f430de62447
Parent:
87:6d95f853dab3
--- a/MbedLogger/MbedLogger.cpp	Fri Jun 28 15:07:41 2019 +0000
+++ b/MbedLogger/MbedLogger.cpp	Fri Sep 13 16:51:48 2019 +0000
@@ -20,7 +20,8 @@
     _log_file_line_counter = 0;     //used to set timer in finite state machine based on size of log
     
     //heading string is 254 bytes long, FIXED LENGTH
-    _heading_string = "StateStr,St#,TimeSec,DepthCmd,DepthFt,PitchCmd,PitchDeg,RudderPWM,RudderCmdDeg,HeadDeg,bceCmd,bce_mm,battCmd,batt_mm,PitchRateDegSec,depth_rate_fps,SystemAmps,SystemVolts,AltChRd,Int_PSI,BCE_p,i,d,BATT_p,i,d,DEPTH_p,i,d,fq,db,PITCH_p,i,d,HEAD_p,i,d,fq,db\n";
+    _heading_string = "ZStateStr,St#,TimeSec,Timesec-diff,DepthCmd,DepthM,PitchCmd,PitchDeg,RudderPWM,RudderCmdDeg,HeadDeg,bceCmd,bce_mm,battCmd,batt_mm,PitchRateDegSec,depth_rate_mps,SystemAmps,SystemVolts,AltChRd,Int_PSI\n";
+    _heading_string2 = "Statenum,TimeSec-diff,DepthM,PitchDeg,RollDeg,HeadDeg,VertSpeed, Altim\n";
     _diag_heading_string =  "Diagnostics file header \n";
     
     _fsm_transmit_complete = false;
@@ -48,7 +49,102 @@
     
     return seconds;
 }
+void MbedLogger::recordData_short(int current_state) {
+   int data_log_time = mbedLogger().getSystemTime();                 //read the system timer to get unix timestamp
+    int start_time = 1518467832;
+    if(_time_set) { start_time = _default_timestamp_time;}
+    
+    _data_log[0] = depthLoop().getPosition();       //depth reading (filtered depth)
+    
+    _data_log[1] = pitchLoop().getPosition();       //pitch reading (filtered pitch)
+    
+    _data_log[2] = imu().getRoll();
+    _data_log[3] = headingLoop().getPosition();     //heading reading (filtered heading)
+    _data_log[4] = depthLoop().getVelocity();      //vertical speed
+    //  _data_log[5] = sensors().getAltimeterReading_m();   // Altimeter Channel value in meters
+    _data_log[5] = altimLoop().getPosition();    // AltimLoop  runs smoothed values of the sensor readings.
+    
+    fprintf(_fp, "%02d,%05d,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f,%5.1f\n",
+    current_state,    data_log_time-start_time,   //note offset relative to start 
+    _data_log[0],_data_log[1],_data_log[2],_data_log[3], _data_log[4],_data_log[5]);
+     
+}
+void MbedLogger::recordData_long(int current_state) {
+    int data_log_time = mbedLogger().getSystemTime();                 //read the system timer to get unix timestamp
+    int start_time = 1518467832;
+    if(_time_set) { start_time = _default_timestamp_time;}
+    _data_log[0] = depthLoop().getCommand();        //depth command
+    _data_log[1] = depthLoop().getPosition();       //depth reading (filtered depth)
+    _data_log[2] = pitchLoop().getCommand();        //pitch command
+    _data_log[3] = pitchLoop().getPosition();       //pitch reading (filtered pitch)
+    _data_log[4] = rudder().getSetPosition_pwm();      //rudder command PWM
+    _data_log[5] = rudder().getSetPosition_deg();      //rudder command DEG
+    _data_log[6] = headingLoop().getPosition();     //heading reading (filtered heading)
+    
+    _data_log[7] = bce().getSetPosition_mm();       //BCE command
+    _data_log[8] = bce().getPosition_mm();          //BCE reading
+    _data_log[9] = batt().getSetPosition_mm();      //Batt command
+    _data_log[10] = batt().getPosition_mm();         //Batt reading    
+    _data_log[11] = pitchLoop().getVelocity();       // pitchRate_degs (degrees per second)
+    _data_log[12] = depthLoop().getVelocity();      // depthRate_fps (feet per second)
+    _data_log[13] = sensors().getCurrentInput();      // i_in
+    _data_log[14] = sensors().getVoltageInput();      // v_in
+    //        _data_log[15] = sensors().getAltimeterReading_m();   // Altimeter Channel in meters
+    _data_log[15] = altimLoop().getPosition();    // AltimLoop  runs smoothed values of the sensor readings.
+    _data_log[16] = sensors().getInternalPressurePSI();   // int_press_PSI
 
+string string_state;           string_state= "UNKNOWN";  //default just in case.
+    
+    if (current_state == SIT_IDLE)
+        string_state = "SIT_IDLE";
+    else if (current_state == FIND_NEUTRAL)
+        string_state = "FIND_NEUTRAL";
+    else if (current_state == DIVE)
+        string_state = "DIVE";
+    else if (current_state == RISE)
+        string_state = "RISE";
+    else if (current_state == FLOAT_LEVEL)
+        string_state = "FLOAT_LEVEL";
+    else if (current_state == FLOAT_BROADCAST)
+        string_state = "FLOAT_BROADCAST";          
+    else if (current_state == EMERGENCY_CLIMB)
+        string_state = "EMERGENCY_CLIMB";
+    else if (current_state == MULTI_DIVE)
+        string_state = "MULTI_DIVE";
+    else if (current_state == MULTI_RISE)
+        string_state = "MULTI_RISE";
+    else if (current_state == KEYBOARD)
+        string_state = "KEYBOARD";
+    else if (current_state == CHECK_TUNING)
+        string_state = "CHECK_TUNING";
+    else if (current_state == POSITION_DIVE)
+        string_state = "POSITION_DIVE"; 
+    else if (current_state == POSITION_RISE)
+        string_state = "POSITION_RISE";
+    else if (current_state == TX_MBED_LOG) 
+        string_state = "TX_MBED_LOG";
+    else if (current_state == RX_SEQUENCE) 
+        string_state = "RECEIVE_SEQUENCE";
+    else if (current_state == LEG_POSITION_DIVE) 
+        string_state = "LEG_POS_DIVE";
+    else if (current_state == LEG_POSITION_RISE) 
+        string_state = "LEG_POS_RISE";
+    else if (current_state == FB_EXIT) 
+        string_state = "FB_EXIT"; 
+    else if (current_state == START_SWIM) 
+        string_state = "START_SWIM"; 
+    else if (current_state == FLYING_IDLE) 
+        string_state = "FLYING_IDLE"; 
+    else if (current_state == ENDLEG_WAIT) 
+        string_state = "ENDLEG_WAIT";        
+        
+fprintf(_fp, "Z%17s,%02d,%10d,%05d,%5.1f,%5.1f,%6.1f,%6.1f,%4.0f,%4.0f,%6.1f,%5.1f,%6.1f,%5.1f,%6.1f,%6.1f,%6.1f,%6.3f,%6.2f,%5.0f,%6.2f\n",
+    string_state.c_str(),current_state,    data_log_time,data_log_time-start_time,    _data_log[0],_data_log[1],_data_log[2],_data_log[3],_data_log[4],
+    _data_log[5],_data_log[6],_data_log[7],_data_log[8],_data_log[9],_data_log[10],_data_log[11],_data_log[12],_data_log[13],
+    _data_log[14],_data_log[15], _data_log[16]);
+
+
+}
 void MbedLogger::recordData(int current_state) {
     int data_log_time = mbedLogger().getSystemTime();                 //read the system timer to get unix timestamp
     int start_time = 1518467832;
@@ -1267,16 +1363,17 @@
 void MbedLogger::appendLogFile(int current_state, int option) {
     //option one means write to file
     
-    if (option == 1) {
+    if (option >= 1) {
         if (!_fp) {     //if not present
             _fp = fopen(_full_file_path_string.c_str(), "a");
         }
         
         //record data using the recordData function (takes in the state integer)
-        recordData(current_state);
+        if(option ==2) {recordData_long(current_state);}
+        recordData_short(current_state);
     }
     
-    else {
+    else {  //option==0  just close log file
         closeLogFile();
     }
 }
@@ -1317,6 +1414,7 @@
         _fp = fopen(file_name_string.c_str(), "w");     //write,print,close
         //fprintf(_fp,"state_string,state_ID,timer,depth_cmd,depth_ft,pitch_cmd,pitch_deg,bce_cmd,bce_mm,batt_cmd,batt_mm,pitchRate_degs,depthRate_fps\nempty log file!\n");
         fprintf(_fp,_heading_string.c_str());
+        fprintf(_fp,_heading_string2.c_str());
         closeLogFile();
     }
     else