common code: Display multiple wave forms for each channel used
Use 'w' key to enable/disable RX wave form display.
This commit is contained in:
parent
ea32ab3fa3
commit
6c1b6119ad
|
@ -27,6 +27,7 @@
|
||||||
#define WIDTH 80
|
#define WIDTH 80
|
||||||
#define HEIGHT 10
|
#define HEIGHT 10
|
||||||
|
|
||||||
|
static int num_sender = 0;
|
||||||
static char screen[HEIGHT][WIDTH+1];
|
static char screen[HEIGHT][WIDTH+1];
|
||||||
static int wave_on = 0;
|
static int wave_on = 0;
|
||||||
|
|
||||||
|
@ -35,12 +36,13 @@ void display_wave_init(sender_t *sender, int samplerate)
|
||||||
dispwav_t *disp = &sender->dispwav;
|
dispwav_t *disp = &sender->dispwav;
|
||||||
|
|
||||||
memset(disp, 0, sizeof(*disp));
|
memset(disp, 0, sizeof(*disp));
|
||||||
|
disp->offset = (num_sender++) * HEIGHT;
|
||||||
disp->interval_max = (double)samplerate * DISPLAY_INTERVAL + 0.5;
|
disp->interval_max = (double)samplerate * DISPLAY_INTERVAL + 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
void display_wave_on(int on)
|
void display_wave_on(int on)
|
||||||
{
|
{
|
||||||
int j;
|
int i, j;
|
||||||
|
|
||||||
if (on < 0)
|
if (on < 0)
|
||||||
wave_on = 1 - wave_on;
|
wave_on = 1 - wave_on;
|
||||||
|
@ -49,9 +51,11 @@ void display_wave_on(int on)
|
||||||
|
|
||||||
memset(&screen, ' ', sizeof(screen));
|
memset(&screen, ' ', sizeof(screen));
|
||||||
printf("\0337\033[H");
|
printf("\0337\033[H");
|
||||||
for (j = 0; j < HEIGHT; j++) {
|
for (i = 0; i < num_sender; i++) {
|
||||||
screen[j][WIDTH] = '\0';
|
for (j = 0; j < HEIGHT; j++) {
|
||||||
puts(screen[j]);
|
screen[j][WIDTH] = '\0';
|
||||||
|
puts(screen[j]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
printf("\0338"); fflush(stdout);
|
printf("\0338"); fflush(stdout);
|
||||||
}
|
}
|
||||||
|
@ -84,7 +88,11 @@ void display_wave(sender_t *sender, int16_t *samples, int length)
|
||||||
y = (32767 - (int)buffer[j]) * HEIGHT * 2 / 65536;
|
y = (32767 - (int)buffer[j]) * HEIGHT * 2 / 65536;
|
||||||
screen[y >> 1][j] = (y & 1) ? '_' : '-';
|
screen[y >> 1][j] = (y & 1) ? '_' : '-';
|
||||||
}
|
}
|
||||||
|
sprintf(screen[0], "(chan %d", sender->kanal);
|
||||||
|
*strchr(screen[0], '\0') = ')';
|
||||||
printf("\0337\033[H");
|
printf("\0337\033[H");
|
||||||
|
for (j = 0; j < disp->offset; j++)
|
||||||
|
puts("");
|
||||||
for (j = 0; j < HEIGHT; j++) {
|
for (j = 0; j < HEIGHT; j++) {
|
||||||
screen[j][WIDTH] = '\0';
|
screen[j][WIDTH] = '\0';
|
||||||
puts(screen[j]);
|
puts(screen[j]);
|
||||||
|
|
|
@ -3,6 +3,7 @@ typedef struct sender sender_t;
|
||||||
typedef struct display_wave {
|
typedef struct display_wave {
|
||||||
int interval_pos;
|
int interval_pos;
|
||||||
int interval_max;
|
int interval_max;
|
||||||
|
int offset;
|
||||||
int16_t buffer[256];
|
int16_t buffer[256];
|
||||||
} dispwav_t;
|
} dispwav_t;
|
||||||
|
|
||||||
|
|
|
@ -137,8 +137,7 @@ int sender_create(sender_t *sender, int kanal, const char *sounddev, int sampler
|
||||||
*sender_tailp = sender;
|
*sender_tailp = sender;
|
||||||
sender_tailp = &sender->next;
|
sender_tailp = &sender->next;
|
||||||
|
|
||||||
if (sender == sender_head)
|
display_wave_init(sender, samplerate);
|
||||||
display_wave_init(sender, samplerate);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
error:
|
error:
|
||||||
|
@ -249,8 +248,7 @@ cant_recover:
|
||||||
#ifndef WAVE_WRITE_TX
|
#ifndef WAVE_WRITE_TX
|
||||||
if (sender->wave_rec.fp)
|
if (sender->wave_rec.fp)
|
||||||
wave_write(&sender->wave_rec, samples, count);
|
wave_write(&sender->wave_rec, samples, count);
|
||||||
if (sender == sender_head)
|
display_wave(sender, samples, count);
|
||||||
display_wave(sender, samples, count);
|
|
||||||
sender_receive(sender, samples, count);
|
sender_receive(sender, samples, count);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -273,6 +271,7 @@ cant_recover:
|
||||||
if (slave->wave_rec.fp)
|
if (slave->wave_rec.fp)
|
||||||
wave_write(&slave->wave_rec, slave_samples, count);
|
wave_write(&slave->wave_rec, slave_samples, count);
|
||||||
#endif
|
#endif
|
||||||
|
display_wave(slave, slave_samples, count);
|
||||||
sender_receive(slave, slave_samples, count);
|
sender_receive(slave, slave_samples, count);
|
||||||
}
|
}
|
||||||
/* do pre emphasis towards radio, not wave_write */
|
/* do pre emphasis towards radio, not wave_write */
|
||||||
|
@ -379,8 +378,7 @@ cant_recover:
|
||||||
if (sender->wave_rec.fp)
|
if (sender->wave_rec.fp)
|
||||||
wave_write(&sender->wave_rec, samples, count);
|
wave_write(&sender->wave_rec, samples, count);
|
||||||
#endif
|
#endif
|
||||||
if (sender == sender_head)
|
display_wave(sender, samples, count);
|
||||||
display_wave(sender, samples, count);
|
|
||||||
sender_receive(sender, samples, count);
|
sender_receive(sender, samples, count);
|
||||||
}
|
}
|
||||||
if (sender->loopback == 3)
|
if (sender->loopback == 3)
|
||||||
|
@ -398,6 +396,7 @@ cant_recover:
|
||||||
if (slave->wave_rec.fp)
|
if (slave->wave_rec.fp)
|
||||||
wave_write(&slave->wave_rec, slave_samples, count);
|
wave_write(&slave->wave_rec, slave_samples, count);
|
||||||
#endif
|
#endif
|
||||||
|
display_wave(slave, slave_samples, count);
|
||||||
sender_receive(slave, slave_samples, count);
|
sender_receive(slave, slave_samples, count);
|
||||||
}
|
}
|
||||||
if (slave->loopback == 3)
|
if (slave->loopback == 3)
|
||||||
|
|
Loading…
Reference in New Issue