demo: Add analog sawtooth pattern.

This commit is contained in:
poljar (Damir Jelić) 2014-01-14 23:03:10 +01:00 committed by Bert Vermeulen
parent 091c962127
commit 9f54e0e84f
1 changed files with 17 additions and 0 deletions

View File

@ -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;
}