demo: Add analog sawtooth pattern.
This commit is contained in:
parent
091c962127
commit
9f54e0e84f
|
@ -79,6 +79,7 @@ enum {
|
|||
PATTERN_SQUARE,
|
||||
PATTERN_SINE,
|
||||
PATTERN_TRIANGLE,
|
||||
PATTERN_SAWTOOTH,
|
||||
};
|
||||
|
||||
static const char *logic_pattern_str[] = {
|
||||
|
@ -93,6 +94,7 @@ static const char *analog_pattern_str[] = {
|
|||
"square",
|
||||
"sine",
|
||||
"triangle",
|
||||
"sawtooth",
|
||||
};
|
||||
|
||||
struct analog_gen {
|
||||
|
@ -233,6 +235,21 @@ static void generate_analog_pattern(const struct sr_probe_group *probe_group, ui
|
|||
asin(sin(2 * M_PI * frequency * t));
|
||||
}
|
||||
|
||||
ag->num_samples = num_samples;
|
||||
break;
|
||||
|
||||
case PATTERN_SAWTOOTH:
|
||||
frequency = sample_rate / ANALOG_SAMPLES_PER_PERIOD;
|
||||
|
||||
while (num_samples % ANALOG_SAMPLES_PER_PERIOD != 0)
|
||||
num_samples--;
|
||||
|
||||
for (i = 0; i < num_samples; i++) {
|
||||
t = (double) i / (double) sample_rate;
|
||||
ag->pattern_data[i] = 2 * ANALOG_AMPLITUDE *
|
||||
((t * frequency) - floor(0.5f + t * frequency));
|
||||
}
|
||||
|
||||
ag->num_samples = num_samples;
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue