diff --git a/sa_core.c b/sa_core.c index da15e76..ca10a88 100644 --- a/sa_core.c +++ b/sa_core.c @@ -1185,7 +1185,7 @@ float low_out_offset(void) if (config.low_level_offset == 100) return 0; else - return config.low_level_offset; + return - config.low_level_offset; } else return config.low_level_output_offset; } @@ -1197,7 +1197,7 @@ float high_out_offset(void) if (config.high_level_offset == 100) return 0; else - return config.high_level_offset; + return - config.high_level_offset; } else return config.high_level_output_offset; } @@ -1246,6 +1246,12 @@ void correct_high_output_level(void) void set_level(float v) // Set the output level in dB in high/low output { +#if 1 + if (v < level_min()) + v = level_min(); + if (v > level_max()) + v = level_max(); +#else if (setting.mode == M_GENHIGH) { v -= config.high_level_output_offset; if (v < SL_GENHIGH_LEVEL_MIN) @@ -1253,16 +1259,6 @@ void set_level(float v) // Set the output level in dB in high/low output if (v > SL_GENHIGH_LEVEL_MAX) v = SL_GENHIGH_LEVEL_MAX; v += config.high_level_output_offset; -#if 0 - unsigned int d = MIN_DRIVE; - v = v - config.high_level_output_offset; - while (drive_dBm[d] < v && d < MAX_DRIVE) // Find level equal or above requested level - d++; -// if (d == 8 && v < -12) // Round towards closest level -// d = 7; - v = drive_dBm[d] + config.high_level_output_offset; - set_lo_drive(d); -#endif } else { // This MUST be low output level v -= LOW_OUT_OFFSET; if (v < SL_GENLOW_LEVEL_MIN) @@ -1277,6 +1273,7 @@ void set_level(float v) // Set the output level in dB in high/low output v += LOW_OUT_OFFSET; // set_attenuation(setting.level - LOW_OUT_OFFSET); } +#endif setting.level = v; if (setting.mode == M_GENHIGH) correct_high_output_level(); dirty = true;