Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MODSERIAL FATFileSystem
Diff: MbedLogger/MbedLogger.cpp
- 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