kopia lustrzana https://github.com/windytan/slowrx
some cleanup
rodzic
f60ec21e6b
commit
86ab5d6bb5
1
common.h
1
common.h
|
@ -3,7 +3,6 @@
|
|||
|
||||
#define MINSLANT 30
|
||||
#define MAXSLANT 150
|
||||
#define SYNCW 400
|
||||
#define SNRSIZE 2048
|
||||
|
||||
extern int VISmap[128];
|
||||
|
|
170
gui.c
170
gui.c
|
@ -21,8 +21,8 @@ void createGUI() {
|
|||
GtkWidget *vuframe1;
|
||||
GtkWidget *vualign1;
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
g_signal_connect (window, "delete-event", G_CALLBACK (delete_event), NULL);
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
g_signal_connect (window, "delete-event", G_CALLBACK (delete_event), NULL);
|
||||
|
||||
/* Cam tab */
|
||||
|
||||
|
@ -32,20 +32,20 @@ void createGUI() {
|
|||
ClearPixbuf (CamPixbuf, 320, 256);
|
||||
CamImage = gtk_image_new_from_pixbuf (CamPixbuf);
|
||||
|
||||
camvbox3 = gtk_vbox_new (FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camvbox3), CamImage, FALSE, FALSE, 1);
|
||||
infolabel = gtk_label_new(" ");
|
||||
camvbox3 = gtk_vbox_new (FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camvbox3), CamImage, FALSE, FALSE, 1);
|
||||
infolabel = gtk_label_new (" ");
|
||||
|
||||
camalign1 = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
|
||||
gtk_alignment_set_padding (GTK_ALIGNMENT (camalign1), 10,10,10,10);
|
||||
gtk_container_add (GTK_CONTAINER (camalign1), camvbox3);
|
||||
gtk_container_add (GTK_CONTAINER (camframe1), camalign1);
|
||||
camalign1 = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
|
||||
gtk_alignment_set_padding (GTK_ALIGNMENT (camalign1), 10,10,10,10);
|
||||
gtk_container_add (GTK_CONTAINER (camalign1), camvbox3);
|
||||
gtk_container_add (GTK_CONTAINER (camframe1), camalign1);
|
||||
|
||||
camhbox1 = gtk_hbox_new (FALSE, 1);
|
||||
camvbox1 = gtk_vbox_new (FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camhbox1), camvbox1, FALSE, FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camvbox1), camframe1, FALSE, FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camvbox3), infolabel, FALSE, FALSE, 1);
|
||||
camhbox1 = gtk_hbox_new (FALSE, 1);
|
||||
camvbox1 = gtk_vbox_new (FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camhbox1), camvbox1, FALSE, FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camvbox1), camframe1, FALSE, FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camvbox3), infolabel, FALSE, FALSE, 1);
|
||||
|
||||
/* Recent signals list */
|
||||
/*GtkTreeStore *RecentStore;
|
||||
|
@ -64,19 +64,19 @@ void createGUI() {
|
|||
|
||||
/* VU meter */
|
||||
|
||||
camvbox2 = gtk_vbox_new (FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camhbox1), camvbox2, FALSE, FALSE, 1);
|
||||
camvbox2 = gtk_vbox_new (FALSE, 1);
|
||||
gtk_box_pack_start (GTK_BOX (camhbox1), camvbox2, FALSE, FALSE, 1);
|
||||
|
||||
vuframe1 = gtk_frame_new ("Signal dB");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vuframe1), 5);
|
||||
|
||||
vutable = gtk_table_new (5, 2, FALSE);
|
||||
vutable = gtk_table_new (5, 2, FALSE);
|
||||
|
||||
vualign1 = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
|
||||
gtk_alignment_set_padding (GTK_ALIGNMENT (vualign1), 10,10,10,10);
|
||||
gtk_container_add (GTK_CONTAINER (vualign1), vutable);
|
||||
gtk_container_add (GTK_CONTAINER (vuframe1), vualign1);
|
||||
gtk_box_pack_start (GTK_BOX (camvbox2), vuframe1, FALSE, FALSE, 1);
|
||||
vualign1 = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
|
||||
gtk_alignment_set_padding (GTK_ALIGNMENT (vualign1), 10,10,10,10);
|
||||
gtk_container_add (GTK_CONTAINER (vualign1), vutable);
|
||||
gtk_container_add (GTK_CONTAINER (vuframe1), vualign1);
|
||||
gtk_box_pack_start (GTK_BOX (camvbox2), vuframe1, FALSE, FALSE, 1);
|
||||
|
||||
int dBthresh[10] = {0, -1, -2, -3, -5, -7, -10, -15, -20, -25};
|
||||
char dbstr[40];
|
||||
|
@ -85,17 +85,17 @@ void createGUI() {
|
|||
label = gtk_label_new("");
|
||||
if (dBthresh[i] < 0) snprintf(dbstr, sizeof(dbstr)-1, "<span font='9px'>−%d</span>", abs(dBthresh[i]));
|
||||
else snprintf(dbstr, sizeof(dbstr)-1, "<span font='9px'>%d</span>", dBthresh[i]);
|
||||
gtk_label_set_markup(GTK_LABEL(label), dbstr);
|
||||
gtk_misc_set_alignment(GTK_MISC(label),1,0);
|
||||
gtk_table_attach(GTK_TABLE(vutable), label, 0, 1, i, i+1, GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_label_set_markup (GTK_LABEL(label), dbstr);
|
||||
gtk_misc_set_alignment (GTK_MISC(label),1,0);
|
||||
gtk_table_attach (GTK_TABLE(vutable), label, 0, 1, i, i+1, GTK_FILL, GTK_FILL, 0, 0);
|
||||
}
|
||||
|
||||
label = gtk_label_new("PWR");
|
||||
gtk_misc_set_alignment(GTK_MISC(label),.5,0);
|
||||
gtk_table_attach(GTK_TABLE(vutable), label, 0, 2, 10, 11, GTK_FILL, GTK_FILL, 0, 4);
|
||||
label = gtk_label_new("SNR");
|
||||
gtk_misc_set_alignment(GTK_MISC(label),.5,0);
|
||||
gtk_table_attach(GTK_TABLE(vutable), label, 2, 4, 10, 11, GTK_FILL, GTK_FILL, 0, 4);
|
||||
label = gtk_label_new ("PWR");
|
||||
gtk_misc_set_alignment (GTK_MISC(label),.5,0);
|
||||
gtk_table_attach (GTK_TABLE(vutable), label, 0, 2, 10, 11, GTK_FILL, GTK_FILL, 0, 4);
|
||||
label = gtk_label_new ("SNR");
|
||||
gtk_misc_set_alignment (GTK_MISC(label),.5,0);
|
||||
gtk_table_attach (GTK_TABLE(vutable), label, 2, 4, 10, 11, GTK_FILL, GTK_FILL, 0, 4);
|
||||
|
||||
guchar *pixels, *p;
|
||||
unsigned int x,y,rowstride;
|
||||
|
@ -158,120 +158,18 @@ void createGUI() {
|
|||
label = gtk_label_new("");
|
||||
if (SNRdBthresh[i] < 0) snprintf(dbstr, sizeof(dbstr)-1, "<span font='9px'>−%d</span>", abs(SNRdBthresh[i]));
|
||||
else snprintf(dbstr, sizeof(dbstr)-1, "<span font='9px'>%+d</span>", SNRdBthresh[i]);
|
||||
gtk_label_set_markup(GTK_LABEL(label), dbstr);
|
||||
gtk_misc_set_alignment(GTK_MISC(label),0,0);
|
||||
gtk_table_attach(GTK_TABLE(vutable), label, 3, 4, i, i+1, GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_label_set_markup (GTK_LABEL(label), dbstr);
|
||||
gtk_misc_set_alignment (GTK_MISC(label),0,0);
|
||||
gtk_table_attach (GTK_TABLE(vutable), label, 3, 4, i, i+1, GTK_FILL, GTK_FILL, 0, 0);
|
||||
}
|
||||
|
||||
gtk_table_set_row_spacings(GTK_TABLE(vutable), 0);
|
||||
gtk_table_set_col_spacings(GTK_TABLE(vutable), 0);
|
||||
|
||||
/* WAV tab */
|
||||
|
||||
GtkWidget *wavhbox1;
|
||||
//GtkWidget *wavvbox1;
|
||||
|
||||
wavhbox1 = gtk_hbox_new (FALSE, 2);
|
||||
/*wavvbox1 = gtk_vbox_new (FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (wavhbox1), wavvbox1, TRUE, TRUE, 0);
|
||||
|
||||
GtkWidget *wavframe1;
|
||||
wavframe1 = gtk_frame_new ("WAV file");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (wavframe1), 10);
|
||||
gtk_box_pack_start (GTK_BOX (wavvbox1), wavframe1, FALSE, TRUE, 0);
|
||||
GtkWidget *wavalign1;
|
||||
wavalign1 = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
|
||||
gtk_alignment_set_padding (GTK_ALIGNMENT (wavalign1), 5,5,12,5);
|
||||
GtkWidget *wavchooserb;
|
||||
wavchooserb = gtk_file_chooser_button_new ("Select a file", GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
gtk_container_add (GTK_CONTAINER (wavalign1), wavchooserb);
|
||||
gtk_container_add (GTK_CONTAINER (wavframe1), wavalign1);
|
||||
|
||||
GtkWidget *wavframe2;
|
||||
wavframe2 = gtk_frame_new ("Decoder");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (wavframe2), 10);
|
||||
GtkWidget *wavtable1;
|
||||
wavtable1 = gtk_table_new (4,3,FALSE);
|
||||
GtkWidget *wavalign2;
|
||||
wavalign2 = gtk_alignment_new (0.5,0.5,1.0,1.0);
|
||||
gtk_alignment_set_padding (GTK_ALIGNMENT (wavalign2), 5,5,12,5);
|
||||
gtk_container_add (GTK_CONTAINER (wavalign2), wavtable1);
|
||||
gtk_container_add (GTK_CONTAINER (wavframe2), wavalign2);
|
||||
|
||||
GtkWidget *modecombo;
|
||||
modecombo = gtk_combo_box_new_text();
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Martin M1");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Martin M2");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Scottie S1");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Scottie S2");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Scottie DX");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Robot 72 Color");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Robot 36 Color");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Robot 24 Color");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Robot 24 B&W");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Robot 12 B&W");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Robot 8 B&W");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "PD90");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "PD50");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Wraase SC2-180");
|
||||
gtk_combo_box_append_text (GTK_COMBO_BOX (modecombo), "Auto mode selection (VIS)");
|
||||
gtk_combo_box_set_active (GTK_COMBO_BOX (modecombo), 14);
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), modecombo, 0, 4, 0, 1);
|
||||
gtk_box_pack_start (GTK_BOX (wavvbox1), wavframe2, FALSE, TRUE, 0);
|
||||
|
||||
GtkWidget *adaptcheck;
|
||||
adaptcheck = gtk_check_button_new_with_label ("Noise adapt.");
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), adaptcheck, 0, 2, 1, 2);
|
||||
|
||||
GtkWidget *autosynccheck;
|
||||
autosynccheck = gtk_check_button_new_with_label ("Auto sync.");
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), autosynccheck, 2, 4, 1, 2);
|
||||
|
||||
label = gtk_label_new ("Shift Hz");
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), label, 0, 1, 2, 3);
|
||||
GtkObject *wavshiftadj;
|
||||
wavshiftadj = gtk_adjustment_new (0, -100, 100, 1, 2, 0);
|
||||
GtkWidget *wavshiftspin;
|
||||
wavshiftspin = gtk_spin_button_new (GTK_ADJUSTMENT (wavshiftadj), 1, 2);
|
||||
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (wavshiftspin), TRUE);
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), wavshiftspin, 1, 2, 2, 3);
|
||||
|
||||
label = gtk_label_new ("Fs");
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), label, 2, 3, 2, 3);
|
||||
GtkObject *wavadj1;
|
||||
wavadj1 = gtk_adjustment_new (44100, 42000, 46000, 1, 2, 0);
|
||||
GtkWidget *wavspin1;
|
||||
wavspin1 = gtk_spin_button_new (GTK_ADJUSTMENT (wavadj1), 1, 2);
|
||||
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (wavspin1), TRUE);
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), wavspin1, 3, 4, 2, 3);
|
||||
|
||||
label = gtk_label_new ("Phase");
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), label, 2, 3, 3, 4);
|
||||
GtkObject *wavadj2;
|
||||
wavadj2 = gtk_adjustment_new (0, 0, 5000, 1, 2, 0);
|
||||
GtkWidget *wavspin2;
|
||||
wavspin2 = gtk_spin_button_new (GTK_ADJUSTMENT (wavadj2), 1, 1);
|
||||
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (wavspin2), TRUE);
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), wavspin2, 3, 4, 3, 4);
|
||||
|
||||
GtkWidget *demodbutton;
|
||||
demodbutton = gtk_button_new_with_label ("Run");
|
||||
gtk_table_attach_defaults (GTK_TABLE (wavtable1), demodbutton, 0, 4, 4, 5);
|
||||
g_signal_connect (GTK_OBJECT (demodbutton), "clicked", GTK_SIGNAL_FUNC (wavdemod), NULL);
|
||||
|
||||
GtkWidget *wavframe4;
|
||||
wavframe4 = gtk_frame_new ("Log entry");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (wavframe4), 10);
|
||||
GtkWidget *wavtable2;
|
||||
wavtable2 = gtk_table_new (4, 5, FALSE);*/
|
||||
|
||||
|
||||
|
||||
/* Tabbed notebook */
|
||||
notebook = gtk_notebook_new ();
|
||||
gtk_notebook_set_tab_border (GTK_NOTEBOOK (notebook), 4);
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), camhbox1, gtk_label_new ("Rx") );
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), wavhbox1, gtk_label_new ("WAV") );
|
||||
|
||||
/* Statusbar */
|
||||
statusbar = gtk_statusbar_new ();
|
||||
|
|
4
sync.c
4
sync.c
|
@ -14,9 +14,7 @@
|
|||
*/
|
||||
double FindSync (unsigned int Length, int Mode, double Rate, int *Skip) {
|
||||
|
||||
int LineWidth = ModeSpec[Mode].LineLen / ModeSpec[Mode].SyncLen * 4;
|
||||
|
||||
printf("LineWidth %d\n",LineWidth);
|
||||
int LineWidth = ModeSpec[Mode].LineLen / ModeSpec[Mode].SyncLen * 4;
|
||||
|
||||
unsigned int i, s, TotPix;
|
||||
double NextImgSample;
|
||||
|
|
6
vis.c
6
vis.c
|
@ -34,6 +34,7 @@ int GetVIS () {
|
|||
pclose(PcmInStream);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
out = fftw_malloc(sizeof(double) * FFTLen);
|
||||
if (out == NULL) {
|
||||
perror("GetVIS: Unable to allocate memory for FFT");
|
||||
|
@ -51,6 +52,8 @@ int GetVIS () {
|
|||
short int MaxPcm = 0;
|
||||
char infostr[60] = {0}, visfail = FALSE;
|
||||
|
||||
for (i = 0; i < FFTLen; i++) in[i] = 0;
|
||||
|
||||
// Create Hann window
|
||||
double Hann[882] = {0};
|
||||
for (i = 0; i < 882; i++) Hann[i] = 0.5 * (1 - cos( (2 * M_PI * (double)i) / 881) );
|
||||
|
@ -80,9 +83,6 @@ int GetVIS () {
|
|||
// Apply Hann window
|
||||
for (i = 0; i < 882; i++) in[i] = PCM[i] * Hann[i];
|
||||
|
||||
// Zero padding, if necessary
|
||||
for (i = 882; i < FFTLen; i++) in[i] = 0;
|
||||
|
||||
// FFT of last 20 ms
|
||||
fftw_execute(VISPlan);
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue