1
0
Fork 0
forked from len0rd/rockbox

Resistor calculator: simplify layout code, add scrolling, and handle error cases

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28203 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Frank Gevaerts 2010-10-03 13:57:18 +00:00
parent 3e9f797f6e
commit c80dd635ab

View file

@ -38,7 +38,6 @@ TODO:
#else /* Small screens */ #else /* Small screens */
#define RESISTOR_BMP_Y 0 #define RESISTOR_BMP_Y 0
/* And along with the tiny screen comes a whole bunch of exceptions */
#endif /* HAVE_LCD_COLOR */ #endif /* HAVE_LCD_COLOR */
@ -47,30 +46,16 @@ TODO:
#define USE_TEXT_ONLY #define USE_TEXT_ONLY
#endif #endif
#ifdef USE_TEXT_ONLY #define total_resistance_str_x 1
#define resistance_val_x 0 #define tolerance_str_x 1
#define resistance_val_y 1 #define resistance_val_x 1
#if LCD_HEIGHT <= 64
#define total_resistance_str_x 0
#define total_resistance_str_y 17
#define tolerance_str_x 0
#define tolerance_str_y 32
#define r_to_c_out_str_y (total_resistance_str_y + 15)
#define r_to_c_out_str_x 1 #define r_to_c_out_str_x 1
#else
#define total_resistance_str_x 0
#define total_resistance_str_y 25
#define tolerance_str_x 0
#define tolerance_str_y 45
#define r_to_c_out_str_x 0
#define r_to_c_out_str_y 45
#endif /* LCD_HEIGHT = <= 64 */
#else /* USE_TEXT_ONLY */ #define INITIAL_TEXT_Y 0
#ifndef USE_TEXT_ONLY
/* (below is for color targets */ /* (below is for color targets */
#include "pluginbitmaps/resistor.h" #include "pluginbitmaps/resistor.h"
#define band_width (BMPWIDTH_resistor/15) #define band_width (BMPWIDTH_resistor/15)
@ -80,34 +65,7 @@ TODO:
#define second_band_x (3*BMPWIDTH_resistor/8 + RESISTOR_BMP_X - band_width/2) #define second_band_x (3*BMPWIDTH_resistor/8 + RESISTOR_BMP_X - band_width/2)
#define third_band_x (BMPWIDTH_resistor/2 + RESISTOR_BMP_X - band_width/2) #define third_band_x (BMPWIDTH_resistor/2 + RESISTOR_BMP_X - band_width/2)
#define fourth_band_x (3*BMPWIDTH_resistor/4 + RESISTOR_BMP_X - band_width/2) #define fourth_band_x (3*BMPWIDTH_resistor/4 + RESISTOR_BMP_X - band_width/2)
#define universal_y (RESISTOR_BMP_Y+(BMPHEIGHT_resistor)/2 - band_height/2) #define universal_y ((BMPHEIGHT_resistor)/2 - band_height/2)
#if LCD_WIDTH <= 128
#define total_resistance_str_x 1
#define tolerance_str_x 1
#define resistance_val_x 1
#define r_to_c_out_str_x 1
#else /* LCD_WIDTHT <= 128 */
#define total_resistance_str_x (LCD_WIDTH/14)
#define tolerance_str_x (LCD_WIDTH/14)
#define resistance_val_x (LCD_WIDTH/14)
#define r_to_c_out_str_x (LCD_WIDTH/14)
#endif
#if LCD_HEIGHT <= 128
#define total_resistance_str_y (BMPHEIGHT_resistor + RESISTOR_BMP_Y + 3)
#define tolerance_str_y total_resistance_str_y + 20
#define resistance_val_y total_resistance_str_y + 20
#define r_to_c_out_str_y total_resistance_str_y + 30
#else /* LCD_HEIGHT <= 128 */
#define total_resistance_str_y (2*RESISTOR_BMP_Y + BMPHEIGHT_resistor)
#define tolerance_str_y (total_resistance_str_y + 15)
#define resistance_val_y (total_resistance_str_y + 15)
#define r_to_c_out_str_y (total_resistance_str_y + 25)
/* tolerance_str and resistance_val will never be shown at the same time */
#endif /* LCD_HEIGHT <= 128 */
#endif /* USE_TEXT_ONLY */ #endif /* USE_TEXT_ONLY */
@ -125,6 +83,7 @@ enum color {
RES_GOLD, RES_GOLD,
RES_SILVER, RES_SILVER,
RES_NONE, RES_NONE,
RES_INVALID = -1,
}; };
int common_values[] = { 0, 1, 10, 15, 22, 27, 33, 39, 47, 51, 68, 82 }; int common_values[] = { 0, 1, 10, 15, 22, 27, 33, 39, 47, 51, 68, 82 };
@ -171,6 +130,13 @@ int r_to_c_third_band;
char str [4][7]; char str [4][7];
struct viewport screen_vp;
struct viewport bitmap_vp;
struct viewport text_vp;
struct screen *display;
int lineno;
void get_power_rating_str(int in_rating) void get_power_rating_str(int in_rating)
{ {
switch(in_rating) { switch(in_rating) {
@ -270,25 +236,6 @@ void get_tolerance_str(enum color color)
band_data[color].tolerance); band_data[color].tolerance);
} }
void draw_resistor_text(enum color firstband_color,
enum color secondband_color,
enum color thirdband_color,
enum color fourthband_color)
{
char resistance_vals_str[64];
rb->snprintf(resistance_vals_str, sizeof(resistance_vals_str),
"%s - %s - %s - %s", band_data[firstband_color].name,
band_data[secondband_color].name,
band_data[thirdband_color].name,
band_data[fourthband_color].name);
#if LCD_HEIGHT == 80 /* c200 exception */
rb->lcd_putsxy(resistance_val_x, resistance_val_y-12, resistance_vals_str);
#else /* everything else */
rb->lcd_putsxy(resistance_val_x, resistance_val_y, resistance_vals_str);
#endif
rb->lcd_update();
}
#ifndef USE_TEXT_ONLY #ifndef USE_TEXT_ONLY
void draw_resistor(enum color firstband_color, void draw_resistor(enum color firstband_color,
enum color secondband_color, enum color secondband_color,
@ -296,7 +243,8 @@ void draw_resistor(enum color firstband_color,
enum color fourthband_color) enum color fourthband_color)
{ {
rb->lcd_clear_display(); rb->lcd_clear_display();
rb->lcd_bitmap_transparent(resistor, RESISTOR_BMP_X, RESISTOR_BMP_Y, display->set_viewport(&bitmap_vp);
rb->lcd_bitmap_transparent(resistor, RESISTOR_BMP_X, 0,
BMPWIDTH_resistor, BMPHEIGHT_resistor); BMPWIDTH_resistor, BMPHEIGHT_resistor);
if(firstband_color != RES_NONE) { if(firstband_color != RES_NONE) {
@ -336,24 +284,24 @@ void draw_resistor(enum color firstband_color,
rb->lcd_update(); rb->lcd_update();
return; return;
} }
#else #endif
void draw_resistor(enum color firstband_color, void draw_resistor_text(enum color firstband_color,
enum color secondband_color, enum color secondband_color,
enum color thirdband_color, enum color thirdband_color,
enum color fourthband_color) enum color fourthband_color)
{ {
char resistance_vals_str[64]; char resistance_vals_str[64];
display->set_viewport(&text_vp);
rb->snprintf(resistance_vals_str, sizeof(resistance_vals_str), rb->snprintf(resistance_vals_str, sizeof(resistance_vals_str),
"%s - %s - %s - %s", band_data[firstband_color].name, "%s - %s - %s - %s", band_data[firstband_color].name,
band_data[secondband_color].name, band_data[secondband_color].name,
band_data[thirdband_color].name, band_data[thirdband_color].name,
band_data[fourthband_color].name); band_data[fourthband_color].name);
rb->lcd_clear_display(); rb->lcd_puts_scroll(resistance_val_x, lineno++, resistance_vals_str);
rb->lcd_puts_scroll(resistance_val_x, resistance_val_y, resistance_vals_str);
rb->lcd_update(); rb->lcd_update();
} }
#endif
int calculate_resistance(enum color first_band, int calculate_resistance(enum color first_band,
enum color second_band, enum color second_band,
@ -414,6 +362,9 @@ enum color do_first_band_menu(void)
case 9: /* White */ case 9: /* White */
band_color_selection = RES_WHITE; band_color_selection = RES_WHITE;
break; break;
default:
band_color_selection = RES_INVALID;
break;
} }
return band_color_selection; return band_color_selection;
} }
@ -458,6 +409,9 @@ enum color do_second_band_menu(void)
break; break;
case 9: /* White */ case 9: /* White */
band_color_selection = RES_WHITE; band_color_selection = RES_WHITE;
break;
default:
band_color_selection = RES_INVALID;
break; break;
} }
return band_color_selection; return band_color_selection;
@ -500,6 +454,9 @@ enum color do_third_band_menu(void)
break; break;
case 8: /* Gold */ case 8: /* Gold */
band_color_selection= RES_GOLD; band_color_selection= RES_GOLD;
break;
default:
band_color_selection = RES_INVALID;
break; break;
} }
return band_color_selection; return band_color_selection;
@ -529,6 +486,9 @@ enum color do_fourth_band_menu(void)
break; break;
case 4: /* (none) */ case 4: /* (none) */
band_color_selection = RES_NONE; band_color_selection = RES_NONE;
break;
default:
band_color_selection = RES_INVALID;
break; break;
} }
return band_color_selection; return band_color_selection;
@ -536,7 +496,6 @@ enum color do_fourth_band_menu(void)
void display_helpfile(void) void display_helpfile(void)
{ {
rb->splash(HZ/2, "Helpfile");
rb->lcd_clear_display(); rb->lcd_clear_display();
/* some information obtained from wikipedia */ /* some information obtained from wikipedia */
static char * helpfile_text[] = { static char * helpfile_text[] = {
@ -631,7 +590,7 @@ void display_helpfile(void)
void led_resistance_calc(void) void led_resistance_calc(void)
{ {
backlight_force_on(); backlight_force_on();
int voltage_menu_selection, button_press, i, j, k, l, foreward_current = 0; int voltage_menu_selection, button_press, j, k, l, foreward_current = 0;
int fwd_current_selection = 0; int fwd_current_selection = 0;
bool quit = false; bool quit = false;
char kbd_buffer [5]; char kbd_buffer [5];
@ -655,7 +614,6 @@ void led_resistance_calc(void)
enum color multiplier; enum color multiplier;
enum color fourth_band = RES_NONE; enum color fourth_band = RES_NONE;
rb->splash(HZ/2, "LED resistor calculator");
rb->lcd_clear_display(); rb->lcd_clear_display();
MENUITEM_STRINGLIST(voltage_menu, "Select LED voltage:", NULL, MENUITEM_STRINGLIST(voltage_menu, "Select LED voltage:", NULL,
@ -667,15 +625,22 @@ void led_resistance_calc(void)
"Key in other (only if already known)"); "Key in other (only if already known)");
while(!quit) { while(!quit) {
voltage_menu_selection = rb->do_menu(&voltage_menu, int ret;
ret = voltage_menu_selection = rb->do_menu(&voltage_menu,
&voltage_menu_selection, NULL, false); &voltage_menu_selection, NULL, false);
fwd_current_selection = rb->do_menu(&fwd_current_menu, if(ret<0) break;
ret = fwd_current_selection = rb->do_menu(&fwd_current_menu,
&fwd_current_selection, NULL, false); &fwd_current_selection, NULL, false);
if(ret<0) break;
rb->lcd_clear_display(); rb->lcd_clear_display();
rb->splash(HZ*2, "(First) Input the supply voltage:"); rb->splash(HZ*2, "(First) Input the supply voltage:");
for(i = 0; i < 5; i++) {kbd_buffer[i] = 0; fwd_kbd_buffer[i] = 0;} memset(kbd_buffer,0,sizeof(kbd_buffer));
rb->kbd_input(kbd_buffer, sizeof(kbd_buffer)); rb->kbd_input(kbd_buffer, sizeof(kbd_buffer));
input_voltage = rb->atoi(kbd_buffer); input_voltage = rb->atoi(kbd_buffer);
if(input_voltage == 0) break;
if(input_voltage != (int)input_voltage) { if(input_voltage != (int)input_voltage) {
input_voltage *= 10; input_voltage *= 10;
} }
@ -708,12 +673,14 @@ void led_resistance_calc(void)
case 1: case 1:
rb->lcd_clear_display(); rb->lcd_clear_display();
rb->splash(HZ*2, "Input the foreward current, in mA"); rb->splash(HZ*2, "Input the foreward current, in mA");
memset(fwd_kbd_buffer,0,sizeof(fwd_kbd_buffer));
rb->kbd_input(fwd_kbd_buffer, sizeof(fwd_kbd_buffer)); rb->kbd_input(fwd_kbd_buffer, sizeof(fwd_kbd_buffer));
foreward_current = ((rb->atoi(fwd_kbd_buffer))/10); foreward_current = ((rb->atoi(fwd_kbd_buffer))/10);
break; break;
} }
if(foreward_current == 0) break;
rb->lcd_clear_display(); rb->lcd_clear_display();
resistance = (input_voltage - led_voltage) / foreward_current; resistance = (input_voltage - led_voltage) / foreward_current;
@ -724,8 +691,8 @@ void led_resistance_calc(void)
if(led_voltage > input_voltage) { if(led_voltage > input_voltage) {
rb->splash(HZ, "Problem: LED voltage is higher than the source."); rb->splash(HZ, "Problem: LED voltage is higher than the source.");
break;
} }
else {
for(j = 0; j < total_common_values; j++) { for(j = 0; j < total_common_values; j++) {
for(k = 1; k < 5; k++) { for(k = 1; k < 5; k++) {
@ -744,6 +711,11 @@ void led_resistance_calc(void)
} }
} }
if(rounded_resistance == 0)
{
rb->splash(HZ, "Problem: Input voltage too high.");
break;
}
power_rating_in = ((input_voltage/100)*(input_voltage/100)*1000 / rounded_resistance); power_rating_in = ((input_voltage/100)*(input_voltage/100)*1000 / rounded_resistance);
/* in mW */ /* in mW */
for(l = 0; l < total_power_values; l++) { for(l = 0; l < total_power_values; l++) {
@ -801,20 +773,15 @@ void led_resistance_calc(void)
multiplier = get_band_rtoc(power_ten); multiplier = get_band_rtoc(power_ten);
rb->lcd_clear_display(); rb->lcd_clear_display();
lineno = INITIAL_TEXT_Y;
#ifndef USE_TEXT_ONLY
draw_resistor(first_band, second_band, multiplier, fourth_band); draw_resistor(first_band, second_band, multiplier, fourth_band);
#ifdef HAVE_LCD_COLOR #endif
draw_resistor_text(first_band, second_band, multiplier, fourth_band); draw_resistor_text(first_band, second_band, multiplier, fourth_band);
#endif
if(fwd_current_selection == 0) {
rb->snprintf(current_out_str, sizeof(current_out_str), "20mA");
}
else if(fwd_current_selection == 1) {
rb->snprintf(current_out_str, sizeof(current_out_str), "%d mA", rb->snprintf(current_out_str, sizeof(current_out_str), "%d mA",
(foreward_current*10)); (foreward_current*10));
}
#if (LCD_HEIGHT >= 128)
rb->snprintf(true_current_out_str, sizeof(true_current_out_str), rb->snprintf(true_current_out_str, sizeof(true_current_out_str),
"Input: %dv, %d Ohms @ %s", (input_voltage/100), "Input: %dv, %d Ohms @ %s", (input_voltage/100),
out_int, current_out_str); out_int, current_out_str);
@ -823,48 +790,14 @@ void led_resistance_calc(void)
"Rounded/displayed: [%d %s]", rounded_resistance, "Rounded/displayed: [%d %s]", rounded_resistance,
band_data[multiplier].unit); band_data[multiplier].unit);
rb->snprintf(power_rating_out_str, sizeof(power_rating_out_str), rb->snprintf(power_rating_out_str, sizeof(power_rating_out_str),
"Reccomended: %s or greater", power_rating_str); "Recommended: %s or greater", power_rating_str);
#if (LCD_HEIGHT == 128) /* Fixes an issue with the M:Robe 100 */
rb->lcd_putsxy(1, resistance_val_y+25, true_current_out_str);
rb->lcd_putsxy(1, resistance_val_y+40, rounded_resistance_out_str);
rb->lcd_putsxy(1, resistance_val_y+55, power_rating_out_str);
#else /* LCD_HEIGHT == 128 */
rb->lcd_putsxy(1, resistance_val_y+15, true_current_out_str);
rb->lcd_putsxy(1, resistance_val_y+27, rounded_resistance_out_str);
rb->lcd_putsxy(1, resistance_val_y+39, power_rating_out_str);
#endif /* LCD_HEIGHT == 128 */
#else /* (LCD_HEIGHT >= 128) */ display->set_viewport(&text_vp);
rb->snprintf(true_current_out_str, sizeof(true_current_out_str), rb->lcd_puts_scroll(resistance_val_x, lineno++, true_current_out_str);
"Input:%dv, %d Ohms @ %s", (input_voltage/100), rb->lcd_puts_scroll(resistance_val_x, lineno++, rounded_resistance_out_str);
out_int, current_out_str); rb->lcd_puts_scroll(resistance_val_x, lineno++, power_rating_out_str);
rb->snprintf(rounded_resistance_out_str,
sizeof(rounded_resistance_out_str), "Rounded: [%d %s]",
rounded_resistance, band_data[multiplier].unit);
rb->snprintf(power_rating_out_str, sizeof(power_rating_out_str),
"Reccommended: %s", power_rating_str);
#if (LCD_HEIGHT == 80) /* For c200 */
rb->lcd_putsxy(0, resistance_val_y, true_current_out_str);
rb->lcd_putsxy(0, resistance_val_y+10, rounded_resistance_out_str);
rb->lcd_putsxy(0, resistance_val_y+20, power_rating_out_str);
#else
rb->lcd_puts(resistance_val_x, resistance_val_y+2,
true_current_out_str);
rb->lcd_puts(resistance_val_x, resistance_val_y+3,
rounded_resistance_out_str);
rb->lcd_puts(resistance_val_x, resistance_val_y+4,
power_rating_out_str);
#endif /* LCD_HEIGHT == 80 */
#endif /* (LCD_HEIGHT >= 128) */
/* I have created these separate routines for the different LCDs
instead of using lcd_puts_scroll() because it is too buggy
to use more than once apparently - the scrolling text is not
removed by lcd_clear_display() and can still be seen in the
main menu.*/
rb->lcd_update(); rb->lcd_update();
}
button_press = rb->button_get(true); button_press = rb->button_get(true);
switch(button_press) { switch(button_press) {
@ -876,6 +809,10 @@ void led_resistance_calc(void)
break; break;
} }
} }
display->set_viewport(&text_vp);
rb->lcd_stop_scroll();
display->set_viewport(&screen_vp);
rb->lcd_clear_display();
} }
@ -913,14 +850,18 @@ void resistance_to_color(void)
"5%", "10%", "1%", "2%", "20%"); "5%", "10%", "1%", "2%", "20%");
while(!quit) { while(!quit) {
menu_selection = rb->do_menu(&r_to_c_menu, &menu_selection, int ret;
ret=menu_selection = rb->do_menu(&r_to_c_menu, &menu_selection,
NULL, false); NULL, false);
if(ret<0) break;
rb->kbd_input(kbd_buffer, sizeof(kbd_buffer)); rb->kbd_input(kbd_buffer, sizeof(kbd_buffer));
/* As stated above somewhere, we (I) need to make a calculator-like /* As stated above somewhere, we (I) need to make a calculator-like
keypad, that keyboard isn't all that fun to use. */ keypad, that keyboard isn't all that fun to use. */
menu_selection_tol = rb->do_menu(&r_to_c_menu_tol, &menu_selection_tol, ret = rb->do_menu(&r_to_c_menu_tol, &menu_selection_tol,
NULL, false); NULL, false);
if(ret<0) break;
switch(menu_selection_tol) { switch(menu_selection_tol) {
case 0: /* 5% */ case 0: /* 5% */
fourth_band = RES_GOLD; fourth_band = RES_GOLD;
@ -990,17 +931,16 @@ void resistance_to_color(void)
multiplier = get_band_rtoc(power_ten); multiplier = get_band_rtoc(power_ten);
rb->lcd_clear_display(); rb->lcd_clear_display();
lineno = INITIAL_TEXT_Y;
#ifndef USE_TEXT_ONLY
draw_resistor(first_band, second_band, multiplier, fourth_band); draw_resistor(first_band, second_band, multiplier, fourth_band);
#endif
#ifdef HAVE_LCD_COLOR /* This seems backwards, but is really only draw_resistor_text(first_band, second_band, multiplier, fourth_band);
necessary on color targets */
draw_resistor_text(first_band, second_band,
multiplier, fourth_band);
#endif
rb->snprintf(out_str, sizeof(out_str), "Input: %d %s", in_resistance_int, rb->snprintf(out_str, sizeof(out_str), "Input: %d %s", in_resistance_int,
band_data[units_used].unit); band_data[units_used].unit);
rb->lcd_putsxy(r_to_c_out_str_x, r_to_c_out_str_y, out_str); display->set_viewport(&text_vp);
rb->lcd_puts_scroll(r_to_c_out_str_x, lineno++, out_str);
rb->lcd_update(); rb->lcd_update();
button_press = rb->button_get(true); button_press = rb->button_get(true);
@ -1013,6 +953,10 @@ void resistance_to_color(void)
break; break;
} }
} }
display->set_viewport(&text_vp);
rb->lcd_stop_scroll();
display->set_viewport(&screen_vp);
rb->lcd_clear_display();
} }
void color_to_resistance(void) void color_to_resistance(void)
@ -1035,18 +979,29 @@ void color_to_resistance(void)
while(!quit) { while(!quit) {
first_band = do_first_band_menu(); first_band = do_first_band_menu();
if(first_band==RES_INVALID) break;
second_band = do_second_band_menu(); second_band = do_second_band_menu();
if(second_band==RES_INVALID) break;
third_band = do_third_band_menu(); third_band = do_third_band_menu();
if(third_band==RES_INVALID) break;
fourth_band = do_fourth_band_menu(); fourth_band = do_fourth_band_menu();
if(third_band==RES_INVALID) break;
total_resistance_centiunits = calculate_resistance(first_band, total_resistance_centiunits = calculate_resistance(first_band,
second_band, second_band,
third_band); third_band);
get_tolerance_str(fourth_band); get_tolerance_str(fourth_band);
rb->lcd_clear_display();
lineno = INITIAL_TEXT_Y;
#ifndef USE_TEXT_ONLY
draw_resistor(first_band, second_band, third_band, fourth_band); draw_resistor(first_band, second_band, third_band, fourth_band);
#ifndef USE_TEXT_ONLY #endif
rb->lcd_set_foreground(LCD_WHITE); draw_resistor_text(first_band, second_band, third_band, fourth_band);
#endif
if(total_resistance_centiunits % 100 == 0) if(total_resistance_centiunits % 100 == 0)
{ {
/* No decimals */ /* No decimals */
@ -1063,9 +1018,10 @@ void color_to_resistance(void)
total_resistance_centiunits%100, total_resistance_centiunits%100,
unit_abbrev); unit_abbrev);
} }
rb->lcd_putsxy(total_resistance_str_x, total_resistance_str_y, display->set_viewport(&text_vp);
rb->lcd_puts_scroll(total_resistance_str_x, lineno++,
total_resistance_str); total_resistance_str);
rb->lcd_putsxy(tolerance_str_x, tolerance_str_y, tolerance_str); rb->lcd_puts_scroll(tolerance_str_x, lineno++, tolerance_str);
rb->lcd_update(); rb->lcd_update();
button_input = rb->button_get(true); button_input = rb->button_get(true);
@ -1080,6 +1036,10 @@ void color_to_resistance(void)
break; break;
} }
} }
display->set_viewport(&text_vp);
rb->lcd_stop_scroll();
display->set_viewport(&screen_vp);
rb->lcd_clear_display();
return; return;
} }
@ -1090,12 +1050,23 @@ enum plugin_status plugin_start(const void* nothing)
rb->lcd_update(); rb->lcd_update();
int main_menu_selection = 0; int main_menu_selection = 0;
bool menuquit = false; bool menuquit = false;
int event;
display = rb->screens[0];
rb->viewport_set_defaults(&screen_vp,0);
rb->viewport_set_defaults(&text_vp,0);
rb->viewport_set_defaults(&bitmap_vp,0);
#ifndef USE_TEXT_ONLY
bitmap_vp.y = RESISTOR_BMP_Y + screen_vp.y;
bitmap_vp.height = BMPHEIGHT_resistor;
text_vp.y = bitmap_vp.y + bitmap_vp.height;
text_vp.height = screen_vp.height - text_vp.y;
#endif
MENUITEM_STRINGLIST(main_menu, "Resistor Code Calculator:", NULL, MENUITEM_STRINGLIST(main_menu, "Resistor Code Calculator:", NULL,
"Colours -> Resistance", "Resistance -> Colours", "Colours -> Resistance", "Resistance -> Colours",
"LED resistor calculator", "Help", "Exit"); "LED resistor calculator", "Help", "Exit");
while (!menuquit) { while (!menuquit) {
display->set_viewport(&screen_vp);
main_menu_selection = rb->do_menu(&main_menu, &main_menu_selection, main_menu_selection = rb->do_menu(&main_menu, &main_menu_selection,
NULL, false); NULL, false);
switch(main_menu_selection) { switch(main_menu_selection) {
@ -1114,10 +1085,9 @@ enum plugin_status plugin_start(const void* nothing)
case 4: case 4:
menuquit = true; menuquit = true;
break; break;
case MENU_ATTACHED_USB:
return PLUGIN_USB_CONNECTED;
} }
event = rb->button_get(true);
if(rb->default_event_handler(event) == SYS_USB_CONNECTED) {
return PLUGIN_USB_CONNECTED; }
} }
return PLUGIN_OK; return PLUGIN_OK;
} }