#ifndef _SHELL_API_H_
#define _SHELL_API_H_

#include <sys/ksys.h>

#define SHELL_OK   0
#define SHELL_EXIT 1
#define SHELL_PUTC 2
#define SHELL_PUTS 3
#define SHELL_GETC 4
#define SHELL_GETS 5
#define SHELL_CLS  6
#define SHELL_PID  7
#define SHELL_PING 8

#define SHELL_SHM_MAX 1024 * 16

extern char __shell_shm_name[32];
extern char* __shell_shm;
extern int __shell_is_init;
extern void __shell_init();

#define __SHELL_WAIT()   \
    while (*__shell_shm) \
    _ksys_delay(5)

extern int shell_ping();
extern unsigned shell_get_pid();
extern void shell_exit();

extern char shell_getc();
extern void shell_gets(char* str, int n);

extern void shell_putc(char c);
extern void shell_puts(const char* str);
extern void shell_printf(const char* format, ...);

extern void shell_cls();
#endif