Fork of Smoothie to port to mbed non-LPC targets.
Fork of Smoothie by
libs/Network/uip/telnetd/shell.h@2:1df0b61d3b5a, 2014-02-28 (annotated)
- Committer:
- Michael J. Spencer
- Date:
- Fri Feb 28 18:52:52 2014 -0800
- Revision:
- 2:1df0b61d3b5a
Update to latest Smoothie.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Michael J. Spencer |
2:1df0b61d3b5a | 1 | /** |
Michael J. Spencer |
2:1df0b61d3b5a | 2 | * \file |
Michael J. Spencer |
2:1df0b61d3b5a | 3 | * Interface for the Contiki shell. |
Michael J. Spencer |
2:1df0b61d3b5a | 4 | * \author Adam Dunkels <adam@dunkels.com> |
Michael J. Spencer |
2:1df0b61d3b5a | 5 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 6 | * Some of the functions declared in this file must be implemented as |
Michael J. Spencer |
2:1df0b61d3b5a | 7 | * a shell back-end in the architecture specific files of a Contiki |
Michael J. Spencer |
2:1df0b61d3b5a | 8 | * port. |
Michael J. Spencer |
2:1df0b61d3b5a | 9 | */ |
Michael J. Spencer |
2:1df0b61d3b5a | 10 | |
Michael J. Spencer |
2:1df0b61d3b5a | 11 | |
Michael J. Spencer |
2:1df0b61d3b5a | 12 | /* |
Michael J. Spencer |
2:1df0b61d3b5a | 13 | * Copyright (c) 2003, Adam Dunkels. |
Michael J. Spencer |
2:1df0b61d3b5a | 14 | * All rights reserved. |
Michael J. Spencer |
2:1df0b61d3b5a | 15 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 16 | * Redistribution and use in source and binary forms, with or without |
Michael J. Spencer |
2:1df0b61d3b5a | 17 | * modification, are permitted provided that the following conditions |
Michael J. Spencer |
2:1df0b61d3b5a | 18 | * are met: |
Michael J. Spencer |
2:1df0b61d3b5a | 19 | * 1. Redistributions of source code must retain the above copyright |
Michael J. Spencer |
2:1df0b61d3b5a | 20 | * notice, this list of conditions and the following disclaimer. |
Michael J. Spencer |
2:1df0b61d3b5a | 21 | * 2. Redistributions in binary form must reproduce the above copyright |
Michael J. Spencer |
2:1df0b61d3b5a | 22 | * notice, this list of conditions and the following disclaimer in the |
Michael J. Spencer |
2:1df0b61d3b5a | 23 | * documentation and/or other materials provided with the distribution. |
Michael J. Spencer |
2:1df0b61d3b5a | 24 | * 3. The name of the author may not be used to endorse or promote |
Michael J. Spencer |
2:1df0b61d3b5a | 25 | * products derived from this software without specific prior |
Michael J. Spencer |
2:1df0b61d3b5a | 26 | * written permission. |
Michael J. Spencer |
2:1df0b61d3b5a | 27 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 28 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS |
Michael J. Spencer |
2:1df0b61d3b5a | 29 | * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
Michael J. Spencer |
2:1df0b61d3b5a | 30 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
Michael J. Spencer |
2:1df0b61d3b5a | 31 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
Michael J. Spencer |
2:1df0b61d3b5a | 32 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
Michael J. Spencer |
2:1df0b61d3b5a | 33 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE |
Michael J. Spencer |
2:1df0b61d3b5a | 34 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
Michael J. Spencer |
2:1df0b61d3b5a | 35 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
Michael J. Spencer |
2:1df0b61d3b5a | 36 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
Michael J. Spencer |
2:1df0b61d3b5a | 37 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
Michael J. Spencer |
2:1df0b61d3b5a | 38 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Michael J. Spencer |
2:1df0b61d3b5a | 39 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 40 | * This file is part of the Contiki desktop OS. |
Michael J. Spencer |
2:1df0b61d3b5a | 41 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 42 | * $Id: shell.h,v 1.1 2006/06/07 09:43:54 adam Exp $ |
Michael J. Spencer |
2:1df0b61d3b5a | 43 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 44 | */ |
Michael J. Spencer |
2:1df0b61d3b5a | 45 | #ifndef __SHELL_H__ |
Michael J. Spencer |
2:1df0b61d3b5a | 46 | #define __SHELL_H__ |
Michael J. Spencer |
2:1df0b61d3b5a | 47 | |
Michael J. Spencer |
2:1df0b61d3b5a | 48 | #include "telnetd.h" |
Michael J. Spencer |
2:1df0b61d3b5a | 49 | #include "CommandQueue.h" |
Michael J. Spencer |
2:1df0b61d3b5a | 50 | |
Michael J. Spencer |
2:1df0b61d3b5a | 51 | class Telnetd; |
Michael J. Spencer |
2:1df0b61d3b5a | 52 | |
Michael J. Spencer |
2:1df0b61d3b5a | 53 | class Shell |
Michael J. Spencer |
2:1df0b61d3b5a | 54 | { |
Michael J. Spencer |
2:1df0b61d3b5a | 55 | public: |
Michael J. Spencer |
2:1df0b61d3b5a | 56 | Shell(Telnetd *telnet); |
Michael J. Spencer |
2:1df0b61d3b5a | 57 | ~Shell(); |
Michael J. Spencer |
2:1df0b61d3b5a | 58 | |
Michael J. Spencer |
2:1df0b61d3b5a | 59 | /** |
Michael J. Spencer |
2:1df0b61d3b5a | 60 | * Start the shell back-end. |
Michael J. Spencer |
2:1df0b61d3b5a | 61 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 62 | * Called by the front-end when a new shell is started. |
Michael J. Spencer |
2:1df0b61d3b5a | 63 | */ |
Michael J. Spencer |
2:1df0b61d3b5a | 64 | void start(void); |
Michael J. Spencer |
2:1df0b61d3b5a | 65 | |
Michael J. Spencer |
2:1df0b61d3b5a | 66 | /** |
Michael J. Spencer |
2:1df0b61d3b5a | 67 | * Process a shell command. |
Michael J. Spencer |
2:1df0b61d3b5a | 68 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 69 | * This function will be called by the shell GUI / telnet server whan |
Michael J. Spencer |
2:1df0b61d3b5a | 70 | * a command has been entered that should be processed by the shell |
Michael J. Spencer |
2:1df0b61d3b5a | 71 | * back-end. |
Michael J. Spencer |
2:1df0b61d3b5a | 72 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 73 | * \param command The command to be processed. |
Michael J. Spencer |
2:1df0b61d3b5a | 74 | */ |
Michael J. Spencer |
2:1df0b61d3b5a | 75 | void input(char *command); |
Michael J. Spencer |
2:1df0b61d3b5a | 76 | |
Michael J. Spencer |
2:1df0b61d3b5a | 77 | int output(const char *str); |
Michael J. Spencer |
2:1df0b61d3b5a | 78 | void close(); |
Michael J. Spencer |
2:1df0b61d3b5a | 79 | |
Michael J. Spencer |
2:1df0b61d3b5a | 80 | /** |
Michael J. Spencer |
2:1df0b61d3b5a | 81 | * Print a prompt to the shell window. |
Michael J. Spencer |
2:1df0b61d3b5a | 82 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 83 | * This function can be used by the shell back-end to print out a |
Michael J. Spencer |
2:1df0b61d3b5a | 84 | * prompt to the shell window. |
Michael J. Spencer |
2:1df0b61d3b5a | 85 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 86 | * \param prompt The prompt to be printed. |
Michael J. Spencer |
2:1df0b61d3b5a | 87 | * |
Michael J. Spencer |
2:1df0b61d3b5a | 88 | */ |
Michael J. Spencer |
2:1df0b61d3b5a | 89 | void prompt(const char *prompt); |
Michael J. Spencer |
2:1df0b61d3b5a | 90 | |
Michael J. Spencer |
2:1df0b61d3b5a | 91 | int queue_size(); |
Michael J. Spencer |
2:1df0b61d3b5a | 92 | int can_output(); |
Michael J. Spencer |
2:1df0b61d3b5a | 93 | static int command_result(const char *str, void *ti); |
Michael J. Spencer |
2:1df0b61d3b5a | 94 | StreamOutput *getStream() { return pstream; } |
Michael J. Spencer |
2:1df0b61d3b5a | 95 | void setConsole(); |
Michael J. Spencer |
2:1df0b61d3b5a | 96 | |
Michael J. Spencer |
2:1df0b61d3b5a | 97 | private: |
Michael J. Spencer |
2:1df0b61d3b5a | 98 | bool parse(register char *str, struct ptentry *t); |
Michael J. Spencer |
2:1df0b61d3b5a | 99 | Telnetd *telnet; // telnet instance we are connected to |
Michael J. Spencer |
2:1df0b61d3b5a | 100 | StreamOutput *pstream; |
Michael J. Spencer |
2:1df0b61d3b5a | 101 | bool isConsole; |
Michael J. Spencer |
2:1df0b61d3b5a | 102 | }; |
Michael J. Spencer |
2:1df0b61d3b5a | 103 | |
Michael J. Spencer |
2:1df0b61d3b5a | 104 | #endif /* __SHELL_H__ */ |