From 68a208dc10d62432d79b52c94a8dd64a976db661 Mon Sep 17 00:00:00 2001 From: atomega Date: Sun, 8 Aug 2021 14:23:34 +0200 Subject: [PATCH] Implemented the command manager --- Makefile | 1 + main.cpp | 10 ++++ main.hpp | 2 +- runtest | Bin 17320 -> 28320 bytes utils/commandManager.cpp | 100 +++++++++++++++++++++++++++++++++++++++ utils/commandManager.h | 50 ++++++++++++++++++++ 6 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 utils/commandManager.cpp create mode 100644 utils/commandManager.h diff --git a/Makefile b/Makefile index ddb999a..b7a2589 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ cpp_src += $(wildcard *.cpp) +cpp_src += $(wildcard ./utils/*.cpp) #cpp_src += $(wildcard ./communication/i2c/*.cpp) #c_src += $(wildcard ./algorithms/*.c) diff --git a/main.cpp b/main.cpp index 7087a1e..44cfaa1 100644 --- a/main.cpp +++ b/main.cpp @@ -12,9 +12,19 @@ #include "main.hpp" +CommandManager commander; + +void dummy() +{ + std::cout << "Dummy" << std::endl; +} + int main(int argc, char *argv[]) { std::cout << "Main Begin" << std::endl; + commander.addNewCommand("dummy", "The test command for testing the test", dummy); + commander(argv[1]); std::cout << "Main End" << std::endl; return 1; } + diff --git a/main.hpp b/main.hpp index b5423ed..5c928bb 100644 --- a/main.hpp +++ b/main.hpp @@ -4,6 +4,6 @@ #include #include #include - +#include "./utils/commandManager.h" #endif // __MAIN_HPP__ diff --git a/runtest b/runtest index 031a5b8aa0c2433008de2d9702a6fcc855860f38..b6a1d390ad2d866e92d8fc4ee3777ad19c20d473 100755 GIT binary patch literal 28320 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 MAX_MUNBER_OF_COMMANDS) // Check if the command list is full + { + std::cout << "Error | Intern | Command list is full!" << std::endl; + exit(1); + } + if(getLookUpIndex(commmand) >= 0) // Chek for command duplicats + { + std::cout << "Error | Intern | Command already exitst!" << std::endl; + exit(1); + } + + + commandLookup[emptyIndex].commmand = commmand; + commandLookup[emptyIndex].description = description; + commandLookup[emptyIndex].callBack = callBack; + emptyIndex++; +} + +void CommandManager::operator()(const std::string cmdName) +{ + int index = 0; + + if(cmdName == "help" || cmdName == "Help") + { + printHelp(); + exit(1); + } + + if(cmdName == "-h" || cmdName == "-H") + { + printCommads(); + exit(1); + } + + index = getLookUpIndex(cmdName); + + if(index < 0) + { + std::cout << "Error | Intern | Invalid Command!" << std::endl; + exit(1); + } + + commandLookup[index].callBack(); + exit(1); +} + + +// +// Privat memeber functions +// + + +int CommandManager::getLookUpIndex(const std::string& cmd) +{ + int index = 0; + for (index = 0; index < emptyIndex; index++) + { + if(commandLookup[index].commmand == cmd) + { + return index; + } + } + return -1; +} + +void CommandManager::printHelp() +{ + std::cout << "Function : printHelp is under construction" << std::endl; +} + +void CommandManager::printCommads() +{ + std::cout << "Function : printCommads is under construction" << std::endl; +} + diff --git a/utils/commandManager.h b/utils/commandManager.h new file mode 100644 index 0000000..0ad164d --- /dev/null +++ b/utils/commandManager.h @@ -0,0 +1,50 @@ +/* + * Authors : Kerem Yollu & Edwin Koch + * Date : 07.03.2021 + * + * Description : + * TODO : Inplement singleton pattern + * TODO : Write description + * TODO : Comment the code wiht odxygen + * + */ + + +#ifndef _COMMMANDMANAGER_H_ +#define _COMMMANDMANAGER_H_ + +#include +#include +#include +#include + +#define MAX_MUNBER_OF_COMMANDS 10 + +class CommandManager +{ + public: + typedef std::function commanCallback_t; + CommandManager(); + void addNewCommand( const std::string& commmand, + const std::string& description, + commanCallback_t callBack); + + void operator()(const std::string cmdName); + + + private: + unsigned int emptyIndex; + + struct commant_t{ + std::string commmand; + std::string description; + commanCallback_t callBack; // The Callback function could only be a void returning a void. + }; + + std::array commandLookup; + int getLookUpIndex(const std::string& cmd); // If command exists retunrs the index otherwise -1 + void printHelp(); // Prints all awailbale commands and their description. + void printCommads(); // Prints all awailable commnads without description. +}; + +#endif // _COMMMANDMANAGER_H_