bool Logger::logVariables_sparsely(double ts, int a, bool b, int c, int d, cVector3d e, cVector3d f, cVector3d g) { if (GLOBAL_FLAG_INITIALIZED == true) { // Get Time Stamp double new_time_stamp = this->getTimeStamp(); // Check if data is redundant bool same_data = true; if (log_STATE_MACHINE.size() > 0) { same_data = same_data && (a == log_STATE_MACHINE.back()); //STATE_MACHINE same_data = same_data && (b == log_reward_delievered.back()); //GLOBAL_FLAG_ardin_delieverReward same_data = same_data && (c == log_cap_sen_sipper.back()); //ardout_capSen_sipperTube same_data = same_data && (d == log_cap_sen_handle.back()); //ardout_capSen_handleOutside same_data = same_data && e.equals(log_position.back()); //cur_position same_data = same_data && f.equals(log_linearVelocity.back()); //cur_linearVelocity same_data = same_data && g.equals(log_force.back()); //cur_force } else same_data = false; if (same_data == true) same_data_time_stamp.push_back(new_time_stamp); // Data is the same & vector isn't null & time has elapsed longer than limit if ( (same_data == true) && \ (same_data_time_stamp.size() > 0) && \ (new_time_stamp - same_data_time_stamp.front() > SAME_DATA_DISCARD_TIME_LIMIT) ) { // discard information return false; } else { if ( (same_data_time_stamp.size() > 0) && \ (new_time_stamp - same_data_time_stamp.front() > SAME_DATA_DISCARD_TIME_LIMIT) ) { this->logVariables(same_data_time_stamp.back(), \ log_STATE_MACHINE.back(), \ log_reward_delievered.back(), \ log_cap_sen_sipper.back(), \ log_cap_sen_handle.back(), \ log_position.back(), \ log_linearVelocity.back(), \ log_force.back()); same_data_time_stamp.clear(); } this->logVariables(new_time_stamp, a, b, c, d, e, f, g); if (same_data == false) same_data_time_stamp.clear(); // successful logging return true; } } return true; }