From 3f6dc30373e4768a77ece977b187a82a9a545a67 Mon Sep 17 00:00:00 2001 From: adamdunkels Date: Tue, 12 Oct 2010 11:34:49 +0000 Subject: [PATCH] Added a powertrace command as an interface to the powertrace app --- apps/shell/Makefile.shell | 6 ++- apps/shell/shell-powertrace.c | 78 +++++++++++++++++++++++++++++++++++ apps/shell/shell-powertrace.h | 46 +++++++++++++++++++++ apps/shell/shell.h | 3 +- 4 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 apps/shell/shell-powertrace.c create mode 100644 apps/shell/shell-powertrace.h diff --git a/apps/shell/Makefile.shell b/apps/shell/Makefile.shell index 7a6a18c79..8dadab37c 100644 --- a/apps/shell/Makefile.shell +++ b/apps/shell/Makefile.shell @@ -10,7 +10,8 @@ shell_src = shell.c shell-reboot.c \ shell-rime-sendcmd.c shell-download.c shell-rime-neighbors.c \ shell-rime-unicast.c \ shell-tweet.c shell-base64.c \ - shell-netperf.c shell-memdebug.c + shell-netperf.c shell-memdebug.c \ + shell-powertrace.c shell_dsc = shell-dsc.c APPS += webserver @@ -40,6 +41,9 @@ endif APPS += twitter include $(CONTIKI)/apps/twitter/Makefile.twitter +APPS += powertrace +include $(CONTIKI)/apps/powertrace/Makefile.powertrace + ifeq ($(TARGET),sky) shell_src += shell-sky.c shell-exec.c shell-sensortweet.c endif diff --git a/apps/shell/shell-powertrace.c b/apps/shell/shell-powertrace.c new file mode 100644 index 000000000..b9ee77936 --- /dev/null +++ b/apps/shell/shell-powertrace.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2010, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the Contiki operating system. + * + * $Id: shell-powertrace.c,v 1.1 2010/10/12 11:34:49 adamdunkels Exp $ + */ + +/** + * \file + * Shell interface to the powertrace app + * \author + * Adam Dunkels + */ + +#include "shell.h" +#include "powertrace.h" +#include + +/*---------------------------------------------------------------------------*/ +PROCESS(shell_powertrace_process, "powertrace"); +SHELL_COMMAND(powertrace_command, + "powertrace", + "powertrace [interval]: turn powertracing on or off, with reporting interval ", + &shell_powertrace_process); +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(shell_powertrace_process, ev, data) +{ + char buf[10]; + int interval; + + PROCESS_BEGIN(); + + interval = shell_strtolong(data, NULL); + + if(data == NULL || interval == 0) { + powertrace_stop(); + powertrace_print(""); + } else { + powertrace_start(interval * CLOCK_SECOND); + sprintf(buf, "%d", interval); + shell_output_str(&powertrace_command, "Starting powertrace with interval ", buf); + } + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/ +void +shell_powertrace_init(void) +{ + shell_register_command(&powertrace_command); + powertrace_sniff(POWERTRACE_ON); +} +/*---------------------------------------------------------------------------*/ diff --git a/apps/shell/shell-powertrace.h b/apps/shell/shell-powertrace.h new file mode 100644 index 000000000..b5b465ef4 --- /dev/null +++ b/apps/shell/shell-powertrace.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2010, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the Contiki operating system. + * + * $Id: shell-powertrace.h,v 1.1 2010/10/12 11:34:49 adamdunkels Exp $ + */ + +/** + * \file + * Shell interface to the powertrace app + * \author + * Adam Dunkels + */ + +#ifndef SHELL_POWERTRACE_H +#define SHELL_POWERTRACE_H + +void shell_powertrace_init(void); + +#endif /* SHELL_POWERTRACE_H */ diff --git a/apps/shell/shell.h b/apps/shell/shell.h index 934c6fb6a..2e1adcb1d 100644 --- a/apps/shell/shell.h +++ b/apps/shell/shell.h @@ -48,7 +48,7 @@ * * This file is part of the Contiki operating system. * - * $Id: shell.h,v 1.22 2010/02/03 20:40:23 adamdunkels Exp $ + * $Id: shell.h,v 1.23 2010/10/12 11:34:49 adamdunkels Exp $ */ /** @@ -368,6 +368,7 @@ struct shell_input { #include "shell-netstat.h" #include "shell-ping.h" #include "shell-power.h" +#include "shell-powertrace.h" #include "shell-ps.h" #include "shell-reboot.h" #include "shell-rime-debug.h"