AC_AutoTune: have circular buffers in freqresp object statically allocated

This commit is contained in:
Bill Geyer 2021-12-21 23:38:29 -05:00 committed by Bill Geyer
parent 38ff36fca7
commit 7bccaac327
2 changed files with 8 additions and 11 deletions

View File

@ -24,8 +24,8 @@ void AC_AutoTune_FreqResp::init(InputType input_type)
max_accel = 0.0f; max_accel = 0.0f;
max_meas_rate = 0.0f; max_meas_rate = 0.0f;
max_command = 0.0f; max_command = 0.0f;
meas_peak_info_buffer->clear(); meas_peak_info_buffer.clear();
tgt_peak_info_buffer->clear(); tgt_peak_info_buffer.clear();
cycle_complete = false; cycle_complete = false;
} }
@ -407,14 +407,14 @@ void AC_AutoTune_FreqResp::push_to_meas_buffer(uint16_t count, float amplitude,
sample.curr_count = count; sample.curr_count = count;
sample.amplitude = amplitude; sample.amplitude = amplitude;
sample.time_ms = time_ms; sample.time_ms = time_ms;
meas_peak_info_buffer->push(sample); meas_peak_info_buffer.push(sample);
} }
// pull measured peak info from buffer // pull measured peak info from buffer
void AC_AutoTune_FreqResp::pull_from_meas_buffer(uint16_t &count, float &amplitude, uint32_t &time_ms) void AC_AutoTune_FreqResp::pull_from_meas_buffer(uint16_t &count, float &amplitude, uint32_t &time_ms)
{ {
peak_info sample; peak_info sample;
if (!meas_peak_info_buffer->pop(sample)) { if (!meas_peak_info_buffer.pop(sample)) {
// no sample // no sample
return; return;
} }
@ -430,7 +430,7 @@ void AC_AutoTune_FreqResp::push_to_tgt_buffer(uint16_t count, float amplitude, u
sample.curr_count = count; sample.curr_count = count;
sample.amplitude = amplitude; sample.amplitude = amplitude;
sample.time_ms = time_ms; sample.time_ms = time_ms;
tgt_peak_info_buffer->push(sample); tgt_peak_info_buffer.push(sample);
} }
@ -438,7 +438,7 @@ void AC_AutoTune_FreqResp::push_to_tgt_buffer(uint16_t count, float amplitude, u
void AC_AutoTune_FreqResp::pull_from_tgt_buffer(uint16_t &count, float &amplitude, uint32_t &time_ms) void AC_AutoTune_FreqResp::pull_from_tgt_buffer(uint16_t &count, float &amplitude, uint32_t &time_ms)
{ {
peak_info sample; peak_info sample;
if (!tgt_peak_info_buffer->pop(sample)) { if (!tgt_peak_info_buffer.pop(sample)) {
// no sample // no sample
return; return;
} }

View File

@ -14,9 +14,6 @@ public:
// Constructor // Constructor
AC_AutoTune_FreqResp() AC_AutoTune_FreqResp()
{ {
// initialize test variables
meas_peak_info_buffer = new ObjectBuffer<peak_info>(AUTOTUNE_DWELL_CYCLES);
tgt_peak_info_buffer = new ObjectBuffer<peak_info>(AUTOTUNE_DWELL_CYCLES);
} }
// Enumeration of input type // Enumeration of input type
@ -177,10 +174,10 @@ private:
}; };
// Buffer object for measured peak data // Buffer object for measured peak data
ObjectBuffer<peak_info> *meas_peak_info_buffer; ObjectBuffer<peak_info> meas_peak_info_buffer{AUTOTUNE_DWELL_CYCLES};
// Buffer object for target peak data // Buffer object for target peak data
ObjectBuffer<peak_info> *tgt_peak_info_buffer; ObjectBuffer<peak_info> tgt_peak_info_buffer{AUTOTUNE_DWELL_CYCLES};
// Push data into measured peak data buffer object // Push data into measured peak data buffer object
void push_to_meas_buffer(uint16_t count, float amplitude, uint32_t time_ms); void push_to_meas_buffer(uint16_t count, float amplitude, uint32_t time_ms);