2010-09-22 17:25:19 +02:00
|
|
|
/******************************************************************************
|
2013-08-16 10:20:23 +02:00
|
|
|
* Copyright 2009, Freie Universitaet Berlin (FUB). All rights reserved.
|
|
|
|
*
|
|
|
|
* These sources were developed at the Freie Universitaet Berlin, Computer Systems
|
2013-10-30 22:30:56 +01:00
|
|
|
* and Telematics group (http://cst.mi.fu-berlin.de).
|
2013-08-16 10:20:23 +02:00
|
|
|
* ----------------------------------------------------------------------------
|
|
|
|
* This file is part of RIOT.
|
|
|
|
*
|
2013-11-22 20:47:05 +01:00
|
|
|
* This file is subject to the terms and conditions of the GNU Lesser General
|
2013-08-16 10:20:23 +02:00
|
|
|
* Public License. See the file LICENSE in the top level directory for more
|
|
|
|
* details.
|
|
|
|
*
|
2010-09-22 17:25:19 +02:00
|
|
|
*******************************************************************************/
|
|
|
|
|
|
|
|
/**
|
2013-11-27 17:54:30 +01:00
|
|
|
* @defgroup sys_shell Shell
|
|
|
|
* @ingroup sys
|
|
|
|
* @brief Simple shell interpreter
|
2010-09-22 17:25:19 +02:00
|
|
|
*/
|
|
|
|
|
2013-11-27 16:28:31 +01:00
|
|
|
#ifndef __SHELL_H
|
|
|
|
#define __SHELL_H
|
2013-12-19 17:11:06 +01:00
|
|
|
#include <stdint.h>
|
2013-11-27 16:28:31 +01:00
|
|
|
|
2014-02-21 19:10:24 +01:00
|
|
|
typedef void (*shell_command_handler_t)(int argc, char **argv);
|
|
|
|
|
2010-11-02 17:23:10 +01:00
|
|
|
typedef struct shell_command_t {
|
2013-06-22 05:11:53 +02:00
|
|
|
char *name;
|
|
|
|
char *desc;
|
2014-02-21 19:10:24 +01:00
|
|
|
shell_command_handler_t handler;
|
2010-10-01 15:24:43 +02:00
|
|
|
} shell_command_t;
|
2010-09-22 17:25:19 +02:00
|
|
|
|
|
|
|
typedef struct shell_t {
|
2010-10-01 15:24:43 +02:00
|
|
|
const shell_command_t *command_list;
|
2013-12-19 17:11:06 +01:00
|
|
|
uint16_t shell_buffer_size;
|
2013-06-22 05:11:53 +02:00
|
|
|
int (*readchar)(void);
|
|
|
|
void (*put_char)(int);
|
2010-09-22 17:25:19 +02:00
|
|
|
} shell_t;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Initialize a shell object
|
2010-11-02 17:23:10 +01:00
|
|
|
* @param shell Pointer to preallocated shell object
|
2014-02-10 15:28:55 +01:00
|
|
|
* @param shell_commands Pointer to shell command structure. See test_shell application for example.
|
2013-12-19 17:11:06 +01:00
|
|
|
* @param shell_buffer_size The size of the shell buffer.
|
2010-11-02 17:23:10 +01:00
|
|
|
* @param read_char Pointer to input device read function. Should return exactly one byte or block.
|
|
|
|
* @param put_char Pointer to output funtion. currently unused, shell code will use printf.
|
2010-09-22 17:25:19 +02:00
|
|
|
*/
|
2013-12-19 17:11:06 +01:00
|
|
|
void shell_init(shell_t *shell, /*@null@*/ const shell_command_t *shell_commands,
|
|
|
|
uint16_t shell_buffer_size, int(*read_char)(void), void (*put_char)(int));
|
2010-09-22 17:25:19 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Endless loop that waits for command and executes handler.
|
|
|
|
*/
|
|
|
|
void shell_run(shell_t *shell);
|
|
|
|
|
2010-09-28 13:39:59 +02:00
|
|
|
|
|
|
|
void shell_auto_init(shell_t *shell);
|
|
|
|
|
2010-09-30 15:10:39 +02:00
|
|
|
#endif /* __SHELL_H */
|