/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * * Copyright (C) 2004 Lee Pilgrim * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/ #include "plugin.h" static struct plugin_api* rb; enum plugin_status plugin_start(struct plugin_api* api, void* parameter) { bool use_miles_dis_trav=true; bool use_gallons_amt_fuel=true; int distance=200; int fuel_amount=16; char dist[4]; char fuel_amt[3]; int button; int func=1; char milage[4]; TEST_PLUGIN_API(api); (void)parameter; rb = api; rb->lcd_setfont(FONT_SYSFIXED); while(1) { rb->lcd_clear_display(); rb->lcd_puts(0,0, "Distance:"); rb->snprintf(dist, sizeof(dist), "%d", distance); rb->lcd_puts(9,0, dist); if (use_miles_dis_trav) rb->lcd_puts(9,1, "miles"); else rb->lcd_puts(9,1, "kilometers"); rb->lcd_puts(0,3, "Fuel:"); rb->snprintf(fuel_amt, sizeof(fuel_amt), "%d", fuel_amount); rb->lcd_puts(5,3, fuel_amt); if (use_gallons_amt_fuel) rb->lcd_puts(5,4,"gallons"); else rb->lcd_puts(5,4,"litres"); if(use_miles_dis_trav) rb->lcd_puts(0,7, "MP"); else rb->lcd_puts(0,7, "LP"); if(use_gallons_amt_fuel) rb->lcd_puts(2,7,"G:"); else rb->lcd_puts(2,7,"L:"); switch(func) { case 1: rb->lcd_invertrect(0,0,111,8); break; case 2: rb->lcd_invertrect(0,8,111,8); break; case 3: rb->lcd_invertrect(0,24,111,8); break; case 4: rb->lcd_invertrect(0,32,111,8); break; } rb->snprintf(milage, sizeof(milage), "%d", distance/fuel_amount); rb->lcd_puts(4,7,milage); rb->lcd_update(); button = rb->button_get_w_tmo(HZ/10); switch (button) { case BUTTON_OFF: return PLUGIN_OK; break; case BUTTON_UP: if(func>1) func--; break; case BUTTON_DOWN: if(func<4) func++; break; case BUTTON_LEFT: case BUTTON_LEFT | BUTTON_REPEAT: if(func==1) if(distance>1) distance--; if(func==2) use_miles_dis_trav=!use_miles_dis_trav; if(func==3) if(fuel_amount>1) fuel_amount--; if(func==4) use_gallons_amt_fuel=!use_gallons_amt_fuel; break; case BUTTON_RIGHT: case BUTTON_RIGHT | BUTTON_REPEAT: if(func==1) if(distance<999) distance++; if(func==2) use_miles_dis_trav=!use_miles_dis_trav; if(func==3) if(fuel_amount<99) fuel_amount++; if(func==4) use_gallons_amt_fuel=!use_gallons_amt_fuel; break; default: if(rb->default_event_handler(button) == SYS_USB_CONNECTED) return PLUGIN_USB_CONNECTED; break; } } return PLUGIN_OK; }