RTEMS  5.0.0
Data Structures | Macros | Typedefs | Functions | Variables
shell.h File Reference

Instantatiate a New Terminal Shell. More...

#include <sys/types.h>
#include <sys/stat.h>
#include <rtems.h>
#include <stdio.h>
#include <termios.h>
#include <rtems/fs.h>
#include <rtems/libio.h>
#include <rtems/chain.h>

Go to the source code of this file.

Data Structures

struct  rtems_shell_cmd_tt
 
struct  rtems_shell_alias_t
 
struct  rtems_shell_topic_tt
 
struct  rtems_shell_env_t
 
struct  rtems_shell_filesystems_tt
 

Macros

#define RTEMS_SHELL_KEYS_EXTENDED   (0x8000)
 
#define RTEMS_SHELL_KEYS_NORMAL_MASK   (0x00ff)
 
#define RTEMS_SHELL_KEYS_INS   (0)
 
#define RTEMS_SHELL_KEYS_DEL   (1)
 
#define RTEMS_SHELL_KEYS_UARROW   (2)
 
#define RTEMS_SHELL_KEYS_DARROW   (3)
 
#define RTEMS_SHELL_KEYS_LARROW   (4)
 
#define RTEMS_SHELL_KEYS_RARROW   (5)
 
#define RTEMS_SHELL_KEYS_HOME   (6)
 
#define RTEMS_SHELL_KEYS_END   (7)
 
#define RTEMS_SHELL_KEYS_F1   (8)
 
#define RTEMS_SHELL_KEYS_F2   (9)
 
#define RTEMS_SHELL_KEYS_F3   (10)
 
#define RTEMS_SHELL_KEYS_F4   (11)
 
#define RTEMS_SHELL_KEYS_F5   (12)
 
#define RTEMS_SHELL_KEYS_F6   (13)
 
#define RTEMS_SHELL_KEYS_F7   (14)
 
#define RTEMS_SHELL_KEYS_F8   (15)
 
#define RTEMS_SHELL_KEYS_F9   (16)
 
#define RTEMS_SHELL_KEYS_F10   (17)
 

Typedefs

typedef bool(* rtems_shell_login_check_t) (const char *, const char *)
 
typedef int(* rtems_shell_command_t) (int argc, char **argv)
 
typedef struct rtems_shell_cmd_tt rtems_shell_cmd_t
 
typedef struct rtems_shell_topic_tt rtems_shell_topic_t
 
typedef struct rtems_shell_filesystems_tt rtems_shell_filesystems_t
 
typedef int(* rtems_shell_filesystems_mounter_t) (const char *driver, const char *path, rtems_shell_filesystems_t *fs, rtems_filesystem_options_t options)
 
typedef void(* rtems_shell_wait_for_input_notification) (int fd, int seconds_remaining, void *arg)
 

Functions

bool rtems_shell_login_prompt (FILE *in, FILE *out, const char *device, rtems_shell_login_check_t check)
 
bool rtems_shell_login_check (const char *user, const char *passphrase)
 
unsigned int rtems_shell_getchar (FILE *in)
 
rtems_shell_cmd_trtems_shell_lookup_cmd (const char *cmd)
 
rtems_shell_cmd_trtems_shell_add_cmd_struct (rtems_shell_cmd_t *shell_cmd)
 
rtems_shell_cmd_trtems_shell_add_cmd (const char *cmd, const char *topic, const char *usage, rtems_shell_command_t command)
 
rtems_shell_cmd_trtems_shell_alias_cmd (const char *cmd, const char *alias)
 
int rtems_shell_make_args (char *commandLine, int *argc_p, char **argv_p, int max_args)
 
rtems_shell_topic_trtems_shell_lookup_topic (const char *topic)
 
bool rtems_shell_can_see_cmd (const rtems_shell_cmd_t *shell_cmd)
 
int rtems_shell_execute_cmd (const char *cmd, int argc, char *argv[])
 
void rtems_shell_init_environment (void)
 
int rtems_shell_cat_file (FILE *out, const char *name)
 
void rtems_shell_write_file (const char *name, const char *content)
 
int rtems_shell_script_file (int argc, char **argv)
 
rtems_status_code rtems_shell_init (const char *task_name, size_t task_stacksize, rtems_task_priority task_priority, const char *devname, bool forever, bool wait, rtems_shell_login_check_t login_check)
 
rtems_status_code rtems_shell_script (const char *task_name, size_t task_stacksize, rtems_task_priority task_priority, const char *input, const char *output, bool output_append, bool wait, bool echo)
 
bool rtems_shell_main_loop (rtems_shell_env_t *rtems_shell_env)
 
rtems_shell_env_trtems_shell_get_current_env (void)
 
void rtems_shell_dup_current_env (rtems_shell_env_t *)
 
void rtems_shell_get_prompt (rtems_shell_env_t *shell_env, char *prompt, size_t size)
 
int rtems_shell_libc_mounter (const char *driver, const char *path, rtems_shell_filesystems_t *fs, rtems_filesystem_options_t options)
 
void rtems_shell_mount_add_fsys (rtems_shell_filesystems_t *fs)
 
void rtems_shell_mount_del_fsys (rtems_shell_filesystems_t *fs)
 
rtems_status_code rtems_shell_wait_for_input (int fd, int timeout_in_seconds, rtems_shell_wait_for_input_notification notification, void *notification_arg)
 Waits for input. More...
 
rtems_status_code rtems_shell_wait_for_explicit_input (int fd, int timeout_in_seconds, rtems_shell_wait_for_input_notification notification, void *notification_arg, int desired_input)
 Waits for explicit input. More...
 
int rtems_shell_main_monitor (int argc, char **argv)
 
int rtems_shell_main_mv (int argc, char *argv[])
 
int rtems_shell_main_cp (int argc, char *argv[])
 
int rtems_shell_main_rm (int argc, char *argv[])
 

Variables

const rtems_shell_env_t rtems_global_shell_env
 

Detailed Description

Instantatiate a New Terminal Shell.

Function Documentation

◆ rtems_shell_get_prompt()

void rtems_shell_get_prompt ( rtems_shell_env_t shell_env,
char *  prompt,
size_t  size 
)

This method dynamically builds the command line prompt string and places it in prompt.

Parameters
[in]shell_envis the shell execution environment
[in]promptis a pointer to a string buffer area
[in]sizeis length of the prompt buffer area
Returns
This method fills in the memory pointed to by prompt.
Note
An application specific implementation can be provided by the user.

◆ rtems_shell_init()

rtems_status_code rtems_shell_init ( const char *  task_name,
size_t  task_stacksize,
rtems_task_priority  task_priority,
const char *  devname,
bool  forever,
bool  wait,
rtems_shell_login_check_t  login_check 
)

Initialise the shell creating tasks to login and run the shell sessions.

Parameters
task_nameName of the shell task.
task_stacksizeThe size of the stack. If 0 the default size is used.
task_priorityThe priority the shell runs at.
foreverRepeat logins.
waitCaller should block until shell exits.
login_checkUser login check function, NULL disables login checks.

◆ rtems_shell_libc_mounter()

int rtems_shell_libc_mounter ( const char *  driver,
const char *  path,
rtems_shell_filesystems_t fs,
rtems_filesystem_options_t  options 
)

Helper for the mount command.

Parameters
[in]driverThe path to the driver.
[in]pathThe path to mount on.
[in]fsThe file system definition.
[in]optionsSpecial file system options.

◆ rtems_shell_mount_add_fsys()

void rtems_shell_mount_add_fsys ( rtems_shell_filesystems_t fs)

Add a new file system mount configuration to the mount command.

Parameters
[in]fsThe file system mount data.

◆ rtems_shell_mount_del_fsys()

void rtems_shell_mount_del_fsys ( rtems_shell_filesystems_t fs)

Delete file system mount configuration from the mount command.

Parameters
[in]fsThe file system mount data to remove.

◆ rtems_shell_script()

rtems_status_code rtems_shell_script ( const char *  task_name,
size_t  task_stacksize,
rtems_task_priority  task_priority,
const char *  input,
const char *  output,
bool  output_append,
bool  wait,
bool  echo 
)

Run a shell script creating a shell tasks to execute the command under.

Parameters
task_nameName of the shell task.
task_stacksizeThe size of the stack. If 0 the default size is used.
task_priorityThe priority the shell runs at.
inputThe file of commands. Can be 'stdin' to use stdin.
outputThe output file to write commands to. Can be 'stdout', 'stderr' or '/dev/null'.
output_appendAppend the output to the file or truncate the file. Create if it does not exist.
waitWait for the script to finish.

◆ rtems_shell_wait_for_explicit_input()

rtems_status_code rtems_shell_wait_for_explicit_input ( int  fd,
int  timeout_in_seconds,
rtems_shell_wait_for_input_notification  notification,
void *  notification_arg,
int  desired_input 
)

Waits for explicit input.

Parameters
desired_inputAn explicit unsigned character to wait for or -1 to accept any input.
Return values
RTEMS_SUCCESSFULInput detected.
RTEMS_TIMEOUTTimeout expired.
RTEMS_UNSATISFIEDCannot change or restore termios attributes.

◆ rtems_shell_wait_for_input()

rtems_status_code rtems_shell_wait_for_input ( int  fd,
int  timeout_in_seconds,
rtems_shell_wait_for_input_notification  notification,
void *  notification_arg 
)

Waits for input.

Return values
RTEMS_SUCCESSFULInput detected.
RTEMS_TIMEOUTTimeout expired.
RTEMS_UNSATISFIEDCannot change or restore termios attributes.