Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (revision 26579) +++ apps/lang/english.lang (working copy) @@ -12540,3 +12540,20 @@ *: "Force" + + id: LANG_FM_SIGNAL_STRENGTH + desc: Signal strength of a received FM station + user: core + + *: none + radio: "Field strength" + + + *: none + radio: "Field strength" + + + *: none + radio: "Field strength" + + Index: firmware/export/tuner.h =================================================================== --- firmware/export/tuner.h (revision 26579) +++ firmware/export/tuner.h (working copy) @@ -46,6 +46,7 @@ RADIO_STEREO, /* RADIO_EVENT is an event that requests a screen update */ RADIO_EVENT, + RADIO_FIELD_STRENGTH, /* Put new general-purpose readback values above this line */ __RADIO_GET_STANDARD_LAST Index: firmware/export/lv24020lp.h =================================================================== --- firmware/export/lv24020lp.h (revision 26579) +++ firmware/export/lv24020lp.h (working copy) @@ -25,6 +25,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 26579) +++ firmware/export/tea5767.h (working copy) @@ -25,6 +25,7 @@ #define HAVE_RADIO_REGION #define HAVE_RADIO_MUTE_TIMEOUT +#define HAVE_RADIO_FIELD_METER struct tea5767_region_data { Index: firmware/export/si4700.h =================================================================== --- firmware/export/si4700.h (revision 26579) +++ firmware/export/si4700.h (working copy) @@ -26,6 +26,7 @@ #define _SI4700_H_ #define HAVE_RADIO_REGION +#define HAVE_RADIO_FIELD_METER struct si4700_region_data { Index: firmware/drivers/tuner/tea5767.c =================================================================== --- firmware/drivers/tuner/tea5767.c (revision 26579) +++ firmware/drivers/tuner/tea5767.c (working copy) @@ -130,6 +130,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/drivers/tuner/lv24020lp.c =================================================================== --- firmware/drivers/tuner/lv24020lp.c (revision 26579) +++ firmware/drivers/tuner/lv24020lp.c (working copy) @@ -933,6 +933,8 @@ int lv24020lp_get(int setting) { int val = -1; + const unsigned char fst[7] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f}; + unsigned char fst_ndx, fs; mutex_lock(&tuner_mtx); @@ -960,6 +962,14 @@ tuner_power(false); break; } + + case RADIO_FIELD_STRENGTH: + fs = RSS_FS(lv24020lp_read(RADIO_STAT)); + for(fst_ndx=0; fst_ndx<7; fst_ndx++) + if(fs == fst[fst_ndx]) + break; + val = 75 - 10*fst_ndx; + break; default: val = lv24020lp_debug_info(setting); Index: firmware/drivers/tuner/si4700.c =================================================================== --- firmware/drivers/tuner/si4700.c (revision 26579) +++ firmware/drivers/tuner/si4700.c (working copy) @@ -463,6 +463,10 @@ case RADIO_STEREO: val = si4700_st(); break; + + case RADIO_FIELD_STRENGTH: + val = si4700_read_reg(STATUSRSSI) & 0xFF; + break; } return val;