From: John Melton - G0ORX/N6LYT Date: Tue, 29 Nov 2016 14:20:37 +0000 (+0000) Subject: updated microphone gain settings. X-Git-Url: https://git.rkrishnan.org/uri/%3C?a=commitdiff_plain;h=c53e6de750baa9b0bcd63e4a7ecb1a9c5c2064db;p=pihpsdr.git updated microphone gain settings. --- diff --git a/audio.c b/audio.c index 443ad10..86df47a 100644 --- a/audio.c +++ b/audio.c @@ -327,7 +327,7 @@ fprintf(stderr,"mic_read_thread: mic_buffer_size=%d\n",mic_buffer_size); snd_strerror (rc)); running=FALSE; } else { - fprintf(stderr,"mic_read_thread: read %d",rc); + fprintf(stderr,"mic_read_thread: read %d\n",rc); } } } else { @@ -408,3 +408,54 @@ fprintf(stderr,"output_device: %s\n",device_id); } } +/* +int audio_get_mic_level() { + fprintf(stderr,"audio_get_mic_level\n"); + if(local_microphone==0) { + fprintf(stderr,"local microphone not enabled\n"); + return -1; + } + if(n_selected_input_device<0 || n_selected_input_device>=n_input_devices) { + fprintf(stderr,"no imput device selected\n"); + return -1; + } + + long db; + + int i; + char hw[16]; + char *selected=input_devices[n_selected_input_device]; + fprintf(stderr,"audio_get_mic_level: selected=%d:%s\n",n_selected_input_device,selected); + + i=0; + while(selected[i]!=' ') { + hw[i]=selected[i]; + i++; + } + hw[i]='\0'; + fprintf(stderr,"audio_get_mic_level: hw=%s\n",hw); + + snd_mixer_t* handle; + snd_mixer_selem_id_t* sid; + const char *selem_name="Mic"; + + snd_mixer_open(&handle, 0); + snd_mixer_attach(handle, hw); + snd_mixer_selem_register(handle, NULL, NULL); + snd_mixer_load(handle); + + snd_mixer_selem_id_alloca(&sid); + snd_mixer_selem_id_set_index(sid, 0); + snd_mixer_selem_id_set_name(sid, selem_name); + snd_mixer_elem_t* elem = snd_mixer_find_selem(handle, sid); + + //snd_mixer_selem_get_capture_volume_range(elem, &min, &max); + snd_mixer_selem_get_capture_dB(elem,0,&db); + + fprintf(stderr,"audio_get_mic_level: %ld dB\n",db); + snd_mixer_close(handle); + + + return 0; +} +*/ diff --git a/audio.h b/audio.h index ceec2a0..8ff8fe6 100644 --- a/audio.h +++ b/audio.h @@ -34,5 +34,7 @@ extern void audio_close_output(); extern void audio_close_input(); extern int audio_write(short left_sample,short right_sample); extern void audio_get_cards(); - +/* +extern int audio_get_mic_level(); +*/ #endif diff --git a/new_menu.c b/new_menu.c index 98408ac..defa9c4 100644 --- a/new_menu.c +++ b/new_menu.c @@ -22,6 +22,7 @@ #include #include +#include "audio.h" #include "new_menu.h" #include "exit_menu.h" #include "general_menu.h" @@ -140,6 +141,12 @@ static gboolean equalizer_cb (GtkWidget *widget, GdkEventButton *event, gpointer return TRUE; } +static gboolean test_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) { +fprintf(stderr,"test_cb\n"); + audio_get_mic_level(); + return TRUE; +} + static gboolean new_menu_pressed_event_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) @@ -227,6 +234,12 @@ static gboolean new_menu_pressed_event_cb (GtkWidget *widget, g_signal_connect (equalizer_b, "button-press-event", G_CALLBACK(equalizer_cb), NULL); gtk_grid_attach(GTK_GRID(grid),equalizer_b,0,3,1,1); +/* + GtkWidget *test_b=gtk_button_new_with_label("Test"); + g_signal_connect (test_b, "button-press-event", G_CALLBACK(test_cb), NULL); + gtk_grid_attach(GTK_GRID(grid),test_b,1,3,1,1); +*/ + gtk_container_add(GTK_CONTAINER(content),grid); gtk_widget_show_all(dialog); diff --git a/new_protocol.c b/new_protocol.c index 13a6bf7..9479745 100644 --- a/new_protocol.c +++ b/new_protocol.c @@ -888,16 +888,18 @@ static void process_mic_data(unsigned char *buffer) { int b; int micsample; double micsampledouble; + double gain=pow(10, mic_gain/20.0); sequence=((buffer[0]&0xFF)<<24)+((buffer[1]&0xFF)<<16)+((buffer[2]&0xFF)<<8)+(buffer[3]&0xFF); // if(isTransmitting()) { b=4; int i,j,s; for(i=0;i