forked from len0rd/rockbox
Resistor calculator: Support Gigaohms in resistor to colour conversion, and guard against values that can not be represented
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28275 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
ed869242e4
commit
7d6c73a1c1
1 changed files with 20 additions and 6 deletions
|
@ -167,7 +167,7 @@ static int powi(int num, int exp)
|
||||||
|
|
||||||
static enum color get_band_rtoc(int in_val)
|
static enum color get_band_rtoc(int in_val)
|
||||||
{
|
{
|
||||||
int return_color = 0;
|
int return_color = RES_INVALID;
|
||||||
switch(in_val) {
|
switch(in_val) {
|
||||||
case 0:
|
case 0:
|
||||||
return_color = RES_BLACK;
|
return_color = RES_BLACK;
|
||||||
|
@ -808,7 +808,8 @@ static void resistance_to_color(void)
|
||||||
rb->lcd_clear_display();
|
rb->lcd_clear_display();
|
||||||
rb->splash(HZ/2, "Resistance to Colour");
|
rb->splash(HZ/2, "Resistance to Colour");
|
||||||
MENUITEM_STRINGLIST(r_to_c_menu, "Select unit to use:", NULL,
|
MENUITEM_STRINGLIST(r_to_c_menu, "Select unit to use:", NULL,
|
||||||
"Ohms", "Kiloohms (KOhms)", "Megaohms (MOhms)");
|
"Ohms", "Kiloohms (KOhms)", "Megaohms (MOhms)",
|
||||||
|
"Gigaohms (GOhms)");
|
||||||
MENUITEM_STRINGLIST(r_to_c_menu_tol, "Tolerance to display:", NULL,
|
MENUITEM_STRINGLIST(r_to_c_menu_tol, "Tolerance to display:", NULL,
|
||||||
"5%", "10%", "1%", "2%", "20%");
|
"5%", "10%", "1%", "2%", "20%");
|
||||||
|
|
||||||
|
@ -848,19 +849,23 @@ static void resistance_to_color(void)
|
||||||
|
|
||||||
switch(menu_selection) {
|
switch(menu_selection) {
|
||||||
case 0:
|
case 0:
|
||||||
|
power_ten=0;
|
||||||
units_used = RES_BLACK;
|
units_used = RES_BLACK;
|
||||||
break;
|
break;
|
||||||
case 1: /* KOhms */
|
case 1: /* KOhms */
|
||||||
|
power_ten=3;
|
||||||
units_used = RES_ORANGE;
|
units_used = RES_ORANGE;
|
||||||
kbd_input_int *= 1000;
|
|
||||||
break;
|
break;
|
||||||
case 2: /* MOhms */
|
case 2: /* MOhms */
|
||||||
|
power_ten=6;
|
||||||
units_used = RES_BLUE;
|
units_used = RES_BLUE;
|
||||||
kbd_input_int *= 1000000;
|
break;
|
||||||
|
case 3: /* GOhms */
|
||||||
|
power_ten=9;
|
||||||
|
units_used = RES_WHITE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
power_ten=0;
|
|
||||||
temp=kbd_input_int;
|
temp=kbd_input_int;
|
||||||
while(temp>=100)
|
while(temp>=100)
|
||||||
{
|
{
|
||||||
|
@ -874,6 +879,15 @@ static void resistance_to_color(void)
|
||||||
second_band = get_band_rtoc(second_band_int);
|
second_band = get_band_rtoc(second_band_int);
|
||||||
multiplier = get_band_rtoc(power_ten);
|
multiplier = get_band_rtoc(power_ten);
|
||||||
|
|
||||||
|
if( first_band == RES_INVALID
|
||||||
|
|| second_band == RES_INVALID
|
||||||
|
|| multiplier == RES_INVALID)
|
||||||
|
{
|
||||||
|
rb->splashf(HZ, "%d %s can not be represented",
|
||||||
|
in_resistance_int,band_data[units_used].unit);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
rb->lcd_clear_display();
|
rb->lcd_clear_display();
|
||||||
lineno = INITIAL_TEXT_Y;
|
lineno = INITIAL_TEXT_Y;
|
||||||
#ifndef USE_TEXT_ONLY
|
#ifndef USE_TEXT_ONLY
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue