From be52a11038d82658a26907ccbebcb1a9d9677baf Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Tue, 15 Jun 2004 23:24:06 +0000 Subject: Simple battery runtime test git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4751 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/battery_test.c | 107 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 apps/plugins/battery_test.c (limited to 'apps') diff --git a/apps/plugins/battery_test.c b/apps/plugins/battery_test.c new file mode 100644 index 0000000000..01a075f72b --- /dev/null +++ b/apps/plugins/battery_test.c @@ -0,0 +1,107 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2004 Björn Stenberg + * + * 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" + +/* This plugin is designed to measure your battery performance in real-time. + It will create a big file, read it every ~90 seconds and log the + battery level in /battery.log + + When battery level goes below 5% the plugin exits, to avoid writing to + disk in very low battery situations. + + Note that this test will run for 10-15 hours or more and is very boring + to watch. +*/ + +static struct plugin_api* rb; + +void* buffer; +int buffersize; + +int init(void) +{ + int f; + buffer = rb->plugin_get_mp3_buffer(&buffersize); + + /* create a big dummy file */ + f = rb->creat("/battery.dummy", 0); + if (f<0) { + rb->splash(HZ, true, "Can't create /battery.dummy"); + return -1; + } + rb->write(f, buffer, buffersize); + rb->close(f); + + return 0; +} + +void loop(void) +{ + while (true) { + struct tm* t; + char buf[80]; + int f; + int batt = rb->battery_level(); + + /* stop measuring when <5% battery left */ + if ((batt > 0) && (batt < 5)) + break; + + /* log current time */ + f = rb->open("/battery.log", O_WRONLY | O_APPEND | O_CREAT); + if (f<0) { + rb->splash(HZ, true, "Failed creating /battery.log"); + break; + } + t = rb->get_time(); + rb->snprintf(buf, sizeof buf, "%02d:%02d:%02d Battery %d%%\n", + t->tm_hour, t->tm_min, t->tm_sec, batt); + rb->write(f, buf, rb->strlen(buf)); + rb->close(f); + + rb->splash(0, true, buf); + + /* simulate 128kbit/s (16kbyte/s) playback duration */ + rb->sleep(HZ * (buffersize / 16384) - HZ*10); + + /* simulate filling the mp3 buffer */ + f = rb->open("/battery.dummy", O_RDONLY); + if (f<0) { + rb->splash(HZ, true, "Failed opening /battery.dummy"); + break; + } + rb->read(f, buffer, buffersize); + rb->close(f); + } +} + +enum plugin_status plugin_start(struct plugin_api* api, void* parameter) +{ + TEST_PLUGIN_API(api); + (void)parameter; + rb = api; + + if (init() < 0) + return PLUGIN_OK; + + loop(); + + return PLUGIN_OK; +} + -- cgit v1.2.3