mirror of https://github.com/ArduPilot/ardupilot
54 lines
1.2 KiB
C
54 lines
1.2 KiB
C
|
#pragma once
|
||
|
|
||
|
class Chirp {
|
||
|
|
||
|
public:
|
||
|
|
||
|
// constructor
|
||
|
Chirp();
|
||
|
|
||
|
// initializes the chirp object
|
||
|
void init(float time_record, float frequency_start_hz, float frequency_stop_hz, float time_fade_in, float time_fade_out, float time_const_freq);
|
||
|
|
||
|
// determine chirp signal output at the specified time and amplitude
|
||
|
float update(float time, float waveform_magnitude);
|
||
|
|
||
|
// accessor for the current waveform frequency
|
||
|
float get_frequency_rads() {return waveform_freq_rads; }
|
||
|
|
||
|
private:
|
||
|
// Total chirp length in seconds
|
||
|
float record;
|
||
|
|
||
|
// Chirp oscillation amplitude
|
||
|
float magnitude;
|
||
|
|
||
|
// Chirp start frequency in rad/s
|
||
|
float wMin;
|
||
|
|
||
|
// Chirp end frequency in rad/s
|
||
|
float wMax;
|
||
|
|
||
|
// Amplitude fade in time in seconds
|
||
|
float fade_in;
|
||
|
|
||
|
// Amplitude fade out time in seconds
|
||
|
float fade_out;
|
||
|
|
||
|
// Time that chirp will remain at the min frequency before increasing to max frequency
|
||
|
float const_freq;
|
||
|
|
||
|
// frequency ratio
|
||
|
float B;
|
||
|
|
||
|
// current waveform frequency in rad/s
|
||
|
float waveform_freq_rads;
|
||
|
|
||
|
// current amplitude of chirp
|
||
|
float window;
|
||
|
|
||
|
// output of chirp signal at the requested time
|
||
|
float output;
|
||
|
|
||
|
};
|