/////////////////////////////////////
//                                 //
// Kommandozeilen-Parser           //
// Template                        //
//                                 //
// Udo Matthe   12.12.2012         //
// Udo Matthe   06.06.2020 update  //
//                                 //
/////////////////////////////////////
//
// Konfiguration der YH-Shell 
// Beispiel fuer Suska - SDC
//
/////////////////////////////////////


#ifndef __SHELLDEFS_H__
#define __SHELLDEFS_H__

#include "config.h"

//
// Hier spezielle Includes
// 
#include "../asisp/asisp.h"
#include "../asisp/asappl.h"
#include "../asisp/asshell.h"
#ifdef PUZZLE
void shell_puzzle(uint8_t *rounds);
#endif

#define F(X) (const __flash char[]) { X }

//
// Anzahl der implementierten Kommandos +2
//
#define MAXCOMMAND 11+2
#define MAXCMDLEN 8
#define MAXHELPLEN 30

//
// Hinweise zur Kommando-Funktion:
//
// Maximal 3 Parameter erlaubt.
// Die Signatur der (zu implementierenden Funktion):
// - fuer 0 Parameter "void func( void )" 
// - fuer 1 Parameter "void func( uint8_t* )" 
// - fuer 2 Parameter "void func( uint8_t*, uint8_t* )" 
// - fuer 3 Parameter "void func( uint8_t*, uint8_t*, uint8_t* )" 
//

struct befehle befehle[MAXCOMMAND] PROGMEM =
{
//
// Ab hier Standard-Befehle (aus shell)
//
//       Parameterzahl, Kommando,   Funktion,      Hilfstext
        {0,             F("help"),    shell_help,     F("this Text")},
#ifdef SUSKA_BF
        {0,             F("reset"),    shell_reset,    F("power off")},
#else
        {0,             F("reset"),    shell_reset,    F("mount SDCard")},
#endif
        {0,             F("info"),     shell_info,     F("System Info")},
        {1,             F("trace"),    shell_trace,    F("enable Debug Traces")},
        {1,             F("delay"),    shell_delay,    F("wait deltime ms")},
#ifdef PUZZLE
        {1,             F("puzzle"),   shell_puzzle,   F("puzzle rounds")},
#endif
#ifdef __HAVE_FILESYSTEM__
        {0,             F("ls"),       shell_ls,       F("list SDCard Directory")},
        {1,             F("cat"),      shell_cat,      F("show file")},
        {1,             F("hex"),      shell_hex,      F("hexdump file")},
        {1,             F("do"),       shell_do,       F("exec batchfile")},
//
// Ab hier spezielle Befehle (aus asisp)
//
        {1,             F("as-read"),  shell_asread,   F("read ConfigFlash")},
        {1,             F("as-write"), shell_aswrite,  F("write .rbf file to ConfigFlash")},
#endif
        {0,             F("as-getid"), shell_asgetid,  F("ConfigFlash Info")},

//
// Ende Kennung (nicht loeschen)
//
	{0, NULL, NULL, NULL },
};

#endif
