demo: Add triangle pattern.

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

View File

@ -78,6 +78,7 @@ enum {
*/ */
PATTERN_SQUARE, PATTERN_SQUARE,
PATTERN_SINE, PATTERN_SINE,
PATTERN_TRIANGLE,
}; };
static const char *logic_pattern_str[] = { static const char *logic_pattern_str[] = {
@ -91,6 +92,7 @@ static const char *logic_pattern_str[] = {
static const char *analog_pattern_str[] = { static const char *analog_pattern_str[] = {
"square", "square",
"sine", "sine",
"triangle",
}; };
struct analog_gen { struct analog_gen {
@ -216,6 +218,21 @@ static void generate_analog_pattern(const struct sr_probe_group *probe_group, ui
sin(2 * M_PI * frequency * t); sin(2 * M_PI * frequency * t);
} }
ag->num_samples = num_samples;
break;
case PATTERN_TRIANGLE:
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 / M_PI) *
asin(sin(2 * M_PI * frequency * t));
}
ag->num_samples = num_samples; ag->num_samples = num_samples;
break; break;
} }