diff --git a/examples/sky-shell/Makefile b/examples/sky-shell/Makefile new file mode 100644 index 000000000..aeedfc46b --- /dev/null +++ b/examples/sky-shell/Makefile @@ -0,0 +1,116 @@ +CONTIKI = ../.. +APPS=shell +DEFAULT_TARGET=sky +all: sky-shell + +ifdef MOTE +login: + $(SERIALDUMP) -b115200 /dev/com$(word $(MOTE), $(CMOTES)) +else +login: + $(SERIALDUMP) -b115200 /dev/com$(firstword $(CMOTES)) +endif + +%.shell-upload: %.ce + (echo; sleep 4; echo "~K"; sleep 4; \ + echo "dec64 | write file | null"; sleep 4; \ + ../../tools/base64-encode < $<; sleep 4; \ + echo "read file | size"; sleep 4) | make login + +netsend: + (echo; sleep 4; echo "~K"; sleep 4; \ + echo "netcmd { recvnetfile | write file | size send } "; sleep 4; \ + echo "netfile file"; sleep 4;\ + echo "collect | binprint"; sleep 40) | make login + +%.tgz: %.ihex + mkdir $(basename $<) ; \ + mv $< $(basename $<) ; \ + echo $(basename $<)/$(basename $<).ihex 600 > $(basename $<)/runfile ; \ + tar czf $@ $(basename $<) +broadcast: + echo "echo haha | broadcast" | make login + +xprofile: + (sleep 4; echo "sendtest 56.0 100 20"; sleep 4; echo "xmacprofile"; sleep 10) | make login + +xprofile2: + (sleep 4; sleep 4; echo "xmacprofile"; sleep 10) | make login MOTE=2 + +ping: + echo ping 55.0 | make login + +serrors: + (echo "~K"; echo "var serial_byte_dropped") | make login + +reboot: + (echo "~K"; echo "reboot"; sleep 6) | make login + +test64: + (echo "~K"; echo "dec64 | write file"; sleep 2; \ + ../../tools/base64-encode < symbols.c) | make login + +distfile : + (echo "~K"; echo "netcmd { recvnetfile | write file | size | blink }"; \ + sleep 1; echo "netfile file") | make login + +test642: + (echo "~K"; echo "dec64 | write file | null"; sleep 2; \ + ../../tools/base64-encode < hello-world.c; echo ; echo "read file | size" ) | make login + +test2: + (echo "~K"; echo "write file"; sleep 2; \ + cat hello-world.c) | make login + +upload64: + (echo "~K"; echo "dec64 | write file"; sleep 2; \ + ../../tools/base64-encode < symbols.c) | make login + +netfile: + (echo "~K"; echo "netfile file") | make login + +sendtest: + (echo "~K"; \ + echo "killall "; \ + echo "repeat 10 2 sendtest $(NODE) 2000 64"; \ + sleep 24; \ + echo "repeat 10 2 sendtest $(NODE) 2000 32"; \ + sleep 24; \ + echo "repeat 10 2 sendtest $(NODE) 2000 16"; \ + sleep 24; \ + echo 'energy | powerconv' ) | make login + +setup-sensor: + (echo "~K"; \ + echo "killall "; \ + echo "time `date +%s` | null"; \ + echo 'netcmd { repeat 10000 20 { randwait 20 sense | blink | send } }'; \ + sleep 2; \ + echo 'collect | timestamp | blink | write file | binprint &') | make login + +collect-sensor-data: + make login | tee collect-sensor-data + +collect-power: + (echo ; \ + echo 'netcmd { repeat 1000 20 { randwait 20 power | send } }'; \ + sleep 2; \ + echo 'collect | timestamp | hd &') | make login + +collect-energy: + (sleep 4; echo "~K"; \ + echo "killall "; \ + echo "time `date +%s` | null"; \ + echo 'netcmd { repeat 1000 40 { randwait 40 energy | send } }'; \ + sleep 4; \ + echo 'collect | timestamp | write file | hd &') | make login + +include $(CONTIKI)/Makefile.include + +sizeplot: + msp430-size $(OBJECTDIR)/*.o | $(CONTIKI)/tools/sky/check-size > size-data && \ + gnuplot $(CONTIKI)/tools/sky/plot-size && gv size.pdf + +sizeacro: + msp430-size $(OBJECTDIR)/*.o | $(CONTIKI)/tools/sky/check-size > size-data && \ + gnuplot $(CONTIKI)/tools/sky/plot-size && rundll32 url.dll,FileProtocolHandler size.pdf diff --git a/examples/sky-shell/sky-shell.c b/examples/sky-shell/sky-shell.c new file mode 100644 index 000000000..d1f968732 --- /dev/null +++ b/examples/sky-shell/sky-shell.c @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2008, 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: sky-shell.c,v 1.1 2008/02/04 23:52:33 adamdunkels Exp $ + */ + +/** + * \file + * A brief description of what this file is. + * \author + * Adam Dunkels + */ + +#include "contiki.h" +#include "shell.h" +#include "serial-shell.h" + +#include "net/rime/timesynch.h" + +#include "sys/profile.h" + +#include + +/*---------------------------------------------------------------------------*/ +PROCESS(test_shell_process, "Test Contiki shell"); +AUTOSTART_PROCESSES(&test_shell_process); +/*---------------------------------------------------------------------------*/ +#if 0 +PROCESS(shell_xmacprofile_process, "xmacprofile"); +SHELL_COMMAND(xmacprofile_command, + "xmacprofile", + "xmacprofile: show aggregate time", + &shell_xmacprofile_process); +/*---------------------------------------------------------------------------*/ +#define xmac_timetable_size 256 +TIMETABLE_DECLARE(xmac_timetable); +PROCESS_THREAD(shell_xmacprofile_process, ev, data) +{ + int i; + unsigned long add; + rtimer_clock_t time, lasttime; + char buf[40]; + PROCESS_BEGIN(); + + add = 0; + lasttime = 0; + for(i = 0; i < xmac_timetable_size; ++i) { + if(xmac_timetable.timestamps[i].id != NULL) { + time = add + xmac_timetable.timestamps[i].time + timesynch_offset(); + if(time < lasttime) { + add = 65536; + time += 65536; + } + snprintf(buf, sizeof(buf), "%u %u \"%s\"", + time, + (unsigned short)xmac_timetable.timestamps[i].id, + xmac_timetable.timestamps[i].id); + shell_output_str(&xmacprofile_command, buf, ""); + } + } + /* xmacprofile_aggregate_print_detailed();*/ + + PROCESS_END(); +} +#endif +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(test_shell_process, ev, data) +{ + PROCESS_BEGIN(); + + serial_shell_init(); + + shell_blink_init(); + /* shell_exec_init();*/ + shell_file_init(); + shell_netfile_init(); + shell_ps_init(); + shell_reboot_init(); + shell_rime_init(); + shell_rime_ping_init(); + shell_rime_sniff_init(); + /* shell_rsh_init();*/ + shell_sendtest_init(); + shell_sky_init(); + shell_text_init(); + shell_time_init(); + /* shell_vars_init();*/ + +#if 0 + shell_register_command(&xmacprofile_command); +#endif + + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/ diff --git a/examples/sky-shell/sky-upload.c b/examples/sky-shell/sky-upload.c new file mode 100644 index 000000000..5af90143e --- /dev/null +++ b/examples/sky-shell/sky-upload.c @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2008, 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: sky-upload.c,v 1.1 2008/02/04 23:52:33 adamdunkels Exp $ + */ + +/** + * \file + * A brief description of what this file is. + * \author + * Adam Dunkels + */ + +#include "contiki.h" +#include "shell.h" +#include "serial-shell.h" + +#include "net/rime/timesynch.h" + +#include "sys/profile.h" + +#include + +/*---------------------------------------------------------------------------*/ +PROCESS(test_shell_process, "Test Contiki shell"); +AUTOSTART_PROCESSES(&test_shell_process); +/*---------------------------------------------------------------------------*/ +#if 0 +PROCESS(shell_xmacprofile_process, "xmacprofile"); +SHELL_COMMAND(xmacprofile_command, + "xmacprofile", + "xmacprofile: show aggregate time", + &shell_xmacprofile_process); +/*---------------------------------------------------------------------------*/ +#define xmac_timetable_size 256 +TIMETABLE_DECLARE(xmac_timetable); +PROCESS_THREAD(shell_xmacprofile_process, ev, data) +{ + int i; + char buf[40]; + PROCESS_BEGIN(); + + for(i = 0; i < xmac_timetable_size; ++i) { + if(xmac_timetable.timestamps[i].id != NULL) { + snprintf(buf, sizeof(buf), "%u %u \"%s\"", + xmac_timetable.timestamps[i].time + timesynch_offset(), + (unsigned short)xmac_timetable.timestamps[i].id, + xmac_timetable.timestamps[i].id); + shell_output_str(&xmacprofile_command, buf, ""); + } + } + /* xmacprofile_aggregate_print_detailed();*/ + + PROCESS_END(); +} +#endif +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(test_shell_process, ev, data) +{ + PROCESS_BEGIN(); + + serial_shell_init(); + + shell_blink_init(); + shell_exec_init(); + shell_file_init(); + shell_netfile_init(); + shell_ps_init(); + shell_rime_init(); + shell_rime_sniff_init(); + /* shell_rime_ping_init();*/ +/* shell_rsh_init(); */ +/* shell_sendtest_init();*/ + /*shell_sky_init();*/ + shell_text_init(); + /* shell_time_init();*/ + /* shell_vars_init();*/ + +#if 0 + shell_register_command(&xmacprofile_command); +#endif + + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/