Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (revision 15872) +++ apps/lang/english.lang (working copy) @@ -11450,6 +11450,23 @@ multivolume: "Not present" + + id: LANG_FM_SIGNAL_STRENGTH + desc: Signal strength of a received FM station + user: + + *: none + radio: "Field strength" + + + *: none + radio: "Field strength" + + + *: none + radio: "Field strength" + + id: LANG_TALK_BATTERY_LEVEL desc: Setting for spontaneous battery level announcement Index: apps/lang/polski.lang =================================================================== --- apps/lang/polski.lang (revision 15872) +++ apps/lang/polski.lang (working copy) @@ -11052,3 +11052,20 @@ *: "Europa Środkowa" + + id: LANG_FM_SIGNAL_STRENGTH + desc: Signal strength of a received FM station + user: + + *: none + radio: "Poziom sygnału" + + + *: none + radio: "Poziom sygnału" + + + *: none + radio: "Poziom sygnału" + + Index: apps/recorder/radio.c =================================================================== --- apps/recorder/radio.c (revision 15872) +++ apps/recorder/radio.c (working copy) @@ -457,6 +457,10 @@ gui_buttonbar_init(&buttonbar); gui_buttonbar_set_display(&buttonbar, &(screens[SCREEN_MAIN]) ); #endif +#ifdef HAVE_RADIO_FIELD_METER + int field_strength=0; + int field_strength_last=0; +#endif /* change status to "in screen" */ in_screen = true; @@ -872,6 +876,13 @@ update_screen = true; last_stereo = stereo; } + + field_strength = tuner_get(RADIO_FIELD_STRENGTH); + if(field_strength != field_strength_last) + { + update_screen = true; + field_strength_last = field_strength; + } } } @@ -910,6 +921,11 @@ str(LANG_RADIO_SCAN_MODE)); FOR_NB_SCREENS(i) screens[i].puts_scroll(0, top_of_screen + 3, buf); +#ifdef HAVE_RADIO_FIELD_METER + snprintf(buf, 128, "%s: %d dBuV", str(LANG_FM_SIGNAL_STRENGTH),field_strength); + FOR_NB_SCREENS(i) + screens[i].puts_scroll(0, top_of_screen + 4, buf); +#endif #if CONFIG_CODEC != SWCODEC if(audio_status() == AUDIO_STATUS_RECORD) Index: firmware/drivers/tuner/lv24020lp.c =================================================================== --- firmware/drivers/tuner/lv24020lp.c (revision 15872) +++ firmware/drivers/tuner/lv24020lp.c (working copy) @@ -922,6 +922,10 @@ tuner_power(false); break; } + + case RADIO_FIELD_STRENGTH: + val = 75 - 10*(RSS_FS(lv24020lp_read(RADIO_STAT))); + break; default: val = lv24020lp_debug_info(setting); Index: firmware/drivers/tuner/tea5767.c =================================================================== --- firmware/drivers/tuner/tea5767.c (revision 15872) +++ firmware/drivers/tuner/tea5767.c (working copy) @@ -123,6 +123,10 @@ case RADIO_STEREO: val = read_bytes[2] >> 7; break; + + case RADIO_FIELD_STRENGTH: + val = 9 + 3*(read_bytes[3] >> 4); + break; } return val; Index: firmware/export/lv24020lp.h =================================================================== --- firmware/export/lv24020lp.h (revision 15872) +++ firmware/export/lv24020lp.h (working copy) @@ -23,6 +23,7 @@ /* Define additional tuner messages here */ #define HAVE_RADIO_REGION +#define HAVE_RADIO_FIELD_METER #define LV24020LP_CTRL_STAT (RADIO_GET_CHIP_FIRST+0) #define LV24020LP_REG_STAT (RADIO_GET_CHIP_FIRST+1) Index: firmware/export/tea5767.h =================================================================== --- firmware/export/tea5767.h (revision 15872) +++ firmware/export/tea5767.h (working copy) @@ -23,6 +23,7 @@ #define HAVE_RADIO_REGION #define HAVE_RADIO_MUTE_TIMEOUT +#define HAVE_RADIO_FIELD_METER struct tea5767_region_data { Index: firmware/export/tuner.h =================================================================== --- firmware/export/tuner.h (revision 15872) +++ firmware/export/tuner.h (working copy) @@ -42,7 +42,7 @@ RADIO_PRESENT = 0, RADIO_TUNED, RADIO_STEREO, - + RADIO_FIELD_STRENGTH, /* Put new general-purpose readback values above this line */ __RADIO_GET_STANDARD_LAST };