Merge branch 'finley'

This commit is contained in:
Laila van Reenen 2024-04-12 17:17:49 +02:00
commit c9fdbac547
3 changed files with 38 additions and 23 deletions

View File

@ -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;
} }

View File

@ -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
View 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)