agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
shell.h File Reference
#include <zrtos/zrtos.h>
#include <zrtos/types.h>
#include <zrtos/str.h>
Include dependency graph for shell.h:

Go to the source code of this file.

Data Structures

struct  zrtos_shell_fn_t
 
struct  zrtos_shell_fd_array_t
 
struct  _zrtos_shell_t
 

Macros

#define ZRTOS_SHELL__CFG_LINE_BUFFER_LENGTH   80
 
#define ZRTOS_SHELL__CFG_MAX_ARG_COUNT   8
 

Typedefs

typedef struct _zrtos_shell_t zrtos_shell_t
 

Enumerations

enum  zrtos_shell_fd_t {
  ZRTOS_SHELL_FD__MIN = 0,
  ZRTOS_SHELL_FD__STDIN = 0,
  ZRTOS_SHELL_FD__STDOUT = 1,
  ZRTOS_SHELL_FD__STDERR = 2,
  ZRTOS_SHELL_FD__MAX = 2
}
 

Functions

bool zrtos_shell__init (zrtos_shell_t *thiz, zrtos_shell_fd_array_t files, zrtos_shell_fn_t **fn, void *data)
 
zrtos_error_t zrtos_shell__parse_line (zrtos_shell_t *thiz, size_t *argc, char **argv, char *line)
 
zrtos_error_t zrtos_shell__execute (zrtos_shell_t *thiz, size_t argc, char **argv)
 
zrtos_error_t zrtos_shell__run (zrtos_shell_t *thiz, char *line)
 

Macro Definition Documentation

◆ ZRTOS_SHELL__CFG_LINE_BUFFER_LENGTH

#define ZRTOS_SHELL__CFG_LINE_BUFFER_LENGTH   80

Definition at line 19 of file shell.h.

◆ ZRTOS_SHELL__CFG_MAX_ARG_COUNT

#define ZRTOS_SHELL__CFG_MAX_ARG_COUNT   8

Definition at line 22 of file shell.h.

Typedef Documentation

◆ zrtos_shell_t

typedef struct _zrtos_shell_t zrtos_shell_t

Enumeration Type Documentation

◆ zrtos_shell_fd_t

Enumerator
ZRTOS_SHELL_FD__MIN 
ZRTOS_SHELL_FD__STDIN 
ZRTOS_SHELL_FD__STDOUT 
ZRTOS_SHELL_FD__STDERR 
ZRTOS_SHELL_FD__MAX 

Definition at line 25 of file shell.h.

Function Documentation

◆ zrtos_shell__execute()

zrtos_error_t zrtos_shell__execute ( zrtos_shell_t thiz,
size_t  argc,
char **  argv 
)

Definition at line 96 of file shell.h.

100  {
102  zrtos_shell_fn_t **fn = thiz->fn;
103 
104  for(;*fn;fn++){
105  if(zrtos_str__cmp(argv[0],fn->name) == 0){
106  ret = fn->callback(thiz,argc,argv);
107  break;
108  }
109  }
110 
111  return ret;
112 }
zrtos_error_t(* callback)(struct _zrtos_shell_t *thiz, size_t argc, char **argv)
Definition: shell.h:37
int zrtos_str__cmp(char *a, char *b)
Definition: str.h:33
Function not implemented.
Definition: error.h:62
char * name
Definition: shell.h:36
zrtos_shell_fn_t ** fn
Definition: shell.h:47
zrtos_error_t
Definition: error.h:20
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_shell__init()

bool zrtos_shell__init ( zrtos_shell_t thiz,
zrtos_shell_fd_array_t  files,
zrtos_shell_fn_t **  fn,
void *  data 
)

Definition at line 51 of file shell.h.

56  {
57  thiz->files = files;
58  thiz->fn = fn;
59  thiz->data = data;
60 
61  return true;
62 }
zrtos_shell_fn_t ** fn
Definition: shell.h:47
void * data
Definition: shell.h:48
zrtos_shell_fd_array_t files
Definition: shell.h:46

◆ zrtos_shell__parse_line()

zrtos_error_t zrtos_shell__parse_line ( zrtos_shell_t thiz,
size_t argc,
char **  argv,
char *  line 
)

Definition at line 64 of file shell.h.

69  {
71  size_t pos = 0;
72  char *arg;
73  size_t offset;
74 
75  line += zrtos_str__spn(line," \t\r\n");
76  offset = zrtos_str__cspn(line,"\r\n");
77  if(offset){
78  line[offset] = 0;
79  while((arg = zrtos_str__tok_r(line," \t", &line))){
81  argv[pos++] = arg;
82  continue;
83  }else{
84  ret = ZRTOS_ERROR__2BIG;
85  break;
86  }
87  }
88  *argc = pos;
89  }else{
90  *argc = 0;
91  }
92 
93  return ret;
94 }
size_t zrtos_str__spn(const char *s1, const char *s2)
Definition: str.h:207
Arg list too long.
Definition: error.h:31
size_t zrtos_str__cspn(const char *s1, const char *s2)
Definition: str.h:224
Successful program execution status.
Definition: error.h:22
char * zrtos_str__tok_r(char *s, const char *delim, char **save_ptr)
Definition: str.h:254
#define ZRTOS_SHELL__CFG_MAX_ARG_COUNT
Definition: shell.h:22
zrtos_error_t
Definition: error.h:20
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_shell__run()

zrtos_error_t zrtos_shell__run ( zrtos_shell_t thiz,
char *  line 
)

Definition at line 114 of file shell.h.

117  {
118  size_t argc;
119  char *argv[ZRTOS_SHELL__CFG_MAX_ARG_COUNT];
121  thiz
122  ,&argc
123  ,argv
124  ,line
125  );
127  && argc > 0){
128  ret = zrtos_shell__execute(thiz,argc,argv);
129  }
130 
131  return ret;
132 }
zrtos_error_t zrtos_shell__parse_line(zrtos_shell_t *thiz, size_t *argc, char **argv, char *line)
Definition: shell.h:64
bool zrtos_error__is_success(zrtos_error_t thiz)
Definition: error.h:152
zrtos_error_t zrtos_shell__execute(zrtos_shell_t *thiz, size_t argc, char **argv)
Definition: shell.h:96
#define ZRTOS_SHELL__CFG_MAX_ARG_COUNT
Definition: shell.h:22
zrtos_error_t
Definition: error.h:20
Here is the call graph for this function: