summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2004-06-15 23:24:06 +0000
committerBjörn Stenberg <bjorn@haxx.se>2004-06-15 23:24:06 +0000
commitbe52a11038d82658a26907ccbebcb1a9d9677baf (patch)
treeaf1091468f62249dc9772e0cf8d6750b07dd5d64 /apps/plugins
parentb876296c9bc9f010c29d90b4e502fcda5f0bf0c6 (diff)
downloadrockbox-be52a11038d82658a26907ccbebcb1a9d9677baf.zip
rockbox-be52a11038d82658a26907ccbebcb1a9d9677baf.tar.gz
rockbox-be52a11038d82658a26907ccbebcb1a9d9677baf.tar.bz2
rockbox-be52a11038d82658a26907ccbebcb1a9d9677baf.tar.xz
Simple battery runtime test
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4751 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/battery_test.c107
1 files changed, 107 insertions, 0 deletions
diff --git a/apps/plugins/battery_test.c b/apps/plugins/battery_test.c
new file mode 100644
index 0000000..01a075f
--- /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;
+}
+