Merge branch 'finley'
This commit is contained in:
commit
c9fdbac547
46
CLI/CLI.c
46
CLI/CLI.c
@ -6,22 +6,22 @@
|
|||||||
|
|
||||||
#include "../FIFOBuff/FIFOBuffChar.h"
|
#include "../FIFOBuff/FIFOBuffChar.h"
|
||||||
|
|
||||||
CLI_lineOutFn CLI_lineOut;
|
CLI_charOutFn CLI_charOut;
|
||||||
CMDList_t* CMDList;
|
CMDList_t* CMDList;
|
||||||
FIFOBuffChar_t* FIFO;
|
FIFOBuffChar_t* FIFO;
|
||||||
|
|
||||||
// initilize and register the lineout print function
|
// initilize and register the lineout print function
|
||||||
bool CLI_init(CLI_lineOutFn lineOut, CMDList_t* cmdList)
|
bool CLI_init(CLI_charOutFn lineOut, CMDList_t* cmdList)
|
||||||
{
|
{
|
||||||
CLI_lineOut = lineOut;
|
CLI_charOut = lineOut;
|
||||||
CMDList = cmdList;
|
CMDList = cmdList;
|
||||||
|
|
||||||
FIFO = FIFOBuffChar_create();
|
FIFO = FIFOBuffChar_create();
|
||||||
|
|
||||||
if (CLI_lineOut != NULL)
|
if (CLI_charOut != NULL)
|
||||||
{
|
{
|
||||||
(*CLI_lineOut)(">");
|
(*CLI_charOut)(">");
|
||||||
(*CLI_lineOut)(" ");
|
(*CLI_charOut)(" ");
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -29,7 +29,7 @@ bool CLI_init(CLI_lineOutFn lineOut, CMDList_t* cmdList)
|
|||||||
|
|
||||||
bool CLI_deinit()
|
bool CLI_deinit()
|
||||||
{
|
{
|
||||||
CLI_lineOut = NULL;
|
CLI_charOut = NULL;
|
||||||
CMDList = NULL;
|
CMDList = NULL;
|
||||||
|
|
||||||
FIFOBuffChar_delete(FIFO);
|
FIFOBuffChar_delete(FIFO);
|
||||||
@ -61,23 +61,23 @@ int tryExecute(FIFOBuffChar_t* fifo)
|
|||||||
{
|
{
|
||||||
(*(cmd->fn))(line);
|
(*(cmd->fn))(line);
|
||||||
|
|
||||||
if (CLI_lineOut != NULL)
|
if (CLI_charOut != NULL)
|
||||||
{
|
{
|
||||||
(*CLI_lineOut)(">");
|
(*CLI_charOut)(">");
|
||||||
(*CLI_lineOut)(" ");
|
(*CLI_charOut)(" ");
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (CLI_lineOut != NULL)
|
if (CLI_charOut != NULL)
|
||||||
{
|
{
|
||||||
char err[100];
|
char err[100];
|
||||||
sprintf(&err[0], "command not found: %s\n> ", line);
|
sprintf(&err[0], "command not found: %s\n> ", line);
|
||||||
for (int i=0; err[i] != 0; i++)
|
for (int i=0; err[i] != 0; i++)
|
||||||
{
|
{
|
||||||
char c[2] = {err[i], 0};
|
char c[2] = {err[i], 0};
|
||||||
(*CLI_lineOut)(&c[0]);
|
(*CLI_charOut)(&c[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -102,9 +102,9 @@ bool CLI_charIn(char c)
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
FIFOBuffChar_put(FIFO, c); // save char in buffer
|
FIFOBuffChar_put(FIFO, c); // save char in buffer
|
||||||
if (CLI_lineOut != NULL)
|
if (CLI_charOut != NULL)
|
||||||
{ // echo to terminal
|
{ // echo to terminal
|
||||||
(*CLI_lineOut)(&c);
|
(*CLI_charOut)(&c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -114,9 +114,9 @@ bool CLI_charIn(char c)
|
|||||||
{
|
{
|
||||||
case '\n':
|
case '\n':
|
||||||
case '\r':
|
case '\r':
|
||||||
if (CLI_lineOut != NULL)
|
if (CLI_charOut != NULL)
|
||||||
{ // echo to terminal
|
{ // echo to terminal
|
||||||
(*CLI_lineOut)(&c);
|
(*CLI_charOut)(&c);
|
||||||
}
|
}
|
||||||
FIFOBuffChar_t* fifo = FIFO;
|
FIFOBuffChar_t* fifo = FIFO;
|
||||||
FIFO = FIFOBuffChar_create();
|
FIFO = FIFOBuffChar_create();
|
||||||
@ -127,9 +127,13 @@ bool CLI_charIn(char c)
|
|||||||
case 127: // backspace
|
case 127: // backspace
|
||||||
if (FIFOBuffChar_pop(FIFO))
|
if (FIFOBuffChar_pop(FIFO))
|
||||||
{
|
{
|
||||||
(*CLI_lineOut)("\x1b");
|
(*CLI_charOut)("\x1b");
|
||||||
(*CLI_lineOut)("[");
|
(*CLI_charOut)("[");
|
||||||
(*CLI_lineOut)("D");
|
(*CLI_charOut)("D");
|
||||||
|
(*CLI_charOut)(" ");
|
||||||
|
(*CLI_charOut)("\x1b");
|
||||||
|
(*CLI_charOut)("[");
|
||||||
|
(*CLI_charOut)("D");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -138,7 +142,7 @@ bool CLI_charIn(char c)
|
|||||||
for (int i=0; str[i] != 0; i++)
|
for (int i=0; str[i] != 0; i++)
|
||||||
{
|
{
|
||||||
char ch[2] = {str[i], 0};
|
char ch[2] = {str[i], 0};
|
||||||
(*CLI_lineOut)(&ch[0]);
|
(*CLI_charOut)(&ch[0]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -147,7 +151,7 @@ bool CLI_charIn(char c)
|
|||||||
for (int i=0; str[i] != 0; i++)
|
for (int i=0; str[i] != 0; i++)
|
||||||
{
|
{
|
||||||
char ch[2] = {str[i], 0};
|
char ch[2] = {str[i], 0};
|
||||||
(*CLI_lineOut)(&ch[0]);
|
(*CLI_charOut)(&ch[0]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,10 +5,10 @@
|
|||||||
|
|
||||||
#include "../CMDList/CMDList.h"
|
#include "../CMDList/CMDList.h"
|
||||||
|
|
||||||
typedef int (*CLI_lineOutFn)(const char* line);
|
typedef int (*CLI_charOutFn)(const char* line);
|
||||||
|
|
||||||
// initilize and register the lineout print function
|
// initilize and register the lineout print function
|
||||||
bool CLI_init(CLI_lineOutFn lineOut, CMDList_t* cmdList);
|
bool CLI_init(CLI_charOutFn lineOut, CMDList_t* cmdList);
|
||||||
bool CLI_deinit();
|
bool CLI_deinit();
|
||||||
|
|
||||||
// to recive a single caracter
|
// to recive a single caracter
|
||||||
|
|||||||
11
CMakeLists.txt
Normal file
11
CMakeLists.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
# FIFO Buffer
|
||||||
|
add_library(FIFOBuffChar FIFOBuff/FIFOBuffChar.c)
|
||||||
|
|
||||||
|
# CMD List
|
||||||
|
add_library(CMDList CMDList/CMDList.c)
|
||||||
|
add_library(CMDListPrint CMDList/printList.c)
|
||||||
|
|
||||||
|
# CLI
|
||||||
|
add_library(CLI CLI/CLI.c)
|
||||||
|
target_link_libraries(CLI CMDList FIFOBuffChar)
|
||||||
Loading…
x
Reference in New Issue
Block a user