snd_strerror (rc));
running=FALSE;
} else {
- fprintf(stderr,"mic_read_thread: read %d",rc);
+ fprintf(stderr,"mic_read_thread: read %d\n",rc);
}
}
} else {
}
}
+/*
+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;
+}
+*/
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
#include <stdio.h>
#include <string.h>
+#include "audio.h"
#include "new_menu.h"
#include "exit_menu.h"
#include "general_menu.h"
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)
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);
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<MIC_SAMPLES;i++) {
+ micsample = (int)((signed char) buffer[b++]) << 8;
+ micsample |= (int)((unsigned char)buffer[b++] & 0xFF);
+ micsampledouble = (1.0 / 2147483648.0) * (double)(micsample<<16);
#ifdef FREEDV
if(mode==modeFREEDV && isTransmitting()) {
- micsample = (int)((signed char) buffer[b++]) << 8;
- micsample |= (int)((unsigned char)buffer[b++] & 0xFF);
if(freedv_samples==0) { // 48K to 8K
int sample=(int)((double)micsample*pow(10.0, mic_gain / 20.0));
int modem_samples=mod_sample_freedv(sample);
for(s=0;s<modem_samples;s++) {
for(j=0;j<freedv_resample;j++) { // 8K to 48K
micsample=mod_out[s];
- micsampledouble=(double)micsample/32767.0; // 16 bit sample 2^16-1
+ micsampledouble = (1.0 / 2147483648.0) * (double)(micsample<<16);
micinputbuffer[micsamples*2]=micsampledouble;
micinputbuffer[(micsamples*2)+1]=micsampledouble;
micsamples++;
}
} else {
#endif
- //micsampledouble = (double)micsample/32767.0; // 16 bit sample
- micsampledouble = (1.0 / 2147483648.0) * (double)(buffer[b++] << 24 | buffer[b++] << 16);
if(mode==modeCWL || mode==modeCWU || tune || !isTransmitting()) {
micinputbuffer[micsamples*2]=0.0;
micinputbuffer[(micsamples*2)+1]=0.0;
micinputbuffer[samples*2]=0.0;
micinputbuffer[(samples*2)+1]=0.0;
} else {
- micinputbuffer[samples*2]=mic_sample_double*gain;
- micinputbuffer[(samples*2)+1]=mic_sample_double*gain;
+ micinputbuffer[samples*2]=mic_sample_double;
+ micinputbuffer[(samples*2)+1]=mic_sample_double;
}
iqinputbuffer[0][samples*2]=0.0;
iqinputbuffer[0][(samples*2)+1]=0.0;
void old_protocol_process_local_mic(unsigned char *buffer,int le) {
int b;
- int leftmicsample;
- int rightmicsample;
- double leftmicsampledouble;
- double rightmicsampledouble;
+ int micsample;
+ double micsampledouble;
+ double gain=pow(10.0, mic_gain / 20.0);
if(isTransmitting()) {
b=0;
int i,j,s;
for(i=0;i<720;i++) {
if(le) {
- leftmicsample = (int)((unsigned char)buffer[b++] & 0xFF);
- leftmicsample |= (int)((signed char) buffer[b++]) << 8;
- rightmicsample=leftmicsample;
+ micsample = (int)((unsigned char)buffer[b++] & 0xFF);
+ micsample |= (int)((signed char) buffer[b++]) << 8;
} else {
- leftmicsample = (int)((signed char) buffer[b++]) << 8;
- leftmicsample |= (int)((unsigned char)buffer[b++] & 0xFF);
- rightmicsample=leftmicsample;
+ micsample = (int)((signed char) buffer[b++]) << 8;
+ micsample |= (int)((unsigned char)buffer[b++] & 0xFF);
}
+ micsampledouble=(1.0 / 2147483648.0) * (double)(micsample<<16);
#ifdef FREEDV
if(mode==modeFREEDV && !tune) {
if(freedv_samples==0) { // 48K to 8K
- int modem_samples=mod_sample_freedv(leftmicsample);
+ int modem_samples=mod_sample_freedv(micsample*gain);
if(modem_samples!=0) {
for(s=0;s<modem_samples;s++) {
for(j=0;j<freedv_divisor;j++) { // 8K to 48K
- leftmicsample=mod_out[s];
- leftmicsampledouble=(double)leftmicsample/32767.0; // 16 bit sample 2^16-1
- micinputbuffer[samples*2]=leftmicsampledouble;
- micinputbuffer[(samples*2)+1]=leftmicsampledouble;
+ micsample=mod_out[s];
+ micsampledouble = (1.0 / 2147483648.0) * (double)(micsample<<16);
+ micinputbuffer[samples*2]=micsampledouble;
+ micinputbuffer[(samples*2)+1]=micsampledouble;
iqinputbuffer[0][samples*2]=0.0;
iqinputbuffer[0][(samples*2)+1]=0.0;
samples++;
}
} else {
#endif
- leftmicsampledouble=(double)leftmicsample/32767.0; // 16 bit sample 2^16-1
if(mode==modeCWL || mode==modeCWU || tune) {
micinputbuffer[samples*2]=0.0;
micinputbuffer[(samples*2)+1]=0.0;
} else {
- micinputbuffer[samples*2]=leftmicsampledouble;
- micinputbuffer[(samples*2)+1]=leftmicsampledouble;
+ micinputbuffer[samples*2]=micsampledouble*gain;
+ micinputbuffer[(samples*2)+1]=micsampledouble*gain;
}
iqinputbuffer[0][samples*2]=0.0;
iqinputbuffer[0][(samples*2)+1]=0.0;
socket_desc = socket(AF_INET , SOCK_STREAM , 0);
if (socket_desc == -1)
{
- fprintf(stderr,"RIGCTL: Could not create socket");
+ fprintf(stderr,"RIGCTL: Could not create socket\n");
}
- fprintf(stderr, "RIGCTL: Socket created");
+ fprintf(stderr, "RIGCTL: Socket created\n");
//Prepare the sockaddr_in structure
server.sin_family = AF_INET;
if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
{
//print the error message
- fprintf(stderr,"RIGCLT: bind failed. Error");
+ fprintf(stderr,"RIGCLT: bind failed. Error\n");
return 1;
}
- fprintf(stderr,"RIGCTL: bind done");
+ fprintf(stderr,"RIGCTL: bind done\n");
//Listen
listen(socket_desc , 3);
//Accept and incoming connection
- fprintf(stderr,"RIGCTL: Waiting for incoming connections...");
+ fprintf(stderr,"RIGCTL: Waiting for incoming connections...\n");
c = sizeof(struct sockaddr_in);
//accept connection from an incoming client
client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c);
if (client_sock < 0)
{
- fprintf(stderr,"RIGCTL: Accept failed");
+ fprintf(stderr,"RIGCTL: Accept failed\n");
return 1;
}
fprintf(stderr,"RIGCTL: Connection accepted\n");