diff options
-rw-r--r-- | apps/gui/skin_engine/skin_display.c | 19 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 5 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_render.c | 1 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 14 | ||||
-rw-r--r-- | firmware/export/tuner.h | 17 | ||||
-rw-r--r-- | lib/skin_parser/tag_table.c | 2 | ||||
-rw-r--r-- | lib/skin_parser/tag_table.h | 1 | ||||
-rw-r--r-- | uisimulator/common/fmradio.c | 26 |
8 files changed, 72 insertions, 13 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index 78db4eb371..47de4638d8 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c | |||
@@ -162,9 +162,22 @@ void draw_progressbar(struct gui_wps *gwps, int line, struct progressbar *pb) | |||
162 | #if CONFIG_TUNER | 162 | #if CONFIG_TUNER |
163 | else if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF)) | 163 | else if (in_radio_screen() || (get_radio_status() != FMRADIO_OFF)) |
164 | { | 164 | { |
165 | int min = fm_region_data[global_settings.fm_region].freq_min; | 165 | #ifdef HAVE_RADIO_RSSI |
166 | end = radio_current_frequency() - min; | 166 | if (pb->type == SKIN_TOKEN_TUNER_RSSI_BAR) |
167 | length = fm_region_data[global_settings.fm_region].freq_max - min; | 167 | { |
168 | int val = tuner_get(RADIO_RSSI); | ||
169 | int min = tuner_get(RADIO_RSSI_MIN); | ||
170 | int max = tuner_get(RADIO_RSSI_MAX); | ||
171 | end = val - min; | ||
172 | length = max - min; | ||
173 | } | ||
174 | else | ||
175 | #endif | ||
176 | { | ||
177 | int min = fm_region_data[global_settings.fm_region].freq_min; | ||
178 | end = radio_current_frequency() - min; | ||
179 | length = fm_region_data[global_settings.fm_region].freq_max - min; | ||
180 | } | ||
168 | } | 181 | } |
169 | #endif | 182 | #endif |
170 | else if (id3 && id3->length) | 183 | else if (id3 && id3->length) |
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index c94ef4e5b5..818edfbd07 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c | |||
@@ -742,6 +742,8 @@ static int parse_progressbar_tag(struct skin_element* element, | |||
742 | token->type = SKIN_TOKEN_VOLUMEBAR; | 742 | token->type = SKIN_TOKEN_VOLUMEBAR; |
743 | else if (token->type == SKIN_TOKEN_BATTERY_PERCENT) | 743 | else if (token->type == SKIN_TOKEN_BATTERY_PERCENT) |
744 | token->type = SKIN_TOKEN_BATTERY_PERCENTBAR; | 744 | token->type = SKIN_TOKEN_BATTERY_PERCENTBAR; |
745 | else if (token->type == SKIN_TOKEN_TUNER_RSSI) | ||
746 | token->type = SKIN_TOKEN_TUNER_RSSI_BAR; | ||
745 | pb->type = token->type; | 747 | pb->type = token->type; |
746 | 748 | ||
747 | return 0; | 749 | return 0; |
@@ -1408,6 +1410,9 @@ static int skin_element_callback(struct skin_element* element, void* data) | |||
1408 | case SKIN_TOKEN_VOLUME: | 1410 | case SKIN_TOKEN_VOLUME: |
1409 | case SKIN_TOKEN_BATTERY_PERCENT: | 1411 | case SKIN_TOKEN_BATTERY_PERCENT: |
1410 | case SKIN_TOKEN_PLAYER_PROGRESSBAR: | 1412 | case SKIN_TOKEN_PLAYER_PROGRESSBAR: |
1413 | #ifdef HAVE_RADIO_RSSI | ||
1414 | case SKIN_TOKEN_TUNER_RSSI: | ||
1415 | #endif | ||
1411 | function = parse_progressbar_tag; | 1416 | function = parse_progressbar_tag; |
1412 | break; | 1417 | break; |
1413 | case SKIN_TOKEN_SUBLINE_TIMEOUT: | 1418 | case SKIN_TOKEN_SUBLINE_TIMEOUT: |
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index a9e6319317..68a5433eb1 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c | |||
@@ -143,6 +143,7 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
143 | case SKIN_TOKEN_BATTERY_PERCENTBAR: | 143 | case SKIN_TOKEN_BATTERY_PERCENTBAR: |
144 | #ifdef HAVE_LCD_BITMAP | 144 | #ifdef HAVE_LCD_BITMAP |
145 | case SKIN_TOKEN_PROGRESSBAR: | 145 | case SKIN_TOKEN_PROGRESSBAR: |
146 | case SKIN_TOKEN_TUNER_RSSI_BAR: | ||
146 | { | 147 | { |
147 | struct progressbar *bar = (struct progressbar*)token->value.data; | 148 | struct progressbar *bar = (struct progressbar*)token->value.data; |
148 | if (do_refresh) | 149 | if (do_refresh) |
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index efe67a186e..c2ee7bf426 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c | |||
@@ -478,6 +478,20 @@ const char *get_radio_token(struct wps_token *token, int preset_offset, | |||
478 | #ifdef HAVE_RADIO_RSSI | 478 | #ifdef HAVE_RADIO_RSSI |
479 | case SKIN_TOKEN_TUNER_RSSI: | 479 | case SKIN_TOKEN_TUNER_RSSI: |
480 | snprintf(buf, buf_size, "%d",tuner_get(RADIO_RSSI)); | 480 | snprintf(buf, buf_size, "%d",tuner_get(RADIO_RSSI)); |
481 | if (intval) | ||
482 | { | ||
483 | int val = tuner_get(RADIO_RSSI); | ||
484 | int min = tuner_get(RADIO_RSSI_MIN); | ||
485 | int max = tuner_get(RADIO_RSSI_MAX); | ||
486 | if (limit == TOKEN_VALUE_ONLY) | ||
487 | { | ||
488 | *intval = val; | ||
489 | } | ||
490 | else | ||
491 | { | ||
492 | *intval = 1+(limit-1)*(val-min)/(max-1-min); | ||
493 | } | ||
494 | } | ||
481 | return buf; | 495 | return buf; |
482 | case SKIN_TOKEN_TUNER_RSSI_MIN: | 496 | case SKIN_TOKEN_TUNER_RSSI_MIN: |
483 | snprintf(buf, buf_size, "%d",tuner_get(RADIO_RSSI_MIN)); | 497 | snprintf(buf, buf_size, "%d",tuner_get(RADIO_RSSI_MIN)); |
diff --git a/firmware/export/tuner.h b/firmware/export/tuner.h index c8bea86112..db6ee15844 100644 --- a/firmware/export/tuner.h +++ b/firmware/export/tuner.h | |||
@@ -94,14 +94,6 @@ extern const struct fm_region_data fm_region_data[TUNER_NUM_REGIONS]; | |||
94 | 94 | ||
95 | #if CONFIG_TUNER | 95 | #if CONFIG_TUNER |
96 | 96 | ||
97 | #if (CONFIG_PLATFORM & PLATFORM_HOSTED) | ||
98 | int tuner_set(int setting, int value); | ||
99 | int tuner_get(int setting); | ||
100 | #ifdef HAVE_RDS_CAP | ||
101 | char* tuner_get_rds_info(int setting); | ||
102 | #endif | ||
103 | #else | ||
104 | |||
105 | #ifdef CONFIG_TUNER_MULTI | 97 | #ifdef CONFIG_TUNER_MULTI |
106 | extern int tuner_detect_type(void); | 98 | extern int tuner_detect_type(void); |
107 | extern int (*tuner_set)(int setting, int value); | 99 | extern int (*tuner_set)(int setting, int value); |
@@ -146,7 +138,14 @@ extern int (*tuner_get)(int setting); | |||
146 | #include "ipod_remote_tuner.h" | 138 | #include "ipod_remote_tuner.h" |
147 | #endif | 139 | #endif |
148 | 140 | ||
149 | #endif /* PLATFORM_HOSTED */ | 141 | #ifdef SIMULATOR |
142 | #undef tuner_set | ||
143 | int tuner_set(int setting, int value); | ||
144 | #undef tuner_get | ||
145 | int tuner_get(int setting); | ||
146 | #endif | ||
147 | |||
148 | |||
150 | 149 | ||
151 | /* Additional messages that get enumerated after tuner driver headers */ | 150 | /* Additional messages that get enumerated after tuner driver headers */ |
152 | 151 | ||
diff --git a/lib/skin_parser/tag_table.c b/lib/skin_parser/tag_table.c index b579ee2aaa..197963f2ac 100644 --- a/lib/skin_parser/tag_table.c +++ b/lib/skin_parser/tag_table.c | |||
@@ -153,7 +153,7 @@ static const struct tag_info legal_tags[] = | |||
153 | { SKIN_TOKEN_TUNER_MINFREQ, "ta", "", SKIN_REFRESH_STATIC }, | 153 | { SKIN_TOKEN_TUNER_MINFREQ, "ta", "", SKIN_REFRESH_STATIC }, |
154 | { SKIN_TOKEN_TUNER_MAXFREQ, "tb", "", SKIN_REFRESH_STATIC }, | 154 | { SKIN_TOKEN_TUNER_MAXFREQ, "tb", "", SKIN_REFRESH_STATIC }, |
155 | { SKIN_TOKEN_TUNER_CURFREQ, "tf", "", SKIN_REFRESH_DYNAMIC }, | 155 | { SKIN_TOKEN_TUNER_CURFREQ, "tf", "", SKIN_REFRESH_DYNAMIC }, |
156 | { SKIN_TOKEN_TUNER_RSSI, "tr", "", SKIN_REFRESH_DYNAMIC }, | 156 | { SKIN_TOKEN_TUNER_RSSI, "tr", BAR_PARAMS, SKIN_REFRESH_DYNAMIC }, |
157 | { SKIN_TOKEN_TUNER_RSSI_MIN, "tl", "", SKIN_REFRESH_STATIC }, | 157 | { SKIN_TOKEN_TUNER_RSSI_MIN, "tl", "", SKIN_REFRESH_STATIC }, |
158 | { SKIN_TOKEN_TUNER_RSSI_MAX, "th", "", SKIN_REFRESH_STATIC }, | 158 | { SKIN_TOKEN_TUNER_RSSI_MAX, "th", "", SKIN_REFRESH_STATIC }, |
159 | { SKIN_TOKEN_PRESET_ID, "Ti", "", SKIN_REFRESH_STATIC }, | 159 | { SKIN_TOKEN_PRESET_ID, "Ti", "", SKIN_REFRESH_STATIC }, |
diff --git a/lib/skin_parser/tag_table.h b/lib/skin_parser/tag_table.h index ad72dab3d3..a39939d225 100644 --- a/lib/skin_parser/tag_table.h +++ b/lib/skin_parser/tag_table.h | |||
@@ -252,6 +252,7 @@ enum skin_token_type { | |||
252 | SKIN_TOKEN_TUNER_RSSI, | 252 | SKIN_TOKEN_TUNER_RSSI, |
253 | SKIN_TOKEN_TUNER_RSSI_MIN, | 253 | SKIN_TOKEN_TUNER_RSSI_MIN, |
254 | SKIN_TOKEN_TUNER_RSSI_MAX, | 254 | SKIN_TOKEN_TUNER_RSSI_MAX, |
255 | SKIN_TOKEN_TUNER_RSSI_BAR, | ||
255 | SKIN_TOKEN_PRESET_ID, /* "id" of this preset.. really the array element number */ | 256 | SKIN_TOKEN_PRESET_ID, /* "id" of this preset.. really the array element number */ |
256 | SKIN_TOKEN_PRESET_NAME, | 257 | SKIN_TOKEN_PRESET_NAME, |
257 | SKIN_TOKEN_PRESET_FREQ, | 258 | SKIN_TOKEN_PRESET_FREQ, |
diff --git a/uisimulator/common/fmradio.c b/uisimulator/common/fmradio.c index cef9abf94e..6f6b0f914f 100644 --- a/uisimulator/common/fmradio.c +++ b/uisimulator/common/fmradio.c | |||
@@ -67,6 +67,9 @@ int tuner_set(int setting, int value) | |||
67 | int tuner_get(int setting) | 67 | int tuner_get(int setting) |
68 | { | 68 | { |
69 | int val = 0; | 69 | int val = 0; |
70 | #ifdef HAVE_RADIO_RSSI | ||
71 | static int rssi = 0, rssidiff = 2; | ||
72 | #endif | ||
70 | 73 | ||
71 | switch(setting) | 74 | switch(setting) |
72 | { | 75 | { |
@@ -83,6 +86,29 @@ int tuner_get(int setting) | |||
83 | if(frequency == 99500000) | 86 | if(frequency == 99500000) |
84 | val = mono?0:1; | 87 | val = mono?0:1; |
85 | break; | 88 | break; |
89 | |||
90 | #ifdef HAVE_RADIO_RSSI | ||
91 | case RADIO_RSSI_MIN: | ||
92 | val = 5; | ||
93 | break; | ||
94 | case RADIO_RSSI_MAX: | ||
95 | val = 75; | ||
96 | break; | ||
97 | case RADIO_RSSI: | ||
98 | rssi += rssidiff; | ||
99 | if (rssi >= 75) | ||
100 | { | ||
101 | rssi = 75; | ||
102 | rssidiff = -2; | ||
103 | } | ||
104 | else if (rssi < 5) | ||
105 | { | ||
106 | rssi = 5; | ||
107 | rssidiff = 2; | ||
108 | } | ||
109 | val = rssi; | ||
110 | break; | ||
111 | #endif | ||
86 | 112 | ||
87 | case RADIO_ALL: /* debug query */ | 113 | case RADIO_ALL: /* debug query */ |
88 | break; | 114 | break; |