Simple battery runtime test
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4751 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
b876296c9b
commit
be52a11038
1 changed files with 107 additions and 0 deletions
107
apps/plugins/battery_test.c
Normal file
107
apps/plugins/battery_test.c
Normal file
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in a new issue