if(active_receiver->random) {
output_buffer[C3]|=LT2208_RANDOM_ON;
}
- if(active_receiver->dither) {
- output_buffer[C3]|=LT2208_DITHER_ON;
- }
+#ifdef RADIOBERRY
+ if (rx_gain_slider[active_receiver->adc] > 31)
+ {
+ output_buffer[C3]|=LT2208_DITHER_OFF;}
+ else {
+ output_buffer[C3]|=LT2208_DITHER_ON;
+ }
+#else
+ if(active_receiver->dither) {
+ output_buffer[C3]|=LT2208_DITHER_ON;
+ }
+#endif
if(active_receiver->preamp) {
output_buffer[C3]|=LT2208_GAIN_ON;
}
if(radio->device==DEVICE_HERMES || radio->device==DEVICE_ANGELIA || radio->device==DEVICE_ORION || radio->device==DEVICE_ORION2) {
output_buffer[C4]=0x20|adc_attenuation[receiver[0]->adc];
} else {
- output_buffer[C4]=0x00;
+#ifdef RADIOBERRY
+ int att = 63 - rx_gain_slider[active_receiver->adc];
+ output_buffer[C4]=0x20|att;
+#else
+ output_buffer[C4]=0x00;
+#endif
}
break;
case 5:
adc_attenuation[0]=0;
adc_attenuation[1]=0;
+ rx_gain_slider[0] = 0;
+ rx_gain_slider[1] = 0;
//fprintf(stderr,"meter_calibration=%f display_calibration=%f\n", meter_calibration, display_calibration);
radioRestoreState();
//from -12 to 0; the rx-gain slider functions as an att slider
//from 0 - 48 db; the rx-gain slider functions as a gain slider with att = 0;
//att set to 20 for good power measurement.
- int rx_gain = (int)gtk_range_get_value(GTK_RANGE(attenuation_scale));
- if (rx_gain > 12) {
- adc_attenuation[active_receiver->adc]= 20;
- } else {
- adc_attenuation[active_receiver->adc]= 20 + (12- rx_gain);
- }
- set_attenuation(rx_gain);
+ int rx_gain_slider_value = (int)gtk_range_get_value(GTK_RANGE(attenuation_scale));
+ rx_gain_slider[active_receiver->adc]=rx_gain_slider_value;
+ adc_attenuation[active_receiver->adc]= MAX((12 - rx_gain_slider_value), 0);
+ set_attenuation(adc_attenuation[active_receiver->adc]);
#else
adc_attenuation[active_receiver->adc]=(int)gtk_range_get_value(GTK_RANGE(attenuation_scale));
set_attenuation(adc_attenuation[active_receiver->adc]);