}
}
-/*
-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;
-}
-*/
int last_dash;
int left_sample[RECEIVERS];
int right_sample[RECEIVERS];
- int mic_sample;
+ short mic_sample;
double left_sample_double[RECEIVERS];
double right_sample_double[RECEIVERS];
double mic_sample_double;
right_sample[r] += (int)((unsigned char)buffer[b++]) << 8;
right_sample[r] += (int)((unsigned char)buffer[b++]);
}
- mic_sample = (int)((signed char) buffer[b++]) << 8;
- mic_sample += (int)((unsigned char)buffer[b++]);
+ mic_sample = (short)((signed char) buffer[b++]) << 16;
+ mic_sample |= (short)((unsigned char)buffer[b++]);
+ mic_sample_double = (1.0 / 2147483648.0) * (double)(mic_sample<<16);
for(r=0;r<RECEIVERS;r++) {
left_sample_double[r]=(double)left_sample[r]/8388607.0; // 24 bit sample 2^23-1
right_sample_double[r]=(double)right_sample[r]/8388607.0; // 24 bit sample 2^23-1
}
- mic_sample_double = (1.0 / 2147483648.0) * (double)(mic_sample<<16);
// add to buffer
if(isTransmitting() && !local_microphone) {
}
#endif
} else {
- if(!isTransmitting()) {
+ //if(!isTransmitting()) {
micinputbuffer[samples*2]=0.0;
micinputbuffer[(samples*2)+1]=0.0;
iqinputbuffer[0][samples*2]=left_sample_double[0];
samples++;
if(samples==buffer_size) {
full_rx_buffer();
+ full_tx_buffer();
samples=0;
}
- }
+ //}
}
}
} else {
int error;
fexchange0(CHANNEL_RX0, iqinputbuffer[0], audiooutputbuffer, &error);
- fexchange0(CHANNEL_TX, micinputbuffer, iqoutputbuffer, &error);
+ //fexchange0(CHANNEL_TX, micinputbuffer, iqoutputbuffer, &error);
#ifdef PSK
if(mode!=modePSK) {
void old_protocol_process_local_mic(unsigned char *buffer,int le) {
int b;
- int micsample;
- double micsampledouble;
+ int mic_sample;
+ double mic_sample_double;
double gain=pow(10.0, mic_gain / 20.0);
if(isTransmitting()) {
int i,j,s;
for(i=0;i<720;i++) {
if(le) {
- micsample = (int)((unsigned char)buffer[b++] & 0xFF);
- micsample |= (int)((signed char) buffer[b++]) << 8;
+ mic_sample = (int)((unsigned char)buffer[b++] & 0xFF);
+ mic_sample |= (int)((signed char) buffer[b++]) << 8;
} else {
- micsample = (int)((signed char) buffer[b++]) << 8;
- micsample |= (int)((unsigned char)buffer[b++] & 0xFF);
+ mic_sample = (int)((signed char) buffer[b++]) << 8;
+ mic_sample |= (int)((unsigned char)buffer[b++] & 0xFF);
}
- micsampledouble=(1.0 / 2147483648.0) * (double)(micsample<<16);
+ mic_sample_double=(1.0 / 2147483648.0) * (double)(mic_sample<<16);
#ifdef FREEDV
if(mode==modeFREEDV && !tune) {
if(freedv_samples==0) { // 48K to 8K
- int modem_samples=mod_sample_freedv(micsample*gain);
+ int modem_samples=mod_sample_freedv(mic_sample*gain);
if(modem_samples!=0) {
for(s=0;s<modem_samples;s++) {
for(j=0;j<freedv_divisor;j++) { // 8K to 48K
- micsample=mod_out[s];
- micsampledouble = (1.0 / 2147483648.0) * (double)(micsample<<16);
- micinputbuffer[samples*2]=micsampledouble;
- micinputbuffer[(samples*2)+1]=micsampledouble;
+ mic_sample=mod_out[s];
+ mic_sample_double = (1.0 / 2147483648.0) * (double)(mic_sample<<16);
+ 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;
samples++;
micinputbuffer[samples*2]=0.0;
micinputbuffer[(samples*2)+1]=0.0;
} else {
- micinputbuffer[samples*2]=micsampledouble*gain;
- micinputbuffer[(samples*2)+1]=micsampledouble*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;
} else {
SetTXAPostGenToneFreq(CHANNEL_TX,(double)cw_keyer_sidetone_frequency);
}
- SetTXAPostGenToneMag(CHANNEL_TX,0.3);
+ SetTXAPostGenToneMag(CHANNEL_TX,0.99999);
SetTXAPostGenRun(CHANNEL_TX,1);
SetChannelState(CHANNEL_TX,1,0);
} else {
void calcDriveLevel() {
drive_level=calcLevel(drive);
+ if(mox && protocol==NEW_PROTOCOL) {
+ schedule_high_priority(6);
+ }
}
void setDrive(double value) {
drive=value;
calcDriveLevel();
- if(protocol==NEW_PROTOCOL) {
- schedule_high_priority(6);
- }
}
double getTuneDrive() {
void calcTuneDriveLevel() {
tune_drive_level=calcLevel(tune_drive);
+ if(tune && protocol==NEW_PROTOCOL) {
+ schedule_high_priority(7);
+ }
}
void setTuneDrive(double value) {
tune_drive=value;
-
calcTuneDriveLevel();
- if(protocol==NEW_PROTOCOL) {
- schedule_high_priority(7);
- }
}
void set_attenuation(int value) {